1,引導加載程序 包含固化在固件中的boot程序(如BIOS),和Bootloader(如grub或lilo)兩個部分。linux
2,linux內核服務器
3,文件系統:包含應用程序和系統命令spa
BIOS在完成硬件檢測和資源分配後,Bootloader將硬盤中的引導程序讀到系統內存中,而後跳轉到內存運行。
orm
嵌入式系統通常沒有boot,只須要bootloader,一種bootloader從新上電會跳到內存Flash 0x00000000開始執行。另外一種bootloader 會進行一些硬件設備初始化,而後,跳轉到bootloader指定的flash位置啓動os內核。內存
通常用 arm-linux-gcc hello.c -o hello 編譯文件ci
反彙編命令 arm-linux-objdump -D -S hello >hello.txt (>hello.txt 把結果重定向到 hello.txt)資源
ELF文件查看 arm-linux-readelf -a hello (能夠查看大段小段模式,及運行平臺)開發
arm-linux-readeld -d hello (查看hello使用的動態連接庫)
flash
board 和開發板相關的文件 如board/samsung/smdk6410it
common uboot命令
cpu 處理器對應的文件
help查看全部命令
printfenv: 查看當前環境變量
setenv : 添加環境變量 如setenv test 123 (添加環境變量 值123) setenv test (刪除環境變量)
saveenv:保存當前環境變量 這樣重啓本身添加的環境變量就不消失了
tftp 下載文件
tftp c0000000 zImage (zImage 存在與宿主機tftp服務器的目錄下)
nand
nand info 查看nandflash 大小
nand erase 100000 700000 擦除 100000 到700000數據
go addr 運行addr(地址)的應用
打開以後會出現選項,y 爲* n爲空 m爲M
(*) a.c --- a.o ----- zImage 既編譯又鏈接
(*) b.c --- b.o ----- zImage 既編譯又鏈接
(M) d.c --- d.o 只編譯不鏈接
( ) e.c 不編譯
至於內核選項該如何配置,能夠Google下Linux內核配置詳解。因爲太多不列舉。
平時配置時,能夠到/arch/arm/configs找到和開發板相近的config進行修改配置
cp /arch/arm/xxx_config /forlinux/linux3.0.1 也就是.config所在的目錄(ls -a查看)
make zImage V = 1會列出詳細的編譯信息,便於查找出錯
生成的文件在 arch/arm/boot/ 下zImage