AWorksLP 样例详解(MR6750)——双核烧录

aworkslp 对外设进行了高度抽象化,为同一类外设提供了相同的接口,应用程序可以轻松跨平台。本文以mr6750 平台为例,介绍aworkslp 双核烧录的方法。
简介
mr6750 双核是集成了两个risc-v处理器,是两个完全独立的cpu,故hpm双核工程是core0工程和core1工程两个独立的工程。因此hpm双核工程编译,其实是两个独立的单核工程的编译。用户只需要建立core0和core1的各自工程编译调试即可。
双核固件烧录
双核的例程是由hart0 启动hart1 的方式, 所以需要两个固件,即hart0 的固件与hart1 的固件。采用汇编incbin xxx.bin 的方式,将hart1 的固件包含在hart0 的固件中,所以最终hart0 与hart1 的固件合并成一个elf 或者bin 文件,由调试器下载的芯片中hart0 的固件是在flash 中运行,hart1 的固件是在sdram 中运行。
注: hpm6750 总是从hart0 启动,因此hart0 是主核,hart1 是从核,hart1 作为从核不能自主启动,必须由hart0 来启动。
{sdk}\demos\multi-core路径下为6750双核例程,hello例程是最基础的双核例程,openamp和rpc是两种多核处理器框架、本小节将基于hello例程介绍双核的程序如何烧录。
图1 例程目录
1. 创建工程
aworkslp sdk相关使用请参考《aworkslp sdk快速入门(mr6450)——开箱体验》一文,本文不在赘述。
hello目录下有两个工程,hart0和hart1,分别对应主核和从核的工程、在选择板卡时需要选择epc6750-awi-muti板卡。
图2 选择板卡
2. 编译hart1固件在hart1工程的配置中选择输出文件类型为raw binary。图3 hart1工程配置hart1工程选择2 sdram_hart1_debug编译方式,从核的程序将在sdram中运行。编译完成后将会在当前工程目录下的hart1\project_eclipse\sdram_hart1_debug路径下生成hpm6750-multi-hart1.bin文件。
图4 编译方式
将hpm6750-multi-hart1.bin固件拷贝到对应的板卡路径中的source文件中、{sdk}\platforms\platform-hpm-aworks-lp\boards\epc6750-awi-muti\source。
注意:hpm_hart1_image.s文件中的名称要与从核的固件名称相同。
图5 拷贝固件3. 编译hart0固件
将hart1固件拷贝完成后、编译hart0固件。主核的程序将在flash中运行、烧录完成后按一下复位键。
图6 hart0编译4. 例程hart1的工程源码如下,在从核中间隔1秒在对应的串口中打印”hart1:hello world!\n”。
             int aw_main(){    aw_kprintf(\r\napplication start.............. \r\n);
   while(1) {
       aw_kprintf(hart1: hello world!\n);        aw_mdelay(1000);    }
   return 0;
}
hart0的工程源码如下在__start_hart1(void)函数中使用aw_open接口打开核从核、打开后在对应的调试串口中打印”hart0:hello world!\n”。
                         static void __start_hart1(void){    int fd;    fd = aw_open(/dev/multi_core, aw_o_rdwr, 0);    if (fd < 0) {        aw_kprintf(open error, fd: %d\n, fd);    }    aw_kprintf(open multi_core ok!\n);}
int aw_main(){    aw_kprintf(\r\napplication start.............. \r\n);
   __start_hart1();
   while(1) {
       aw_kprintf(hart0: hello world!\n);        aw_mdelay(1000);    }
   return 0;
}
在{sdk}\platforms\platform-hpm-aworks-lp\boards\epc6750-awi-muti\epc6750-awi-muti.dts文件中定义了hart0和hart1两个工程分别使用的调试串口号、当使用hart1工程时调试串口为uart13,当使用hart0工程时调试串口为uart0。
注意:若使用的时epc6750-awi-l评估板,评估板的uart13串口对应的硬件接的是485,需在gui上使能485功能才能使用,也可直接将uart13改为uart5在排针上有对应接口直接使用即可。
图7 调试串口代码运行后hart0和hart1所对应的串口的打印信息分别为:图8 串口打印信息

关于AC-DC电源模块测试教程的详细说明
射频类的仪器典型故障都有哪些-安泰维修
1500万片单一来源采购! 芯翼信息科技NB-IoT芯片XY1100系列再获中国移动大单
三星最新款智能手表将与Galaxy Note 9一同在8月24日发售
浅谈5G对连接器的要求
AWorksLP 样例详解(MR6750)——双核烧录
基于边缘智能网关的储充一体电站管理方案
Facebook开始建立数字化相关的服务和产品?
中国五大移动应用商店携手启动64位安卓生态迁移
一文解密Galaxy A系列是如何肩负三星崛起大任
实现模拟电源数字管理的方法
巧用去耦电容
简单介绍灌胶加工胶水固化后产生气泡的原因
陶瓷基板溢胶机理分析及改善方法研究
单电源供电的信号(函数)发生器电路图介绍
iPhone 13发售日期确定
FLIR通过收购Acyclica来推进智能交通系统业务
大数据行业再拉警报
倪妮邀你共赴vivoX9s新品发布会,亲授X9s的自拍秘诀
Jetson Nano 4GB常用的电源连接方式