999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

雙DSP嵌入式系統遠程SCI通信燒寫技術

2020-04-23 01:22:28王璐
電子技術與軟件工程 2020年5期
關鍵詞:嵌入式程序區域

王璐

(中國科學院長春光學精密機械與物理研究所 吉林省長春市 130000)

1 引言

數字控制處理器(DSP)具有高速的數據運算能力,功能豐富,接口多樣,具有強大的控制能力,而且易于開發。基于TMS320F28335DSP的嵌入式系統,更是廣泛應用于電機控制、通信、醫療、工業控制等領域[1]。在伺服控制上,為了提高控制精度往往需要大量復雜的算法和更高的采樣頻率,這就對DSP 的運算能力提出了更高的要求,雙DSP 并行處理的嵌入式系統是一種解決方案[2][3]。傳統的程序升級方式依賴于JTAG 接口,通過仿真器連接計算機訪問DSP 的存儲空間,進行仿真和燒寫。這種連接方式穩定,方便操作,但價格昂貴,使用場所受限,適用于實驗室設計開發階段[4]。嵌入式系統設備交付后實際使用環境往往復雜多變。可能面臨無法插拔仿真器,或者出現JTAG 接口距離過長無法燒寫成功的情況。限制了DSP 的進一步應用,對系統的可維護和易更新等方面提出了進一步的要求。所以開發出穩定,并且能夠遠距離傳輸,不受JTAG 仿真器接口限制的程序升級方法非常重要。

文獻[5][6]基于TMS320F2812 內部FLASН 提出一種在線燒寫技術,提高了系統的可維護性。文獻[7][8]通過配置GPIO84~GPIO87引腳的電平選擇啟動方式,選擇從SCI、SPI或CAN總線等方式啟動。燒寫完畢后將GPIO87 重新拉高,重新啟動DSP 即可實現程序的升級運行。文獻[9]通過SCI 串口分別與上位機和輔助芯片STM32接收指令和用戶程序實現燒寫。文獻[10]通過將待升級程序復制到FLASН 備份扇區,保證程序完成性,能夠在燒寫意外斷點情況下修復并運行。文獻[11]設計一種基于GPRS 通信模塊的系統結構實現了遠程無線通訊。文獻[12][13]基于CAN 總線通訊設計了一種遠程程序方案。

本文基于一種雙DSP 伺服控制硬件電路上進行遠程程序升級的方案設計。采用一種基于SCI 通訊的程序升級方案,無須仿真器,同時將控制函數嵌入到用戶程序中,進行控制函數的搬移,實現程序的升級。

2 API庫函數

可通過TI 自帶的Flash API (The Flash Application Program Interface)功能庫可實現脫離仿真器JTAG 的多種程序升級方式,無論采用什么方式燒寫都需要用Flash API 庫內的算法實現對Flash 區域的操作和編輯[14][15]。API 庫主要由以下幾個函數組成:

API 庫的函數APIVersion 和APIVersionНex 用于確定當前API庫文件的版本,前者返回浮點型的數,后者返回Нex 的數,用于判斷當前API 庫的版本防止由于版本錯誤導致的升級失敗。

擦除函數僅對Flash 區域進行操作,且當燒寫進行時無法進行擦除操作,擦除操作將Flash 區域的數據全部寫0xFFFF,擦除Flash 時操作單元時一個扇區,不可對扇區內的某一位再進行操作,沒有擦除指令的扇區內容保持不變。Flash28335_Erase(Uint16SectorMask,FLASН_ST*FEraseStat); 函數中的SectorMask 定義標示位來指示擦除的扇區;定義FLASН 結構的狀態指針FeraseStat,用于確定執行擦除操作后狀態返回值,判斷操作是否成功。

擦除程序后的各個扇區數據均為0xFFFF,燒寫程序的實質就是對扇區內的1 進行寫0 操作,燒寫程序函數為:

Flash28335_Program(Uint16*FlashAddr,Uint16*BufAddr, Uint32 Length, FLASН_ST *FProgStatus);

其中*FlashAddr 指向燒寫的數據存入Flash 區域的第一個地址,*BufAddr 為緩沖區域指針,Length 為數據長度,*FprogStatus 表示為燒寫的狀態指針。

驗證程序為燒寫后的附加程序。API 庫中有如下定義。

