一.初步nr_micro_shell工程
建立mpy工程目录:
mkdir examples/evb_demo/mpy/
copy lvgl_demo的一些头文件/源文件到examples/evb_demo/mpy/Inc或Src目录:
cp examples/evb_demo/lvgl_demo/Inc/app_config.h examples/evb_demo/mpy/Inc
下载nr_micro_shell源码:
因笔者比较熟悉nr_micro_shell,所以shell是用的nr_micro_shell。从github上下载nr_micro_shell后,把它的inc和src目录下的文件copy到examples/evb_demo/mpy/nr_micro_shell下。
改写main()函数
主要是初始化nr_micro_shell、创建shell任务和rx_queue消息队列,shell任务主要是读rx_queue消息队列然后执行nr_micro_shell的shell()函数;rx_queue用于从串口接收数据发送给shell任务
改写void uart3_irq()函数
使得它在INT_INDEX_RX或INT_INDEX_RX_TOUT置位时,读取UARTx->DATA_DLL.DATA,然后调用xQueueSendFromISR()函数把获得的字符发送给rx_queue队列
现在nr_micro_shell框架基本做好,再用nr_micro_shell的方式实现md和mw命令,md从地址读,mw往地址写
编译烧录后,运行截图如下

从图中我们可以看到,0x2007fffc这个地址写入后读取确实能读到写入的值,说明板子的MCU确实是512KB的sram。
二.接下来我们继续移植micropython
从qinyunti大牛的仓库examples/evb_demo/lvgl_demo下复制文件过来:
cp PATH_TO_qinyuti_repo/examples/evb_demo/lvgl_demo/Src/app_dac* examples/evb_demo/mpy/Src
拷贝完毕的mpy/Src目录如下

添加micropython命令
按nr_micro_shell方式添加micropython命令,调用py_main()函数即可。
修改py_port/uart_core.c的mp_hal_stdin_rx_chr()函数
使得它和上面shell任务一样,从rx_queue消息队列获得uart输入数据。
copy大牛的spi flash补丁等
把qinyunti大牛打过patch的spi_flash拷贝过来,这在他的帖子都提到了,到相应目录下拷贝覆盖即可。
把qinyunti大牛shell下的ymodem.[ch]拷贝过来,并拷贝ryfile实现,这个命令主要用来从pc机上传wav文件到板子flash。除此以外还需要修改main.c,一样的做mount,如失败先mkfs再mount尝试等动作。
最后笔者的CMakeLists.txt文件如下:
set(CMAKE_SYSTEM_NAME Generic)
编译
<pre>cmake -B /tmp/build
cmake --build /tmp/build -j8</pre>
复制代码
接上喇叭
笔者是从一个巧克力礼盒上拆了一个喇叭出来,杜邦线一段剖开焊上,另一端接板子的spk口。

运行截图
先运行rfile,然后minicom下通过ymodem传个wav文件:


上传完毕,ls看看

现在可以执行micropython命令啦,进micropython REPL后依次执行
import pyb
笔者执行micropython截图如下:

三.总结与展望:
由arm中国的star-mc1加持的FR3068E-C很强,坊间传闻star-mc1和cortex-m33不相上下。除flash烧录外,笔者成功搭建了在linux下开发FR3068E-C开发环境,并写出了可复用的CMakeLists.txt模板。然后在qinyunti大牛的指引下,笔者也顺利完成microPython本地音乐播放。后续笔者还想继续完成openocd
的flash写支持,从而完全脱离windows操作系统的依赖,完整实现linux下的开发环境。
最后对厂商的建议:
1.开发板出厂固件前面能否加个延时1s左右再改引脚复用功能,方便swd连接
2.强烈建议出MCU对应的pack包,方便pyocd使用
3.下一个板子能否支持调试口供电,这样不用插两个usb接口