• 
    

    
    

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

      基于TMS320F28335 芯片CAN Bootloader 程序升級方法

      2022-01-08 11:42:26顧瀚戈鐘洪念冉萬寧范晉文
      電子與封裝 2021年12期
      關(guān)鍵詞:上位應(yīng)用程序指令

      顧瀚戈,鐘洪念,冉萬寧,范晉文

      (中科芯集成電路有限公司,成都 610000)

      1 引言

      隨著嵌入式技術(shù)的發(fā)展,芯片應(yīng)用需求不斷增加,應(yīng)用場景也不斷增多。TMS320F28335 通用的更新程序方式是采用CCS 集成開發(fā)環(huán)境通過JTAG 仿真器進行程序下載燒寫,但在部分應(yīng)用場景中,JTAG 接口不便于密封系統(tǒng)引出,并且引出后可能導(dǎo)致信號易受干擾而影響程序升級的可靠性,同時JTAG 線過長,設(shè)計時需考慮增加驅(qū)動電路,增加了硬件成本[1]。CAN總線具有實時性強、傳輸距離遠、檢錯能力強、抗電磁干擾能力強等優(yōu)點。本文提出了一種通過CAN Bootloader 引導(dǎo)程序?qū)崿F(xiàn)DSP 程序升級的方法,不需要使用仿真器與JTAG 口相連,通過CAN 端口以及CAN 通訊設(shè)備實現(xiàn)程序在線升級,符合部分復(fù)雜應(yīng)用場景的實際使用需求。

      2 方法介紹

      本方法包含上位機CAN 調(diào)試軟件、CAN Bootloader 引導(dǎo)程序和應(yīng)用程序,其中CAN 調(diào)試軟件為CAN 總線設(shè)備配套軟件,具有通用性,降低了開發(fā)難度,縮短了開發(fā)周期;引導(dǎo)程序預(yù)燒寫在DSP 芯片F(xiàn)lash 上,DSP 上電啟動后,燒寫在DSP 芯片F(xiàn)lash 上的引導(dǎo)程序運行,該引導(dǎo)程序用于接收上位機軟件通過CAN 接口下發(fā)的程序BIN 文件,并將接收的BIN文件燒寫至指定Flash 區(qū)域;應(yīng)用程序為用戶編寫的DSP 功能代碼,通過調(diào)用CCS 工具,將編譯生成的應(yīng)用程序.out 文件轉(zhuǎn)化為程序BIN 文件。待BIN 文件完成燒寫,引導(dǎo)程序?qū)⑻D(zhuǎn)至應(yīng)用程序開始運行。

      根據(jù)設(shè)計,將引導(dǎo)程序分配在Flash A 扇區(qū),將用戶應(yīng)用程序分配在Flash B~Flash H 區(qū)域,空間分配如圖1 所示。

      圖1 TMS320F28335 Flash 空間分配

      3 引導(dǎo)程序設(shè)計

      3.1 引導(dǎo)程序介紹

      CAN 通訊上位機軟件通常與CAN 通訊設(shè)備配套,上位機軟件需識別CAN 通訊設(shè)備號,軟件具有單次發(fā)送和文件整體發(fā)送功能[2]。本方法利用文件發(fā)送功能,著重對引導(dǎo)程序進行設(shè)計,將下發(fā)文件進行循環(huán)緩沖接收和Flash 燒寫,實現(xiàn)程序升級功能,提高開發(fā)效率,同時減小升級程序接收存儲空間。

      3.2 引導(dǎo)程序啟動流程及CMD 設(shè)計

      TMS320F28335 芯片的Boot ROM 位于片內(nèi)地址空間0x3FE000~0x3FFFFF 的一塊8k×16 位的只讀存儲器,片內(nèi)Boot ROM 在出廠時固化了引導(dǎo)加載程序以及定點和浮點數(shù)表[3]。當(dāng)芯片上電復(fù)位后,固化程序會從復(fù)位向量0x3FFFC0 處取得復(fù)位向量,并跳轉(zhuǎn)至InitBoot 處執(zhí)行,InitBoot 會根據(jù)GPIO87、GPIO86、GPIO85 和GPIO84 的值選擇不同的啟動方式[4],具體對應(yīng)關(guān)系如表1 所示。

      表1 控制引腳與引導(dǎo)模式關(guān)系

      編寫的引導(dǎo)程序和應(yīng)用程序存放在Flash 中,因此選擇Jump to Flash 引導(dǎo)方式,系統(tǒng)默認使能4 個引腳的內(nèi)部上拉功能,則無需為這4 個引腳外接控制電路。選擇Jump to Flash 引導(dǎo)方式,系統(tǒng)自帶的引導(dǎo)加載程序會跳轉(zhuǎn)到Flash 地址0x33FFF6 處,在引導(dǎo)程序的CMD 文件中有如下代碼:

      將Codestart 代碼放置在BEGIN 0x33FFF6 處,根據(jù)DSP2833x_CodeStartBranch. asm 關(guān)于Codestart 段的定義,

      Codestart 包含一個跳轉(zhuǎn)指令,使程序跳轉(zhuǎn)至_c_int00 處,_c_int00 代碼會調(diào)用并運行引導(dǎo)程序中的main 函數(shù),從而實現(xiàn)引導(dǎo)程序上電Flash 方式啟動[5]。通過配置引導(dǎo)程序工程中的CMD 文件,將SECTIONS 中的存儲模型均存放至FlashA,保證了引導(dǎo)程序執(zhí)行文件均在FlashA 中,執(zhí)行Flash 擦除操作時,不操作FlashA 區(qū),確保引導(dǎo)程序一直保存在FlashA 扇區(qū)中。

      3.3 引導(dǎo)程序流程

      當(dāng)DSP 上電啟動,程序指針根據(jù)CMD 文件引導(dǎo)跳轉(zhuǎn)至引導(dǎo)程序起始地址,開始運行引導(dǎo)程序main 函數(shù)。引導(dǎo)程序主要功能為啟動TMS320F28335 芯片的CAN 模塊,等待接收上位機下發(fā)CAN 燒寫命令,若接收到燒寫指令,則開啟燒寫模式,若未收到,則在規(guī)定時間后將程序指針跳轉(zhuǎn)至應(yīng)用程序起始地址,開始運行應(yīng)用程序。引導(dǎo)程序流程如圖2 所示,程序詳細流程步驟如下:

      圖2 引導(dǎo)程序流程

      a)通過InitSysCtrl()函數(shù)對系統(tǒng)鎖相環(huán)(PLL)、看門狗、使能外設(shè)時鐘進行初始化;

      b)通過以下函數(shù):

      MemCopy(&RamfuncsLoadStart,

      &RamfuncsLoadEnd,&RamfuncsRunStart);

      MemCopy(&Flash28_API_LoadStart,

      &Flash28_API_LoadEnd,&Flash28_API_RunStart);

      將ramfuncs 段函數(shù)和Flash28_API 段函數(shù)復(fù)制到RAM 內(nèi)存運行,通過InitFlash () 函數(shù)初始化內(nèi)部Flash;

      c)初始化CAN GPIO 口,初始化CAN 模塊,初始化TIMER0 定時器模塊,配置CAN 中斷和定時器中斷,使能全局中斷;

      d)進入while(1)循環(huán)程序,判斷定時器模塊是否累加至規(guī)定時間,若到達規(guī)定時間,則將程序跳轉(zhuǎn)至應(yīng)用程序BEGIN 地址,開始運行應(yīng)用程序;

      e)若在規(guī)定時間內(nèi),CAN 中斷接收到燒寫指令,該燒寫指令為8 B,包含2 B 幀頭,2 B 幀尾以及4 B程序總長度信息,關(guān)閉定時器模塊計時,對應(yīng)用程序Flash 扇區(qū)進行擦除,待擦除成功后,向上位機反饋成功信息,開啟燒寫程序流程,上位機通過文件下發(fā)功能將BIN 文件整體下發(fā),芯片通過循環(huán)接收并燒寫下發(fā)的升級程序文件;

      f)待燒寫完成后跳轉(zhuǎn)至應(yīng)用程序,開始運行應(yīng)用程序。

      3.4 引導(dǎo)程序CAN 接收中斷函數(shù)設(shè)計

      當(dāng)CAN 接收中斷觸發(fā)后,程序跳轉(zhuǎn)至解析燒寫命令幀分支,流程如圖3 所示,若成功解析幀頭、幀尾,保存命令幀中4 B 升級文件長度信息,將應(yīng)用區(qū)Flash擦除標(biāo)志位置1,關(guān)閉此分支,并打開環(huán)形緩沖分支。若未成功解析,則繼續(xù)等待下一幀。

      圖3 CAN 接收中斷函數(shù)流程

      進入環(huán)形緩沖分支后,上位機下發(fā)的全部數(shù)據(jù)皆存儲在環(huán)形緩沖數(shù)組中,每存儲一條數(shù)據(jù),寫指針增加相應(yīng)長度,當(dāng)寫指針指向到數(shù)組末尾時,重新跳轉(zhuǎn)回數(shù)組首地址繼續(xù)存儲[6],接收環(huán)形緩沖數(shù)組見圖4。

      圖4 接收環(huán)形緩沖數(shù)組示意

      3.5 主循環(huán)函數(shù)設(shè)計

      主循環(huán)函數(shù)流程如圖5 所示,循環(huán)判斷Flash 擦除標(biāo)志位是否為1,當(dāng)標(biāo)志位為1 時,表示接收到燒寫指令,對應(yīng)用程序Flash 扇區(qū)進行擦除,程序如下:

      圖5 主循環(huán)函數(shù)流程

      待擦除完成,通過CAN 向上位機發(fā)送擦除成功指令,操作人員接收到成功指令,通過軟件文件發(fā)送功能,將升級BIN 文件整體下發(fā),軟件下發(fā)設(shè)置為每50 ms 下發(fā)一幀,每幀長度為8 B。

      主循環(huán)程序開始判斷讀取指針與寫入指針位置指向的環(huán)形緩沖數(shù)組位置是否一致,若不一致,表明CAN 中斷已成功接收部分BIN 文件數(shù)據(jù),將新接收數(shù)據(jù)燒寫至指定Flash 地址,移動讀取指針,并累加記錄燒寫數(shù)據(jù)長度。若累加記錄燒寫長度與下發(fā)燒寫長度(包含在燒寫指令中)一致,則表示BIN 文件燒寫完成,向上位機反饋燒寫完成指令。待應(yīng)用燒寫完成后,跳轉(zhuǎn)至應(yīng)用程序,開始運行應(yīng)用程序。

      4 應(yīng)用程序設(shè)計

      應(yīng)用程序根據(jù)使用實際需求進行代碼編寫,需要對應(yīng)用程序CMD 文件進行設(shè)計,并調(diào)用CCS 編譯工具將.out 文件生成.bin 文件。

      4.1 應(yīng)用程序CMD 文件設(shè)計

      應(yīng)用程序從FlashH 首地址開始存儲,引導(dǎo)程序跳轉(zhuǎn)至應(yīng)用程序BEGIN 地址,實現(xiàn)應(yīng)用程序啟動[7],應(yīng)用程序CMD 文件設(shè)計代碼如下:

      4.2 應(yīng)用程序生成BIN 文件

      BIN 文件通過CCS 軟件中的post-build 命令實現(xiàn),CCS 安裝時已經(jīng)自動安裝了一個工具mkhex4bin,可以將.out 文件轉(zhuǎn)化成.bin 文件,通過在CCS post-build 中輸入以下指令調(diào)用該工具:

      通過編譯,可直接在該工程Debug 子文件夾下生成升級用的BIN 文件。

      5 試驗驗證

      以TMS320F28335 系統(tǒng)板為驗證平臺,使用XDS100V3 JTAG 仿真器將引導(dǎo)程序預(yù)燒寫至FlashA扇區(qū), 驗證試驗 CAN 總線設(shè)備型號為USBCANFD200U,上位機CAN 通訊軟件ZCANPRO是與設(shè)備相配套的標(biāo)準(zhǔn)軟件。驗證平臺搭建完成后開始試驗驗證,驗證操作步驟如下:

      a)通過CCS 軟件編寫應(yīng)用程序代碼,生成BIN文件,測量BIN 文件總長度;

      b)編寫預(yù)燒寫指令,格式為“2 B 幀頭+4 B BIN文件總長度+2 B 幀尾”;

      c)驗證平臺通過CAN 總線設(shè)備與上位機相連,打開上位機CAN 通訊軟件,設(shè)置波特率,幀格式、幀類型、幀ID;

      d)系統(tǒng)板上電,發(fā)送預(yù)燒寫指令,待接收到Flash 擦除成功消息后,打開BIN 文件,開始BIN 文件發(fā)送,文件燒寫過程如圖6 所示。待燒寫完成,引導(dǎo)程序跳轉(zhuǎn)至應(yīng)用程序起始地址,應(yīng)用程序成功運行,表明驗證成功。

      圖6 試驗驗證燒寫過程

      6 結(jié)論

      本文介紹了一種通過CAN Bootloader 引導(dǎo)程序?qū)MS320F28335 芯片進行程序升級的方法,討論了該芯片通過Flash 啟動的流程機制,并對DSP 的鏈接命令文件(CMD 文件)、引導(dǎo)程序和應(yīng)用程序進行相應(yīng)設(shè)計。經(jīng)過試驗驗證,該方法穩(wěn)定可靠,能夠通過CAN總線設(shè)備實現(xiàn)芯片程序在線升級,可以實現(xiàn)燒寫一次引導(dǎo)程序,即可多次更新應(yīng)用程序的功能。該方法已在實際現(xiàn)場調(diào)試中成功應(yīng)用,解決了部分場景程序升級時設(shè)備需要拆卸的問題,提高了調(diào)試效率。

      猜你喜歡
      上位應(yīng)用程序指令
      聽我指令:大催眠術(shù)
      刪除Win10中自帶的應(yīng)用程序
      電腦報(2019年12期)2019-09-10 05:08:20
      ARINC661顯控指令快速驗證方法
      LED照明產(chǎn)品歐盟ErP指令要求解讀
      電子測試(2018年18期)2018-11-14 02:30:34
      特斯拉 風(fēng)云之老阿姨上位
      車迷(2018年12期)2018-07-26 00:42:22
      “三扶”齊上位 決戰(zhàn)必打贏
      基于ZigBee和VC上位機的教室智能監(jiān)測管理系統(tǒng)
      以新思路促推現(xiàn)代農(nóng)業(yè)上位
      坐標(biāo)系旋轉(zhuǎn)指令數(shù)控編程應(yīng)用
      機電信息(2014年27期)2014-02-27 15:53:56
      關(guān)閉應(yīng)用程序更新提醒
      電腦迷(2012年15期)2012-04-29 17:09:47
      宁乡县| 亳州市| 江永县| 财经| 华安县| 五寨县| 通江县| 环江| 灵武市| 旌德县| 水富县| 县级市| 灵璧县| 泸水县| 沁水县| 新蔡县| 舞阳县| 嘉祥县| 商洛市| 读书| 石家庄市| 花垣县| 常熟市| 台安县| 普定县| 泽州县| 云龙县| 会宁县| 四会市| 习水县| 江北区| 新晃| 格尔木市| 木兰县| 灵石县| 赤城县| 彰化市| 北碚区| 宜阳县| 民权县| 白河县|