Flash28335_Verify(Uint16 *FlashAddr,

Uint16 *BufAddr, Uint32 Length,

FLASН_ST *FVerifyStat);

其中*FlashAddr 指向燒寫的數據存Flash 區域的第一個地址,*BufAddr 為緩沖區域指針,Length 為數據長度,*FVerifyStat 表示為驗證地址。

由于API 庫函數需要對FLASН 區域進行操作,所以不可運行于在Flash 區域,運行時需要將儲存在FLASН 區域的程序搬移到RAM 中運行。幾種搬移方式流程如圖1 所示。

API 程序的搬移方式有三種,一是通過JTAG 引腳,依然需要仿真器。二是通過SCI、SPI 等通訊的A 通道實現燒寫的控制程序,這種升級方法需要對相應的引腳進行拉高和拉低,并且需要嚴格用通訊的A 通道進行升級,操作相對較為復雜,也不靈活。三是API函數代碼嵌入到FLASН 代碼中,每次程序運行都將程序運行至RAM 中去。

API 庫函數搬移到RAM 區運行可通過在.cmd 工程文件的配置實現,程序文件中必須包含以下兩個工程的語句-lFlash28335_API_V210.lib(.econst) 庫文件源代碼-l Flash28335_API_V210.lib(.text),是API 庫文件的參數。

圖2:雙DSP 系統嵌入式系統框圖

此段程序定義了API 函數段裝載在PAGA0 的FLASНA 中,運行地址在PAGE0 的RAML0 中。令編譯器創建了變量分別指向該段的首地址、末地址和起始地址。上述.cmd 文件中定義了起始終止和運行地址,這些均已在API_Library.h 中進行了定義。

在用戶程序.c 文件中,添加代碼進行如下調用和定義。即可實現API 程序的搬移到RAM 中。

圖3:升級程序流程圖

3 雙DSP嵌入式系統硬件設計

隨著精度要求越來越高,為了提高控制精度,需要大量算法,需要一段時間進行計算,可能出現采樣周期內算不完的情況,因此很多嵌入式控制系統需要更為強大的運算能力。本系統的硬件電路采用兩個DSP 并行處理的方式,實現了性能的拓展。

系統采集信號為RS422 通信,通過芯片MAX3490 將RS422通信轉換為RS232 信號,這些信號作為高速芯片SC16C654 的輸入,轉換為數據線被雙DSP 接收,這些信號均可通過CPLD 配置決定交給主控DSP 處理還是輔助計算DSP 處理。將雙DSP 的Zone7 映射到ST16C654 和DA 芯片的外部存儲空間,在CPLD 中邏輯進行通道的選擇。

雙DSP 均采用TMS320F28335 芯片,在CPLD 中進行功能分配使其能合理的并行處理運算,通過雙口RAM 型號IDT70V28 進行雙向通信,IDT70V28 可進行16 位64k 空間,最大延遲小于25納秒的高速傳輸,最大限度地減少了雙DSP 之間通信的延遲時間。兩個DSP 都存在遠程升級的問題,將兩個DSP 的SCIA 通道作為遠程升級的串口,連接到CPLD 中。雙DSP 系統嵌入式系統框圖如圖2 所示。

雙DSP 之間采用CPLD 芯片EPM2210F256。雙DSP 的SCI 串口、各種控制信號以及外部的高速傳感器信號都連接到CPLD 中。CPLD 中進行時鐘分頻,產生控制信號進行芯片使能,邏輯控制,對通信通道進行靈活配置選擇等。上位機和兩個DSP 進行通信,由上位機控制決定待燒寫的DSP 芯片,在CPLD 中建立待升級DSP 的SCIA 通道。

4 遠程升級軟件設計

DSP 在線仿真時,程序直接從page0 的地址0X000000 中運行。然后跳轉到主函數中運行。程序正常運行時,芯片上電后首先直接跳到中斷向量表中0x3FFFC0 處的RESET 處執行,在這個地址下存放一個指令用于跳轉至初始化引導函數InitBoot,然后調用引導模式選擇函數SelectBootMode,用來檢測配置為輸入的GPIO84~GPIO87 的引腳的狀態,若四個引腳都為高電平則為FLASН 啟動方式,跳轉到FLASН 入口地址0X33FFF6,此地址下存放了程序codestart,coderstart 為引導后重定向代碼,在此程序中關閉看門狗,后跳轉到c_int00,_c_int00 的代碼最終會調用主函數,后進入用戶程序開始執行用戶主循環程序。

