當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]摘要:針對單片機(jī)應(yīng)用設(shè)計中的資源不足、可靠性差和軟件升級問題,設(shè)計了一款基于Cortex—M3內(nèi)核的雙核板。該雙核板在不增加開發(fā)難度的情況下使單片機(jī)資源翻倍;通過兩個MCU之間的任務(wù)合理分工和相互監(jiān)督,提高了

摘要:針對單片機(jī)應(yīng)用設(shè)計中的資源不足、可靠性差和軟件升級問題,設(shè)計了一款基于Cortex—M3內(nèi)核的雙核板。該雙核板在不增加開發(fā)難度的情況下使單片機(jī)資源翻倍;通過兩個MCU之間的任務(wù)合理分工和相互監(jiān)督,提高了整體系統(tǒng)的可靠性;利用CAN總線完成主機(jī)與上位機(jī)的通信和升級程序的下載,并通過控制引腳實(shí)現(xiàn)基于ISP功能的從機(jī)軟件升級。

引言

在單片機(jī)的應(yīng)用設(shè)計中,常常會遇到如下問題:其一,某一熟悉類型的單片機(jī)功能可用,性價比也很好,但限于某種內(nèi)部資源(如串口數(shù)、A/D路數(shù)等)不足,不得不選用更高檔或不太熟悉的單片機(jī),造成資源的浪費(fèi)和開發(fā)周期的延長。其二,在海洋遠(yuǎn)程監(jiān)測等重要領(lǐng)域,對控制器的可靠性要求較高,而單片機(jī)存在死機(jī)的可能性,即使可以通過配備看門狗來避免這種情況,但這種“粗暴”的復(fù)位方式并不合理(首先,復(fù)位打亂了正常的數(shù)據(jù)采集和處理工作,導(dǎo)致重要數(shù)據(jù)丟失;其次,即便能記錄下復(fù)位時間和次數(shù),但復(fù)位原因和復(fù)位前狀態(tài)等信息無法偵測,一些本該解決的BUG被掩蓋,導(dǎo)致頻繁復(fù)位)。其三,由于開發(fā)周期不足或測試不充分,導(dǎo)致設(shè)備投入運(yùn)行后出現(xiàn)故障,而這些故障往往通過軟件升級的方式可以解決,但由于設(shè)備的應(yīng)用場所比較特殊(如水下),導(dǎo)致軟件升級的成本很高。

針對上述3種情況,在實(shí)際的項(xiàng)目應(yīng)用中設(shè)計了基于STM32的雙核板,較好地解決了資源不足、穩(wěn)定性差和基于CAN總線的遠(yuǎn)程升級等問題,具有性價比高、開發(fā)周期短等優(yōu)點(diǎn)。

1 雙核板設(shè)計

STM32系列單片機(jī)具有高性能Cortex—M3內(nèi)核和外設(shè),功耗低,集成度高,性價比高。另外,ST公司還提供了外設(shè)的標(biāo)準(zhǔn)庫函數(shù),屏蔽了底層硬件細(xì)節(jié),能夠使開發(fā)人員輕松完成產(chǎn)品的開發(fā),縮短系統(tǒng)開發(fā)時間。正因?yàn)槿绱耍琒TM32系列單片機(jī)得到了開發(fā)者的青睞。其應(yīng)用領(lǐng)域和客戶群不斷擴(kuò)大。其中的 STM32F107屬于互聯(lián)型系列,具有以太網(wǎng)和CAN總線接口,在數(shù)據(jù)通信方面具有獨(dú)特的優(yōu)勢。一種基于STM32F107的雙核板如圖1所示。

圖1中,兩個STM32F107最小系統(tǒng)模塊分別稱為A-CORE和M-CORE,A-CORE具有外看門狗,為主機(jī)模塊;M-CORE不具有外看門狗,但其RST/BOOT0引腳受A-CORE的控制,可以通過串口實(shí)現(xiàn)ISP總線升級,為從機(jī)模塊。由于A-CORE和M-CORE均具有電源系統(tǒng)、復(fù)位電路和下載接口等調(diào)試所需的基本要素,因此可以預(yù)先焊接和調(diào)試好。在具體項(xiàng)目的開發(fā)應(yīng)用中,將雙核板作為一個獨(dú)立的元件嵌入,一些軟件可以提前驗(yàn)證和編寫,大大縮短了產(chǎn)品的開發(fā)周期。

在正常工作時,主從機(jī)兩個模塊獨(dú)立工作,兩者通過SPI總線相互通信。SPI接口傳輸速率可達(dá)到18 Mbps,比I2C和UART通信要快得多。由于采用雙核,通用I/O引腳顯著增多,不僅可以完成更加復(fù)雜的設(shè)計,而且降低了布局布線的難度。對于熟悉 STM32的開發(fā)者來說,開發(fā)難度基本不變,而可使用的資源卻幾乎成倍增加。

