RK3562J技術(shù)分享 | AMP雙系統(tǒng)下的裸核中斷嵌套初體驗(yàn)

原創(chuàng) 2024-11-11 15:14:00 RK3562J AMP
多核異構(gòu)系統(tǒng)是?種使同?顆SoC芯片中不同核心分別獨(dú)立運(yùn)行不同平臺(tái)的計(jì)算系統(tǒng)。通過(guò)合理的處理器核心及外設(shè)資源劃分,使?顆SoC芯片能夠獨(dú)立運(yùn)行Linux系統(tǒng)和實(shí)時(shí)性系統(tǒng),在滿足系統(tǒng)軟件功能和硬件外設(shè)豐富性要求的同時(shí),也滿足系統(tǒng)的實(shí)時(shí)性要求,具有突出的性價(jià)比優(yōu)勢(shì)和產(chǎn)品體積優(yōu)勢(shì)。

1. 瑞芯微多核異構(gòu)系統(tǒng)

“瑞芯微多核異構(gòu)系統(tǒng)”是瑞芯微提供的?套通用多核異構(gòu)系統(tǒng)解決方案。

在運(yùn)行平臺(tái)方面:

Linux提供標(biāo)準(zhǔn)的Linux Kernel,RTOS提供開(kāi)源的RT-Thread ,Bare-metal提供基于RK HAL硬件抽象層的裸機(jī)開(kāi)發(fā)庫(kù)。同時(shí),瑞芯微多核異構(gòu)系統(tǒng)支持客戶自行適配更多的運(yùn)行平臺(tái),例如可以基于RK HAL硬件抽象層適配指定的RTOS等。

在處理器核心方面:

瑞芯微多核異構(gòu)系統(tǒng)支持SoC中同構(gòu)的ARM Cortex-A核心獨(dú)立運(yùn)行。也支持SoC中異構(gòu)的ARM Cortex-M或RISC-V核心獨(dú)立運(yùn)行。瑞芯微多核異構(gòu)系統(tǒng)通過(guò)合理的處理器核心資源劃分,將適當(dāng)?shù)娜蝿?wù)分配到最適合的核心進(jìn)行處理,從而使SoC發(fā)揮出更優(yōu)秀的性能和能效表現(xiàn)。

目前,瑞芯微多核異構(gòu)系統(tǒng)采用無(wú)監(jiān)督的AMP方案。不使用虛擬化管理,從而在運(yùn)行實(shí)時(shí)性系統(tǒng)時(shí)獲得更快的中斷響應(yīng),以滿足電力、工控行業(yè)應(yīng)用中嚴(yán)苛的硬實(shí)時(shí)性要求。

2. RK3562J處理器核心及AMP支持情況

處理器核心

AMP支持情況


3. 中斷嵌套機(jī)制

中斷嵌套是一種有效的中斷處理機(jī)制,它允許系統(tǒng)根據(jù)中斷的優(yōu)先級(jí)來(lái)響應(yīng)和處理中斷,從而確保關(guān)鍵任務(wù)能夠及時(shí)得到處理,具有實(shí)時(shí)性高、靈活性好、響應(yīng)快速等特點(diǎn),但傳統(tǒng)的Linux系統(tǒng)為了簡(jiǎn)化設(shè)計(jì)、提高系統(tǒng)的穩(wěn)定性和可預(yù)測(cè)性、減少資源競(jìng)爭(zhēng)和死鎖等風(fēng)險(xiǎn)、以及提高兼容性和可維護(hù)性,不支持中斷嵌套。這種設(shè)計(jì)選擇使得Linux內(nèi)核在許多應(yīng)用場(chǎng)景中表現(xiàn)出色,但對(duì)于高實(shí)時(shí)性場(chǎng)景下的應(yīng)用就顯得力不從心了。

4. 案例實(shí)踐分享

開(kāi)發(fā)板型號(hào):OK3562J-C

資料版本:OK3562-C_Linux 5.10.198_用戶資料_R1

測(cè)試思路:

