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

        ?

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

        2010-03-24 02:41:12張小平豐新龍
        關(guān)鍵詞:字節(jié)串口嵌入式

        張小平,谷 勇,豐新龍

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

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

        1 Bootloader 概述

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

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

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

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

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

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

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

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

        2.1 硬件平臺(tái)設(shè)計(jì)

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

        圖1 串口加載硬件設(shè)計(jì)原理

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

        2.2 Bootloader 設(shè)計(jì)

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

        2)Bootloader 程序設(shè)計(jì)。Bootloader 程序設(shè)計(jì)主要包括如下幾個(gè)部分:

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

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

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

        圖2 Bootloader串口加載流程

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

        2.3 S-record 文件格式

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

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

        表1 S-record 文件記錄格式

        每個(gè)記錄之間通過(guò)換行符隔離,和目標(biāo)板通訊時(shí)以記錄為單位操作。

        各種記錄的描述如下:

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

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

        S5 記錄,地址域表示此前的可加載記錄總數(shù),數(shù)據(jù)域?yàn)榭铡?/p>

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

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

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

        表2 9 針COM端口說(shuō)明

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

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

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

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

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

        圖3 上位機(jī)軟件流程圖

        4 串口調(diào)試功能設(shè)計(jì)

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

        5 結(jié)束語(yǔ)

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

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

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

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

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

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

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

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

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

        附錄A a resetvector.asm 源碼

        附錄A b bootArchStart.c 源碼

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

        猜你喜歡
        字節(jié)串口嵌入式
        No.8 字節(jié)跳動(dòng)將推出獨(dú)立出口電商APP
        淺談AB PLC串口跟RFID傳感器的通訊應(yīng)用
        No.10 “字節(jié)跳動(dòng)手機(jī)”要來(lái)了?
        搭建基于Qt的嵌入式開(kāi)發(fā)平臺(tái)
        簡(jiǎn)談MC7字節(jié)碼
        嵌入式軟PLC在電鍍生產(chǎn)流程控制系統(tǒng)中的應(yīng)用
        USB接口的多串口數(shù)據(jù)并行接收方法探索
        基于藍(lán)牙串口適配器的GPS接收機(jī)與AutoCAD的實(shí)時(shí)無(wú)線通信
        Altera加入嵌入式視覺(jué)聯(lián)盟
        基于并行控制的FPGA多串口拓展實(shí)現(xiàn)
        精品理论一区二区三区| 亚洲精品无码专区在线| 狠狠爱无码一区二区三区| 国产在线AⅤ精品性色| 亚洲精品一区二区成人精品网站 | 麻豆成年人视频在线观看| 午夜性刺激免费看视频 | 亚洲国产av无码精品| 久久精品人人爽人人爽| 久久精品爱国产免费久久| 清纯唯美亚洲经典中文字幕| 国产精品无码一区二区三区在| 久久综合九色综合网站| 亚洲熟妇大图综合色区| 国产一区二区三区尤物| 波多野结衣不打码视频| 少妇人妻偷人精品一区二区| 国产成年无码AⅤ片日日爱| 蜜桃高清视频在线看免费1| 欧美黑寡妇特a级做爰| 国产成人免费a在线视频| 色中文字幕视频在线观看| 中文字幕本久久精品一区| 欧美大屁股xxxx| 久久亚洲AV无码精品色午夜| 亚洲无人区一码二码国产内射| 精品国产天堂综合一区在线 | 少妇扒开毛茸茸的b自慰| 亚洲一区中文字幕在线电影网| 久草国产手机视频在线观看| 国产精品一区二区三区在线蜜桃| 狠狠色噜噜狠狠狠狠7777米奇| 亚洲an日韩专区在线| 亚洲成在人线天堂网站| 亚洲av无码成人精品区狼人影院| 久久婷婷色综合一区二区 | 国产精品免费av片在线观看| 97无码人妻Va一区二区三区| 久久国产精品av在线观看| 久久久久成人精品免费播放动漫| 最新亚洲精品国偷自产在线|