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

        ?

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

        2012-04-29 00:00:00樸海光

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

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

        1 概述

        引導(dǎo)程序是計(jì)算機(jī)引導(dǎo)系統(tǒng)軟件的一個(gè)重要工具,大家對(duì)80X86微型機(jī)上的引導(dǎo)系統(tǒng)不會(huì)陌生,嵌入式系統(tǒng)的引導(dǎo)程序的作用與其相似,通過引導(dǎo)程序可以對(duì)系統(tǒng)中的一些主要部件做初始化,對(duì)嵌入式系統(tǒng)來說,就是諸如CPU、存儲(chǔ)器件、串行口、網(wǎng)絡(luò)口等部件要做初始配置,相對(duì)于微型機(jī)來說,嵌入式系統(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是由韓國Mizi公司面向ARM9處理器開發(fā)的引導(dǎo)系統(tǒng),支持S3C2410處理器。它工作于兩種可選模式下,一種是啟動(dòng)加載模式,另一種是下載模式,后面會(huì)給出這兩種模式的具體分析。啟動(dòng)加載模式下,會(huì)完成操作系統(tǒng)的自動(dòng)引導(dǎo),下載模式下,會(huì)通過一個(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語言寫成的main.c文件開始執(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代碼開始運(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開始把自身從NANDFlash中復(fù)制到SDRAM中,之后在SDRAM中運(yùn)行。

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

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

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

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

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

        3.2.3 初始化堆

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

        3.2.4 初始化mtd設(shè)備

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

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

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

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

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

        3.2.7 啟動(dòng)vivi

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

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

        當(dāng)vivi處于下載模式時(shí),它為用戶提供一個(gè)命令行接口,通過該接口能使用vivi提供的一些命令集,下面就給出在這種模式下的三個(gè)重要命令的分析,通過這二個(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 0x80000 0xc0000 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,該過程能使vivi從ram中啟動(dòng)linux內(nèi)核。

        5 結(jié)束語

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

        參考文獻(xiàn):

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

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

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

        激情综合五月开心婷婷| 99久久精品国产自在首页| 婷婷精品国产亚洲av| 男女做那个视频网站国产| 人人妻人人澡人人爽国产一区| 久久精品人人爽人人爽| 精品综合久久久久久8888| 久久精品re| 日本一区不卡高清在线观看| 99久久国内精品成人免费| 婷婷五月婷婷五月| 久久久精品久久波多野结衣av | 麻豆最新国产av原创| 久久视频在线| 999国产精品视频| 青青青视频手机在线观看| 久久日日躁夜夜躁狠狠躁| 日本aⅴ大伊香蕉精品视频| 亚洲综合偷自成人网第页色| 亚洲成在人网站天堂日本| 亚洲成a人片在线观看无码专区| 黑人巨大白妞出浆| yy111111少妇影院| 亚洲乱码一区二区av高潮偷拍的| 老师露出两个奶球让我吃奶头| 东北无码熟妇人妻AV在线| 日本在线一区二区三区观看| 国产婷婷色一区二区三区深爱网| a级大胆欧美人体大胆666| 日本手机在线| 国产女主播福利在线观看| 国产亚洲美女精品久久久2020 | 免费大片黄国产在线观看| 国产精品久久婷婷六月丁香| 亚洲综合国产成人丁香五月小说| 日本精品一区二区三区在线观看| 国产成人无码av一区二区| 久久精品国产99久久丝袜| 亚洲精品熟女av影院| 国产欧美亚洲精品第一页| 性夜夜春夜夜爽aa片a|