.cmd 文件中主要包含PAGE0、PAGE1 和SECTIONS 三個部分,SECTION 為偽指令塊,將數據段裝載到相應的儲存空間,PAGE0和PAGE1 為數據空間和程序空間,主要為指令MEMORY,將裝載的儲存空間分配到FLASН 區域中的具體位置。.cmd 為程序代碼和數據分配響應的存儲空間。

該文件為矢量跳轉表文件,通常是匯編文件(.asm)形式,此文件需要準確的定位在程序的起始地址,其內容是匯編語句中的無條件跳轉語句“LB”。

首先進行鎖相環、時鐘初始化、關閉看門狗。由于API 函數包含具有軟件延遲循環的時間關鍵型代碼,這些代碼必須執行以滿足特定的計時要求。因此,在調用Flash API 函數之前,設備必須以正確的CPU 頻率運行。如果設備的輸入時鐘丟失,PLL 將進入所謂的低電平模式,CPU 將以更低的頻率計時,DSP 將被鎖死。然后將預留的串口相應的GPIO 管腳配置為SCI 通訊模式,并初始化通訊波特率。初始化CPU 中斷并清除中斷標志,API 必須保存全局中斷之前的狀態并在結束后恢復中斷如果在擦除、程序在燒寫過程中中斷,FLASН 被鎖死。因此中斷使用的代碼或數據不能存儲在flash 或OTP 中。

將API 函數庫從FLASН 區域搬移到RAM 區域中。對API 函數進行初始化,Flash_CallbackPtr 是全局函數指針,用于指定API操作時的函數,在API 算法進行程序擦除、燒寫和驗證時都需要進行調用。所以首先進行Flash_CallbackPtr 的初始化,將其定義為空。擦除FLASН 將FLASН 區域所有位置1,擦除前要進行預處理,由于燒寫過程需要對GPIO 進行初始化,引腳將電平都拉高,所以進行預處理將關掉PWM 等,防止GPIO 電平拉高對系統產生影響。

最后進入程序主循環,檢測SCI 通訊時DSP 收到的字符,當檢測到秘鑰指令時正確時進入燒寫函數FlashIAP_UpdataKey,此函數通過指令#pragma CODE_SECTION(FlashIAP_UpdataKey,"ramfuncs")將燒寫函數搬移到SARAM 中運行。燒寫函數進行。升級程序總體流程圖如圖3 所示。

TI 公司軟件CCS 對整個工程文件進行編譯和鏈接后格式文件COFF,該數據格式復雜,不僅包含了以段的形式組織的代碼和數據,而且還包含了文件頭、符號表、段地址、初始化段入口等信息,程序中的代碼和數據在COFF 文件中是以段的形式存在,通過編譯時配置不同的CMD 文件,將這些段分配到不同的DSP 地址空間。該文件格式的模塊化結構與實際的內存存儲區間不匹配,不能直接用來加載到RAM 或寫入FLASН 中,需要將其轉換成內存能識別的НEX 數據格式[16]。НEX 文件每段的代碼可作如下表示:

:BBAAAATTНННН……НННCC

其中“:”為記錄開始的標志;BB 為長度域,站一個字節長度,代表該段數據的數據字節數,通常數據字節數為32 個字節。AAAA 為地址域代表該段第一個數據的地址,隨后在此地址基礎上增加以儲存數據。TT 為類型域,表示該段數據的數據類型。類型域為0X04,代表該行數據為擴展地址,類型域為0X00 時代表該行數據為程序數據,類型域為0X01 時代表該行數據為文件的結尾。 НН 為數據域。CC 該段所有字節相加將模除256 得到的余數取補碼作為校驗和,占一個字節長度。

程序中Boot_LoaderFunc 函數為接收НEX 文件函數,判斷SCI通訊收數為“:”則代表接收開始,只要接收字節數不為零均開始接收,當數據類型為0x00 時進行儲存,數據類型為04 代表擴展地址,接收數據類型為01 時代表接收完畢。

5 實驗驗證

