歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> 內核驅動-U-Boot+內核制作+根文件系統制作

內核驅動-U-Boot+內核制作+根文件系統制作

日期:2017/3/1 9:47:06   编辑:Linux編程

一、U-Boot入門

Uboot是業界老大,那如何編譯uboot,燒寫,和uboot命令的使用

1、編譯uboot

進入uboot_tiny6410的文件夾,使用命令:make tiny6410_config (對uboot先進行配置,具體配置在Makefile文件中,感興趣的話可以自己去看)。

編譯uboot:make ARCH=arm CROSS_COMPILE=arm-linux-(使用交叉編譯,cpu為arm,交叉編譯鏈為arm-linux-)

2、uboot使用命令

使用dnw將uboot下載到nand_flash中,從nand_flash啟動開發板,在倒計時的地方,回車就進入了uboot的命令行。

盡管uboot提供了豐富的命令集,但不同的開發板所支持的命令卻不一樣(可配置),help命令可用於查看當前單板所支持的命令。

#help 查看命令

#printenv或print:查看環境變量

#setenv name value...add/modify environment variable 'name' to 'value'

#setenv name delete environment variable 'name'

#saveenv 保存環境變量 將當前定義的所有變量及其值存入flash中。

下面配置一下tftp,目的是使用tftp將uImage內核下載到開發板中

注意:使用tftp首先要配置好網絡

#setenv ipaddr 192.168.142.83

#setenv serverip 192.168.142.84

一定要配置在一個網段,不然會出現ping不通的現象,也就不能使用tftp下載文件了。

pring一下服務器,看有沒有連通。

記得還要在服務器端啟動tftp,如果沒有安裝的話,還要安裝一個。

查看tftp是否安裝:netstat -a | grep tftp

安裝tftp:rpm -ivh 安裝包名

在啟動tftp之前要先配置:#vi /etc/xinetd.d/tftp

disable = no

server_args = -s /tftpboot tftp服務器共享文件夾

這個時候開發板作為客戶端,linux _pc機作為服務端。就可以登錄客戶端從服務器下載資料了(uboot已經安裝了tftp客戶端)

客戶端輸入:

tftp 0xc0008000 uImage把tftp服務器上的uImage下載到0xc0008000處。

說明:編譯內核會生產兩個鏡像文件zImag和uImag,uImag是有頭說明的,共64個字節。

bootm 0xc0008000 執行固定格式的2進制程序

md:顯示內存區的內容。

md采用十六進制和ASCII碼兩種形式來顯示存儲單元的內容。這條命令還可以采用長度標示符.l,.w和.b:

md [.b,.w,.l]address

mm修改內存,地址自動遞增。

mm [.b,.w,.l] address

mm提供一種互動修改存儲器內容的方法。它會顯示地址和當前值,然後提示用戶輸入。如果你輸入了一個合法的十六進制數,這個新的值就會被寫入該地址。然後提示下一個地址。如果你沒有輸入任何值,只是按了一下回車,那麼該地址的內容保存不變。如果想結束輸入,則輸入空格,然後回車

nand erase 起始地址start長度len

擦除start處開始的,長度為len的區域

范例:#nand erase 0x4000000 0x500000

寫和讀NAND_FLASH

nand write 內存起始地址 flash起始地址 長度len

將內存起始地址處,長度為len的數據,寫入flash起始地址處。

#nand write c0008000 400000 500000

nand write 內存起始地址 flash起始地址 長度len

將flash起始地址處,長度為len的數據,讀到內存起始地址處。

#nand read c0008000 400000 500000

設置自啟動

1:設置從nand flash自動啟動

#setenv bootcmd nand read c0008000 400000 500000 \; bootm c0008000

2:設置自動下載內核到內存後啟動

#setenv bootcmd tftp c0008000 uImage.bin \;bootm c0008000

Copyright © Linux教程網 All Rights Reserved