1 LPC55S69 是什麼?
LPC55S69 是 NXP Cortex-M33 雙核架構的 MCU ,此次討論是有關雙核要如何啟動和使用的流程,還有若是要啟用兩個 程序的關聯設定,需要注意的事項。
1.1 雙核方塊圖
雙核啟用方塊圖,如圖1.1.1
2 雙核模式使用說明
- 如何從無到有
不管是使用 MCUxpresso 或是 Keil ,都是需要開兩個 project 分別是使用 Core0 和 Core1
並且 先將 Core1 的 code 從 Flash 放在 要起始 RAM 上,在 Core0 將 CPUCFG 設成 Core1 要使用,並且將 Core1 的起始位址放在 RAM 上,最後再將 CPUCTRL 的 Core1 的 Clock 啟動之後 Reset Core1,如『圖2.1』( 註1 )
SYSCON->CPUCFG |= SYSCON_CPUCFG_CPU1ENABLE_MASK;
/* Boot source for Core 1 from RAM */
SYSCON->CPBOOT = SYSCON_CPBOOT_CPBOOT((uint32_t)(char *)bootAddress);
詳細可以參考 mcmgr_start_core_internal() 這個 function code,其中的方式,也是直接控制這些 register 來打開 Core1,所以要做到上面的步驟 Core0 需要知道 Core1 放置的 Flash 的起始位置,或者是要使用 link來做。
若是需要兩邊的程式有需要傳輸 ( 例如取值 ),就需要啟動 Mailbox 和 share memory。
主要是使用 Mailbox 的中斷 ( MBOXIRQ ),來傳送和接收 share memory 的 address ,再透過此位址,來取得要溝通的資料,可使用 MAILBOX_GetValue() ,MAILBOX_SetValue() 或 用Mailbox 的 IRQ0 register來設定 Core0要給 Core1 的中斷並放入一個 32 bits 資料過去,而 IRQ1 register 是反相的,用來設定 Core1要給 Core0 的中斷,如『圖2.2』( 註1 )。
- 直接使用關連
RAM size 的修改就會是在 MCU settings 內去修改了。
3 參考資料
註1 : 作者: NXP;出處 : https://www.mouser.com/pdfDocs/NXP_LPC55S6x_UM.pdf
評論