AMP“雙系統(tǒng)”加持,RK3568核心板強實時性再升級

原創(chuàng) 2024-01-17 16:35:00 AMP雙系統(tǒng) AMP AMP架構(gòu)
 如果要選出飛凌嵌入式最熱門的幾款產(chǎn)品,F(xiàn)ET3568-C系列核心板一定榜上有名。這款高性價比的全能型核心板上市兩年來已贏得了數(shù)千家客戶的青睞。飛凌嵌入式也在不斷對它進行升級——從“配置新增”到“100%國產(chǎn)化認證”再到“新系統(tǒng)適配”,以滿足更多行業(yè)客戶的需求。

近期,飛凌嵌入式FET3568-C系列核心板再度迎來新升級—— 支持“AMP”雙系統(tǒng)。

什么是“AMP”

AMP(非對稱多處理)簡單來說就是:多核處理器的每個核之間相互隔離,可以相對獨立地運行不同的操作系統(tǒng)或裸機程序。這種運行模式比較適合高實時性的應用。

FET3568-C核心板AMP

飛凌嵌入式FET3568-C核心板搭載的RK3568處理器采用四核Cortex-A55架構(gòu),從架構(gòu)上看屬于“同構(gòu)多核架構(gòu)”。

RK3568的AMP SDK與Linux SDK相比,區(qū)別在于Linux SDK中使用的是SMP(對稱多處理)模式,即只運行一個Linux操作系統(tǒng),在該操作系統(tǒng)中管理全部四個核;而AMP SDK使用AMP的模式,四個核心中的三個核心共同運行一個Linux操作系統(tǒng),另一個核心單獨運行裸機程序。

由于高實時性任務是由運行裸機程序的核心專門處理的,所以這種運行模式可以很好地滿足如電力互聯(lián)網(wǎng)、電網(wǎng)繼電保護、電力系統(tǒng)安全控制、工業(yè)自動化等領域的高實時性需求。

更低成本,更高實時性,更具優(yōu)勢

(1) 更低成本:

為了解決Linux系統(tǒng)主控實時性不足的問題,在傳統(tǒng)應用中通常會采取外掛單片機的方式專門執(zhí)行高實時性的程序。

而采用AMP系統(tǒng)就可以舍棄掉外置的單片機,在FET3568-C核心板上,可以將四個A55核中的一個核心分離出來作為實時核單獨運行RT-Thread或裸機程序——只用一顆芯片就能夠完成所有的工作,降低了硬件成本。

(2) 高實時性:

由于Linux系統(tǒng)實時性較低,所以無法用來執(zhí)行對實時性要求高的任務。而裸機程序或者實時操作系統(tǒng)的實時性遠高于Linux系統(tǒng),同時也得益于FET3568-C核心板最高2.0GHz的高主頻,運行實時操作系統(tǒng)的A55核也可以擁有很強的實時性。

核間通信

與其它多核異構(gòu)架構(gòu)的處理器相同,AMP也使用共享內(nèi)存的方式在A核(Linux)與實時核(裸機或?qū)崟r操作系統(tǒng))之間進行數(shù)據(jù)傳輸。

通過物理內(nèi)存DDR分配,將硬件層分為了兩部分:TXVring Buffer(發(fā)送虛擬環(huán)狀緩沖區(qū))和RXVring Buffer(接收虛擬環(huán)狀緩沖區(qū));其中實時核從TXVring區(qū)發(fā)送數(shù)據(jù),從RXVring區(qū)讀取接收數(shù)據(jù),A核反之。

AMP使用示例

目前飛凌嵌入式FET568-C核心板已提供GPIO、UART、SPI接口的使用示例,使用RPMSG進行核間通信。其它接口還在適配中,之后會陸續(xù)開放。裸機程序可以在提供的工具中使用JLINK仿真調(diào)試。

下面簡要介紹一下裸機程序中UART接口的使用示例:

(1) 硬件連接

本示例使用的是UART5,使用跳線帽將OK3568-C開發(fā)板上的TX5與RX5短接。

(2) 設備樹配置

為了防止Linux占用UART5的資源導致實時核無法使用UART5,需要先在設備樹上的rockchip_amp節(jié)點添加對UART5的資源保護,包括時鐘和pinctrl。

clocks= <&cru SCLK_UART5>, <&cru PCLK_UART5>,pinctrl-names= “default”, ”uart5”;pinctrl-1= <&uart5m1_xfer>;

(3) 裸機程序的配置

UART接口使用介紹:
 // 管腳配置:選擇UART5的收發(fā)管腳。/* 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,無校驗,數(shù)據(jù)位8位,無流控,停止位1位。 
/* uart5 config */ 
struct HAL_UART_CONFIG demo_uart_config = { 
.baudRate = UART_BR_115200, // 波特率
.dataBit = UART_DATA_8B, // 數(shù)據(jù)位 
.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); 
 // 執(zhí)行流程 
// 初始化完成后,會先發(fā)送一串數(shù)據(jù)。如果接收到數(shù)據(jù),觸發(fā)中斷,然后將接收的數(shù)據(jù)從調(diào)試串口發(fā)送出來。
 // 中斷回調(diào)函數(shù) 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”); 
}
示例使用:
根據(jù)OK3568-C開發(fā)板產(chǎn)品資料中提供的手冊,在裸機程序的main函數(shù)中調(diào)用我們編寫好的使用例程。

實驗現(xiàn)象:

按照手冊編譯燒寫完程序后,打開串口調(diào)試助手,打開對應串口,可以看到OK3568-C開發(fā)板開機后程序發(fā)出的數(shù)據(jù)。



在串口調(diào)試助手,輸入任何數(shù)據(jù)并發(fā)送,觸發(fā)接收中斷,從實時核調(diào)試串口(uart4)就可以看到輸入的數(shù)據(jù)了。






相關產(chǎn)品 >

  • FET3568-C核心板

    RK3568性能強而穩(wěn) 國產(chǎn)芯|飛凌嵌入式RK3568系列核心板,采用瑞芯微國產(chǎn)高性能AI處理器RK3568設計生產(chǎn),RK3568兼具CPU、GPU、NPU、VPU于一身,RK3568 性能、性價比在同類產(chǎn)品中具有較高優(yōu)勢,RK3568處理器是一款定位中高端的通用型SoC, 飛凌RK3568核心板主要面向工業(yè)互聯(lián)網(wǎng)、HMI、NVR存儲、車載中控、工業(yè)網(wǎng)關等領域。目前RK3568系列已經(jīng)批量穩(wěn)定出貨

    了解詳情
    FET3568-C核心板
  • OK3568-C開發(fā)板

    強而穩(wěn),國產(chǎn)芯,1Tops算力,多路高速接口|飛凌RK3568系列RK3568開發(fā)板基于國產(chǎn)工業(yè)級AI處理器RK3568四核64位Cortex-A55 處理器設計。RK3568作為國產(chǎn)化高性能處理器,瑞芯微RK3568芯片是一款定位中高端的通用型SoC,瑞芯微RK3568芯片是一款定位中高端的通用型SoC,NPU達到1Tops,飛凌RK3568系列核心板提供瑞芯微RK3568規(guī)格書_datasheet_數(shù)據(jù)手冊_原理圖等,


    了解詳情
    OK3568-C開發(fā)板

推薦閱讀 換一批 換一批