0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

LPC5500雙核基本架構(gòu)!LPC5500雙核面貌特征

UtFs_Zlgmcu7890 ? 來源:lp ? 2019-03-26 16:30 ? 次閱讀

這次奉上與LPC5500“核心”相關(guān)的“硬核”技術(shù)——雙核,以饗讀者。誠然,MCU雙核已不是什么新鮮玩意兒。但是,LPC5500博采了LPC4300和LPC54110這兩個(gè)系列所長,使得雙核更簡(jiǎn)單實(shí)用。

LPC5500雙核基本架構(gòu)

雙核并不高深,所謂雙核就是兩個(gè)CPU——中央處理單元,也就是一個(gè)MCU芯片內(nèi)置了兩個(gè)CPU。

和之前支持雙核的LPC系列一樣,針對(duì)于MCU嵌入式應(yīng)用,LPC5500依然采用簡(jiǎn)單的非對(duì)稱架構(gòu),即一個(gè)主CPU,一個(gè)從CPU,這類似于有些產(chǎn)品采用主MCU和從MCU的設(shè)計(jì)。只是支持雙核的MCU,是共享此MCU所有的存儲(chǔ)器和外設(shè)接口資源。

共享就帶來競(jìng)爭(zhēng)的問題,處理不當(dāng)則影響性能。LPC5500有配套的系統(tǒng)架構(gòu)來使得此共享可轉(zhuǎn)化為并行的,從而盡量避免競(jìng)爭(zhēng),來保證性能不被影響。

應(yīng)對(duì)競(jìng)爭(zhēng)架構(gòu)上的考慮,如下圖所示,主要有兩條:

內(nèi)部AHB總線是多層矩陣架構(gòu);

分離出多塊獨(dú)立的SRAM。

圖中所示:紅色框是多層AHB矩陣總線;綠色框是多塊分立的存儲(chǔ)塊。主CPU和從CPU的代碼數(shù)據(jù)可存放在不同存儲(chǔ)塊中,它們和圖中左下角大量外設(shè)接口并行的掛在矩陣總線上。

這樣,藍(lán)色框中的雙核CPU0和CPU1,可以同時(shí)并行地對(duì)存儲(chǔ)塊和外設(shè)接口進(jìn)行訪問,即程序可以同時(shí)運(yùn)行。如此,則雙核的威力能夠得以充分的發(fā)揮。

至此,我們初步認(rèn)識(shí)了LPC5500雙核,了解了其基本框架。但是,這好比我們只是遠(yuǎn)遠(yuǎn)的看見了一個(gè)人,大概知道其身形,他具體容貌怎樣的呢?讓我們一起往下看

LPC5500雙核面貌特征

上面提到,LPC5500雙核分為主從,主CPU命名為CPU0,從CPU命名為CPU1。它們都是基于ARM Cortex-M33的。

它們的基本配置構(gòu)成如下:

1、CPU0 (r0p3版):

頻率最高可達(dá)100MHz

TrustZone、DSP、浮點(diǎn)單元和存儲(chǔ)保護(hù)單元(MPU)

內(nèi)置嵌套向量中斷控制器(NVIC)

串行線調(diào)試接口(SWD)

系統(tǒng)嘀嗒定時(shí)器(System tick timer)

內(nèi)置嵌套向量中斷控制器(NVIC)

串行線調(diào)試接口(SWD)

系統(tǒng)嘀嗒定時(shí)器(System tick timer)

2、CPU1 (r0p3版):

頻率最高可達(dá)100 MHz

內(nèi)置嵌套向量中斷控制器(NVIC)

串行線調(diào)試接口(SWD)

系統(tǒng)嘀嗒定時(shí)器(System tick timer)

顯然,作為從的CPU1比主CPU0少了TrustZone、浮點(diǎn)單元(FPU)等,這使得主CPU0天然地計(jì)算處理能力更強(qiáng)。

但是賦予主CPU0這些亮點(diǎn),不是讓它做顏值擔(dān)當(dāng),而是任務(wù)擔(dān)當(dāng)?shù)摹_@讓我們自然想到雙核的典型應(yīng)用——相信這也是大家很關(guān)心的。

LPC5500雙核典型應(yīng)用

LPC5500的雙核典型應(yīng)用,即基本應(yīng)用思路,與之前LPC4300和LPC54110一樣。

主CPU用來做處理計(jì)算任務(wù)(比如算法),從CPU負(fù)責(zé)外設(shè)實(shí)時(shí)控制和數(shù)據(jù)傳輸。

