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

基于S3C2410系統的vivi引導程序分析

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

摘要:嵌入式系統啟動是以引導程序開始,引導程序會讓系統啟動后處于操作系統的管理之下,然后嵌入式系統才能發揮它強大的多任務化的管理功能,但嵌入式系統的引導程序有很多,之間差別很大,對它的認識也知之甚少,文中以韓國Mizi公司開發的vivi引導程序為代表,以點帶面,詳細做了剖析。

關鍵詞:嵌入式 S3C2410 vivi 引導程序

1 概述

引導程序是計算機引導系統軟件的一個重要工具,大家對80X86微型機上的引導系統不會陌生,嵌入式系統的引導程序的作用與其相似,通過引導程序可以對系統中的一些主要部件做初始化,對嵌入式系統來說,就是諸如CPU、存儲器件、串行口、網絡口等部件要做初始配置,相對于微型機來說,嵌入式系統的存儲管理出于效率的考慮,對使用有更為精確、嚴格的要求,引導程序可以分配內存空間的映射,將系統的軟件和硬件環境處于最佳的工作狀態,為下一步操作系統的引導做好準備工作。

2 vivi引導程序

2.1 vivi簡介

Vivi是由韓國Mizi公司面向ARM9處理器開發的引導系統,支持S3C2410處理器。它工作于兩種可選模式下,一種是啟動加載模式,另一種是下載模式,后面會給出這兩種模式的具體分析。啟動加載模式下,會完成操作系統的自動引導,下載模式下,會通過一個命令行接口提供的命令完成相應功能。

2.2 vivi程序架構分析

Vivi系統是由一段很小的引導程序構成,它的代碼包括如下幾個目錄:arch,init,drivers,lib和include。

①arch子目錄: vivi可以支持很多類型的目標板,不同類型的目標板會對應不同的子目錄,文中給出的Vivi引導系統Boot Loader中只包括了S3C2410目錄;②Init: vivi的執行就是由這個目錄的用C語言寫成的main.c文件開始執行,該目錄下還有一個名稱為version.c的文件;③drivers:內核工作時的設備驅動程序都包括于這個目錄,它又將設備驅動分為三種類型,分別置于MTD,串口,網絡三個目錄下,其中MTD實現的是核心設備的驅動管理,它又分為map,nand,nor三個目錄;④lib:針對一些平臺實現的公共的代碼,用于接口功能的實現;⑤include:實現頭文件管理,文中S3C2410的頭文件就置于該目錄下,它是頭文件的公共目錄。

3 vivi運行流程分析

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

3.1.1 硬件初始化

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

3.1.2 配置串口

該步初始化串口寄存器。

3.1.3 復制自身到SDRAM中

當初始化串口結束,vivi開始把自身從NANDFlash中復制到SDRAM中,之后在SDRAM中運行。

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

3.2.1 繼續初始化實驗系統硬件

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

3.2.2 內存映射初始化,內存管理單元初始化

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

3.2.3 初始化堆

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

3.2.4 初始化mtd設備

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

3.2.5 初始化私有數據

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

3.2.6 初始化內置命令

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

3.2.7 啟動vivi

通過boot_or_vivi()函數完成,此時引導過程在超級終端上建立人機界面,并等待用戶輸入命令。若接收到用戶輸入非回車鍵,進入vivi模式,否則,等待一會兒,系統自啟動。

4 vivi的二個重要命令的分析

當vivi處于下載模式時,它為用戶提供一個命令行接口,通過該接口能使用vivi提供的一些命令集,下面就給出在這種模式下的三個重要命令的分析,通過這二個命令,能完成與系統相關的重要功能。

4.1 load命令

load 命令完成加載二進制文件到flash或ram中。

格式為:load [ | ]

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

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

4.2 boot命令

boot命令是啟動保存在flash或ram中的linux內核命令。

命令格式為:boot [ | ]

其中,參數是linux內核存放在什么介質上。有效值為ram,nor,smc; 參數確定要加載的linux內核文件的位置。如果需要使用預定義的mtd分區定義,則應加上分區定義名,否則指定位置和文件的大小。

例如,vivi> boot ram,該過程能使vivi從ram中啟動linux內核。

5 結束語

本文給出了嵌入式系統引導程序的一個特定產品vivi的詳細的分析,通過分析,要掌握它的結構、工作過程,除此之外,運行于嵌入式系統下的引導程序有很多,如U-boot,Redboot等,雖然由不同的廠家開發,但它們的工作原理是相似的,因此,文中對vivi的分析,能起到以點帶面的作用。

參考文獻:

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

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

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

主站蜘蛛池模板: 精品国产福利在线| 亚洲v日韩v欧美在线观看| 99久久国产综合精品女同| 欧美天堂在线| 国产欧美精品一区二区| 好吊色妇女免费视频免费| 2019国产在线| 成人国产精品网站在线看| 国产中文一区a级毛片视频| 日韩午夜伦| 日韩人妻无码制服丝袜视频| 五月天香蕉视频国产亚| 亚洲无码91视频| 欧美精品v欧洲精品| 国产精品99久久久久久董美香| 午夜久久影院| 国产情精品嫩草影院88av| 国产亚洲高清视频| 欧美成人aⅴ| 国产幂在线无码精品| 国外欧美一区另类中文字幕| 欧美日韩福利| 日本亚洲欧美在线| 免费观看国产小粉嫩喷水 | 99中文字幕亚洲一区二区| 亚洲精品国偷自产在线91正片| 亚洲性一区| 在线播放真实国产乱子伦| 狠狠做深爱婷婷久久一区| 熟女视频91| 人人爱天天做夜夜爽| 亚洲成综合人影院在院播放| 欧美乱妇高清无乱码免费| 亚洲人成网址| 国产成人综合日韩精品无码不卡| julia中文字幕久久亚洲| 久久久四虎成人永久免费网站| 日本在线国产| 91毛片网| 污视频日本| jizz国产视频| 亚洲综合久久成人AV| 免费视频在线2021入口| 亚洲午夜国产片在线观看| 国产美女精品一区二区| 成人午夜免费视频| 日韩人妻无码制服丝袜视频| 1024你懂的国产精品| 特级毛片免费视频| 欧美日韩免费观看| 亚洲无码视频图片| 色妞www精品视频一级下载| 精品人妻无码区在线视频| 国产情侣一区| 国产精品午夜福利麻豆| 成人一区专区在线观看| 国产精品吹潮在线观看中文| 免费激情网站| 波多野结衣无码AV在线| 亚洲午夜综合网| 色哟哟国产精品一区二区| 19国产精品麻豆免费观看| 久久久国产精品免费视频| 最新午夜男女福利片视频| 久久亚洲AⅤ无码精品午夜麻豆| 日本精品一在线观看视频| 国产福利拍拍拍| 成人午夜网址| 国产性生交xxxxx免费| 在线观看精品自拍视频| 18禁高潮出水呻吟娇喘蜜芽| 在线免费无码视频| 中文字幕首页系列人妻| 人妻91无码色偷偷色噜噜噜| 国产原创自拍不卡第一页| 久久国产热| 亚洲无线国产观看| 99性视频| 在线色综合| 欧美精品啪啪一区二区三区| 精品国产免费第一区二区三区日韩| 亚洲久悠悠色悠在线播放|