3、將uboot,kernel,rootfs下載到開發板上

weixin_30639719發表於2020-04-05

將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
    1174523-20180423132749025-198404265.png

  • [ ] (2),將軟體按如下圖所設定
    1174523-20180423132909597-1326571030.png
    注意:在HI3518ESDK裡面的\package\image_uclibc_hi3518ev200裡面提供了u-boot映象,也可以是自己編譯的。

  • [] (3),選中,燒寫
    1174523-20180423133832886-703354273.png

  • [] (4),關閉Hitool,將開發板的串列埠連線到SecurtCRT,重啟開發板,打斷3s啟動進入uboot模式
    1174523-20180423134453534-800250777.png

  • [] (5),print列印預設環境變數
    1174523-20180423134810202-2064306761.png

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
    1174523-20180423161938431-1535929729.png

### 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 【即可重啟系統】
    1174523-20180423162105051-104263949.png

轉載於:https://www.cnblogs.com/Ocean-Star/p/8916159.html

相關文章