這樣,能充分利用雙核達(dá)到更好性能。參見下圖:

哦,LPC5500雙核很“酷”的樣子,有點(diǎn)“喜歡”上它了,可是,相愛容易相處難?。?!

不要擔(dān)心,難,那是因?yàn)椴欢萌绾巍跋嗵帯薄?/p>

接下來,讓我們來聊聊如何和LPC5500雙核“相處”——雙核的實(shí)現(xiàn),這主要涉及到以下內(nèi)容:雙核啟動(dòng);雙核通訊;雙核調(diào)試。

1雙核啟動(dòng)

對(duì)于單核MCU,上電啟動(dòng)過程簡(jiǎn)單明了,如單身狗的生活簡(jiǎn)單自由,該干啥干啥,不能指望也無需考慮他人。

兩人世界就需要協(xié)商著行動(dòng)了,LPC5500采取了和最早LPC4300系列類似的雙核啟動(dòng)機(jī)制,即出廠默認(rèn)并固定一個(gè)核為主,另一個(gè)為從,不能更改,“專制”卻簡(jiǎn)單易用。

隨后的LPC54110系列則實(shí)行“民主”機(jī)制,兩個(gè)核可以輪流坐莊,即用戶可以在啟動(dòng)過程中選擇其中之一為主核,這樣提供了靈活性,但略微復(fù)雜。

為了簡(jiǎn)單起見,如今新的LPC5500雙核使用固定的主從模式。

LPC5500上電時(shí),自然地按照主從,主核CPU0如單核一樣直接啟動(dòng),從核CPU1則hold住不動(dòng)——這由硬件自動(dòng)完成。

主核啟動(dòng)后負(fù)責(zé)初始化運(yùn)行環(huán)境,然后配置好從核的啟動(dòng)地址(即從核代碼映像運(yùn)行的起始地址),最后釋放從核CPU1——這些由軟件完成。這時(shí),主從雙核就分別如同單核一樣同時(shí)運(yùn)行它們各自的代碼了。

要讓雙核“和諧”運(yùn)作,關(guān)鍵是要讓兩個(gè)核的代碼映像存儲(chǔ)和運(yùn)行空間獨(dú)立互不干擾(參見前面關(guān)于多層總線矩陣和多塊存儲(chǔ)塊的介紹),這點(diǎn)具體實(shí)現(xiàn)方法是靈活的,比單核來得復(fù)雜些。這里就不具體展開,有需要的可找相關(guān)資料學(xué)習(xí),比如,我們有篇應(yīng)用筆記通過測(cè)試雙核coremark分?jǐn)?shù),提供了一種達(dá)到最好性能的實(shí)現(xiàn)方法。不關(guān)心這些細(xì)節(jié)也不用擔(dān)心,NXP已經(jīng)提供了相關(guān)SDK庫可直接借用。

2雙核通訊

當(dāng)兩個(gè)核都運(yùn)行起來后,它們可以像兩個(gè)不同行業(yè)的人,各自做著自己的本職工作,默默為社會(huì)貢獻(xiàn)自己的力量,老死不相往來。但大多數(shù)應(yīng)用中,兩個(gè)核除了各司其職,還需要互相通訊,協(xié)同工作。

LPC5500提供了一套簡(jiǎn)單的硬件通訊機(jī)制,叫內(nèi)部CPU郵箱通訊機(jī)制,可以適用于大多數(shù)嵌入式系統(tǒng)雙核的通訊應(yīng)用。

這套機(jī)制從LPC54110系列繼承而來,最早的LPC4300系列雙核通訊幾乎完全靠軟件來實(shí)現(xiàn),占用資源,且給使用帶來不少難度。目前這套機(jī)制,簡(jiǎn)單易用,但不死板,留給用戶一定靈活發(fā)揮空間。

它主要提供了兩種寄存器,一種是32位的CPU中斷寄存器,兩個(gè)CPU都能訪問它,32位中只要有一位不為零,就能產(chǎn)生中斷請(qǐng)求,且每一位可代表一個(gè)不同狀況,比如事件或者狀態(tài),這完全可由用戶自己定義。

這樣CPU間就可相互實(shí)時(shí)通訊了,比如一個(gè)CPU完成某項(xiàng)任務(wù),寫入一個(gè)非0值到此寄存器,發(fā)出中斷信號(hào),另一CPU中斷后讀取此值,來決定后續(xù)工作。

