1. 程式人生 > >嵌入式linux燒寫核心,檔案系統的2種方式

嵌入式linux燒寫核心,檔案系統的2種方式

一.網路下載燒寫 tftpboot

二.linux下的DNW,win7下的DNW無法使用

第一種方式

1.設定開發板ip,及其伺服器IP在同一段

set ipaddr 192.168.1.X

set serverip 192.168.1.X 與上面不同

save

2.從伺服器下載檔案  燒寫核心

tftp 30000000 uImage  

3.mtdpart 顯示開發板分割槽

nand erase kernel 擦除分割槽

nand write.jffs2 30000000 kernel   .jffs2為校驗碼

燒寫檔案系統 

tftp 30000000 fs_qtopia.yaffs2

nand erase root 

mtdpart 

nand write.yaffs 30000000 00260000 2f76b40  //檔案系統大小

用NFS下載同理  kernel

nfs 30000000 192.168.1.X:/work/nfs_root/uImage   (cat  /etc/export 目錄下掛載了nfs檔案系統)

nand erase kernel

nand write.jffs2 30000000 kernel

用NFS下載  檔案系統

nfs 30000000 192.168.1.X:/work/nfs_root/fs_qtopia.yaffs2   (cat  /etc/export 目錄下掛載了nfs檔案系統)

nand erase root

nand write.yaffs 30000000 00260000 2f76b40

二.linux 下的 DNW下載

把linux下的DNW放到/bin目錄

sudo chmod +x +s /bin/dnw

如果使用虛擬機器,則讓虛擬機器處於前臺,在連線USB裝置

lsusb查詢usb裝置,確定已經識別

在u-boot介面輸入K

然後在linux下執行dnw  arch/arm/boot/uImage

附上u-boot常用命令

儘管Uboot提供了豐富的命令集,但不同的單板所支援的命令並不一定一樣(可配置),help命令可以用於檢視當前單板做支援的命令。

U-Boot提供了更加周詳的命令幫助,通過help命令還能檢視每個命令的引數說明。由於研發過程的需要,有必要先把U-Boot

命令的用法弄清晰。接下來,根據每一條命令的幫助資訊,解釋一下這些命令的功能和引數。

1bootmdKNLinux聯盟

bootm [addr [arg ...]]

    - boot application image stored in memory

          passing arguments ’arg ...’; when booting a Linux kernel,

          ’arg’ can be the address of an initrd image

bootm命令能引導啟動儲存在記憶體中的程式映像。這些記憶體包括RAM和能永久儲存的Flash

1個引數addr是程式映像的地址,這個程式映像必須轉換成U-Boot的格式。

2個引數對於引導Linux核心有用,通常作為U-Boot格式的RAMDISK映像儲存地址;也能是傳遞給Linux核心的引數(預設情況下傳遞bootargs環境變數給核心)。

dKNLinux聯盟

2bootp

bootp [loadAddress] [bootfilename]

bootp命令通過bootp請求,需求DHCP伺服器分配IP地址,然後通過TFTP協議下載指定的檔案到記憶體。

1個引數是下載檔案存放的記憶體地址。

2個引數是要下載的檔名稱,這個檔案應該在研發主機上準備好。

3cmp

cmp [.b, .w, .l] addr1 addr2 count

     - compare memory

cmp命令能比較2塊記憶體中的內容。.b以位元組為單位;.w以字為單位;.l以長字為單位。注意:cmp.b中間不能保留空格,需要連續敲入命令。

1個引數addr1是第一塊記憶體的起始地址。

2個引數addr2是第二塊記憶體的起始地址。

3個引數count是要比較的數目,單位按照位元組、字或長字。

4cp

cp [.b, .w, .l] source target count

       - copy memory

cp命令能在記憶體中複製資料塊,包括對Flash的讀寫操作。

1個引數source是要複製的資料塊起始地址。

2個引數target是資料塊要複製到的地址。這個地址如果在Flash中,那麼會直接呼叫寫Flash的函式操作。所以U-BootFlash就使用這個命令,當然需要先把對應Flash區域擦乾淨。

3個引數count是要複製的數目,根據cp.b cp.w cp.l分別以位元組、字、長字為單位。

