• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于S3C2410系統(tǒng)的vivi引導(dǎo)程序分析

    2012-06-08 09:12:14樸海光
    關(guān)鍵詞:命令串口嵌入式

    樸海光

    摘要:嵌入式系統(tǒng)啟動(dòng)是以引導(dǎo)程序開(kāi)始,引導(dǎo)程序會(huì)讓系統(tǒng)啟動(dòng)后處于操作系統(tǒng)的管理之下,然后嵌入式系統(tǒng)才能發(fā)揮它強(qiáng)大的多任務(wù)化的管理功能,但嵌入式系統(tǒng)的引導(dǎo)程序有很多,之間差別很大,對(duì)它的認(rèn)識(shí)也知之甚少,文中以韓國(guó)Mizi公司開(kāi)發(fā)的vivi引導(dǎo)程序?yàn)榇?,以點(diǎn)帶面,詳細(xì)做了剖析。

    關(guān)鍵詞:嵌入式S3C2410vivi引導(dǎo)程序

    1 概述

    引導(dǎo)程序是計(jì)算機(jī)引導(dǎo)系統(tǒng)軟件的一個(gè)重要工具,大家對(duì)80X86微型機(jī)上的引導(dǎo)系統(tǒng)不會(huì)陌生,嵌入式系統(tǒng)的引導(dǎo)程序的作用與其相似,通過(guò)引導(dǎo)程序可以對(duì)系統(tǒng)中的一些主要部件做初始化,對(duì)嵌入式系統(tǒng)來(lái)說(shuō),就是諸如CPU、存儲(chǔ)器件、串行口、網(wǎng)絡(luò)口等部件要做初始配置,相對(duì)于微型機(jī)來(lái)說(shuō),嵌入式系統(tǒng)的存儲(chǔ)管理出于效率的考慮,對(duì)使用有更為精確、嚴(yán)格的要求,引導(dǎo)程序可以分配內(nèi)存空間的映射,將系統(tǒng)的軟件和硬件環(huán)境處于最佳的工作狀態(tài),為下一步操作系統(tǒng)的引導(dǎo)做好準(zhǔn)備工作。

    2 vivi引導(dǎo)程序

    2.1 vivi簡(jiǎn)介

    Vivi是由韓國(guó)Mizi公司面向ARM9處理器開(kāi)發(fā)的引導(dǎo)系統(tǒng),支持S3C2410處理器。它工作于兩種可選模式下,一種是啟動(dòng)加載模式,另一種是下載模式,后面會(huì)給出這兩種模式的具體分析。啟動(dòng)加載模式下,會(huì)完成操作系統(tǒng)的自動(dòng)引導(dǎo),下載模式下,會(huì)通過(guò)一個(gè)命令行接口提供的命令完成相應(yīng)功能。

    2.2 vivi程序架構(gòu)分析

    Vivi系統(tǒng)是由一段很小的引導(dǎo)程序構(gòu)成,它的代碼包括如下幾個(gè)目錄:arch,init,drivers,lib和include。

    ①arch子目錄: vivi可以支持很多類型的目標(biāo)板,不同類型的目標(biāo)板會(huì)對(duì)應(yīng)不同的子目錄,文中給出的Vivi引導(dǎo)系統(tǒng)Boot Loader中只包括了S3C2410目錄;②Init: vivi的執(zhí)行就是由這個(gè)目錄的用C語(yǔ)言寫成的main.c文件開(kāi)始執(zhí)行,該目錄下還有一個(gè)名稱為version.c的文件;③drivers:內(nèi)核工作時(shí)的設(shè)備驅(qū)動(dòng)程序都包括于這個(gè)目錄,它又將設(shè)備驅(qū)動(dòng)分為三種類型,分別置于MTD,串口,網(wǎng)絡(luò)三個(gè)目錄下,其中MTD實(shí)現(xiàn)的是核心設(shè)備的驅(qū)動(dòng)管理,它又分為map,nand,nor三個(gè)目錄;④lib:針對(duì)一些平臺(tái)實(shí)現(xiàn)的公共的代碼,用于接口功能的實(shí)現(xiàn);⑤include:實(shí)現(xiàn)頭文件管理,文中S3C2410的頭文件就置于該目錄下,它是頭文件的公共目錄。

    3 vivi運(yùn)行流程分析

    3.1 vivi初始化階段一(在/arch/s3C2410/head.s文件內(nèi))

    3.1.1 硬件初始化

    當(dāng)上電或復(fù)位后,vivi啟動(dòng),位于NANDFlash中的前4KB程序便從NANDFlash中由S3C2410自動(dòng)拷貝到一個(gè)叫SteppingStone的4KB的內(nèi)部RAM中,該RAM之后被映射到地址0x00處。此時(shí),也就是vivi前4KB代碼開(kāi)始運(yùn)行,進(jìn)行第一階段的硬件初始化,主要工作為:關(guān)Watchdog Timer,關(guān)中斷,初始化PLL和時(shí)鐘主頻設(shè)定,初始化存儲(chǔ)器控制器。

    3.1.2 配置串口

    該步初始化串口寄存器。

    3.1.3 復(fù)制自身到SDRAM中

    當(dāng)初始化串口結(jié)束,vivi開(kāi)始把自身從NANDFlash中復(fù)制到SDRAM中,之后在SDRAM中運(yùn)行。

    3.2 vivi初始化階段二(在/init/main.c文件內(nèi))

    3.2.1 繼續(xù)初始化實(shí)驗(yàn)系統(tǒng)硬件

    通過(guò)board_init()函數(shù)完成,該函數(shù)在/arch/s3c2410/smdk.c中,主要完成兩個(gè)功能,時(shí)鐘初始化(init_time()),以及IO口的配置(set_gpios())。

    3.2.2 內(nèi)存映射初始化,內(nèi)存管理單元初始化

    通過(guò)mem_map_init()、mmu_init()函數(shù)來(lái)完成,這兩個(gè)函數(shù)在/arch/s3c2410/mmu.c中。該啟動(dòng)代碼,使用NAND設(shè)備作為啟動(dòng)設(shè)備。內(nèi)存映射完后,要使能MMU。

    3.2.3 初始化堆

    通過(guò)heap_init()函數(shù)完成,該函數(shù)在/lib/head.c中,初始化堆。

    3.2.4 初始化mtd設(shè)備

    通過(guò)mtd_init()函數(shù)完成,該函數(shù)在/drivers/mtd/maps/s3c2410_flash.c中,初始化mtd設(shè)備。

    3.2.5 初始化私有數(shù)據(jù)

    通過(guò)init_priv_data()函數(shù)完成,該函數(shù)在/lib/priv_data/rw.c中,初始化私有數(shù)據(jù)。

    3.2.6 初始化內(nèi)置命令

    通過(guò)init_builtin_cmds()函數(shù)完成,該函數(shù)在/lib/command.c中,初始化內(nèi)置命令。

    3.2.7 啟動(dòng)vivi

    通過(guò)boot_or_vivi()函數(shù)完成,此時(shí)引導(dǎo)過(guò)程在超級(jí)終端上建立人機(jī)界面,并等待用戶輸入命令。若接收到用戶輸入非回車鍵,進(jìn)入vivi模式,否則,等待一會(huì)兒,系統(tǒng)自啟動(dòng)。

    4 vivi的二個(gè)重要命令的分析

    當(dāng)vivi處于下載模式時(shí),它為用戶提供一個(gè)命令行接口,通過(guò)該接口能使用vivi提供的一些命令集,下面就給出在這種模式下的三個(gè)重要命令的分析,通過(guò)這二個(gè)命令,能完成與系統(tǒng)相關(guān)的重要功能。

    4.1 load命令

    load 命令完成加載二進(jìn)制文件到flash或ram中。

    格式為:load [ | ]

    其中,參數(shù)是指加載到哪?具體為flash和ram;數(shù)確定要加載的二進(jìn)制文件的位置。如果需要使用預(yù)定義的mtd分區(qū)定義,則應(yīng)加上分區(qū)定義名,否則指定位置和文件的大小。參數(shù)確定文件的傳輸協(xié)議。vivi現(xiàn)在只能使用xmodem協(xié)議,所以,”x”是有效的。

    例如,裝載zImage 到flash中。要用命令:vivi> load flash kernel x,或者指定地址和文件大?。簐ivi> load flash 0x800000xc0000 x

    4.2 boot命令

    boot命令是啟動(dòng)保存在flash或ram中的linux內(nèi)核命令。

    命令格式為:boot [ | ]

    其中,參數(shù)是linux內(nèi)核存放在什么介質(zhì)上。有效值為ram,nor,smc; 參數(shù)確定要加載的linux內(nèi)核文件的位置。如果需要使用預(yù)定義的mtd分區(qū)定義,則應(yīng)加上分區(qū)定義名,否則指定位置和文件的大小。

    例如,vivi> boot ram,該過(guò)程能使vivi從ram中啟動(dòng)linux內(nèi)核。

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

    本文給出了嵌入式系統(tǒng)引導(dǎo)程序的一個(gè)特定產(chǎn)品vivi的詳細(xì)的分析,通過(guò)分析,要掌握它的結(jié)構(gòu)、工作過(guò)程,除此之外,運(yùn)行于嵌入式系統(tǒng)下的引導(dǎo)程序有很多,如U-boot,Redboot等,雖然由不同的廠家開(kāi)發(fā),但它們的工作原理是相似的,因此,文中對(duì)vivi的分析,能起到以點(diǎn)帶面的作用。

    參考文獻(xiàn):

    [1]《基于ARM9嵌入式系統(tǒng)的BootLoader設(shè)計(jì)》,葉林等.《科技信息》2009(11).

    [2]《基于s3c2410開(kāi)發(fā)板的Boot Loader的啟動(dòng)分析》,劉軍芳等.《微計(jì)算機(jī)信息》2006(17).

    [3]《基于ARM的嵌入式系統(tǒng)Boot Loader啟動(dòng)流程分析》,萬(wàn)永波.《微計(jì)算機(jī)信息》2005(2).

    猜你喜歡
    命令串口嵌入式
    只聽(tīng)主人的命令
    淺談AB PLC串口跟RFID傳感器的通訊應(yīng)用
    移防命令下達(dá)后
    搭建基于Qt的嵌入式開(kāi)發(fā)平臺(tái)
    嵌入式軟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)
    海兴县| 疏附县| 通化县| 阳谷县| 陆丰市| 隆昌县| 满城县| 汝州市| 安丘市| 台南市| 库车县| 普格县| 烟台市| 饶平县| 石家庄市| 馆陶县| 浦县| 云梦县| 博兴县| 共和县| 博湖县| 大化| 和静县| 仁怀市| 石家庄市| 景谷| 武平县| 全州县| 鸡东县| 若羌县| 大方县| 滨州市| 清苑县| 宜君县| 鄢陵县| 横峰县| 张家川| 武胜县| 马鞍山市| 额济纳旗| 双牌县|