RISC-V技术论坛
直播中

FrankSmith

5年用户 35经验值
擅长:可编程逻辑,电源/新能源,MEMS/传感技术,测量仪表,嵌入式技术,模拟技术
私信 关注
[经验]

【跃昉科技BF2开发板试用体验】二:进一步的学习+三:再进行尝试

二:进一步的学习
    根据学习目标,选了一个功能相近的demosdk_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指令不能正确执行。
    最终,厂家给出解释,代码不完善。。。


三:再进行尝试
    这次选择的是另外一个demolf686_demo_wifi),首先,改定时的提示。方便自己知道板子在运行什么demo。以下对代码的解释,均来源与个人猜测。
  1. //以下是单片机所有程序的主入口
  2. void lpf_main()
  3. {
  4.     static StackType_t aos_loop_proc_stack[1024];
  5.     static StaticTask_t aos_loop_proc_task;
  6.     static StackType_t proc_hellow_stack[512];
  7.     static StaticTask_t proc_hellow_task;
  8.     time_main = lf_timer_now_us();
  9.     /*Init UART In the first place*/
  10.     lf_uart_init(0, 16, 7, 255, 255, 2 * 1000 * 1000);
  11.     puts("Starting lf686 now....rn");
  12.     _dump_boot_info();
  13.     vPortDefineHeapRegions(xHeapRegions);
  14.     printf("Heap %u@%p, %u@%prn",
  15.             (unsigned int)&_heap_size, &_heap_start,
  16.             (unsigned int)&_heap_wifi_size, &_heap_wifi_start
  17.     );
  18.     printf("Boot2 consumed %lumsrn", time_main / 1000);
  19.     system_init();
  20.     system_thread_init();
  21.     puts("[OS] Starting proc_hellow_entry task...rn");
  22.     xTaskCreateStatic(proc_hellow_entry, (char*)"hellow", 512, NULL, 15, proc_hellow_stack, &proc_hellow_task);
  23.     puts("[OS] Starting aos_loop_proc task...rn");
  24.     xTaskCreateStatic(aos_loop_proc, (char*)"event_loop", 1024, NULL, 15, aos_loop_proc_stack, &aos_loop_proc_task);
  25.     puts("[OS] Starting TCP/IP Stack...rn");
  26.     tcpip_init(NULL, NULL);
  27.     puts("[OS] Starting OS Scheduler...rn");
  28.     vTaskStartScheduler();
  29. }

其中xTaskCreateStatic是创建一个线程。

  1. //以下是定时器的线程代码。
  2. static void proc_hellow_entry(void *pvParameters)
  3. {
  4.     vTaskDelay(500);
  5.     while (1) {
  6.         printf("%s: RISC-V rv32imafc.gj_lf686_demo_wifirn", __func__);
  7.         vTaskDelay(10000);
  8.     }
  9.     vTaskDelete(NULL);
  10. }

printf是从串口输出字符。


图片1.png
windows的菜单栏中打开MSYS2 MSYS

图片2.png

