• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      STM32雙核板的應(yīng)用設(shè)計(jì)與ISP的從機(jī)軟件升級(jí)

      2015-07-02 00:17:24綦聲波劉英男王圣南劉群
      關(guān)鍵詞:雙核上位總線

      綦聲波,劉英男,王圣南,劉群

      (中國(guó)海洋大學(xué) 工程學(xué)院,青島266100)

      ?

      STM32雙核板的應(yīng)用設(shè)計(jì)與ISP的從機(jī)軟件升級(jí)

      綦聲波,劉英男,王圣南,劉群

      (中國(guó)海洋大學(xué) 工程學(xué)院,青島266100)

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

      STM32;雙核板;CAN;軟件升級(jí)

      引 言

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

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

      1 雙核板設(shè)計(jì)

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

      圖1 雙核板結(jié)構(gòu)圖

      圖2 A-CORE和M-CORE的狀態(tài)轉(zhuǎn)換圖

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

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

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

      2 可靠性設(shè)計(jì)

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

      M-CORE收到A-CORE的指令后,會(huì)將當(dāng)前的工作狀態(tài)報(bào)告給A-CORE,再由A-CORE通過(guò)CAN總線等手段上傳給更高層的通信主機(jī)。如果A-CORE發(fā)現(xiàn)M-CORE不能正?;貜?fù)信息,則說(shuō)明M-CORE處于不正常狀態(tài),必要時(shí)可實(shí)現(xiàn)對(duì)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)和定時(shí)通信機(jī)制,可以使每個(gè)MCU知道對(duì)方的工作情況。雖然在結(jié)構(gòu)上分出了A-CORE和M-CORE,但由于每個(gè)MCU都有CAN總線與通信主機(jī)相連,因此每個(gè)MCU都可以單獨(dú)通向主機(jī)匯報(bào)工作狀態(tài),匯報(bào)的內(nèi)容都可以通過(guò)CAN總線接收到,因此起到了相互監(jiān)督的作用。

      3 基于CAN總線的軟件升級(jí)

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

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

      3.1 STM32的ISP升級(jí)

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

      表1 STM32啟動(dòng)模式配置

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

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

      3.2 FLASH分區(qū)存儲(chǔ)

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

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

      圖3 A-CORE的FLASH存儲(chǔ)器分區(qū)

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

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

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

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

      3.3 軟件升級(jí)流程

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

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

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

      (2) 基于USART的ISP過(guò)程

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

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

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

      ③ 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,把存儲(chǔ)到A-CORE FLASH中的M-CORE升級(jí)程序區(qū)的內(nèi)容寫(xiě)到M-CORE的相應(yīng)FLASH中,一次寫(xiě)256個(gè)字節(jié),直到把所有的用戶程序?qū)懭胗脩舸鎯?chǔ)區(qū)。

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

      軟件升級(jí)交互流程如圖4所示。

      圖4 軟件升級(jí)流程圖

      結(jié) 語(yǔ)

      [1] 張萌.基于ISP/IAP和CAN總線的遠(yuǎn)程升級(jí)系統(tǒng)研制[D].青島:中國(guó)海洋大學(xué),2013.

      [2] 鮑玉龍.基于STM32的雙處理器牙花加工控制系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[D].杭州:杭州電子科技大學(xué), 2012.

      [3] 周天兵,劉國(guó)忠.單片機(jī)程序遠(yuǎn)程升級(jí)技術(shù)[J].儀表技術(shù),2011(9):25-31.

      [4] 張舞杰,南亦民.基于STM32F103VB的應(yīng)用編程技術(shù)的實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用,2009,29(10):2820-2822.

      [5] 羅成娥,任海強(qiáng).基于CAN總線的在線升級(jí)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].數(shù)字通信,2013,40(6):28-32.

      [6] 江斌,黎明.基于CAN的遠(yuǎn)程下載技術(shù)開(kāi)發(fā)及應(yīng)用[J].微計(jì)算機(jī)信息,2010,26(9-2):80-82.

      綦聲波(副教授),主要研究方向?yàn)榍度胧较到y(tǒng)、智能儀器儀表、海洋裝備。

      Altera加入工業(yè)互聯(lián)網(wǎng)聯(lián)盟

      Altera公司宣布加入工業(yè)互聯(lián)網(wǎng)聯(lián)盟(Industrial Internet Consortium,IIC),這一行業(yè)協(xié)作組織旨在促進(jìn)物聯(lián)網(wǎng)(IoT)全球生態(tài)系統(tǒng)的發(fā)展。特別指出的是,Altera與聯(lián)盟成員在技術(shù)發(fā)展路線圖上一起工作,開(kāi)發(fā)工業(yè)互聯(lián)網(wǎng),在這一智能設(shè)備和傳感器網(wǎng)絡(luò)上,數(shù)據(jù)通過(guò)不同的互聯(lián)協(xié)議進(jìn)行交換,增強(qiáng)了多種終端市場(chǎng)應(yīng)用的性能。這一智能連接網(wǎng)絡(luò)可支持企業(yè)開(kāi)發(fā)“智能”的新業(yè)務(wù)應(yīng)用,對(duì)資產(chǎn)和業(yè)務(wù)進(jìn)行優(yōu)化、簡(jiǎn)化,或者自動(dòng)化現(xiàn)有流程。

      工業(yè)互聯(lián)網(wǎng)聯(lián)盟執(zhí)行總監(jiān)Richard Soley博士表示:“IIC一直處于工業(yè)IoT創(chuàng)新和技術(shù)開(kāi)發(fā)的最前沿。我們非常高興Altera能夠加入IIC,發(fā)揮其在FPGA和SoC解決方案方面的優(yōu)勢(shì),開(kāi)發(fā)更加靈活和安全的IoT系統(tǒng)?!?/p>

      Application Design of STM32 Dual-core Board and Slave CoreSoftware Upgrade of ISP

      Qi Shengbo,Liu Yingnan,Wang Shengnan,Liu Qun

      (College of Engineering,Ocean University of China,Qingdao 266100,China)

      Aiming at the application problems of MCU such as the lack of resources,poor reliability and the software upgrade,a dual-core board based on Cortex-M3 kernel is designed in this paper.The dual-core board almost doubles the MCU resources without increasing the difficulty of development,and it improves the reliability of the whole system through the rational burden division and mutual supervision between two MCUs.Upgrading program can be transmitted between the master core and the upper monitor by CAN bus.The slave core software upgrade based on ISP is realized through controlling pin.

      STM32;dual-core board;CAN bus;software upgrade

      TP212.6

      A

      士然

      2014-12-23)

      猜你喜歡
      雙核上位總線
      全球金融“F20”在此召開(kāi)!橫瀝進(jìn)入“雙核”時(shí)代
      基于PCI Express總線的xHC與FPGA的直接通信
      機(jī)載飛控1553B總線轉(zhuǎn)以太網(wǎng)總線設(shè)計(jì)
      特斯拉 風(fēng)云之老阿姨上位
      車(chē)迷(2018年12期)2018-07-26 00:42:22
      “三扶”齊上位 決戰(zhàn)必打贏
      基于ZigBee和VC上位機(jī)的教室智能監(jiān)測(cè)管理系統(tǒng)
      新型夾心雙核配和物[Zn2(ABTC)(phen)2(H2O)6·2H2O]的合成及其熒光性能
      以新思路促推現(xiàn)代農(nóng)業(yè)上位
      多通道ARINC429總線檢查儀
      三螺旋N-N橋連的雙核Co(Ⅲ)配合物的合成、結(jié)構(gòu)和性質(zhì)
      宁南县| 来凤县| 凤冈县| 交城县| 沧源| 松潘县| 巴东县| 和顺县| 定州市| 嘉祥县| 绥滨县| 公主岭市| 柘城县| 隆安县| 河池市| 南部县| 贵溪市| 佳木斯市| 陇南市| 涿鹿县| 泾阳县| 北宁市| 通州市| 分宜县| 紫阳县| 浪卡子县| 任丘市| 博客| 班戈县| 连平县| 丹寨县| 鸡东县| 松滋市| 邻水| 南川市| 桂林市| 博客| 英山县| 晋州市| 嘉定区| 华宁县|