通訊的一大需求就是同步,這就需要另一個(gè)叫做互斥寄存器的來完成,它只有第0位(bit0)可用,復(fù)位后默認(rèn)值為1。當(dāng)讀此寄存器時(shí),讀出數(shù)值的同時(shí)這位自動(dòng)被清0;當(dāng)寫它時(shí),這位將再次被置為1。

此正是互斥量的特性,以用于實(shí)現(xiàn)CPU間對(duì)任何共享資源的握手同步。例如,當(dāng)一個(gè)CPU要訪問某共享資源時(shí),先讀此寄存器,若讀到的是1,表示資源可用,同時(shí)1被自動(dòng)清為0;若讀到0,則表示資源被占用;在CPU用完共享資源時(shí),即寫此寄存器,使其置1,表示釋放了資源為可用。

這套郵箱機(jī)制簡(jiǎn)單框架圖如下:

順便提下,我們?cè)贚PC5500 SDK包中還提供了一套開源多核軟件開發(fā)包,包括庫和大量例程。通過庫的API提供了支持用戶實(shí)現(xiàn)復(fù)雜的多核通訊機(jī)制。

這套多核SDK的庫代碼包含在LPC5500SDK包以下路徑:

middlewaremulticore

例程則在:

oardslpcxpresso55s69multicore_examples

3雙核調(diào)試

LPC5500的雙核都支持SWD調(diào)試模式,就調(diào)試的級(jí)別來說,它們是”平等”的。實(shí)際實(shí)現(xiàn)時(shí),每個(gè)核一般有自己的工程,它們各自的調(diào)試和單核無異。

但在兩個(gè)核有關(guān)聯(lián)時(shí)(即前面提到的雙核啟動(dòng)和雙核通訊過程),調(diào)試要有所注意,關(guān)鍵就是要真正理解了這兩個(gè)過程機(jī)制,依據(jù)這兩個(gè)機(jī)制的特點(diǎn)進(jìn)行調(diào)試,則基本沒什么問題。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • mcu
    mcu
    +關(guān)注

    關(guān)注

    146

    文章

    16804

    瀏覽量

    349393
  • 存儲(chǔ)器
    +關(guān)注

    關(guān)注

    38

    文章

    7405

    瀏覽量

    163407
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    10776

    瀏覽量

    210472

原文標(biāo)題:【硬核干貨】LPC5500——簡(jiǎn)便易用的雙核技術(shù)