5crc32

crc32 address count [addr]

     - compute CRC32 checksum [save at addr]  

crc32命令能計算儲存資料的校驗和。

1個引數address是需要校驗的資料起始地址。

2個引數count是要校驗的資料位元組數。

3個引數addr用來指定儲存結果的地址。

6echo

echo [args..]

      - echo args to console; c suppresses newline

echo命令回顯引數。

dKNLinux聯盟

7erase

erase start end

      - erase FLASH from addr ’start’ to addr ’end’

erase N:SF[-SL]

      - erase sectors SF-SL in FLASH bank # N

erase bank N

      - erase FLASH bank # N

erase all

      - erase all FLASH banks

erase命令能擦Flash

引數必須指定Flash擦除的範圍。

按照起始地址和結束地址,start必須是擦除塊的起始地址;end必須是擦除末尾塊的結束地址。這種方式最常用。舉例說明:擦除0x20000 ? 0x3ffff區域命令為erase 20000 3ffff

按照組和扇區,N表示Flash的組號,SF表示擦除起始扇區號,SL表示擦除結束扇區號。另外,還能擦除整個組,擦除組號為N的整個Flash組。擦除全部Flash只要給出一個all的引數即可。

8flinfo

flinfo

       - print information for all FLASH memory banks

flinfo N

       - print information for FLASH memory bank # N

flinfo命令列印全部Flash組的資訊,也能只打印其中某個組。一般嵌入式系統的Flash只有一個組。

9go

go addr [arg ...]

      - start application at address ’addr’

        passing ’arg’ as arguments

go命令能執行應用程式。

1個引數是要執行程式的入口地址。

2個可選引數是傳遞給程式的引數,能不用。

10minfo

iminfo addr [addr ...]

      - print header information for application image starting at

         address ’addr’ in memory; this includes verification of the

         image contents (magic number, header and payload checksums)

iminfo能列印程式映像的開頭資訊,包含了映像內容的校驗(序列號、頭和校驗和)。

1個引數指定映像的起始地址。

可選的引數是指定更多的映像地址。

11loadb

loadb [ off ] [ baud ]

     - load binary file over serial line with offset ’off’ and baudrate ’baud’

dKNLinux聯盟

loadb命令能通過串列埠線下載二進位制格式檔案。

dKNLinux聯盟

12loads

loads [ off ]

    - load S-Record file over serial line with offset ’off’

loads命令能通過串列埠線下載S-Record格式檔案。

13mw

mw [.b, .w, .l] address value [count]

     - write memory

dKNLinux聯盟

mw命令能按照位元組、字、長字寫記憶體,.b .w .l的用法和cp命令相同。

1個引數address是要寫的記憶體地址。

2個引數value是要寫的值。

3個可選引數count是要寫單位值的數目。

14nfs

nfs [loadAddress] [host ip addr:bootfilename]

nfs命令能使用NFS網路協議通過網路啟動映像。

15nm

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

     - memory modify, read and keep address

nm命令能修改記憶體,能按照位元組、字、長字操作。

引數address是要讀出並且修改的記憶體地址。

16printenv

printenv

      - print values of all environment variables

printenv name ...

      - print value of environment variable ’name’

printenv命令列印環境變數。

能列印全部環境變數,也能只打印引數中列出的環境變數。

17protect

protect on  start end

      - protect Flash from addr ’start’ to addr ’end’

protect on  N:SF[-SL]

      - protect sectors SF-SL in Flash bank # N

protect on  bank N

      - protect Flash bank # N

protect on  all

      - protect all Flash banks

protect off start end

      - make Flash from addr ’start’ to addr ’end’ writable

protect off N:SF[-SL]

     - make sectors SF-SL writable in Flash bank # N

protect off bank N

     - make Flash bank # N writable

protect off all

     - make all Flash banks writable

protect命令是對Flash防寫的操作,能使能和解除防寫。

1個引數on代表使能防寫;off代表解除防寫。

23引數是指定Flash防寫操作範圍,跟擦除的方式相同。

18rarpboot

rarpboot [loadAddress] [bootfilename]

rarboot命令能使用TFTP協議通過網路啟動映像。也就是把指定的檔案下載到指定地址,然後執行。