可看出是一个命令行的界面,类似与Linux的终端界面。通过一系列的cd以及ls后,定位的项目的目录里。
  1. john@ThinkPad-E540 MSYS ~
  2. $ cd..
  3. bash: cd..: command not found
  4. john@ThinkPad-E540 MSYS ~
  5. $ cd ..
  6. john@ThinkPad-E540 MSYS /home
  7. $ ls
  8. john  lf_iot_sdk
  9. john@ThinkPad-E540 MSYS /home
  10. $ cd home
  11. bash: cd: home: No such file or directory
  12. john@ThinkPad-E540 MSYS /home
  13. $ cd /home
  14. john@ThinkPad-E540 MSYS /home
  15. $ ls
  16. john  lf_iot_sdk
  17. john@ThinkPad-E540 MSYS /home
  18. $ cd lf_iot_sdk
  19. john@ThinkPad-E540 MSYS /home/lf_iot_sdk
  20. $ ls
  21. LICENSE          clean         docs                tools
  22. LICENSE-2.0.txt  components    make_scripts_riscv  version.txt
  23. README.md        customer_app  toolchain
  24. john@ThinkPad-E540 MSYS /home/lf_iot_sdk
  25. $ cd customer_app
  26. john@ThinkPad-E540 MSYS /home/lf_iot_sdk/customer_app
  27. $ ls
  28. benchmark_security_aes     lf686_gate_demo         sdk_app_helloworld
  29. gj_app_http_client_socket  lf686_kerle_app         sdk_app_http_client_socket
  30. gj_lf686_demo_wifi         sdk_app_645wave         sdk_app_http_client_tcp
  31. lf686_boot2                sdk_app_adc             sdk_app_i2c
  32. lf686_boot2_mini           sdk_app_audio_udp       sdk_app_ir
  33. lf686_demo_airkiss         sdk_app_ble_central     sdk_app_lvgl
  34. lf686_demo_ap_server       sdk_app_ble_peripheral  sdk_app_mdns
  35. lf686_demo_at              sdk_app_ble_sync        sdk_app_pwm
  36. lf686_demo_ble_ota         sdk_app_blog            sdk_app_romfs
  37. lf686_demo_event           sdk_app_cli             sdk_app_romfs_filecsv
  38. lf686_demo_joylink         sdk_app_cronalarm       sdk_app_spi_slave
  39. lf686_demo_joylink_ble     sdk_app_dac             sdk_app_spi_wave
  40. lf686_demo_livingsdk       sdk_app_easyflash       sdk_app_timer
  41. lf686_demo_nano            sdk_app_event           sdk_app_uart_ctl
  42. lf686_demo_noconnectivity  sdk_app_fdt             sdk_app_uart_echo
  43. lf686_demo_tuya_light      sdk_app_gpio            sdk_at_module
  44. lf686_demo_ty              sdk_app_hbnram          sdk_mpy_repl
  45. lf686_demo_wifi            sdk_app_heap            sdk_wristwatch_mqtt_gateway
  46. john@ThinkPad-E540 MSYS /home/lf_iot_sdk/customer_app
  47. $ cd gj_lf686_demo_wifi
  48. john@ThinkPad-E540 MSYS /home/lf_iot_sdk/customer_app/gj_lf686_demo_wifi
  49. $ ls
  50. BLE_Use_Manual.pdf     README.md  lf686_demo_wifi  proj_config.mk
  51. Iperf_User_Manual.rst  build_out  logo.png         tests
  52. Makefile               genromap   picture
  53. john@ThinkPad-E540 MSYS /home/lf_iot_sdk/customer_app/gj_lf686_demo_wifi
  54. $ ^C
  55. john@ThinkPad-E540 MSYS /home/lf_iot_sdk/customer_app/gj_lf686_demo_wifi
  56. $
如果熟悉目录结构的话,也可以直接定位
  1. john@ThinkPad-E540 MSYS ~
  2. $ cd /home/lf_iot_sdk/customer_app/gj_lf686_demo_wifi
  3. john@ThinkPad-E540 MSYS /home/lf_iot_sdk/customer_app/gj_lf686_demo_wifi
使用命令(./genromap),在命令的前面要加点(./),对项目进行编译。
编译成功后,在项目的子目录build_out里,可以看见生成了新的lf686_demo_wifi.bin文件。这个文件将会写入到板子里。
关闭串口。拔掉数据线。改变跳线。重新插入数据线。打开烧录器。重新烧录。
图片3.png

拔掉数据线。改变跳线。重新插入数据线。可以看见灯开始闪烁。打开串口。可以看见串口中的提示信息已经改变。从这个改变中可以知道开发板已经成功烧录了新的程序,并且这个程序的项目是lf686_demo_wifi
图片4.png



更多回帖

发帖
×
20
完善资料,
赚取积分