在該雙核板的設(shè)計中,還考慮了A—CORE對M—CORE的在線升級問題。圖1中M—CORE的RST、BOOT0兩個引腳受A—CORE控制,來實(shí)現(xiàn) M-CORE的復(fù)位和復(fù)位地址選擇;而ISP-AT-MR和ISP-AR-MT兩個引腳則是作為USART接口,實(shí)現(xiàn)對M-CORE的ISP升級。

2 可靠性設(shè)計

在本文的應(yīng)用中,A—CORE和M—CORE分工合作。A—CORE主要完成系統(tǒng)的管理工作,如人機(jī)交互、數(shù)據(jù)存儲、通信等;M—CORE主要完成信息采集、外部設(shè)備控制等功能,這樣設(shè)計的優(yōu)點(diǎn)是功能分明、負(fù)荷分擔(dān)。負(fù)責(zé)采集控制的M—CORE可以集中精力完成數(shù)據(jù)采集和輔助的控制工作;而負(fù)責(zé)管理的A— CORE除了完成人機(jī)交互、數(shù)據(jù)存儲和通信外,還需要定期發(fā)起與M—CORE的通信,以保證相互監(jiān)督。

M—CORE收到A—CORE的指令后,會將當(dāng)前的工作狀態(tài)報告給A—CORE,再由A—CORE通過CAN總線等手段上傳給更高層的通信主機(jī)。如果A— CORE發(fā)現(xiàn)M—CORE不能正常回復(fù)信息,則說明M—CORE處于不正常狀態(tài),必要時可實(shí)現(xiàn)對M—CORE的“危機(jī)干預(yù)”。例如,在連續(xù)多次均不能正常通信的情況下,可以認(rèn)為M—CORE已處于死機(jī)狀態(tài),A—CORE將復(fù)位M-CORE。A—CORE和M—CORE的狀態(tài)轉(zhuǎn)換圖如圖2所示。

顯然,這種雙核結(jié)構(gòu)和定時通信機(jī)制,可以使每個MCU知道對方的工作情況。雖然在結(jié)構(gòu)上分出了A—CORE和M—CORE,但由于每個MCU都有CAN總線與通信主機(jī)相連,因此每個MCU都可以單獨(dú)通向主機(jī)匯報工作狀態(tài),匯報的內(nèi)容都可以通過CAN總線接收到,因此起到了相互監(jiān)督的作用。

3 基于CAN總線的軟件升級

具備遠(yuǎn)程軟件升級的設(shè)備具有更廣泛的適用性,可以在設(shè)備安裝到位后,通過軟件升級在線修復(fù)一些問題,不但節(jié)省人力物力,也可以使設(shè)備的功能逐步完善。

雙核板具有CAN總線,該總線不但是數(shù)據(jù)交換的通道,也是軟件升級的通道。上位機(jī)可以通過CAN總線將需要升級的程序代碼下傳到A—CORE,A— CORE控制M—CORE的RST/ BOOT0引腳,使M—CORE復(fù)位并進(jìn)入ISP狀態(tài),從而完成在線升級。由此可見,要實(shí)現(xiàn)基于CAN總線的在線軟件升級,需要3個條件:一是待升級系統(tǒng) M—CORE本身具有ISP功能,能通過串口實(shí)現(xiàn)程序的下載;二是A—CORE本身集成CAN總線,可通過CAN總線接收上位機(jī)發(fā)送的待升級程序代碼;三是A-CORE可以控制M—CORE的RST/BOOT0引腳,完成在線升級。

3. 1 STM32的ISP升級

ISP(In-System Programming)方式相對于傳統(tǒng)的并行編程方式有了極大的進(jìn)步,無需將單片機(jī)從電路板上卸下就可進(jìn)行編程。STM32系列芯片復(fù)位時,可以通過BOOT1和BOOT0的邏輯電平來決定系統(tǒng)的啟動模式,見表1所列。

系統(tǒng)復(fù)位時,CPU根據(jù)這兩個引腳的邏輯電平把相應(yīng)模式的起始地址映射到啟動空間(0x 0000 0000)。在啟動延遲之后,CPU從位于0x0開始的啟動存儲區(qū)執(zhí)行代碼。由于實(shí)際應(yīng)用中很少從內(nèi)嵌SRAM中啟動,故可將BOOT1引腳直接設(shè)置為低電平,只通過判斷BOOT0引腳的高低電平來選擇從用戶閃存或系統(tǒng)存儲器中啟動。若復(fù)位時BOOT0的邏輯電平為高,則復(fù)位后從系統(tǒng)存儲器啟動,可通過 USART1與Bootloader進(jìn)行通信。

STM32芯片具有開放式的在線燒錄ISP協(xié)議,允許第三方根據(jù)該協(xié)議編寫ISP下載軟件,對STM32芯片進(jìn)行FLASH的更新操作。在進(jìn)行ISP方式升級時,先發(fā)送0x7F實(shí)現(xiàn)自動波特率匹配,能夠識別最高115 200 bps的串口波特率。如果正確回應(yīng)0x79,表示命令執(zhí)行正常。握手正確后,就可以通過ISP命令實(shí)現(xiàn)對STM32的ISP操作,完成FLASH的擦除和編程。

3.2 FLASH分區(qū)存儲