1個引數是映像檔案下載到的記憶體地址。

2個引數是要下載執行的映像檔案。

19run

run var [...]

      - run the commands in the environment variable(s) ’var’

run命令能執行環境變數中的命令,後面引數能跟幾個環境變數名。

20setenv

setenv name value ...

      - set environment variable ’name’ to ’value ...’

setenv name

      - delete environment variable ’name’

setenv命令能設定環境變數。

1個引數是環境變數的名稱。

2個引數是要設定的值,如果沒有第2個引數,表示刪除這個環境變數。

21sleep

sleep N

      - delay execution for N seconds (N is _decimal_ !!!)

sleep命令能延遲N秒鐘執行,N為十進位制數。

22tftpboot

tftpboot [loadAddress] [bootfilename]

tftpboot命令能使用TFTP協議通過網路下載檔案。按照二進位制檔案格式下載。另外使用這個命令,必須設定好相關的環境變數。例如serveripipaddr

1個引數loadAddress是下載到的記憶體地址。

2個引數是要下載的檔名稱,必須放在TFTP伺服器相應的目錄下。

這些U-Boot命令為嵌入式系統提供了豐富的研發和除錯功能。在Linux核心啟動和除錯過程中,都能用到U-Boot的命令。不過一般情況下,不必使用全部命令。比如已支援乙太網介面,能通過tftpboot命令來下載檔案,那麼更有必要使用串列埠下載的loadb嗎?反過來,如果研發板需要特別的除錯功能,也能新增新的命令。 、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、 U-Boot 的常用命令的用法
進入U-Boot 控制介面後,可以執行各種命令,比如下載檔案到記憶體,擦除、讀寫Flash,
執行記憶體、NOR Flash、NAND Flash 中的程式,檢視、修改、比較記憶體中的資料等。
使用各種命令時,可以使用其開頭的若干個字母代替它。比如tftpboot 命令,可以使用t、
tf、tft、tftp 等字母代替,只要其他命令不以這些字母開頭即可。
當執行一個命令之後,如果它是可重複執行的(程式碼中使用U_BOOT_CMD 定義這個命
令時,第3 個引數是1),若想再次執行可以直接輸入回車。
U-Boot 接收的資料都是十六進位制,輸入時可以省略字首0x、0X。
下面介紹常用的命令。
***********************************************************
(1)幫助命令help。
執行help 命令可以看到U-Boot 中所有命令的作用,如果要檢視某個命令的使用方法,
執行“help 命令名”,比如“help bootm”。
可以使用“?”來代替“help”,比如直接輸入“?”、“? bootm”。
***********************************************************
(2)下載命令。
U-Boot 支援串列埠下載、網路下載,相關命令有:loadb、loads、loadx、loady 和tftpboot、nfs。
前幾個串列埠下載命令使用方法相似,以loadx 命令為例,它的用法為“loadx [ off ][ baud ]”。“[]”表示裡面的引數可以省略,off 表示檔案下載後存放的記憶體地址,baud 表示使
用的波特率。如果baud 引數省略,則使用當前的波特率;如果off 引數省略,存放的地址為
配置檔案中定義的巨集CFG_LOAD_ADDR。
tftpboot 命令使用TFTP 協議從伺服器下載檔案,伺服器的IP 地址為環境變數serverip。
用法為“tftpboot [loadAddress] [bootfilename]”,loadAddress 表示檔案下載後存放的記憶體地址,bootfilename 表示要下載的檔案的名稱。如果loadAddress 省略,存放的地址為配置檔案中定
義的巨集CFG_LOAD_ADDR;如果bootfilename 省略,則使用開發板的IP 地址構造一個檔案
名,比如開發板IP 為192.168.1.17,則預設的檔名為C0A80711.img。
nfs 命令使用NFS 協議下載檔案,用法為“nfs [loadAddress] [host ip addr:bootfilename]”。
“loadAddress、bootfilename”的意義與tftpboot 命令一樣,“host ip addr”表示伺服器的IP 地址,預設為環境變數serverip。下載檔案成功後,U-Boot 會自動建立或更新環境變數filesize,它表示下載的檔案的長度,可以在後續命令中使用“$(filesize)”來引用它。
********************************************************
(3)記憶體操作命令。
常用的命令有:檢視記憶體命令md、修改記憶體命令md、填充記憶體命令mw、複製命令cp。
這些命令都可以帶上字尾“.b”、“.w”或“.l”,表示以位元組、字(2 個位元組)、雙字(4 個字
節)為單位進行操作。比如“cp.l 30000000 31000000 2”將從開始地址0x30000000 處,複製
2 個雙字到開始地址為0x31000000 的地方。
md 命令用法為“md[.b, .w, .l] address [count]”,表示以位元組、字或雙字(預設為雙字)
為單位,顯示從地址address 開始的記憶體資料,顯示的資料個數為count。
mm 命令用法為“mm[.b, .w, .l] address”,表示以位元組、字或雙字(預設為雙字)為單位,
從地址address 開始修改記憶體資料。執行mm 命令後,輸入新資料後回車,地址會自動增加,
按“Ctrl+C”鍵退出。
mw 命令用法為“mw[.b, .w, .l] address value [count]”,表示以位元組、字或雙字(預設為雙
字)為單位,往開始地址為address 的記憶體中填充count 個數據,資料值為value。
cp 命令用法為“cp[.b, .w, .l] source target count”,表示以位元組、字或雙字(預設為雙字)
為單位,從源地址source 的記憶體複製count 個數據到目的地址的記憶體。
******************************************************
(4)NOR Flash 操作命令。
常用的命令有檢視Flash 資訊的flinfo 命令、加/解防寫命令protect、擦除命令erase。
由於NOR Flash 的介面與一般記憶體相似,所以一些記憶體命令可以在NOR Flash 上使用,比如
讀NOR Flash 時可以使用md、cp 命令,寫NOR Flash 時可以使用cp 命令(cp 根據地址分辨
出是NOR Flash,從而呼叫NOR Flash 驅動完成寫操作)。
直接執行“flinfo”即可看到NOR Flash 的資訊,有NOR Flash 的型號、容量、各扇區的
開始地址、是否只讀等資訊。
對於只讀的扇區,在擦除、燒寫它之前,要先解除防寫。最簡單的命令為“protect off
all”,解除所有NOR Flash 的防寫。
erase 命令常用的格式為“erase start end”,擦除的地址範圍為start~end;“erase start +len”,擦除的地址範圍為start~(star+tlen?1),“erase all”,表示擦除所有NOR Flash。
*******************************************************
(5)NAND Flash 操作命令。
NAND Flash 操作命令只有一個:nand,它根據不同的引數進行不同操作,比如擦除、
讀取、燒寫等。
“nand info”檢視NAND Flash 資訊。
“nand erase [clean] [off size]”擦除NAND Flash。加上“clean”時,表示在每個塊的第一
個扇區的OOB 區加寫入清除標記;off、size 表示要擦除的開始偏移地址的長度,如果省略
off 和size,表示要擦除整個NAND Flash。
“nand read[.jffs2] addr off size”從NAND Flash 偏移地址off 處讀出size 個位元組的資料
存放到開始地址為addr 的記憶體中。是否加字尾“.jffs”的差別只是讀操作時的ECC 校驗方
法不同。
“nand write[.jffs2] addr off size”把開始地址為addr 的記憶體中的size 個位元組資料寫到NAND
Flash 的偏移地址off 處。是否加字尾“.jffs”的差別只是寫操作時的ECC 校驗方法不同。
“nand read.yaffs addr off size”從NAND Flash 偏移地址off 處讀出size 個位元組的資料(包
括OOB 區域),存放到開始地址為addr 的記憶體中。
“nand write.yaffs addr off size”把開始地址為addr 的記憶體中的size 個位元組資料(其中有
要寫入OOB 區域的資料)寫到NAND Flash 的偏移地址off 處。
“nand dump off”將NAND Flash 偏移地址off 的一個扇區的資料打印出來,包括OOB 資料。
************************************************************
(6)環境變數命令。
“printenv”命令列印全部環境變數,“printenv name1 name2?”列印名字為name1、
name2、?的環境變數。
“setenv name value”設定名字為name 的環境變數的值為value。
“setenv name”刪除名字為name 的環境變數。
上面的設定、刪除操作只是在記憶體中進行,“saveenv”將更改後的所有環境變數寫入NOR
Flash 中。
**************************************************************
(7)啟動命令。
不帶引數的“boot”、“bootm”命令都是執行環境變數bootcmd 所指定的命令。
“bootm [addr [arg…]]”命令啟動存放在地址addr 處的U-Boot 格式的映象檔案(使用
U-Boot 目錄tools 下的mkimage 工具製作得到),[arg…]表示引數。如果addr 引數省略,映
象檔案所在地址為配置檔案中定義的巨集CFG_LOAD_ADDR。
“go addr [arg…]”與bootm 命令類似,啟動存放在地址addr 處的二進位制檔案,[arg...]表
示引數。
“nboot [[[loadAddr] dev] offset]”命令將NAND Flash 裝置dev 上偏移地址off 處的映象檔案複製到記憶體loadAddr 處,然後,如果環境變數autostart 的值為“yes”,就啟動這個映象。
如果loadAddr 引數省略,存放地址為配置檔案中定義的巨集CFG_LOAD_ADDR;如果dev 參
數省略,則它的取值為環境變數bootdevice 的值;如果offset 引數省略,則預設為0