文章出處:【微信號(hào):Zlgmcu7890,微信公眾號(hào):周立功單片機(jī)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    基于恩智浦LPC5500系列MCU的OKDO E1開發(fā)板詳解

    OKDO E1 開發(fā)板作為恩智浦 LPC5500 系列開發(fā)平臺(tái)中獨(dú)特的一員,以其小巧的尺寸,高易用性收獲了許多用戶的高度關(guān)注。開發(fā)板僅 2 枚硬幣大小,卻集成了 LPC55S69 主芯片
    發(fā)表于 11-13 15:20 ?1543次閱讀

    基于Cortex M33的LPC5500系列MCU主要功能特性介紹

    (內(nèi)置閃存)進(jìn)行實(shí)時(shí)執(zhí)行,并通過Arm TrustZone-M保護(hù)資產(chǎn)。此外,LPC5500系列MCU共有7個(gè)可擴(kuò)展的家族,提供多種封裝和內(nèi)存選項(xiàng),還具有全面的MCUXpresso軟件和工具生態(tài)系統(tǒng)
    發(fā)表于 11-13 16:06 ?2331次閱讀
    基于Cortex M33的<b class='flag-5'>LPC5500</b>系列MCU主要功能特性介紹

    恩智浦LPC55S16 MCU獲得了PSA 2級(jí)和SESIP 2級(jí)保證認(rèn)證

    LPC55S16 MCU屬于恩智浦EdgeVerse?計(jì)算和安全產(chǎn)品組合,是基于Arm? Cortex?-M33內(nèi)核的通用LPC5500 MCU系列的成員。
    發(fā)表于 11-21 09:28 ?1725次閱讀

    非對(duì)稱MCU基礎(chǔ)知識(shí)及間通信

    來源 網(wǎng)絡(luò)本文從對(duì)比兩顆分立MCU與單芯片MCU開始(以LPC4350為例),展開介紹了非對(duì)稱MCU的基礎(chǔ)知識(shí)與重要特點(diǎn)。接下來,重
    發(fā)表于 05-15 14:26

    LPC55S69 Flashmagic不編程的原因?

    到我的主板。(這也為我的 PCB 供電)我遵循了 flashmagic 的設(shè)置:選擇 USB LPC55S69。十六進(jìn)制文件。設(shè)備 LPC55S69(USB、LPC5500)接口
    發(fā)表于 03-15 07:54

    LPC55S69的性能技巧是什么?

    我 以為 我看到了關(guān)于優(yōu)化 LPC55S6x 系列性能的應(yīng)用說明,但我現(xiàn)在找不到任何東西。有這樣的資源嗎?我主要尋找的是有關(guān)內(nèi)存爭(zhēng)用的信息。我看到兩個(gè)內(nèi)核共享相同的閃存接口。從閃存運(yùn)行的兩個(gè)內(nèi)核可以實(shí)現(xiàn)什么樣的性能?第二個(gè)核
    發(fā)表于 03-31 09:07

    LPC5500 Flash過度編程是否可行?

    我了解 LPC5500 處理器具有帶 ECC 的閃存,頁面大小為 512 字節(jié),用于擦除和編程。 在 LPC55S6x/LPC55S2x 用戶手冊(cè)的 5.7.13 ECC 部分,我發(fā)現(xiàn)它說 由于
    發(fā)表于 06-01 06:56

    奔騰再升級(jí) E5500即將面世

    奔騰再升級(jí) E5500即將面世 Nehalem
    發(fā)表于 12-24 08:55 ?966次閱讀

    非對(duì)稱MCU基礎(chǔ)知識(shí)及間通信

    本文從對(duì)比兩顆分立MCU與單芯片MCU開始(以LPC4350為例),展開介紹了非對(duì)稱MCU的基礎(chǔ)知識(shí)與重要特點(diǎn)。接下來,重點(diǎn)介紹了
    發(fā)表于 03-26 15:31 ?3574次閱讀
    非對(duì)稱<b class='flag-5'>雙</b><b class='flag-5'>核</b>MCU基礎(chǔ)知識(shí)及<b class='flag-5'>核</b>間通信

    中文版LPC43xx系列ARM微控制器數(shù)據(jù)手冊(cè)

    中文版LPC43xx系列ARM微控制器數(shù)據(jù)手冊(cè)
    發(fā)表于 10-09 09:29 ?0次下載
    中文版<b class='flag-5'>LPC</b>43xx系列ARM<b class='flag-5'>雙</b><b class='flag-5'>核</b>微控制器數(shù)據(jù)手冊(cè)

    安全、高能、低耗!NXP正式開始量產(chǎn)LPC551x

    LPC551x/S1x作為系列中的入門級(jí)產(chǎn)品,提供出色的能效比的同時(shí),依然繼承了LPC5500系列的諸多安全功能。使其除了在物聯(lián)網(wǎng)應(yīng)用中游刃有余,還能擴(kuò)展應(yīng)用到消費(fèi)類及工業(yè)自動(dòng)化領(lǐng)域。
    的頭像 發(fā)表于 06-03 11:25 ?4761次閱讀

    如何使用IAR從零開始搭建LPC5500核工程

    , 讓一個(gè) 150MHz 的 Cortex-M33 內(nèi)核閑在那里實(shí)在浪費(fèi), 并且在一些對(duì)性能有要求的情況下, 使用同時(shí)工作確實(shí)可以簡(jiǎn)化應(yīng)用的開發(fā)過程, 并提升系統(tǒng)整體的工作效率 。 筆者最近就遇到了這么一個(gè)案例 。
    發(fā)表于 11-25 09:45 ?9次下載

    串口DMA發(fā)送+中斷接收的例程

    LPC5500的SDK中提供了非常豐富的串口例程(如下圖所示)。
    的頭像 發(fā)表于 07-21 09:14 ?2639次閱讀

    關(guān)于LPC5500中USB的FRAME_INT中斷

    關(guān)于LPC5500中USB的FRAME_INT中斷
    的頭像 發(fā)表于 10-30 18:26 ?477次閱讀
    關(guān)于<b class='flag-5'>LPC5500</b>中USB的FRAME_INT中斷

    LPC5500_SDK例程:串口DMA發(fā)送+中斷接收

    LPC5500_SDK例程:串口DMA發(fā)送+中斷接收
    的頭像 發(fā)表于 10-30 16:59 ?981次閱讀
    <b class='flag-5'>LPC5500</b>_SDK例程:串口DMA發(fā)送+中斷接收