AM62X系列M4F核开发踩坑记录
M4F核固件烧录方法
移Hello_word示例为例:把M4固件.out 文件放到文件系统目录/lib/firmware/m4fss_firmware目录下,然后输入cd /sys/class/remoteproc/remoteproc0
进入remoteproc0目录,
并输入echo m4fss_firmware/hello_world.release.out > firmware
加载刚才放入的固件(也可以修改/lib/firmware/目录下的软链接文件指向*.out固件)
最后输入echo start > state
执行程序,输入echo stop > state
停止程序(老版本可能不支持运行中stop,只能重启,新版本已经解决该问题),
cat state
可以查看程序运行情况,M核串口是typeC串口的B端口
流程记录
1.SDK环境配置
按照TI网站(https://dev.ti.com/tirex/explore/node?node=A__AD2nw6Uu4txAz2eqZdShBg__com.ti.MCU_PLUS_SDK_AM62X__sKXaSas__LATEST)搭建SDK环境,包括sysconfig,GCCGCC AARCH64 Compiler,python3,openssl,TI CLANG Compiler Toolchain等,只有所有环境均安装好后才能正确执行makefile,在SDK安装路径下输入make -sj4 all 将所有库初始化二进制文件
2.生成M4固件,以hello_world为例子
- 使用CCS
In CCS软件中, 在上方菜单栏中 View > Project Explorer,选择import项目,选择Browse,选择${SDK_INSTALL_DIR}/examples/hello_world
对于M4F ,选择 hello_world_{对应版本开发板}m4fss0-0_freertos_ti-arm-clang
对于R5F,选择 hello_world{对应版本开发板}_r5fss0-0_freertos_ti-arm-clang
该项目将被导入到 “Project Explorer”
右键单击项目标题,然后单击"Build Project"
构建成功,则会看到相应目录(一般是工作空间项目目录下的Debug或release文件夹)下产生.out文件 - 使用makefile
在SDK安装目录下:
对于M4F,make -s -C examples/hello_world/{对应版本开发板}/m4fss0-0_freertos/ti-arm-clang
对于R5F,make -s -C examples/hello_world/{对应版本开发板}/r5fss0-0_freertos/ti-arm-clang
构建成功后能够在examples/hello_world/{对应版本开发板}/r5fss0-0_freertos/ti-arm-clang目录下看到.out文件
问题记录
1.没有remoteproc0目录,烧录系统有问题
解决:重新烧录系统,包括内核镜像和相关模块。
2.echo m4fss_firmware/hello_world.release.out > firmware
报错程序运行中无法执行,stop报参数缺少。
解决:重启板子,低版本不支持运行时关闭。
3.echo m4fss_firmware/hello_world.release.out > firmware
成功,输入echo start > state
报错Boot failed: -22
解决:官方示例hello_world配置中有缺少,需要参考ipc_rpmsg_echo_linux示例进行配置
具体文件:1.example.syscfg文件。2.linker.cmd文件
在example.syscfg配置中已经要打开IPC通信选项,并与linuxA核消息通信勾选上哦!!!
在linker.cmd文件 ,需要添加资源表项,并制定资源表的位置在M4F内存的起始位置(这是由于Remoteproc驱动加载PRU固件时,需要在一开始读取资源表)