相關推薦

嵌入式linux核心,檔案系統2方式

一.網路下載燒寫 tftpboot 二.linux下的DNW,win7下的DNW無法使用 第一種方式 1.設定開發板ip,及其伺服器IP在同一段 set ipaddr 192.168.1.X set serverip 192.168.1.X 與上面不同 save 2.從

“轉”使用UBOOT檔案系統核心的方法

①此處param區存放著uboot傳遞給kernel的標記列表,(是uboot傳遞給核心的,核心去讀取),和nandflash上的param儲存區(是uboot自己的)的內容不一樣 nandflash的param儲存區存放的是如 bootargs=console=ttySAC0 noinitrd root=/

嵌入式linux(一)—BootLoader的裁剪和編譯

一、BootLoader的概念    BootLoader是系統加電啟執行的第一段軟體程式碼.回憶一下PC的體系結構我們可以知道,PC機中的引導載入程式由BIOS(其本質就是一段韌體程式)和位於硬碟MBR中的載入程式一起組成。BIOS在完成硬體檢測和資源分配後,將硬碟MBR

嵌入式Linux中的根檔案系統的理解和解析

   當我們在Windows下,提到檔案系統時,你的第一反應是想到的是什麼?是不是Windows下的一些Fat32、NTFS等的檔案系統的型別。而在Linux中,你可能會想到Ext2、Ext3,但你還必須要有一個根檔案系統的概念。根檔案系統首先是一種檔案系統,該檔案系統不僅具有普通檔案系統的儲存資料檔案的功

