黎愛瓊
【摘要】 數據保護容器(Protective Data Capsule)簡稱PDC,是船載航行數據記錄儀最終記錄存放的介質,本設計主要介紹的是PDC系統(tǒng)引導程序的啟動過程,以及實現(xiàn)引導程序移植的環(huán)境配置及燒寫過程,以便實現(xiàn)PDC系統(tǒng)的正常啟動。
【關鍵詞】 數據保護容器 PDC 嵌入式系統(tǒng) Bootloader
一、嵌入式系統(tǒng)中Bootloder的基本工作原理
Bootloader是嵌入式軟件開發(fā)的第一個環(huán)節(jié),它把嵌入式系統(tǒng)的軟件和硬件緊密銜接在一起。是系統(tǒng)加電啟動運行的第一段軟件代碼,類似于PC機的BIOS系統(tǒng)。
二、Bootloader啟動過程分析
在嵌入式系統(tǒng)中,Bootloader是嚴重地依賴于硬件而實現(xiàn)的。而在嵌入式系統(tǒng)中很難建立一個通用的Bootloader。但是,Bootloader的實現(xiàn)還是可以總結出一般規(guī)律。通過分析比較,引導程序則選用了韓國Mizi公司開發(fā)的Bootloader,即vivi。
vivi是利用串口通信為用戶提供接口的,只需要將PC宿主機通過一根串口電纜線與目標板相連即可。
vivi的運行分為 stage1 和 stage2兩個階段。
第一階段:
1.關閉WATCH DOG:上電后,WATCH DOG默認是開著的。
2.禁止所有中斷:vivi中沒用到中斷。
3.初始化系統(tǒng)時鐘:啟動MPLL,F(xiàn)CLK=200MHz,HCLK=100MHz,PCLK=50MHz,“CPU bus mode”改為“Asynchronous bus mode”。
4.初始化內存控制寄存器。
5.檢查是否從掉電模式喚醒,若是,則調用WakeupStart函數進行處理——這是一段沒用上的代碼,vivi不可能進入掉電模式。
6.點亮所有LED 。
7.初始化UART0。
8.將vivi所有代碼從NAND Flash復制到SDRAM中。
第2階段:
1.執(zhí)行reset_handler(),用于將內存清零。
2.執(zhí)行board_init(),調用init_time()和set_gpios()來初始化定時器和設置GPIO引腳功能。
3.執(zhí)行mem_map_init()和mmu_init(),建立頁表,并啟動MMU。
4.執(zhí)行heap_init(),該函數在SDRAM中指定了一塊1M大小的內存作為堆heap。
5.執(zhí)行mtd_dev_init(),初始化MTD設備,執(zhí)行本函數后,得到一個mtd_info結構的全局變量,以后直接通過mymtd提供的接口對NAND Flash進行操作。
6.執(zhí)行init_priv_data(),此函數將啟動內核的命令參數取出,并存放在特定的位置中。
7.執(zhí)行misc()和init_builtin_cmds(),這兩個函數都是通過調用add_command函數,給一些命令增加相應的處理函數。
8.執(zhí)行boot_or_vivi(),該函數根據實際情況判斷,是啟動vivi_shell進入與用戶交互的界面中,還是直接啟動Linux內核。
三、vivi移植
vivi直接提供了對S3C2410X處理器的板級支持。其相關配置文件存放入s3c2410目錄中。在宿主機的終端中,進入vivi的根目錄下,輸入如下命令進入vivi的配置界面:
當配置完vivi后,保存配置并退出配置菜單界面,回到終端中輸入命令編譯vivi:
[root@kision vivi]#make
如果編譯成功,將在當前目錄下生成vivi二進制鏡像文件,編譯生成vivi二進制鏡像文件后,有兩種途徑將vivi燒寫到目標板中:JTAG下載方式和串口下載方式。首先要配置好串口。
在PC宿主機的Linux操作系統(tǒng)開發(fā)環(huán)境下,在終端中輸入命令minicom:
[root@kision root]#minicom -s
此時界面會進入串口終端配置界面中,選擇正確的PC串口通道號,并配置串口參數為115200,8N1,且無軟、硬流控制。最后,應該將該項設置保存為缺省值,以免每次打開minicom都需要重新配置。然后輸入minicom,按住鍵盤的空格鍵的同時啟動目標板,這時會進入vivi的加載啟動模式,輸入如下命令下載vivi:vivi>load flash vivi x 選擇xmodem協(xié)議傳輸vivi鏡像文件。輸入命令:vivi>load flash vivi x即完成了移植任務。
四、結論
經過測試,在各指定的工作環(huán)境下,PDC系統(tǒng)基本都能正常工作。
參 考 文 獻
[1] 李少春.基于嵌入式Linux的視頻監(jiān)控系統(tǒng)設計與實現(xiàn). 西南交通大學碩士論文 .2007/05
[2] 陳艷.引導加載程序vivi的分析和移植研究.電子設計應用.2006.11.15