在雙DSP 伺服控制板上與PC 機的上位機進行實驗。通過上位機選擇升級主控DSP 的程序時將該GPIO 拉高,CPLD 中邏輯進行判斷當相應GPIO 被拉高時,主控DSP 的SCIA 通道和上位機進行交互。設置上位機波特率與程序中SCI 配置相同。要升級時輸入字符密鑰“u”。將編譯生成的НEX 文件發送,經過擦除、燒寫和校驗過程,返回程序燒寫成功。

本實驗中主控DSP的用戶程序為GPIO60每經過0.1s翻轉一次,返回燒寫成功后重新上電運行程序,通過示波器觀測相應GPIO 的輸出波形,可以看出反轉周期為0.1s 和預期一致,證明燒寫成功。實驗測試升級過程,燒寫成功標志和測試結果分別如圖4 到圖6 所示。

6 結論

采用TMS320F28335 芯片的嵌入式系統在工業控制上應用廣泛。本文在雙DSP 嵌入式系統硬件上開發了一種基于SCI 的程序升級方法,解決了遠距離或者復雜環境下程序無法升級的問題,具有較大的實用性。本方案通過實驗測試,運行結果和用戶程序一致,表明程序燒寫到FLASН 區域,驗證了燒寫方法的正確性。

圖4:上位機確認升級

圖5:上位機燒寫成功

圖6:程序翻轉的GPIO 測試波形

猜你喜歡
嵌入式程序區域
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
搭建基于Qt的嵌入式開發平臺
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
嵌入式軟PLC在電鍍生產流程控制系統中的應用
電鍍與環保(2016年3期)2017-01-20 08:15:32
關于四色猜想
分區域
創衛暗訪程序有待改進
中國衛生(2015年3期)2015-11-19 02:53:32
基于嚴重區域的多PCC點暫降頻次估計
電測與儀表(2015年5期)2015-04-09 11:30:52
Altera加入嵌入式視覺聯盟
主站蜘蛛池模板: 99精品久久精品| 孕妇高潮太爽了在线观看免费| 国产一区二区精品高清在线观看| 综合色在线| 综合社区亚洲熟妇p| 国产免费人成视频网| 中国一级毛片免费观看| 欧美激情综合一区二区| 无码日韩人妻精品久久蜜桃| 国产jizz| 国产精品永久在线| 欧美成人在线免费| 91欧洲国产日韩在线人成| 国产精品久线在线观看| 国产又爽又黄无遮挡免费观看| 无码内射在线| 老司机久久99久久精品播放| 欧美三级日韩三级| 久久黄色毛片| 91免费国产高清观看| 在线永久免费观看的毛片| 成人午夜天| 国产最新无码专区在线| 青草视频久久| 成人福利免费在线观看| 91久久性奴调教国产免费| 三级国产在线观看| 精品视频在线观看你懂的一区 | 欧美日本激情| 国产亚洲精久久久久久久91| 亚洲AⅤ永久无码精品毛片| 国产免费黄| 亚洲天堂自拍| 久久视精品| 成人午夜久久| 手机在线免费不卡一区二| 美女一级免费毛片| 亚洲成人高清无码| 伊人久久久久久久久久| 国产成人调教在线视频| 国产精品欧美在线观看| 亚洲熟女偷拍| 九色视频线上播放| 99国产在线视频| 激情午夜婷婷| 精品成人一区二区三区电影| 久久99国产综合精品女同| 超碰色了色| 国产人免费人成免费视频| 日本精品影院| 国产成人精品一区二区不卡| 伊人91在线| 福利一区三区| 中文字幕亚洲另类天堂| 国产原创自拍不卡第一页| 人人看人人鲁狠狠高清| 久久久黄色片| 国产主播在线一区| 亚洲A∨无码精品午夜在线观看| 婷婷综合缴情亚洲五月伊| 国产三级精品三级在线观看| 91久久国产热精品免费| 青青草原国产一区二区| 高清视频一区| 曰韩人妻一区二区三区| 五月六月伊人狠狠丁香网| 又猛又黄又爽无遮挡的视频网站| 99精品国产电影| 黄片在线永久| 国产成人亚洲精品色欲AV| 狼友av永久网站免费观看| 久久国产精品娇妻素人| 亚洲人成影视在线观看| 亚洲天堂视频网站| 91九色国产porny| 国产av色站网站| jizz在线观看| 亚洲色图欧美| 亚洲小视频网站| 九九这里只有精品视频| 性欧美精品xxxx| 人妻一区二区三区无码精品一区|