jz2440開發板製作檔案系統,使用NFS啟動

1在製作根檔案系統時,需要用到mkyaffs2image命令(這個命令檔案需要去相應資料夾中去拷貝)  將相應命令檔案拷貝到/bin/ 目錄中    增加可執行許可權 chmod +x /bin/mkyaffs2image 2mkyaffs2image命令用法 mkyaff

【轉】U-BOOT支援yaffs2檔案系統

U-BOOT 支援yaffs2檔案系統的燒寫。 其實移植這步燒寫很簡單,只是將打包的檔案系統一次寫入NAND即可,以頁為單位,一次寫入2K+64B。 包含main和spare區,其中spare的ECC資料等在yaffs2檔案系統製作時就已經寫好了。是通過軟體ECC 每256B產生3B的規則進行的。所以必須保

linux swap分區修改的2方式

linux swap 參考網站:http://blog.csdn.net/hshl1214/article/details/6048278原帖子寫的很好,我把步驟給貼出來,測試系統:rhel6.4 x641.新建磁盤分區作為swap分區[[email protected] /]# free

Java IO讀檔案的幾方式及測試

讀取檔案大小:1.45G 第一種,OldIO: Java程式碼 publicstaticvoid oldIOReadFile() throws IOException{ BufferedReader br = new BufferedReader(new File

用uboot uboot linux核心 檔案系統到nandflash的 過程以及bootm go命令啟動與區別

文章結構 結構順序有變化 -1:燒寫uboot 0: bootargs bootcmd 命令引數的設定 1:製作yaffs2的過程 2:燒寫yaffs2的過程 3:製作uimage 的過程 4: 燒寫uiamge的過程 5:uimage zimage vm

用uboot uboot linux核心 檔案系統到nandflash的 過程以及bootm go命令啟動與區別(2010-12-19 17:27:43)

文章結構 結構順序有變化 -1:燒寫uboot 0: bootargs bootcmd 命令引數的設定 1:製作yaffs2的過程 2:燒寫yaffs2的過程 3:製作uimage 的過程 4: 燒寫uiamge的過程 5:uimage zimage vmlinux 的區別 6: uboot傳遞給核心的引數結

向nandflash中核心檔案系統的方法

在RAM開發板上往nandflash燒寫核心和檔案系統的方法: 一、           在u-boot中燒寫檔案系統:(其中這裡的地址參考具體開發板使用手冊中的地址,SBC6345) a)       在系統啟動的時候,u-boot會提示有三秒中停留,敲擊回車中斷u-bo

uboot從SD卡核心檔案系統

環境:ubuntu 13.04 一、首先製作sd啟動盤:  插入SD卡     sudo dd iflag=dsync oflag=dsync if=tiny210v2-uboot.binof=/dev/mmcblk0 seek=1  tiny210v2-uboot.bin來自:   http://www.a

Linux系統下通過TFTP或NFS核心

注:我之前在cnblog上釋出的這篇文章,現在把這篇教程釋出到CSDN上面 一直想直接通過Linux系統往JZ2440開發板中燒寫核心,但網上的教程千篇一律都是藉助Windows平臺上的TFTP工具燒寫的,十分不爽,因為我不喜歡在虛擬機器上玩Linux!摸索了一

如何用nfs命令核心檔案系統(網路下載檔案到nandflash)(未完)

 使用tftp下載燒寫 a、設uboot裡的ip地址 set ipaddr 192.168.1.17(uboot的ip設定成同網段) set serverip 192.168.1.5(電腦本機作為服務ip) 然後儲存設定 save b、將u-boot下載到nor flas

核心檔案系統檔案過程

回到頂部系統呼叫作業系統的主要功能是為管理硬體資源和為應用程式開發人員提供良好的環境,但是計算機系統的各種硬體資源是有限的,因此為了保證每一個程序都能安全的執行。處理器設有兩種模式:“使用者模式”與“核心模式”。一些容易發生安全問題的操作都被限制在只有核心模式下才可以執行,例

Linux核心檔案系統掛載分析

http://edsionte.com/techblog/archives/4389?f=http://blogread.cn/ 1.資料結構 下面將對檔案系統掛載過程中涉及到的兩個主要資料結構vfsmount和path進行節本說明。 1.1 struct vfsmo

linux核心 檔案系統 樹莓派 wireshark ssh uml

1, 原始機器資料格式化輸出 static const char *fmt_lower =         "%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02

linux移植yaffs2檔案時候遇到的busybox的問題,以及yaffs2檔案時候的問題及解決

1.我用的是windows xp下的redhat發行版的虛擬機器,在做跟檔案系統的時候,編譯及安裝buybox的時候出現了這樣的問題:我用smb伺服器將make;make install之後產生的資料夾_install下的usr、bin、sbin檔案通過smb伺服器拷貝到自

linux基礎(36)--xfs檔案系統管理--RHEL7.2

1. xfs簡介   xfs檔案系統是SGI(矽圖)開發的高階日誌檔案系統,xfs極具伸縮性,非常健壯。   xfs特性:   (1)資料完整性     xfs檔案系統開啟日誌功能後即使機器意外宕機磁碟上的檔案也不會遭到破壞,即不論目前檔案系統上儲存的檔案有多少,檔案系統都

linux基礎(37)--xfs檔案系統的備份和恢復--RHEL7.2

1. 準備測試檔案   cp /etc/passwd /sda3   mkdir /sda3/test 2. 互動式備份   備份/sda3,備份後的檔案是/opt/dump   xfsdump -f /opt/dump_sda3 /sda3        需要指定備份標籤