亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        一種基于串口的ARM程序在線更新方法

        2022-03-31 03:50:04卞美琴
        雷達(dá)與對(duì)抗 2022年1期
        關(guān)鍵詞:嵌入式程序

        卞美琴,錢 鷗

        (中國(guó)船舶集團(tuán)有限公司第八研究院,南京 211153)

        0 引 言

        隨著信息技術(shù)的發(fā)展,借助于處理器靈活的可編程能力和面向任務(wù)的自動(dòng)處理能力,現(xiàn)代工業(yè)電子設(shè)備和組件模塊通常采用嵌入式處理器設(shè)計(jì)方式來實(shí)現(xiàn)對(duì)系統(tǒng)的實(shí)時(shí)控制或狀態(tài)監(jiān)控。但嵌入式系統(tǒng)或設(shè)備為了便于工業(yè)控制,通常被配置人跡不易到達(dá)或維修難以施展的狹小空間內(nèi),給嵌入式處理器的程序功能改進(jìn)、程序更新帶來了困難。傳統(tǒng)的基于JTAG下載電纜連接處理器的方法變得不再適用,迫切需要研究新的在線程序更新方法,以適應(yīng)組件免拆裝即能完成程序更新的功能。

        本文介紹了一種基于串口的ARM嵌入式處理器程序在線更新方法。該方法基于C語言開發(fā),便于移植,具有較好的操作系統(tǒng)適應(yīng)能力和應(yīng)用擴(kuò)展性,為處理器程序遠(yuǎn)程在線更新提供了一種思路。

        1 原 理

        1.1 目標(biāo)系統(tǒng)概述

        本項(xiàng)目針對(duì)某通信設(shè)備的數(shù)字T/R組件設(shè)計(jì),該組件采用FPGA+ARM處理器的主輔通道硬件實(shí)現(xiàn)架構(gòu),如圖1所示。圖中,基于FPGA的主通道用于對(duì)多個(gè)收發(fā)通道的數(shù)據(jù)流進(jìn)行實(shí)時(shí)流式處理,而基于ARM處理器的輔助通道實(shí)現(xiàn)組件狀態(tài)的實(shí)時(shí)監(jiān)控與健康管理,這樣兩者控制平面與數(shù)據(jù)平面分開,從而實(shí)現(xiàn)數(shù)字組件的高效率運(yùn)行。

        數(shù)字T/R組件處于設(shè)備的天線前端,而天線在工作時(shí)部署于室外高處,ARM程序通過JTAG更新較為困難,因此需要考慮其他在線更新方法。目標(biāo)數(shù)字T/R組件中所采用的ARM處理器是TI公司Cortex M4系列芯片[1],TI官網(wǎng)提供了Boot loader的簡(jiǎn)單例程,支持串口、網(wǎng)口、USB等接口的程序在線更新方式, 但需要配合其LM Flash Programmer上位機(jī)Windows軟件才能實(shí)現(xiàn)程序在線更新,而上位機(jī)是不開源的Windows軟件,無法跨平臺(tái)使用,且當(dāng)組件與上位機(jī)無直接物理連接時(shí)無法應(yīng)用該軟件,因此為了適應(yīng)目標(biāo)系統(tǒng)的研制,需要在TI公司現(xiàn)有Boot loader程序的基礎(chǔ)上進(jìn)一步完善改進(jìn),并重新編寫上位機(jī)程序,使之滿足組件在各種操作系統(tǒng)下的研制和移植需要。

        考慮圖1中的ARM與FPGA之間有一對(duì)串口,而FPGA可將該串口中的數(shù)據(jù)打包到高速光纖中,并轉(zhuǎn)發(fā)到上級(jí)分系統(tǒng)中,因此這里設(shè)計(jì)采用串口來實(shí)現(xiàn)對(duì)ARM程序的在線更新。

        1.2 ARM程序在線更新原理

        如圖2所示,ARM程序在線更新原理是將整個(gè)ARM內(nèi)部存儲(chǔ)程序的FLASH空間分為兩部分:Boot loader和Application區(qū),其中Boot loader存于從0開始的地址,Application存于事先約定好的地址APP_BASE_ADDR(該地址以4為邊界,確保能從Boot loader程序跳到該地址執(zhí)行)。

        圖2 ARM地址空間分配

        上電時(shí),ARM首先從0地址開始執(zhí)行Boot loader程序,Boot loader程序檢查APP_BASE_ADDR后的程序是否合法。若不合法,認(rèn)為Application區(qū)沒有可執(zhí)行的應(yīng)用程序,則進(jìn)入Boot loader主循環(huán)等待上位機(jī)進(jìn)行程序更新。若APP_BASE_ADDR后的程序是合法程序,則Boot loader繼續(xù)檢查Force_update標(biāo)識(shí)(可以是一個(gè)GPIO管腳的狀態(tài)):若該標(biāo)識(shí)為約定的強(qiáng)制更新狀態(tài),則同樣進(jìn)入Boot loader主循環(huán)等待上位機(jī)進(jìn)行程序更新;若不是強(qiáng)制更新狀態(tài),則Boot loader執(zhí)行跳轉(zhuǎn)指令,從App_Base_Addr開始執(zhí)行應(yīng)用程序。

        因此,在組件正常工作時(shí),組件總是運(yùn)行于App_Base_Addr后地址空間里,此時(shí)若需要更新Application程序,應(yīng)由上位機(jī)通過約定的傳輸協(xié)議通知現(xiàn)有Application程序,后者接收到程序更新命令后執(zhí)行跳轉(zhuǎn)指令,返回到Boot loader程序的起始地址,執(zhí)行Boot loader引導(dǎo),隨后上位機(jī)即可按照約定程序更新流程,并與Boot loader交互對(duì)Application區(qū)域進(jìn)行程序更新。

        2 實(shí) 現(xiàn)

        基于串口的ARM程序在線更新實(shí)現(xiàn)包括兩部分程序:ARM程序和上位機(jī)MCU_PROG程序。

        2.1 ARM程序

        (1) Boot loader程序

        如前所述,TI公司提供了Boot loader的簡(jiǎn)單實(shí)現(xiàn)[2],本項(xiàng)目在此基礎(chǔ)上進(jìn)行改進(jìn)。Boot loader的實(shí)現(xiàn)流程如圖3所示,其中CheckForceUpdate中首先檢測(cè)應(yīng)用程序地址段App_Base_Addr的程序是否合法(檢測(cè)堆棧指針和Reset向量是否正常)。若不合法,則直接返回Yes,開始進(jìn)行程序更新;若合法,則檢測(cè)預(yù)定義的GPIO腳電平是否滿足Force Update定義,若滿足,則返回Yes進(jìn)行程序更新。若應(yīng)用程序地址段程序合法且GPIO腳不滿足Force Update定義,則跳轉(zhuǎn)到應(yīng)用程序地址,開始執(zhí)行應(yīng)用程序。

        圖3 Boot loader流程圖

        Update程序?qū)Υ趨f(xié)議進(jìn)行解析,通過Switch-Case格式分別執(zhí)行上位機(jī)發(fā)送的命令,如圖4所示。

        圖4 Updater子程序分支結(jié)構(gòu)

        Bootloader對(duì)上位機(jī)發(fā)送的PING、DOWNLOAD、SEND_DATA、GET_STATUS、RUN、RESET、WARM_UPDATE等命令進(jìn)行響應(yīng),其中PING用于上位機(jī)和BOOT loader程序進(jìn)行握手,DOWNLOAD、SEND_DATA和GET_STATUS構(gòu)成程序下載的3個(gè)互操作語句:RUN和RESET用于上位機(jī)對(duì)Boot loader進(jìn)行程序控制,WARM_UPDATE用于和應(yīng)用程序的程序更新命令進(jìn)行兼容,只做應(yīng)答響應(yīng)。幾種命令的具體格式及定義見文獻(xiàn)[3],也可以是自定義命令格式,只要和上位機(jī)程序保持一致即可。

        (2) 應(yīng)用程序

        ARM應(yīng)用程序在多任務(wù)實(shí)時(shí)操作系統(tǒng)TIRTOS中實(shí)現(xiàn),為了和Boot loader執(zhí)行命令保持一致,程序中單獨(dú)創(chuàng)建一個(gè)任務(wù),用于監(jiān)聽上位機(jī)的串口命令,并進(jìn)行Switch-Case格式響應(yīng),如圖5所示。

        圖5 ARM應(yīng)用程序串口監(jiān)聽任務(wù)分支結(jié)構(gòu)

        與Boot loader不同之處在于:當(dāng)ARM應(yīng)用程序接收到COMMAND_WARM_UPDATE命令時(shí),將跳轉(zhuǎn)到Boot loader起始地址,開始進(jìn)行程序更新。

        2.2 上位機(jī)程序

        如前所述,在本項(xiàng)目中ARM的串口用于和FPGA連接,其與上位機(jī)的交互最終由FPGA通過光纖實(shí)現(xiàn),這里考慮程序流程驗(yàn)證,忽略FPGA及光纖連接的部分,考慮直接由ARM串口與上位機(jī)串口直接連接,從而可以直接在上位機(jī)編寫可移植的C程序代碼,便于最終在不同的主機(jī)操作系統(tǒng)實(shí)現(xiàn)。

        根據(jù)前述對(duì)boot loader程序中DOWNLOAD、SEND_DATA和GET_STATUS等3個(gè)互操作語句的描述,上位機(jī)對(duì)ARM應(yīng)用程序的更新步驟如下:

        (1) 上位機(jī)發(fā)送COMMAND_WARM_UPDATE命令,請(qǐng)求程序更新,ARM準(zhǔn)備好后返回ACK,并跳轉(zhuǎn)到Boot loader程序空間;

        (2) 上位機(jī)發(fā)送COMMAND_DOWNLOAD命令,給出ARM應(yīng)用程序的起始地址和程序字節(jié)長(zhǎng)度;

        (3) ARM返回ACK狀態(tài),表示接收正常;

        (4) 上位機(jī)發(fā)送COMMAND_GET_STATUS命令,獲取當(dāng)前狀態(tài);

        (5) 單片機(jī)返回狀態(tài)信息;

        (6) 上位機(jī)發(fā)送COMMAND_SEND_DATA命令,開始發(fā)送更新的程序數(shù)據(jù)包;

        (7) ARM返回ACK狀態(tài),表示接收正常;

        (8) 上位機(jī)發(fā)送COMMAND_GET_STATUS命令,獲取當(dāng)前狀態(tài);

        (9) 單片機(jī)返回狀態(tài)信息;

        (10) 重復(fù)步驟(6)~(9),直到程序下載結(jié)束;

        (11) 上位機(jī)發(fā)送COMMAND_RUN命令,讓ARM執(zhí)行應(yīng)用程序;

        (12) ARM返回ACK,并跳轉(zhuǎn)到ARM應(yīng)用程序空間,從而完成程序的在線更新。

        根據(jù)以上分析,本項(xiàng)目通過Visual Studio 2013開發(fā)環(huán)境,基于多線程機(jī)制,實(shí)現(xiàn)了上位機(jī)MCU_PROG軟件完成基于串口的ARM程序在線更新,軟件實(shí)現(xiàn)了PING、DOWNLOAD、SEND_DATA、RUN、RESET、WARM_UPDATE等數(shù)據(jù)包的生成,通過專用下載線程與ARM進(jìn)行交互實(shí)現(xiàn)了程序在線更新,其運(yùn)行界面如圖6所示。

        圖6 上位機(jī)ARM程序在線更新界面

        3 結(jié)束語

        本文通過分析ARM boot loader流程原理,分別以Visual C++程序和嵌入式C程序完成了上位機(jī)應(yīng)用程序與ARM程序的編寫, 實(shí)現(xiàn)了基于串口的ARM程序在線更新。同時(shí),程序基于C語言,移植能力較強(qiáng),便于數(shù)字組件程序的嵌入式移植和系統(tǒng)在線更新應(yīng)用,相關(guān)設(shè)計(jì)也可以應(yīng)用到類似的組件和模塊中,具有很好的技術(shù)應(yīng)用擴(kuò)展性。

        猜你喜歡
        嵌入式程序
        試論我國(guó)未決羈押程序的立法完善
        TS系列紅外傳感器在嵌入式控制系統(tǒng)中的應(yīng)用
        電子制作(2019年7期)2019-04-25 13:17:14
        嵌入式系統(tǒng)通信技術(shù)的應(yīng)用
        電子制作(2018年18期)2018-11-14 01:48:16
        搭建基于Qt的嵌入式開發(fā)平臺(tái)
        失能的信仰——走向衰亡的民事訴訟程序
        “程序猿”的生活什么樣
        英國(guó)與歐盟正式啟動(dòng)“離婚”程序程序
        嵌入式軟PLC在電鍍生產(chǎn)流程控制系統(tǒng)中的應(yīng)用
        創(chuàng)衛(wèi)暗訪程序有待改進(jìn)
        Altera加入嵌入式視覺聯(lián)盟
        天码人妻一区二区三区| 日日麻批免费高清视频| av在线免费观看蜜桃| 老少配老妇老熟女中文普通话| 亚洲V日韩V精品v无码专区小说| 国产黄片一区视频在线观看| 久久国产亚洲精品一区二区三区| 99热在线观看| 超薄肉色丝袜一区二区| 无码专区亚洲avl| 中文字幕中文字幕777| 门卫又粗又大又长好爽| 国产一在线精品一区在线观看| 无码精品人妻一区二区三区98| 在线视频一区二区国产| 国产精品综合色区在线观看| 曰本无码人妻丰满熟妇5g影院| 好爽~又到高潮了毛片视频| 亚洲av产在线精品亚洲第三站| 亚洲欧美乱日韩乱国产| 93精91精品国产综合久久香蕉| 亚洲国产日韩精品综合| 青青草在线这里只有精品| 帮老师解开蕾丝奶罩吸乳视频 | 亚洲自拍偷拍一区二区三区| 美女网站免费福利视频| 亚洲成人福利在线观看| av在线男人的免费天堂| 红桃av一区二区三区在线无码av | 国产私人尤物无码不卡| 色一乱一伦一图一区二区精品 | 亚洲av无码一区二区一二区| 亚洲av无码一区二区三区在线| 亚洲国产不卡av一区二区三区| 91视色国内揄拍国内精品人妻 | 中文字幕熟妇人妻在线视频| 人妻少妇人人丰满视频网站| 日本免费看片一区二区三区| 一区二区三区乱码在线 | 欧洲| 欧美视频第一页| 麻豆国产精品伦理视频|