国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

嵌入式系統(tǒng)Bootloader分析及DSP56F800串口加載功能實現(xiàn)

2010-03-24 02:41張小平豐新龍
海軍航空大學學報 2010年5期
關(guān)鍵詞:字節(jié)串口嵌入式

張小平,谷 勇,豐新龍

(1.海軍駐太原地區(qū)航空軍事代表室;2.太原航空儀表有限公司,太原 030006)

引導加載程序是上電運行的第一段代碼,一般完成硬件初始化和系統(tǒng)加載的功能。了解引導加載程序有助于更深入的理解計算機系統(tǒng),實現(xiàn)更底層的應用,下面以Motorola 公司的DSP 處理器為例介紹引導加載程序的部分應用。

1 Bootloader 概述

通常計算機系統(tǒng)從軟件角度劃分層次如下:①引導加載程序。包括固化在固件(firmware)中的boot代碼(可選)和BootLoader 兩大部分。② 操作系統(tǒng)內(nèi)核。特定于嵌入式板子的定制內(nèi)核以及內(nèi)核的啟動參數(shù)。③ 文件系統(tǒng)。包括根文件系統(tǒng)和建立于flash、Ram 等存儲設備上的文件系統(tǒng)。④ 用戶應用程序。滿足用戶需求的各種程序和功能代碼。

引導加載程序是系統(tǒng)加電后運行的第一段軟件代碼。PC機中的引導加載程序由BIOS(其本質(zhì)就是一段固件程序)和位于硬盤 MBR 中的OS BootLoader(比如,LILO 和GRUB 等)一起組成。BIOS 在完成硬件檢測和資源分配后,將硬盤MBR中的BootLoader 讀到系統(tǒng)的RAM中,然后將控制權(quán)交給OS BootLoader。BootLoader的主要運行任務就是將內(nèi)核映象從硬盤上讀到RAM中,然后跳轉(zhuǎn)到內(nèi)核的入口點去運行,也即開始啟動操作系統(tǒng)。

對于無操作系統(tǒng)平臺的嵌入式系統(tǒng),Bootloader完成初始化硬件、建立內(nèi)存映射等工作后,直接跳轉(zhuǎn)到用戶程序執(zhí)行。

通過Bootloader 設計能實現(xiàn)很多功能,如初始化硬件、系統(tǒng)啟動自檢測、加載操作系統(tǒng)和用戶程序,實現(xiàn)系統(tǒng)更新等。嵌入式系統(tǒng)產(chǎn)品一般有3種工作狀態(tài):正常工作狀態(tài)、程序加載狀態(tài)、維護調(diào)試狀態(tài)。根據(jù)軟件或硬件輸入,Bootloader 判斷系統(tǒng)的狀態(tài),選擇跳轉(zhuǎn)到用戶程序或執(zhí)行加載程序代碼或執(zhí)行維護檢測程序。

程序加載的方式有多種,一般通過串行接口、JTag 接口、以太網(wǎng)接口等,可加載的程序文件格式包括ELF32、S-record 等。[1-5]

下面以Motorola 公司的DSP56F800系列處理器為例,說明Bootloaer 在串口加載中的應用。

2 DSP56F800串口加載功能實現(xiàn)

飛思卡爾公司的DSP56F800系列處理器有較廣泛的應用基礎,采用傳統(tǒng)的JTAG 接口仿真和加載方式,更新軟件時需要拆裝產(chǎn)品,對產(chǎn)品外場維護、檢測造成不便。采用串口加載方式,接口簡單、方便,通過產(chǎn)品上預留的RS-232 接口,即可更新程序,又能打印維護信息。

2.1 硬件平臺設計

DSP56F800系列處理器的片上設備有SCI 及GPIO端口,通過SCI 和RS-232 通訊驅(qū)動芯片(ADM3311,MAX232 等)實現(xiàn)和上位機的通訊,GPIO 用來判斷進入正常工作還是程序加載模式,復位信號和硬件喂狗信號連接到外部調(diào)試、加載端口便于控制,其硬件基本原理框圖如圖1所示:

圖1 串口加載硬件設計原理

