和我们熟悉的其他系列STM32 MCU一样,STM32MP157也有一个固件开发包--STM32CubeMP1,主要是用于STM32MP1上面的Cortex-M processor也就是M4内核处理器。STM32CubeMP1软件包基于STM32Cube MCU软件包,但已适应Linux框架(OpenSTLinux)。
为了使运行Linux的主处理器Cortex A7与Cortex M4内核的MCU协处理器之间能够轻松通信和资源共享,STM32CubeMP1引入了
新组件OpenAMP和RessourceManager:
1)OpenAMP是一个开源的非对称多处理框架,该框架是基于virtio的消息总线,它允许本地处理器与系统上可用的远程处理器进行通信。,这里说的本地处理器指的是Cortex A7,远程处理器指的是Cortex M4。
OpenAMP简介: http://www.mamicode.com/info-detail-2373653.html
2)RessourceManager:资源管理器是处理外围设备可访问性请求和系统资源配置的实用程序
STM32MP157的外设是Cortex A7和Cortex M4独占或者共享的,在使用的时候要安装实际的情况划分,具体的分配如下
深蓝是分配给A7的淡蓝是分配给M4,两种颜色都有是分配给A7&M4公用的。
STM32MP1 有2种启动模式:Production 启动模式 和 Engineering模式,默认为Production 模式。
Production boot mode下M4的固件依靠A7进行加载,系统资源由OpenSTLinux直接管理(时钟,调节器等),预构建的固件在OpenSTLinux映像或文件系统中提供和下载,通过Linux Remote Proc组件在协处理器M4上启动了预构建的固件,Cortex-A固件(Linux OS)负责加载Cortex-M固件。
Engineering boot mode专门用于直接在协处理器M4上进行固件测试,所有资源都直接在工程源代码中进行管理(时钟,调节器等),我们可以使用我们熟悉的IDE进行调试下载,这种模式就是我们熟悉的STM32的开发,只不过这个时候换成了一个主频更好的M4内核了。
我们先进行Engineering boot mode模式的测试,要想进入Engineering 启动模式需要设置BOOT引进,在STM32MP157A-DK1上BOOT1直接接地为0. BOOT0为0 ,BOOT2为1
设置好BOOT引脚,重启开发板,这样就进入到了Engineering boot mode。
使用STM32CubeIDE 打开STM32CubeMP1的测试代码,目前STM32CubeMP1里面只有STM32MP157A-DK2的代码,因为和STM32MP157A-DK1只有带不动屏幕的区别,所以我们直接使用STM32MP157A-DK2的代码
我们打开一个简单的IO中断工程
找到main.c 函数添加一个LED7 翻转的代码
然后配置STlink 为opendOCD模式
选择debug 然后就进入了 debug模式
全速运行,可以看到板子上的橙色LED7开始闪烁
到此,我们就直接在Engineering boot mode模式下和我们之前熟悉的那样,调试下载了M4内核。
|