本帖最后由 OldestTrick 于 2020-3-27 23:08 编辑
在上个帖子 已经描述了production boot mode模式下M4的固件依靠A7进行加载,系统资源由OpenSTLinux直接管理(时钟,调节器等)。因为我们使用的Starter Package 开发包已经包括了编译好的M4和A7的测试工程固件,通过Linux Remote Proc组件在协处理器M4上启动了预构建的固件,Cortex-A固件(Linux OS)负责加载Cortex-M固件。
在Starter Package 里面提供了3种不同的内核配置模式:
默认的配置直接选择了模式1,我们想要测试M4 需要选择上面的模式3 将外设分配给M4内核使用
因为Starter Package里面并没有为STM32MP157A-DK1 提供单独分配给A7和M4的dtb文件,但是有STM32MP157A-DK2对应的文件。2个开发板的区别是一些加密外设和蓝牙WiFi以及LCD ,其他都没有区别,所以我们直接使用STM32MP157A-DK2板子的的dtb文件。
修改/boot/mmc0_stm32mp157a-dk1_extlinux/extlinux.conf 如下:
重启开发板 然后选择模式3:
这样就把相应的外设分配给了M4 ,然后就可以测试编译好的M4工程的固件了,测试固件放在了/usr/local下面,可以看到和我们下载的
STM32MPCube 里面的测试工程的结构一样:
我们还是选择工程模式下的IO工程测试下,测试方法直接使用脚本文件加start /stop 启动和暂停
这样M4内核就加载了对应的固件了,测试工程是按下USER1对应的LED7反转!嗯,又是点灯!!!
终止的固件使用stop 命令
我们使用的Starter Package开发包都是默认编译给入门新手测试了,如果需要调整M4或者自定义M4固件,可以使用Developer package或者Distribution package进行更加灵活的开发。更多可以参考stm32mpu wiki.
|