STM32F107片內(nèi)集成256 KB FLASH和64 KBSRAM,F(xiàn)LASH由主存儲塊(Main Block)和信息塊(Information Block)組成。主存儲塊用于存放用戶程序,每頁2 KB,共128頁,容量為32K×64位,地址范圍為0x0800 0000~0x 0803 FFFF;信息塊容量為2 360×64位,分為啟動程序代碼和用戶選擇字節(jié)。啟動程序代碼從0x 1FFF B000~0x 1FFF F7FF,共18 KB,用戶選擇字節(jié)從0x 1FFF F800~0x 1FFF F80F,共16字節(jié)。

A-CORE的FLASH存儲器分區(qū)如圖3所示。

0x0800 0000~0x0800 1FFF,共8 KB空間,為Boot-loader代碼空間。

0x0800 2000~0x0801 FFFF,為120 KB空間,存放A-CORE自身程序。

0x0802 0000~0x0803 FFFF,為128 KB空間,存放M-CORE應(yīng)用程序。

上述空間分配,雖然升級程序的空間受到了限制,但在大多數(shù)情況下是可行的,因?yàn)锳—CORE和M—CORE任務(wù)分擔(dān),其本身的程序量均不足總FLASH容量的一半。如果出現(xiàn)了空間不足的現(xiàn)象,完全可以換用更大容量的MCU。

3.3 軟件升級流程

要完成A—CORE對M—CORE的軟件升級,其過程可以分為兩個階段:基于CAN總線的數(shù)據(jù)傳輸和基于USART的ISP過程。

(1)基于CAN總線的數(shù)據(jù)傳輸

當(dāng)M—CORE需要更新用戶程序時,上位機(jī)將編譯成功的M—CORE升級程序的HEX文件通過CAN總線發(fā)送到A—CORE。上位機(jī)先發(fā)送升級指令,A—CORE接收到升級指令后,將FLASH中M—CORE升級程序區(qū)(0x 0800 2000~0x 0801 FFFF)擦除,擦除成功后回復(fù)上位機(jī),若回復(fù)錯誤信息,則退出升級;上位機(jī)接收到回復(fù)后,按行發(fā)送HEX文件內(nèi)容,A—CORE接收到數(shù)據(jù)后,依次寫入A—CORE的M—CORE升級程序區(qū)(0x 08002000~0x 0801 FFFF)中,接收完畢后向上位機(jī)發(fā)送寫入完畢指令。

(2)基于USART的ISP過程

當(dāng)A-CORE接收到上位機(jī)發(fā)送的升級執(zhí)行指令后,升級流程如下:

①置M-CORE的BOOT0引腳為高電平,然后置RST引腳為低電平,復(fù)位M-CORE,使其從系統(tǒng)的內(nèi)存模式啟動,然后將RST引腳拉高。

②A—CORE向M—CORE發(fā)送0x7F,M—CORE接收該數(shù)據(jù),并根據(jù)該數(shù)據(jù)與A—CORE自動匹配波特率,進(jìn)行回復(fù)。若回復(fù)0X79,則表示可以進(jìn)行相關(guān)擦除和寫FLASH操作了,若回復(fù)0x1F,則升級失敗。

③A—CORE收到正確的應(yīng)答,則發(fā)送0x44+0xBB,根據(jù)程序大小擦除FLASH,根據(jù)STM32F107內(nèi)部固有的Bootloader串口協(xié)議,擦除完成后回復(fù)A—CORE。

④A—CORE等待接收M—CORE的回復(fù),收到正確的應(yīng)答之后,發(fā)送0x31+0xCE,把存儲到A—COREFLASH中的M—CORE升級程序區(qū)的內(nèi)容寫到M—CORE的相應(yīng)FLASH中,一次寫256個字節(jié),直到把所有的用戶程序?qū)懭胗脩舸鎯^(qū)。

⑤A—CORE控制BOOT0引腳,并控制RST為低電平,對M—CORE進(jìn)行硬件復(fù)位,M—CORE重新初始化程序,從而運(yùn)行剛剛更新的用戶程序。

軟件升級交互流程如圖4所示。

結(jié)語

基于STM32的雙核板可以有效解決單個微處理器內(nèi)存資源不夠的問題,在基本不增加開發(fā)難度的基礎(chǔ)上,使系統(tǒng)資源加倍增加,可以完成更為復(fù)雜的應(yīng)用設(shè)計;通過A—CORE和M—CORE相互監(jiān)控,提高了整個系統(tǒng)的可靠性,能夠有效發(fā)現(xiàn)軟硬件隱患;通過雙核有效的任務(wù)分工,減小了單個MCU的負(fù)擔(dān),使系統(tǒng)運(yùn)行更加可靠;基于ISP和CAN總線的遠(yuǎn)程升級系統(tǒng),有效利用了CAN總線通信速率高、抗干擾能力強(qiáng)、傳輸距離遠(yuǎn)的特點(diǎn)以及STM32系列自身具有的 ISP功能,在設(shè)備安裝以后仍能夠升級程序,既方便了智能設(shè)備的開發(fā),又降低了維護(hù)成本。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