AMP“雙系統(tǒng)”加持,RK3568核心板強(qiáng)實(shí)時(shí)性再升級(jí)
近期,飛凌嵌入式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ù)。
相關(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)定出貨
了解詳情 -
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è)_原理圖等,