版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
第五部分嵌入式系統(tǒng)移植----BootloaderTX-2440A
嵌入式視頻教程更多資料請登錄
出品:天祥電子網(wǎng)址:第十三講bootloader原理和vivi的移植第十三講bootloader原理和vivi的移植1.Bootloader概述2.vivi的啟動過程分析3.vivi的配置移植4.vivi命令詳解Bootloader
概述簡單地說,Bootloader就是在操作系統(tǒng)運行之前運行的一段小程序。通過這段小程序,可以初始化硬件設(shè)備、建立系統(tǒng)的內(nèi)存空間映射圖,從而將系統(tǒng)的軟件硬件環(huán)境帶到一個合適的狀態(tài),以便為調(diào)用操作系統(tǒng)內(nèi)核準(zhǔn)備好正確的環(huán)境。最終,Bootloader把操作系統(tǒng)內(nèi)核映像加載到RAM中,并將系統(tǒng)控制權(quán)交給它Bootloader
概述Bootloader的操作模式
大多數(shù)Bootloader都包含兩種不同的操作模式,即啟動加載模式和下載模式,二者的區(qū)別僅對開發(fā)人員才有意義,從最終用戶的角度看,Bootloader的作用就是加載操作系統(tǒng)。常用的bootloaderU-BootU-Boot(UniversalBootLoader)是德國DENX小組開發(fā)的用于多種嵌入式CPU的BootLoader程序,它可以運行于PowerPC、ARM、MIPS等多種嵌入式開發(fā)板上。vivivivi是由韓國MIZI公司開發(fā)的專門用于SAMSUNGARM架構(gòu)的一種Bootloadervivi的啟動過程分析Bootloader的啟動過程大多是分兩個階段,即stage1和stage2。依賴CPU體系結(jié)構(gòu)的代碼通常放在stage1中,而且通常用匯編語言實現(xiàn)。stage2中的代碼通常用C語言實現(xiàn),這樣可以實現(xiàn)更復(fù)雜的功能,而且代碼會具有更好的可讀性和可移植性。vivi的啟動過程分析Bootloader的stage1通常包括以下步驟:1、硬件設(shè)備初始化2、為加載stage2準(zhǔn)備RAM空間3、復(fù)制stage2到RAM空間4、設(shè)置好堆棧5、跳轉(zhuǎn)到stage2的C入口點vivi的啟動過程分析Bootloader的stage2通常包括以下步驟:1、初始化本階段要用到的硬件設(shè)備2、檢測系統(tǒng)內(nèi)存映射3、將kernel映像和根文件系統(tǒng)映像從Flash上讀到RAM空間4、為內(nèi)核設(shè)置啟動參數(shù)5、調(diào)用內(nèi)核
出品:天祥電子網(wǎng)址:第十四講U-Boot原理分析和移植1.U-Boot簡介2.U-Boot源碼目錄結(jié)構(gòu)3.U-Boot運行代碼分析4.U-Boot在TX2440A開發(fā)板上移植5.U-Boot常用命令講解第十四講U-Boot原理分析和移植U-Boot簡介UBoot是德國DENX小組的開發(fā)用于多種嵌入式CPU的bootloader程序,UBoot不僅僅支持嵌入式Linux系統(tǒng)的引導(dǎo),當(dāng)前,它還支持NetBSD,VxWorks,QNX,RTEMS,ARTOS,LynxOS嵌入式操作系統(tǒng)。UBoot除了支持PowerPC系列的處理器外,還能支持MIPS、x86、ARM、NIOS、XScale等諸多常用系列的處理器。uboot下載地址:
U-Boot源碼目錄結(jié)構(gòu)7.include:頭文件和開發(fā)板配置文件,configs目錄下是開發(fā)板的配置文件8.lib_xxxx:與體系結(jié)構(gòu)相關(guān)的庫文件。如與ARM相關(guān)的庫放在lib_arm中。
9.lib_generic:通用的庫函數(shù)10.net:各種網(wǎng)絡(luò)協(xié)議,TFTP協(xié)議、NFS協(xié)議等。
11.tools:uboot自帶的工具U-Boot第一階段啟動過程cpu/arm920t/start.s完成硬件初始化設(shè)置CPU工作模式關(guān)看門狗設(shè)置系統(tǒng)時鐘關(guān)MMU,CACHE為第二階段準(zhǔn)備RAM空間(調(diào)用board/smdk2410/lowlevel_init.s)設(shè)置堆棧跳轉(zhuǎn)到第二階段代碼的C入口點(lib_arm/board.cstart_armboot())U-Boot第二階段啟動過程第二階段代碼:lib_arm/board.c中的start_armboot函數(shù)init_sequence:初始化CPU,設(shè)置系統(tǒng)時鐘,初始化定時器,初始化環(huán)境參數(shù),初始化串口控制臺,檢測內(nèi)存映射flash_init:初始化NORFLASHenv_relocate:初始化環(huán)境變量初始化系統(tǒng)外圍設(shè)備最后調(diào)用main_loop(command/main.c)
出品:天祥電子網(wǎng)址:第十五講Linux內(nèi)核分析和配置1.內(nèi)核源碼目錄結(jié)構(gòu)分析2.Makefile,Kconfig文件分析3.Linux啟動過程分析4.配置、編譯內(nèi)核第十五講Linux內(nèi)核分析和配置Linux內(nèi)核的發(fā)展Linux內(nèi)核的最初版本由LinusTorvalds在1991年發(fā)布Linux1.01994年3月僅支持386Linux1.21995年3月多平臺支持Linux2.01996年6月支持SMPLinux2.21999年1月支持更多的硬件Linux2.42001年1月支持桌面系統(tǒng)和USBLinux2.62003年12月支持更多平臺,使用新的調(diào)度器,內(nèi)核可被搶占,模塊子系統(tǒng)和文件系統(tǒng)做了大量改進,支持更多的硬件驅(qū)動。Linux內(nèi)核的版本目前TX2440A開發(fā)板上使用的內(nèi)核版本:2.6.31在內(nèi)核源碼頂層目錄下Makefile中查看版本號:VERSION=2主版本號PATCHLEVEL=6主版本號SUBLEVEL=31次版本號EXTRAVERSION=擴展版本號內(nèi)核源碼目錄結(jié)構(gòu)分析arch與體系結(jié)構(gòu)相關(guān)的代碼。對應(yīng)于每個支持的體系結(jié)構(gòu),有一個相應(yīng)的子目錄如x86、arm等,每個體系結(jié)構(gòu)子目錄下包含幾個主要子目錄:.boot啟動內(nèi)核所需的平臺特有代碼.kernel體系結(jié)構(gòu)特有特征(如SMP)的實現(xiàn).mm 與體系結(jié)構(gòu)相關(guān)的內(nèi)存管理代碼.lib 與體系結(jié)構(gòu)相關(guān)的通用函數(shù)的實現(xiàn)內(nèi)核源碼目錄結(jié)構(gòu)分析drivers所有設(shè)備驅(qū)動程序代碼,它占整個內(nèi)核代碼量一半以上,每一個子目錄對應(yīng)一類驅(qū)動程序。fs文件系統(tǒng)代碼,每個支持的文件系統(tǒng)有相應(yīng)的子目錄,如cramfs,yaffs,jffs2等include
包括編譯內(nèi)核所需的大部分頭文件,與平臺無關(guān)的頭文件放在include/linux子目錄下,平臺相關(guān)的頭文件如include/asm-arm內(nèi)核配置系統(tǒng)的基本結(jié)構(gòu)Makefile:分布在Linux內(nèi)核源碼中的Makefile定義了Linux內(nèi)核編譯的規(guī)則;配置工具:makeconfig字符界面makemenuconfigNcurses圖形界面makexconfigXwindows圖形界面配置文件:
.config:在配置內(nèi)核時生成,根據(jù).config來決定使用哪些MakefileMakefile文件分析Makefile的作用:決定編譯哪些文件
怎樣編譯這些文件按什么順序連接這些文件Kconfig文件分析變量:
bool兩種取值:y、ntristate三種取值:y、n、mstring字符串hex十六進制數(shù)據(jù)int十進制數(shù)據(jù)Kconfig文件分析menuconfig:用于生成菜單config:
生成配置選項dependon依賴關(guān)系default默認(rèn)值select自動選擇source讀入另一個Kconfig文件help幫助信息Linux的啟動過程第一階段:
arch/arm/kernel/head.S arch/arm/kernel/head-common.S arch/arm/mm/proc-arm920.S
檢查內(nèi)核是否支持當(dāng)前處理器架構(gòu)和開發(fā)板,禁止Cache,使能MMU,設(shè)置棧指針,調(diào)用start_kernelLinux的啟動過程第二階段:
init/main.cstart_kernel
完成內(nèi)核初始化全部工作,最后調(diào)用rest_init函數(shù)啟動init進程Linux的啟動過程內(nèi)核文件:
vmlinux
編譯出來的最原始的內(nèi)核文件,未壓縮zImage是vmlinux經(jīng)過gzip壓縮后的文件
uImageU-boot專用的映像文件,由bootm命令啟動
準(zhǔn)備移植修改Makefile:ARCH?=armCROSS_COMPILE?=arm-linux-修改時鐘arch/arm/mach-s3c2440/mach-smdk2440.c修改機器碼
內(nèi)核中:arch/arm/tools/mach-types
uboot中:include/asm-arm/mach-types.h載入配置文件
arch/arm/configs/s3c2410_defconfig選擇CPU類型SMDK2440編譯內(nèi)核鏡像
makezImage第六部分嵌入式系統(tǒng)移植----Linux內(nèi)核TX-2440A
嵌入式視頻教程
出品:天祥電子網(wǎng)址:第十六講向內(nèi)核中加入驅(qū)動1.支持NAND和yaffs2,掛載文件系統(tǒng)2.基本外圍設(shè)備的配置(LCD、觸摸屏、網(wǎng)卡、聲卡,SD卡、USB設(shè)備、攝像頭)3.向內(nèi)核中加入驅(qū)動模塊(LED、按鍵、蜂鳴器、AD、DS18B20)第十六講向內(nèi)核中加入驅(qū)動第七部分嵌入式系統(tǒng)移植----構(gòu)建根文件系統(tǒng)TX-2440A
嵌入式視頻教程
出品:天祥電子網(wǎng)址:第十七講用busybox制作根文件系統(tǒng)嵌入式文件系統(tǒng)介紹Linux目錄結(jié)構(gòu)詳解配置,編譯busybox完善根文件系統(tǒng)制作yaffs2鏡像第十七講用busybox制作根文件系統(tǒng)嵌入式文件系統(tǒng)介紹文件系統(tǒng)是操作系統(tǒng)的重要組成部分,所謂文件系統(tǒng)是指操作系統(tǒng)中負責(zé)管理和存儲文件信息的軟件機構(gòu)。Linux支持多種文件系統(tǒng),包括ext2、ext3、vfat、ntfs、iso9660、jffs、romfs和nfs等,為了對各類文件系統(tǒng)進行統(tǒng)一管理,Linux引入了虛擬文件系統(tǒng)VFS(Virtual),為各類文件系統(tǒng)提供一個統(tǒng)一的操作界面和應(yīng)用編程接口。嵌入式文件系統(tǒng)介紹Linux啟動時,第一個必須掛載的是根文件系統(tǒng);若系統(tǒng)不能從指定設(shè)備上掛載根文件系統(tǒng),則系統(tǒng)會出錯而退出啟動。之后可以自動或手動掛載其他的文件系統(tǒng)。因此,一個系統(tǒng)中可以同時存在不同的文件系統(tǒng)。不同的文件系統(tǒng)類型有不同的特點,因而根據(jù)存儲設(shè)備的硬件特性、系統(tǒng)需求等有不同的應(yīng)用場合。在嵌入式Linux應(yīng)用中,主要的存儲設(shè)備為RAM(DRAM,SDRAM)和ROM(常采用FLASH存儲器),常用的基于存儲設(shè)備的文件系統(tǒng)類型包括:jffs2,yaffs,cramfs,romfs,ramdisk,ramfs/tmpfs等。Cramfs文件系統(tǒng)CRAMFS文件系統(tǒng)是由LinuxTorvalds編寫的專門針對閃存設(shè)計的只讀壓縮文件系統(tǒng)。與RAMdisk方式不同,CRAMFS文件系統(tǒng)不需要一次性地將文件系統(tǒng)中的所有內(nèi)容都解壓到內(nèi)存中,而只是在系統(tǒng)需要訪問某個數(shù)據(jù)時,馬上計算出該數(shù)據(jù)在CRAMFS中的位置,將其實時的解壓到內(nèi)存之中,然后通過對內(nèi)存的訪問來獲取文件系統(tǒng)中需要讀取的數(shù)據(jù)。Jffs/Jffs2文件系統(tǒng)
jffs文件系統(tǒng)是瑞典的Axis通信公司為嵌入式開發(fā)的日志文件系統(tǒng)。
jffs是針對以閃存為存儲介質(zhì)的嵌入式系統(tǒng),充分的考慮了閃存的物理局限性,使用了盡可能高效的日志系統(tǒng)
所謂日志文件系統(tǒng),其工作原理是跟蹤記錄文件系統(tǒng)的變化,并將變化內(nèi)容記錄入日志,并保存在磁盤分區(qū)。寫操作中斷,系統(tǒng)重啟時,會根據(jù)日志記錄來恢復(fù)中斷前的寫操作jffs2是RedHat公司基于jffs開發(fā)的閃存文件系統(tǒng),主要針對ECos,也可以用于LINUX。提高了對閃存的利用率,降低了內(nèi)存的損耗Yaffs/Yaffs2文件系統(tǒng)YAFFS文件系統(tǒng)是一種和JFFS2類似的Flash文件系統(tǒng),和JFFS2相比,它減少了一些功能,因此速度更快,占用內(nèi)存更少。此外YAFFS自帶NAND芯片驅(qū)動,并為嵌入式系統(tǒng)提供了直接訪問文件系統(tǒng)的API,用戶可以不使用Linux中的MTD和VFS,直接對文件進行操作。在嵌入式系統(tǒng)設(shè)計中,NANDFlash大多使用YAFFS文件系統(tǒng),而NORFlash多使用JFFS2文件系統(tǒng)。
YAFFS1只支持小頁(512b)NAND,YAFFS2兼容YAFFS1,并支持大頁(2K或更高)NANDLinux文件系統(tǒng)目錄結(jié)構(gòu)/bin
所有用戶都可以使用的基本命令/sbin
只有管理員能夠使用的命令(系統(tǒng)命令)/dev
設(shè)備文件(對應(yīng)具體硬件設(shè)備)/etc
配置文件/lib
共享庫和驅(qū)動模塊/home
用戶目錄/root
根用戶(root)目錄/varlog文件,臨時文件/proc
作為proc文件系統(tǒng)的掛載點/mnt
臨時掛載某個文件系統(tǒng)的掛載點/tmp
臨時文件Linux文件系統(tǒng)目錄結(jié)構(gòu)/usr
系統(tǒng)中所有的應(yīng)用程序和文件/usr/bin
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 會場安全協(xié)議合同范本
- 學(xué)校如何促進學(xué)生的身心發(fā)展
- 代理生產(chǎn)加工合同范本
- 2025年度攪拌站混凝土供應(yīng)合同實施細則
- 2025年度養(yǎng)老產(chǎn)業(yè)項目合作居間合同
- 代倉業(yè)務(wù)合同范本
- 個人微型企業(yè)用工合同范本
- 出口退稅銷售合同范本
- 產(chǎn)品廣告拍攝合同范本
- 保潔用品合同范本
- 湖南省懷化市2024-2025學(xué)年九年級上學(xué)期期末化學(xué)試題(含答案)
- “5E”教學(xué)模式下高中數(shù)學(xué)教學(xué)實踐研究
- 《醫(yī)學(xué)影像檢查技術(shù)學(xué)》課件-踝X線攝影
- 急救藥品知識培訓(xùn)內(nèi)容
- 【64精品】國標(biāo)蘇少版小學(xué)音樂六年級下冊教案全冊
- 汽車座椅骨架的焊接夾具論文說明書
- 前列腺癌臨床路徑(最全版)
- [重慶]房建和市政工程質(zhì)量常見問題防治要點
- 發(fā)電機組自動控制器
- 翻車機主要技術(shù)參數(shù)
- 最新金礦堆浸初步設(shè)計
評論
0/150
提交評論