描述
根据学习目标,选了一个功能相近的demo(sdk_app_http_client_socket)。这个demo,能连上wifi路由器。这样子应该能通过路由器,使用socket的方式连上服务器把。先把demo跑起来。按照手册输入连接路由器的指令,wifi_sta_connect lf_test_005 12345678。结果没有得到预想的效果。咨询厂家技术,可能是命令未注册。故而,学习命令行注册。
查看手册有关命令行的demo,先注册一个test指令,看看参数以及函数的定位。按照例子,修改main.c代码。启动MSYS2进行编译。再烧录。打开串口助手。按reset出现提示信息。输入test,点击发送。回送hello world。命令行代码注册成功。再次输入指令连接路由器,依然没有成功。
尝试,在test的响应函数里加入指令wifi_sta_connect("Xiaomi_AD3F", "20181103");,重新编译,烧录,启动。reset。还是不行。提示信息说明已经进入到命令行响应函数了。但是wifi_sta_connec指令不能正确执行。
最终,厂家给出解释,代码不完善。。。
三:再进行尝试
这次选择的是另外一个demo(lf686_demo_wifi),首先,改定时的提示。方便自己知道板子在运行什么demo。以下对代码的解释,均来源与个人猜测。
-
//以下是单片机所有程序的主入口
-
void lpf_main()
-
{
-
static StackType_t aos_loop_proc_stack[1024];
-
static StaticTask_t aos_loop_proc_task;
-
static StackType_t proc_hellow_stack[512];
-
static StaticTask_t proc_hellow_task;
-
time_main = lf_timer_now_us();
-
/*Init UART In the first place*/
-
lf_uart_init(0, 16, 7, 255, 255, 2 * 1000 * 1000);
-
puts("Starting lf686 now....rn");
-
_dump_boot_info();
-
vPortDefineHeapRegions(xHeapRegions);
-
printf("Heap %u@%p, %u@%prn",
-
(unsigned int)&_heap_size, &_heap_start,
-
(unsigned int)&_heap_wifi_size, &_heap_wifi_start
-
);
-
printf("Boot2 consumed %lumsrn", time_main / 1000);
-
system_init();
-
system_thread_init();
-
puts("[OS] Starting proc_hellow_entry task...rn");
-
xTaskCreateStatic(proc_hellow_entry, (char*)"hellow", 512, NULL, 15, proc_hellow_stack, &proc_hellow_task);
-
puts("[OS] Starting aos_loop_proc task...rn");
-
xTaskCreateStatic(aos_loop_proc, (char*)"event_loop", 1024, NULL, 15, aos_loop_proc_stack, &aos_loop_proc_task);
-
puts("[OS] Starting TCP/IP Stack...rn");
-
tcpip_init(NULL, NULL);
-
puts("[OS] Starting OS Scheduler...rn");
-
vTaskStartScheduler();
-
}
复制代码
其中xTaskCreateStatic是创建一个线程。
-
//以下是定时器的线程代码。
-
static void proc_hellow_entry(void *pvParameters)
-
{
-
vTaskDelay(500);
-
while (1) {
-
printf("%s: RISC-V rv32imafc.gj_lf686_demo_wifirn", __func__);
-
vTaskDelay(10000);
-
}
-
vTaskDelete(NULL);
-
}
复制代码
printf是从串口输出字符。
在windows的菜单栏中打开MSYS2 MSYS
可看出是一个命令行的界面,类似与Linux的终端界面。通过一系列的cd以及ls后,定位的项目的目录里。
-
john@ThinkPad-E540 MSYS ~
-
$ cd..
-
bash: cd..: command not found
-
john@ThinkPad-E540 MSYS ~
-
$ cd ..
-
john@ThinkPad-E540 MSYS /home
-
$ ls
-
john lf_iot_sdk
-
john@ThinkPad-E540 MSYS /home
-
$ cd home
-
bash: cd: home: No such file or directory
-
john@ThinkPad-E540 MSYS /home
-
$ cd /home
-
john@ThinkPad-E540 MSYS /home
-
$ ls
-
john lf_iot_sdk
-
john@ThinkPad-E540 MSYS /home
-
$ cd lf_iot_sdk
-
john@ThinkPad-E540 MSYS /home/lf_iot_sdk
-
$ ls
-
LICENSE clean docs tools
-
LICENSE-2.0.txt components make_scripts_riscv version.txt
-
README.md customer_app toolchain
-
john@ThinkPad-E540 MSYS /home/lf_iot_sdk
-
$ cd customer_app
-
john@ThinkPad-E540 MSYS /home/lf_iot_sdk/customer_app
-
$ ls
-
benchmark_security_aes lf686_gate_demo sdk_app_helloworld
-
gj_app_http_client_socket lf686_kerle_app sdk_app_http_client_socket
-
gj_lf686_demo_wifi sdk_app_645wave sdk_app_http_client_tcp
-
lf686_boot2 sdk_app_adc sdk_app_i2c
-
lf686_boot2_mini sdk_app_audio_udp sdk_app_ir
-
lf686_demo_airkiss sdk_app_ble_central sdk_app_lvgl
-
lf686_demo_ap_server sdk_app_ble_peripheral sdk_app_mdns
-
lf686_demo_at sdk_app_ble_sync sdk_app_pwm
-
lf686_demo_ble_ota sdk_app_blog sdk_app_romfs
-
lf686_demo_event sdk_app_cli sdk_app_romfs_filecsv
-
lf686_demo_joylink sdk_app_cronalarm sdk_app_spi_slave
-
lf686_demo_joylink_ble sdk_app_dac sdk_app_spi_wave
-
lf686_demo_livingsdk sdk_app_easyflash sdk_app_timer
-
lf686_demo_nano sdk_app_event sdk_app_uart_ctl
-
lf686_demo_noconnectivity sdk_app_fdt sdk_app_uart_echo
-
lf686_demo_tuya_light sdk_app_gpio sdk_at_module
-
lf686_demo_ty sdk_app_hbnram sdk_mpy_repl
-
lf686_demo_wifi sdk_app_heap sdk_wristwatch_mqtt_gateway
-
john@ThinkPad-E540 MSYS /home/lf_iot_sdk/customer_app
-
$ cd gj_lf686_demo_wifi
-
john@ThinkPad-E540 MSYS /home/lf_iot_sdk/customer_app/gj_lf686_demo_wifi
-
$ ls
-
BLE_Use_Manual.pdf README.md lf686_demo_wifi proj_config.mk
-
Iperf_User_Manual.rst build_out logo.png tests
-
Makefile genromap picture
-
john@ThinkPad-E540 MSYS /home/lf_iot_sdk/customer_app/gj_lf686_demo_wifi
-
$ ^C
-
john@ThinkPad-E540 MSYS /home/lf_iot_sdk/customer_app/gj_lf686_demo_wifi
-
$
复制代码
如果熟悉目录结构的话,也可以直接定位
-
john@ThinkPad-E540 MSYS ~
-
$ cd /home/lf_iot_sdk/customer_app/gj_lf686_demo_wifi
-
john@ThinkPad-E540 MSYS /home/lf_iot_sdk/customer_app/gj_lf686_demo_wifi
-
复制代码
使用命令(./genromap),在命令的前面要加点(./),对项目进行编译。
编译成功后,在项目的子目录build_out里,可以看见生成了新的lf686_demo_wifi.bin文件。这个文件将会写入到板子里。
关闭串口。拔掉数据线。改变跳线。重新插入数据线。打开烧录器。重新烧录。
拔掉数据线。改变跳线。重新插入数据线。可以看见灯开始闪烁。打开串口。可以看见串口中的提示信息已经改变。从这个改变中可以知道开发板已经成功烧录了新的程序,并且这个程序的项目是lf686_demo_wifi。
打开APP阅读更多精彩内容