前 言
本文主要介紹基于OpenAMP框架的雙核ARM通信案例使用說明。
開發環境
Windows開發環境:Windows10 64bit
開發工具:TD_5.9.1_DR1_2025.1_NL、FD_2025.1_SP1
術語表
為便于閱讀,下表對文檔出現的關鍵術語進行解釋;對于廣泛認同釋義的術語,在此不做注釋。

注意事項
案例位于產品資料“4-軟件資料Demoamp_demos”目錄下,案例目錄詳細說明見下表。

1OpenAMP使用說明
OpenAMP是一個標準化的嵌入式多核框架,主要針對AMP應用場景提供RTOS和裸機程序必要的管理和通信接口。它兼容了Linux的Remoteproc和Rpmsg設計,為遠程核心(Remoteprocessors)提供了軟件組件,使得用戶能夠快速地搭建一套標準的核間交互應用場景。
在安路多核異構系統中,APU0作為OpenAMP的Master端,運行Linux系統;APU1作為OpenAMP的Slave端,運行Baremetal或FreeRTOS程序。其中,APU0使用remoteproc(即Rproc)加載APU1程序,并對APU1進行配置。
圖 1
目前TLDR1-EVM支持的OpenAMP場景組合如下表。

2amp_rpmsg_echo案例
2.1案例功能
案例功能:APU0使用RPMsg向APU1發送數據,APU1接收到數據后再使用RPMsg向APU0回傳數據。APU0對回傳的數據進行驗證,并輸出驗證結果。
2.2TD工程說明
請參考《Linux系統開發手冊》的“FSBL TD工程說明”章節。
2.2.1IP核簡介
IP核開發相關資料可查閱產品資料“6-開發參考資料Anlogic官方參考文檔”目錄下文檔,IP核配置參數如下。
(1)ARM Processor System
ARM Processor System IP核心配置和FSBL工程基本一致,其他詳細配置可參考位于產品資料“4-軟件資料LinuxFSBLfsbl-[版本號]”目錄下的FSBL工程。
2.3FD工程說明
Baremetal和FreeRTOSFD工程注意事項如下:
(1)創建Platform Project工程時"Processor"選擇"apu-1"。
備注:生成Baremetal FD工程時,"Operating system"選擇"standalone";生成FreeRTOSFD工程時,"Operating system"選擇"freertos"。
圖 2
(2)生成Platform Project工程后雙擊"system.mss"后繼續點擊"Modify this BSP's Settings"修改相關配置。
圖 3
(3)點擊"library"選項勾選"LIB_METAL"和"LIB_OPENAMP",若不勾選這兩個板級支持包將會無法正常創建OpenAMP應用。
圖 4
(4)點擊"platform"選項將"OUTPUT_DEV"中的Value值設置為"UART0",若不設置該選項將會導致主機和從機使用同一串口,導致沖突。
圖 5
(5)創建Applicable project工程時直接選擇"DEMO_OPENAMP_RPMSG_ECHO"應用。
圖 6
2.4案例測試
請將產品資料“4-軟件資料Demoamp_demosamp_rpmsg_echolinux_demodtsimage”目錄下的dtb.bin文件拷貝至評估板文件系統目錄下。執行如下命令替換系統默認設備樹文件,評估板重啟生效。
Target# mv dtb.bin/boot/dtb.bin
Target# reboot
圖 7
評估板上電啟動后,在U-Boot倒計時結束之前長按"Ctrl + C"進入U-Boot命令行模式,執行如下命令,修改環境變量。
U-Boot# setenv mmc_boot 'if mmc dev ${devnum}; then devtype=mmc; if test ${devnum} -eq 0; then setenv bootargs '"'"'console=ttyS1,115200n8 earlycon=uart,mmio32,0xf8401000 loglevel=8 root=/dev/mmcblk0p2 rw rootfstype=ext4 rootwait maxcpus=1=1'"'"'; fi; if test ${devnum} -eq 1; then setenv bootargs '"'"'console=ttyS1,115200n8 earlycon=uart,mmio32,0xf8401000 loglevel=8 root=/dev/mmcblk1p2 rw rootfstype=ext4 rootwait maxcpus=1'"'"'; fi; ext4load mmc ${devnum}:2 ${kernel_addr_r} ${bootdir}/${kernel_image}; ext4load mmc ${devnum}:2 ${fdt_addr_r} ${bootdir}/${devicetree_image}; bootm ${kernel_addr_r} - ${fdt_addr_r}; run scan_dev_for_boot_part2; fi'
U-Boot# saveenv
U-Boot# reset
圖?8
如需恢復U-Boot環境變量,在U-Boot命令行模式執行以下命令。
U-Boot# env default -a-f
U-Boot# saveenv
U-Boot# reset
圖?9
進入評估板文件系統,執行如下命令,查看環境變量是否設置成功,確保只有一個核心被使用。
Target# cat /proc/cpuinfo
圖 10
將APU1 Baremetal或FreeRTOS可執行文件拷貝至評估板文件系統"/lib/firmware/"目錄下(若該目錄不存在,請新建),并執行如下命令加載APU1程序。本次以Baremeta程序進行演示,如需測試FreeRTOS程序請修改命令中對應的可執行文件名稱。
Target# mkdir -p /lib/firmware
Target# cp amp_rpmsg_echo_baremetal_a35.elf /lib/firmware/
Target# echo amp_rpmsg_echo_baremetal_a35.elf > /sys/class/remoteproc/remoteproc0/firmware
Target# echo start > /sys/class/remoteproc/remoteproc0/state
圖 11
將產品資料“4-軟件資料Demoamp_demosamp_rpmsg_echolinux_demobin”目錄下的APU0應用程序可執行文件echo_test拷貝至評估板文件系統,執行如下命令,通過RPMsg實現與APU1進行通信。
Target# chmod +x echo_test
Target# ./echo_test
圖 12
圖 13
執行如下命令,停止APU1程序。
Target# echo stop > /sys/class/remoteproc/remoteproc0/state
圖 14
2.5案例編譯
2.5.1設備樹編譯
將案例"linux_demodtssrc"目錄下tldr1-evm.dts設備樹拷貝至LinuxSDK源碼"linux/arch/arm64/boot/dts/anlogic"目錄下。
圖?15
請按照《Linux系統開發手冊》文檔“LinuxSDK配置與編譯”章節,重新編譯LinuxSDK即可生成新的設備樹鏡像文件,位于LinuxSDK源碼"device/output/anlogic_dr1m90/image"目錄下。
圖 16
2.5.2APU0應用程序編譯
請參考《Linux系統開發手冊》文檔編譯LinuxSDK,并將APU0應用程序源碼src目錄拷貝至Ubuntu,然后在源碼目錄下執行如下命令修改Makefile文件。工具鏈路徑請以實際情況進行修改。
圖 17
修改內容如下:
CC = /home/tronlong/DR1/SDK_2025.1/toolchains/aarch64-linux/bin/aarch64-linux-gnu-gcc
圖 18
修改完成保存后,在源碼目錄下執行如下命令進行編譯。
Host# make
圖 19
2.5.3APU1baremetal與FreeRTOS程序編譯
請參考《TD-FD工程編譯與加載》進行工程編譯。
2.6關鍵代碼
2.6.1linux_demo代碼說明
linux_demo程序的echo_test.c文件位于案例"linux_demosrc"目錄下。
(1)加載RPMsg_char驅動。
圖 20
(2)綁定RPMsg設備并獲取RPMsg驅動。
圖 21
(3)創建RPMsg端點。
圖 22
(4)打開RPMsg驅動設備節點。
圖 23
(5)分配內存,進行數據收發測試。
圖 24
圖 25
2.6.2baremetal_demo代碼說明
baremetal_demo程序的rpmsg-echo.c文件位于案例
"baremetal_demoprojectamp_rpmsg_echo_a35amp_rpmsg_echosrcsystemgeneric"目錄下。
(1)main()函數調用openamp_sample()函數進行系統初始化。
圖 26
(2)openamp_sample()函數初始化系統、創建設備、調用app函數、釋放設備。
圖 27
圖 28
(3)創建RPMsg端點、進行消息處理和檢測、最后銷毀RPMsg端點。
圖 29
2.6.3freertos_demo代碼說明
由于FreeRTOS與Baremetal程序相似,freertos_demo代碼說明可參考baremetal_demo代碼說明小節。
審核編輯 黃宇
-
ARM
+關注
關注
135文章
9553瀏覽量
391867 -
Amp
+關注
關注
0文章
100瀏覽量
48495 -
Open
+關注
關注
0文章
24瀏覽量
11417
發布評論請先 登錄
DR1 系列評估板 eMMC 健康管理案例開發手冊:信息查詢與壽命監控
DR1 系列核心板 PS+PL 異構多核實戰案例手冊(二)
DR1 系列核心板 PS+PL 異構多核實戰案例手冊(一)
DR1 評估板 PL 端 FPGA 開發完全指南:基礎案例與 ADC 采集模塊詳解(一)
DR1M90 評估板 TD-FD 工程與 Linux 多場景應用開發指南
安路DR1M90評估板:從基礎外設到通信模塊測試指南
【米爾MYC-YM90X安路飛龍DR1開發板】HMI人機界面開發
全國產!瑞芯微 RK3576 ARM 八核 2.2GHz 工業開發板—LVGL應用開發案例
搭載ARM,NPU,FPGA三種核心的開發板—米爾安路DR1M90飛龍派
有ARM,NPU,FPGA三種核心的開發板 — 米爾安路飛龍派開發板
DR1 系列評估板 OpenAMP 雙核 ARM 通信案例開發手冊
評論