ISboot 通過電阻上拉至3.3 V,輸入懸空時進入正常工作狀態(tài),接地時進入程序加載狀態(tài)。進入程序加載狀態(tài)后PC機通過RTS 設置產(chǎn)生喂狗信號防止DSP 復位。[6-7]

2.2 Bootloader 設計

1)Bootloader 基本原理。在Bootloader的工程中resetvector.asm(見附錄A a)文件中定義復位中斷向量的入口地址為bootArchStart(見附錄A b)。系統(tǒng)上電首先進行必要的寄存器初始化,執(zhí)行調(diào)用main 完成串口加載功能,然后,跳轉(zhuǎn)至archStart執(zhí)行應用程序。復位中斷向量的地址為0x8000~0x8004,archStart 入口地址為0x0080,引導加載的代碼存儲在 bootflash 空間,地址為x8004~0x8800(見附錄A c,link.cmd)。

2)Bootloader 程序設計。Bootloader 程序設計主要包括如下幾個部分:

① Bootloader 主程序。主要完成硬件初始化、工作模式選擇功能。ISboot 懸空,跳轉(zhuǎn)至應用程序入口,進入正常工作狀態(tài);ISboot 接地,進入程序加載狀態(tài),等待串口發(fā)送數(shù)據(jù),程序加載完畢跳轉(zhuǎn)至應用程序入口。②串口通訊程序。接收PC機發(fā)送的S-record 格式文件,并反饋狀態(tài)信息。③S-record 文件解碼程序。對S-record 文件進行解碼分析,提取地址、代碼、數(shù)據(jù)等。④ flash 讀寫程序。將接收的代碼和數(shù)據(jù)寫入Program Flash 或Data Flash 并校驗。

其中main(void)為主體函數(shù),其流程如圖2所示,源碼見附錄A,main 執(zhí)行結(jié)束后延時跳轉(zhuǎn)至用戶程序。

串口通訊使用軟件流控制,X-ON為Ctrl+Q,鍵值17,X-OFF為Ctrl+S,鍵值19;DSP 接收并處理上位機發(fā)送的S-record 文件,忙時向上位機發(fā)送X-OFF,閑時發(fā)送X-ON;上位機收到X-OFF 字符停止發(fā)送數(shù)據(jù),收到X-ON 啟動發(fā)送數(shù)據(jù)。

圖2 Bootloader串口加載流程

DSP 接收每個S-record 記錄進行校驗/解析,將數(shù)據(jù)寫入對應的地址,如果接收過程出現(xiàn)校驗或指令錯誤,發(fā)送警告信息。[5,8]

2.3 S-record 文件格式

Motorola S-records 16 進制文件和ELF 文件是編譯生成可執(zhí)行代碼的常見格式,CodeWarrior 編譯出來的可執(zhí)行代碼就包括這兩種類型的文件(CodeWarrior的工程DEBUG 文件夾下面一般都有這兩種文件,flash.elf,flash.elf.s)。串口加載程序使用S-records 文件。

S-records 文件每個記錄由ASCII 字符組成,通常不超過514個字節(jié),其格式為:類型+字數(shù)+地址+數(shù)據(jù)+校驗和,見表1。

表1 S-record 文件記錄格式

每個記錄之間通過換行符隔離,和目標板通訊時以記錄為單位操作。

各種記錄的描述如下:

S0 記錄內(nèi)容為文件頭信息,其地址域為0x0000,數(shù)據(jù)域分為3 部分:模塊名稱(20char),版本號(2char),修訂號(2char),描述部分(0~36 char)。

S1、S2、S3 記錄均為可加載記錄,數(shù)據(jù)域為可加載數(shù)據(jù),地址域分別為4 字節(jié)、6 字節(jié)、8 字節(jié)地址。

S5 記錄,地址域表示此前的可加載記錄總數(shù),數(shù)據(jù)域為空。

S7、S8、S9 記錄,數(shù)據(jù)域為空,地址域表示可執(zhí)行程序入口地址,地址域分別為4 字節(jié)、3 字節(jié)、2 字節(jié)地址。

3 串口控制功能實現(xiàn)

