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.創建工程
AWorksLPSDK相關使用請參考《AWorksLPSDK快速入門(MR6450)——開箱體驗》一文,本文不在贅述。
hello目錄下有兩個工程,hart0和hart1,分別對應主核和從核的工程、在選擇板卡時需要選擇EPC6750-AWI-muti板卡。
圖2選擇板卡
2. 編譯hart1固件在hart1工程的配置中選擇輸出文件類型為Raw binary。圖3Hart1工程配置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中運行、燒錄完成后按一下復位鍵。
圖6hart0編譯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串口打印信息
-
處理器
+關注
關注
68文章
19265瀏覽量
229673 -
接口
+關注
關注
33文章
8580瀏覽量
151031 -
SDK
+關注
關注
3文章
1035瀏覽量
45907
發布評論請先 登錄
相關推薦
評論