日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

第一季6:海思方案中uboot、kernel和rootfs的烧写方法

發布時間:2023/12/20 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第一季6:海思方案中uboot、kernel和rootfs的烧写方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

以下內容源于朱有鵬課程的學習,以及海思方案的學習資料整理。如有侵權,請告知刪除。

這里主要講“使用tftp,燒寫映像文件(uboot、kernel、rootfs)到SPI Flash”。(對比:開發階段,我們一般使用NFS來燒寫rootfs)海思還提供了“燒寫映像文件到NAND Flash”、“燒寫映像文件到eMMC”的方法,但大同小異,只是命令和地址空間不同而已。因為所用的板子默認從SPI Flash啟動,因此介紹燒寫映像文件到SPI Flash的方法。

一、燒錄uboot

?假如沒有燒錄uboot,可以使用Hi_tool(/software/pc/Hi_TOOL目錄下,效果類似于三星的DNW工具)來燒錄uboot。使用Hi_tool時,需要先安裝jre。

知識儲備:

1)DDR(64MB的SDRAM)的地址范圍:80000000-83FFFFFF,地址范圍是由手冊查知的。

(2)一些命令含義

sf probe 0 (spiflash,probe表示查找探測,0表示板載spiflash(可能有多個,這里0表示編號);整句表示查找spiflash)

sf erase 0 100000 (擦除分區,0表示要擦除的起始地址,10000表示長度,這里剛好1M,和之前設置uboot長度1M相符)

sf write 82000000 0 100000(寫spiflash分區,82000000表示源文件所在的SDRAM地址,后二者表示起始位置和長度)

mw.b 82000000 ff 100000(mw.b表示以字節為單位寫內存,82000000表示起始地址,100000表示1M長度,ff表示全寫成ff)?

(2)燒寫過程

a、將映像文件從上位機下載到開發板的sdram中

b、擦除開發板的spiflash相應的分區

c、將sdram的鏡像燒錄到spi的分區內

二、燒錄uboot后

1、配置tftp服務器

  • 可以使用任意的tftp服務器(我的是虛擬機里的linux系統);
  • 將SDK中的package/image_uclibc(或image_glibc)下的相關映像文件拷貝到tftp服務器目錄(我的是/tftpboot/)下。

2、參數配置

  • 單板上電后,敲任意鍵進入u-boot。設置serverip(即tftp服務器的ip)、ipaddr(單板ip)和ethaddr(單板的MAC地址)。

? ? setenv serverip xx.xx.xx.xx
? ? setenv ipaddr xx.xx.xx.xx?
? ? setenv ethaddr xx:xx:xx:xx:xx:xx
? ? setenv netmask xx.xx.xx.xx
? ? setenv gatewayip xx.xx.xx.xx
? ? ping serverip,確保能夠ping通,使得網絡暢通。

3、在板載uboot界面中,燒寫映像文件到SPI Flash(以16M SPI Flash為例)

從下圖可以知道各文件的大小

(1)地址空間說明
? ? ? ? | ? ? ?1M ? ? ? | ? ? ?3M ? ? ? | ? ? ?12M ? ? |
? ? ? ? |---------------|---------------|---------------|
? ? ? ? | ? ? boot ? ? ?| ? ?kernel? ? | ? ? rootfs? ? |

分區大小起始地址截止地址
bootloader1M0x00000000?0x00100000
kernel3M0x001000000x00400000
rootfs12M0x004000000x01000000

以下的操作均基于圖示的地址空間分配,也可以根據實際情況進行調整,但注意對應。

(2)燒寫u-boot

? ? ? ? sf probe 0mw.b 82000000 ff 100000tftp 0x82000000 u-boot-hi3518ev200.binsf probe 0sf erase 0 100000sf write 82000000 0 100000?? ?reset

(3)燒寫內核

? ? ? ? mw.b 82000000 ff 300000tftp 82000000 uImage_hi3518ev200sf probe 0sf erase 100000 300000sf write 82000000 100000 300000

(4)燒寫文件系統

? ? ? ? mw.b 82000000 ff C00000tftp 0x82000000 rootfs_hi3518ev200_64k.jffs2sf probe 0sf erase 400000 C00000sf write 82000000 400000 C00000

(5)設置啟動參數

1)參數含義

sf probe 0,表示查找spiflash;

sf read 0x82000000 0x100000 0x300000,表示從spiflash的0x100000開始,讀取長度為0x300000的內容,寫到SDRAM以0x82000000開始的位置中;(從spiflash的kernel分區中讀取kernel)

root=/dev/mtdblock2,表示根文件系統在第2個分區中(0,1,2);

mtdparts=hi_sfc:1024K(boot),3072K(kernel),12288K(rootfs),表示分區表(對比以前說過的、寫死的、靜態分區表,這里是傳參的、動態的分區表,傳參分區表優先級比靜態分區表高)。

2)注意mem=32M,實際硬件是64M

硬件上的64M內存有兩個用途,部分分給OS用,部分分給MPP使用。這里32M指的是OS使用的。

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

總結

以上是生活随笔為你收集整理的第一季6:海思方案中uboot、kernel和rootfs的烧写方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。