將uboot,kernel,rootfs下載到開發板上
1、為什么要下載
所謂下載,也稱燒錄,部署。
1.1、什么是u-boot
Hi3518EV200 單板的 Bootloader 采用 U-boot。
u-boot是一種普遍用於嵌入式系統中的Bootloader,Bootloader是在操作系統運行之前執行的一小段程序,通過它,我們可以初始化硬件設備、建立內存空間的映射表,從而建立適當的軟硬件環境,為最終調用操作系統內核做好准備。Boot Loader的主要運行任務就是將內核映象從硬盤上讀到RAM中,然后跳轉到內核的入口點去運行,即開始啟動操作系統。系統在上電或復位時通常都從地址0x00000000處開始執行,而在這個地址處安排的通常就是系統的Boot Loader程序。
1.2、什么是kernel
燒錄完uboot之后,開始燒錄kernel。Kerne是指大多數操作系統的核心部分。它由操作系統中用於管理存儲器、文件、外設和系統資源的那些部分組成。操作系統內核通常運行進程,並提供進程間的通信。操作系統必須要以內核為基礎運行,內核提供最基本的對計算機的操作,並且讓計算機底層盡量安全和容易管理。
1.3、 什么是rootfs
根文件系統是內核啟動時所mount的第一個文件系統,內核代碼映像文件保存在根文件系統中,而系統引導啟動程序會在根文件系統掛載之后從中把一些基本的初始化腳本和服務等加載到內存中去運行。由於init=/linuxrc,因此,在文件系統掛載后,運行的第一個程序就是根目錄下的linuxrc,而這是一個指向/bin/busybox 的鏈接,也就是說,系統起來后運行的第一個程序就是busybox。 busybox首先將試圖解析/etc/inittab來獲取進一步的初始化配置信息(參考busybox源代碼init/init.c中的parse_inittab()函數)。而事實上,root_qtopia中並沒有/etc/inittab這個配置文件,根據busybox的裸機,它將生成默認的配置。其中最重要的一個,就是new_init_action(SYSINIT,INIT_SCRIPT,""),也就決定了接下來初始化的腳本是INIT_SCRIPT所定義的值,這個宏的默認值是"etc/init.d/rcS"。
2、通過Hitool工具燒錄uboot
注意:Hitool是基於JaveEE開發的,因此運行前必須安裝jre-6u45-windows-i586。注意必須是這個版本,否則不能運行。
-
[ ] (1),打開Hitool,選擇對應芯片,點擊HiBure
-
[ ] (2),將軟件按如下圖所設置
注意:在HI3518ESDK里面的\package\image_uclibc_hi3518ev200里面提供了u-boot鏡像,也可以是自己編譯的。 -
[] (3),選中,燒寫
-
[] (4),關閉Hitool,將開發板的串口連接到SecurtCRT,重啟開發板,打斷3s啟動進入uboot模式
-
[] (5),print打印默認環境變量
3、通過tftp網絡燒錄
此時開發板進入uboot模式
3.1 tftp燒錄之前的准備條件
-
[ ] (1),開發板要用串口線,網線連接到PC機上,並用SecurtCRT連接串口。
-
[ ] (2),重啟開發板進入u-boot的命令行下
-
[ ] (3),開發板和uboot之間能tftp網絡能ping通
-
[ ] (4),准備鏡像
- 步驟1,鏡像在osdrv/pub/image_uclibc中,先進入此目錄
- 步驟2,將相關鏡像復制到tftpboot目錄下
- cp u-boot-hi3518ev200.bin uImage_hi3518ev200 rootfs_hi3518ev200_64k.jffs2 /tftpboot/ -f
- cd /tftpboot/
- ls
- ls -l
- cd ..
- sudo chmod -R 777 tftpboot/
- cd /tftpboot/
- ls
- ls -l
-
[ ] (5),開發板和ubuntu的設置:
- ubutun:設置橋接到有線網卡,靜態分配ip
- HI3518E進入hisilicon模式[uboot],執行以下命令設置環境變量
-
- set bootcmd 'bootm 0x82000000'
-
- set bootargs mem=96M console=ttyAMA0,115200
-
- set serveip 192.168.1.141
-
- set ip 192.168.1.10
-
- save
-
- ping 192.168.1.141
-
[ ] (6),print
2.2、下載kernel
- mw.b 0x82000000 ff 0x300000
- tftp 0x82000000 uImage_hi3518ev200
- sf probe 0
- sf erase 0x100000 0x300000
- sf write 0x82000000 0x100000 0x300000
2.3、下載rootfs
- mw.b 0x82000000 ff 0xc00000
- tftp 0x82000000 rootfs_hi3518ev200_64k.jffs2
- sf probe 0
- sf erase 0x400000 0xc00000
- sf write 0x82000000 0x400000 0xc00000
2.4、設置bootcmd和bootargs以正確啟動【此后每次tftpboot目錄鏡像更新,開發板都會同步跟新鏡像】
- set bootcmd 'sf probe 0;sf read 0x82000000 0x100000 0x300000;bootm 0x82000000'
- set bootargs mem=32M console=ttyAMA0,115200 root=/dev/mtdblock2 rootfstype=jffs2 mtdparts=hi_sfc:1024K(boot),3072K(kernel),12288K(rootfs)
- save
- reset 【即可重啟系統】