PC機的9 針COM端口可實現(xiàn)串行數(shù)據(jù)輸入輸出,及離散信號的輸入輸出。COM端口應用見表2。

表2 9 針COM端口說明

COM 口的DTR、RTS、CTS、DSR 引腳通常為硬件流量控制模式時作為握手信號使用,在Bootloader 中數(shù)據(jù)流量控制使用X-ON/OFF 軟件流量控制,因此這4個引腳可作為離散量輸入/輸出使用。

一般基于DSP56F800 平臺的產(chǎn)品都有硬件看門狗的功能,當系統(tǒng)軟件不能周期性的喂狗時,系統(tǒng)會復位,為減小Bootloader的開銷,使用RTS 引腳作為WDI(Watch dog Input),通過不停翻轉(zhuǎn)RTS電平避免在加載程序過程中DSP 硬件看門狗復位。

DTR 引腳連接到DSP系統(tǒng)復位信號,加載完畢后可以自動復位DSP,驗證程序加載是否成功。

CTS、DSR 也可作為DSP模式輸入引腳,在串口調(diào)試功能設計中用來判斷DSP 當前所處的工作模式。[6-7]

上位機軟件包括如下功能:串行端口設置及初始化;DSP 信息接收并顯示;S-record 文件讀取及傳送;DSP 復位信號,喂狗信號控制。軟件流程圖見圖3。

圖3 上位機軟件流程圖

4 串口調(diào)試功能設計

通過Bootloader 也可以實現(xiàn)串口調(diào)試功能,其程序結(jié)構(gòu)和硬件設計原理與上述串口加載設計類似,Bootloader 設計中加入調(diào)試指令集和命令解釋執(zhí)行代碼,例如接收到“S”指令返回版本信息,接收到“B”指令進行BIT 并返回自檢信息等。

5 結(jié)束語

Bootloader 設計在嵌入式系統(tǒng)中非常重要,可根據(jù)系統(tǒng)的需要設計不同功能的Bootloader 能提高產(chǎn)品的可靠性、維修性。

[1]章堅武,李杰,姚英彪.嵌入式系統(tǒng)設計與開發(fā)[M].西安:西安電子科技大學出版社,2009:122-213.

[2]符意德.嵌入式系統(tǒng)設計原理及應用[M].北京:清華大學出版社,2004:81-237.

[3]張思民.嵌入式系統(tǒng)設計及應用[M].北京:清華大學出版社,2008:156-197.

[4]賴曉晨,原旭,孫寧.嵌入式系統(tǒng)程序設計[M].北京:清華大學出版社,2009:216-317.

[5]馬學文,朱名日,程曉輝.嵌入式系統(tǒng)中Bootloader的設計與實現(xiàn)[J].計算機工程,2005,31(7):96-97;196.

[6]冬雷.DSP 原理及開發(fā)技術(shù)[M].北京:清華大學出版社,2007:67-179.

[7]范壽康.Freescale 16 位DSP 原理與開發(fā)技術(shù)[M].北京:機械工業(yè)出版社,2006:157-317.

[8]郎巖梅,唐文彥,趙軍.基于 DSP 嵌入式系統(tǒng)中Bootloader的設計方法[J].電測與儀表,2003,40(4):35-37.

附錄A a resetvector.asm 源碼

附錄A b bootArchStart.c 源碼

附錄A c bottloader 編譯鏈接文件link.cmd

猜你喜歡
字節(jié)串口嵌入式
No.8 字節(jié)跳動將推出獨立出口電商APP
基于NPORT的地面綜合氣象觀測系統(tǒng)通信測試方法及故障處理
Focal&Naim同框發(fā)布1000系列嵌入式揚聲器及全新Uniti Atmos流媒體一體機
基于EM9000工控板高性能雙串口通信模型設計與實現(xiàn)
No.10 “字節(jié)跳動手機”要來了?
TS系列紅外傳感器在嵌入式控制系統(tǒng)中的應用
輕量級分組密碼Midori64的積分攻擊
嵌入式PLC的設計與研究
船舶電子設備串口數(shù)據(jù)的軟件共享方法
嵌入式單片機在電機控制系統(tǒng)中的應用探討