使用兩個(gè)GPIO,分別為GPIO4B1和GPIO0B0,其中GPIO4B1設(shè)置為輸出,GPIO設(shè)置為輸入并且中斷配置為下降沿觸發(fā)。硬件上短接GPIO4B1和GPIO0B0。

使用Timer4定時(shí)器每秒產(chǎn)生一個(gè)定時(shí)器中斷,在中斷處理函數(shù)中控制GPIO4B1產(chǎn)生一個(gè)下降沿并延時(shí),如果出現(xiàn)了GPIO0B0中斷處理函數(shù)中的打印信息則證明成功發(fā)生了中斷搶占。

測(cè)試步驟:

(1)編寫測(cè)試程序fltest_irq_preempt.c開(kāi)啟TIEMR4和GPIO0B0的中斷并且將GPIO0B0配置為下降沿觸發(fā),在定時(shí)器中斷處理函數(shù)中將GPIO4B1拉高拉低,使之觸發(fā)GPIO0B0的中斷,在GPIO0B0的中斷處理函數(shù)中打印一句話來(lái)表明當(dāng)前進(jìn)入了GPIO0B0的中斷;

(2)修改中斷路由,添加TIMER4和GPIO0的中斷并使之綁定給CPU3,并設(shè)置TIMER4的中斷優(yōu)先級(jí)高于GPIO0;

(3)重新編譯鏡像并燒寫;

(4)在uboot菜單中打開(kāi)AMP并重啟OK3562J-C開(kāi)發(fā)板,此時(shí)RTOS調(diào)試串口打印如下:


按tab鍵可以打印出當(dāng)前的所有命令


可以看到我們的命令已經(jīng)注冊(cè)成功了。

現(xiàn)在執(zhí)行我們剛剛編寫的fl_irq_test這條命令,即可看到效果:


可以看到GPIO0B0的中斷搶占了當(dāng)前的TIMER4中斷。

我們將二者的優(yōu)先級(jí)調(diào)換一下再重新編譯燒寫,然后再次執(zhí)行該程序,可以看到GPIO0B0的中斷在TIMER4中斷結(jié)束之后才被處理,未發(fā)生搶占。



飛凌嵌入式OK3562J-C開(kāi)發(fā)板及FET3562J-C核心板現(xiàn)貨發(fā)售中,點(diǎn)擊下圖進(jìn)入RK3562系列產(chǎn)品頁(yè),即可了解更多產(chǎn)品詳情,火點(diǎn)擊左側(cè)在線客服,索取RK3562系列產(chǎn)品規(guī)格書。



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

  • OK3562J-C開(kāi)發(fā)板

    RK3562開(kāi)發(fā)板,采用核心板+底板分體式設(shè)計(jì),CPU采用瑞芯微工業(yè)級(jí)芯片RK3562J設(shè)計(jì),RK3562J是瑞芯微專為工業(yè)自動(dòng)化及消費(fèi)類電子設(shè)備打造的一款高性能、低功耗國(guó)產(chǎn)化應(yīng)用處理器,集成了4個(gè)ARM Cortex-A53高性能核,主頻高達(dá)1.8GHz。RK3562核心板采用3組80Pin板對(duì)板連接器,可插拔式設(shè)計(jì)便于產(chǎn)品的安裝與維護(hù)。 了解詳情
    OK3562J-C開(kāi)發(fā)板
  • FET3562J-C核心板

    RK3562核心板,采用高性能低功耗工業(yè)級(jí)芯片RK3562J設(shè)計(jì),RK3562J是瑞芯微專為工業(yè)自動(dòng)化及消費(fèi)類電子設(shè)備打造的一款高性能、低功耗國(guó)產(chǎn)化應(yīng)用處理器,集成了4個(gè)ARM Cortex-A53高性能核,主頻高達(dá)1.8GHz。RK3562核心板采用3組80Pin板對(duì)板連接器,可插拔式設(shè)計(jì)便于產(chǎn)品的安裝與維護(hù)。 了解詳情
    FET3562J-C核心板

推薦閱讀 換一批 換一批