嵌入式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
1、bootmdKNLinux聯盟
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聯盟
2、bootp
bootp [loadAddress] [bootfilename]
bootp命令通過bootp請求,需求DHCP伺服器分配IP地址,然後通過TFTP協議下載指定的檔案到記憶體。
第1個引數是下載檔案存放的記憶體地址。
第2個引數是要下載的檔名稱,這個檔案應該在研發主機上準備好。
3、cmp
cmp [.b, .w, .l] addr1 addr2 count
- compare memory
cmp命令能比較2塊記憶體中的內容。.b以位元組為單位;.w以字為單位;.l以長字為單位。注意:cmp.b中間不能保留空格,需要連續敲入命令。
第1個引數addr1是第一塊記憶體的起始地址。
第2個引數addr2是第二塊記憶體的起始地址。
第3個引數count是要比較的數目,單位按照位元組、字或長字。
4、cp
cp [.b, .w, .l] source target count
- copy memory
cp命令能在記憶體中複製資料塊,包括對Flash的讀寫操作。
第1個引數source是要複製的資料塊起始地址。
第2個引數target是資料塊要複製到的地址。這個地址如果在Flash中,那麼會直接呼叫寫Flash的函式操作。所以U-Boot寫Flash就使用這個命令,當然需要先把對應Flash區域擦乾淨。
第3個引數count是要複製的數目,根據cp.b cp.w cp.l分別以位元組、字、長字為單位。
5、crc32
crc32 address count [addr]
- compute CRC32 checksum [save at addr]
crc32命令能計算儲存資料的校驗和。
第1個引數address是需要校驗的資料起始地址。
第2個引數count是要校驗的資料位元組數。
第3個引數addr用來指定儲存結果的地址。
6、echo
echo [args..]
- echo args to console; c suppresses newline
echo命令回顯引數。
dKNLinux聯盟
7、erase
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的引數即可。
8、flinfo
flinfo
- print information for all FLASH memory banks
flinfo N
- print information for FLASH memory bank # N
flinfo命令列印全部Flash組的資訊,也能只打印其中某個組。一般嵌入式系統的Flash只有一個組。
9、go
go addr [arg ...]
- start application at address ’addr’
passing ’arg’ as arguments
go命令能執行應用程式。
第1個引數是要執行程式的入口地址。
第2個可選引數是傳遞給程式的引數,能不用。
10、minfo
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個引數指定映像的起始地址。
可選的引數是指定更多的映像地址。
11、loadb
loadb [ off ] [ baud ]
- load binary file over serial line with offset ’off’ and baudrate ’baud’
dKNLinux聯盟
loadb命令能通過串列埠線下載二進位制格式檔案。
dKNLinux聯盟
12、loads
loads [ off ]
- load S-Record file over serial line with offset ’off’
loads命令能通過串列埠線下載S-Record格式檔案。
13、mw
mw [.b, .w, .l] address value [count]
- write memory
dKNLinux聯盟
mw命令能按照位元組、字、長字寫記憶體,.b .w .l的用法和cp命令相同。
第1個引數address是要寫的記憶體地址。
第2個引數value是要寫的值。
第3個可選引數count是要寫單位值的數目。
14、nfs
nfs [loadAddress] [host ip addr:bootfilename]
nfs命令能使用NFS網路協議通過網路啟動映像。
15、nm
nm [.b, .w, .l] address
- memory modify, read and keep address
nm命令能修改記憶體,能按照位元組、字、長字操作。
引數address是要讀出並且修改的記憶體地址。
16、printenv
printenv
- print values of all environment variables
printenv name ...
- print value of environment variable ’name’
printenv命令列印環境變數。
能列印全部環境變數,也能只打印引數中列出的環境變數。
17、protect
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代表解除防寫。
第2、3引數是指定Flash防寫操作範圍,跟擦除的方式相同。
18、rarpboot
rarpboot [loadAddress] [bootfilename]
rarboot命令能使用TFTP協議通過網路啟動映像。也就是把指定的檔案下載到指定地址,然後執行。
第1個引數是映像檔案下載到的記憶體地址。
第2個引數是要下載執行的映像檔案。
19、run
run var [...]
- run the commands in the environment variable(s) ’var’
run命令能執行環境變數中的命令,後面引數能跟幾個環境變數名。
20、setenv
setenv name value ...
- set environment variable ’name’ to ’value ...’
setenv name
- delete environment variable ’name’
setenv命令能設定環境變數。
第1個引數是環境變數的名稱。
第2個引數是要設定的值,如果沒有第2個引數,表示刪除這個環境變數。
21、sleep
sleep N
- delay execution for N seconds (N is _decimal_ !!!)
sleep命令能延遲N秒鐘執行,N為十進位制數。
22、tftpboot
tftpboot [loadAddress] [bootfilename]
tftpboot命令能使用TFTP協議通過網路下載檔案。按照二進位制檔案格式下載。另外使用這個命令,必須設定好相關的環境變數。例如serverip和ipaddr。
第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 需要指定備份標籤