AMP“雙系統”加持,RK3568核心板強實時性再升級
近期,飛凌嵌入式FET3568-C系列核心板再度迎來新升級—— 支持“AMP”雙系統。
什么是“AMP”
AMP(非對稱多處理)簡單來說就是:多核處理器的每個核之間相互隔離,可以相對獨立地運行不同的操作系統或裸機程序。這種運行模式比較適合高實時性的應用。
FET3568-C核心板AMP
飛凌嵌入式FET3568-C核心板搭載的RK3568處理器采用四核Cortex-A55架構,從架構上看屬于“同構多核架構”。
RK3568的AMP SDK與Linux SDK相比,區別在于Linux SDK中使用的是SMP(對稱多處理)模式,即只運行一個Linux操作系統,在該操作系統中管理全部四個核;而AMP SDK使用AMP的模式,四個核心中的三個核心共同運行一個Linux操作系統,另一個核心單獨運行裸機程序。
由于高實時性任務是由運行裸機程序的核心專門處理的,所以這種運行模式可以很好地滿足如電力互聯網、電網繼電保護、電力系統安全控制、工業自動化等領域的高實時性需求。
更低成本,更高實時性,更具優勢
(1) 更低成本:
為了解決Linux系統主控實時性不足的問題,在傳統應用中通常會采取外掛單片機的方式專門執行高實時性的程序。
而采用AMP系統就可以舍棄掉外置的單片機,在FET3568-C核心板上,可以將四個A55核中的一個核心分離出來作為實時核單獨運行RT-Thread或裸機程序——只用一顆芯片就能夠完成所有的工作,降低了硬件成本。
(2) 高實時性:
由于Linux系統實時性較低,所以無法用來執行對實時性要求高的任務。而裸機程序或者實時操作系統的實時性遠高于Linux系統,同時也得益于FET3568-C核心板最高2.0GHz的高主頻,運行實時操作系統的A55核也可以擁有很強的實時性。
核間通信
與其它多核異構架構的處理器相同,AMP也使用共享內存的方式在A核(Linux)與實時核(裸機或實時操作系統)之間進行數據傳輸。
通過物理內存DDR分配,將硬件層分為了兩部分:TXVring Buffer(發送虛擬環狀緩沖區)和RXVring Buffer(接收虛擬環狀緩沖區);其中實時核從TXVring區發送數據,從RXVring區讀取接收數據,A核反之。
AMP使用示例
目前飛凌嵌入式FET3568-C核心板已提供GPIO、UART、SPI接口的使用示例,使用RPMSG進行核間通信。其它接口還在適配中,之后會陸續開放。裸機程序可以在提供的工具中使用JLINK仿真調試。
下面簡要介紹一下裸機程序中UART接口的使用示例:
(1) 硬件連接
本示例使用的是UART5,使用跳線帽將OK3568-C開發板上的TX5與RX5短接。
(2) 設備樹配置
為了防止Linux占用UART5的資源導致實時核無法使用UART5,需要先在設備樹上的rockchip_amp節點添加對UART5的資源保護,包括時鐘和pinctrl。
clocks= <&cru SCLK_UART5>, <&cru PCLK_UART5>,pinctrl-names= “default”, ”uart5”;pinctrl-1= <&uart5m1_xfer>;(3) 裸機程序的配置
UART接口使用介紹:
// 管腳配置:選擇UART5的收發管腳。/* uart5 tx */
HAL_PINCTRL_SetIOMUX(GPIO_BANK3, GPIO_PIN_C2, PIN_CONFIG_MUX_FUNC4);
/* uart5 rx */
HAL_PINCTRL_SetIOMUX(GPIO_BANK3, GPIO_PIN_C3, PIN_CONFIG_MUX_FUNC4);
/* uart5 m1 */ HAL_PINCTRL_IOFuncSelForUART5(IOFUNC_SEL_M1);
// 通訊配置:波特率為115200,無校驗,數據位8位,無流控,停止位1位。
/* uart5 config */
struct HAL_UART_CONFIG demo_uart_config = {
.baudRate = UART_BR_115200, // 波特率
.dataBit = UART_DATA_8B, // 數據位
.stopBit = UART_ONE_STOPBIT, // 停止位
.parity = UART_PARITY_DISABLE, // 校驗
}; HAL_UART_Init(&g_uart5Dev, &demo_uart_config);
中斷使能:配置并使能接收超時中斷。
HAL_IRQ_HANDLER_SetIRQHandler(UART5_IRQn, uart5_isr, NULL);
HAL_GIC_Enable(UART5_IRQn);
HAL_UART_EnableIrq(g_uart5Dev.pReg, UART_IER_RDI);
// 執行流程
// 初始化完成后,會先發送一串數據。如果接收到數據,觸發中斷,然后將接收的數據從調試串口發送出來。
// 中斷回調函數 int iir = 0;
iir = HAL_UART_GetIrqID(g_uart5Dev.pReg);
if (iir & UART_IIR_RX_TIMEOUT) {
do {
ret = HAL_UART_SerialIn(g_uart5Dev.pReg, &c, 1);
if (ret)
printf("%02x ", c);
} while (ret);
printf(“\n”);
}
示例使用:
根據OK3568-C開發板產品資料中提供的手冊,在裸機程序的main函數中調用我們編寫好的使用例程。
實驗現象:
按照手冊編譯燒寫完程序后,打開串口調試助手,打開對應串口,可以看到OK3568-C開發板開機后程序發出的數據。
相關產品 >
-
FET3568-C核心板
RK3568性能強而穩 國產芯|飛凌嵌入式RK3568系列核心板,采用瑞芯微國產高性能AI處理器RK3568設計生產,RK3568兼具CPU、GPU、NPU、VPU于一身,RK3568 性能、性價比在同類產品中具有較高優勢,RK3568處理器是一款定位中高端的通用型SoC, 飛凌RK3568核心板主要面向工業互聯網、HMI、NVR存儲、車載中控、工業網關等領域。目前RK3568系列已經批量穩定出貨
了解詳情 -
OK3568-C開發板
強而穩,國產芯,1Tops算力,多路高速接口|飛凌RK3568系列RK3568開發板基于國產工業級AI處理器RK3568四核64位Cortex-A55 處理器設計。RK3568作為國產化高性能處理器,瑞芯微RK3568芯片是一款定位中高端的通用型SoC,瑞芯微RK3568芯片是一款定位中高端的通用型SoC,NPU達到1Tops,飛凌RK3568系列核心板提供瑞芯微RK3568規格書_datasheet_數據手冊_原理圖等,