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

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

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

什么是“AMP”

AMP(非對(duì)稱多處理)簡(jiǎn)單來(lái)說(shuō)就是:多核處理器的每個(gè)核之間相互隔離,可以相對(duì)獨(dú)立地運(yùn)行不同的操作系統(tǒng)或裸機(jī)程序。這種運(yùn)行模式比較適合高實(shí)時(shí)性的應(yī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(對(duì)稱多處理)模式,即只運(yùn)行一個(gè)Linux操作系統(tǒng),在該操作系統(tǒng)中管理全部四個(gè)核;而AMP SDK使用AMP的模式,四個(gè)核心中的三個(gè)核心共同運(yùn)行一個(gè)Linux操作系統(tǒng),另一個(gè)核心單獨(dú)運(yùn)行裸機(jī)程序。

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

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

(1) 更低成本:

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

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

(2) 高實(shí)時(shí)性:

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

核間通信

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

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

AMP使用示例

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

下面簡(jiǎn)要介紹一下裸機(jī)程序中UART接口的使用示例:

(1) 硬件連接

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

(2) 設(shè)備樹(shù)配置

為了防止Linux占用UART5的資源導(dǎo)致實(shí)時(shí)核無(wú)法使用UART5,需要先在設(shè)備樹(shù)上的rockchip_amp節(jié)點(diǎn)添加對(duì)UART5的資源保護(hù),包括時(shí)鐘和pinctrl。

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

(3) 裸機(jī)程序的配置

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,無(wú)校驗(yàn),數(shù)據(jù)位8位,無(wú)流控,停止位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, // 校驗(yàn)
 }; HAL_UART_Init(&g_uart5Dev, &demo_uart_config); 
中斷使能:配置并使能接收超時(shí)中斷。
 HAL_IRQ_HANDLER_SetIRQHandler(UART5_IRQn, uart5_isr, NULL); 
HAL_GIC_Enable(UART5_IRQn); 
HAL_UART_EnableIrq(g_uart5Dev.pReg, UART_IER_RDI); 
 // 執(zhí)行流程 
// 初始化完成后,會(huì)先發(fā)送一串?dāng)?shù)據(jù)。如果接收到數(shù)據(jù),觸發(fā)中斷,然后將接收的數(shù)據(jù)從調(diào)試串口發(fā)送出來(lái)。
 // 中斷回調(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開(kāi)發(fā)板產(chǎn)品資料中提供的手冊(cè),在裸機(jī)程序的main函數(shù)中調(diào)用我們編寫(xiě)好的使用例程。

實(shí)驗(yàn)現(xiàn)象:

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



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






相關(guān)產(chǎn)品 >

  • FET3568-C核心板

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

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

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


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

推薦閱讀 換一批 換一批