vivi eboot wince 烧写
生活随笔
收集整理的這篇文章主要介紹了
vivi eboot wince 烧写
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
今天燒vivi文件到nand flash去,用sjf2410wiggler燒,雖然還不懂編譯vivi,但是先試試燒個(gè)vivi bootloader進(jìn)去玩玩!連上wiggler jtag線,先用H-jtag 軟件檢測(cè)到了芯片,然后在命令行打上sjf2410wiggler /f: c:\vivi 進(jìn)行燒寫。
???????????? 還可以通過tftp的方式,開發(fā)板啟動(dòng)后,按下除回車之外任意鍵,進(jìn)入vivi的shell,然后輸入
load???????? flash???????? vivi???????? t
???????????? windows 里面命令行里進(jìn)入c;\(之前先把mytftp.exe拷到c盤根目錄下),輸入:
mytftp???????? -i???????? 192.168.0.15????????PUT vivi
???????????? 開發(fā)板上的VIVI在完成接收新的VIVI文件后將把其燒入VIVI分區(qū)中,通過tftp比jtag快多了,一秒鐘就搞定了!^_^
下面是超級(jí)中斷的vivi tftp方式燒寫界面
vivi> load flash vivi t
Ready for downloading using tftp...
Waiting...
Setting MAC address...
Type "tftp -i 192.168.0.15?????? PUT {input-filename}" on the host PC
Press ESC key to exit
Starting the TFTP download...
..
Received 12ea0 Bytes, END...
Download end
Downloaded file at 0x30000000, size = 77472 bytes
Found block size = 0x00014000
Erasing...???????? ... done
Writing...???????? ... done
Written 77472 bytes
vivi>
?????????? 燒寫wince啟動(dòng)的eboot同樣采用tftp的方式,
load?????? flash?????? eboot?????? t
mytftp?????? -i?????? 192.168.0.15?????? PUT?????? eboot.nb0
?????????? 燒寫wince的鏡像文件到nand flash,有兩種方法,一是直接燒寫沒有展開的wince鏡像nk.bin到開發(fā)板,第二種方法是通過platform??????builder將展開后的nk.bin燒寫到開發(fā)板。
?????????? 開發(fā)板的vivi有三個(gè)相關(guān)的參數(shù):
wince_part_name????????(指定wince鏡像nk.bin放置的分區(qū)名);
wincesource????????????????(0表示從以太網(wǎng)啟動(dòng)wince,如果用platform builder來引導(dǎo)wince則需選0;
???????????????????????????????????? 1表示從 nand flash啟動(dòng));
wincedeploy????????????????(0表示存放的nk.bin文件沒展開,1表示展開的,展開后wince啟動(dòng)會(huì)比較快)
??????????方法一,直接燒寫
??????????先定義好參數(shù),輸入命令如下:
param?????? set?????? wince_part_name?????? wince
param?????? wincesource?????? 1????????//表示從nand flash啟動(dòng)
param?????? wincedeploy?????? 0????//表示鏡像沒展開
param?????? save
??????????設(shè)好參數(shù)后,通過tftp燒寫
load?????? flash?????? wince?????? t
mytftp?????? -i?????? 192.168.0.15?????? PUT?????? nk.bin
?????????? vivi將把nk,bin燒寫到nand flash中,在直接從nand flash讀取nk,bin,展開到sdram中,然后從sdram中啟動(dòng)wince。這樣啟動(dòng)時(shí)間一般在45妙左右。
??????????還可以用開發(fā)板的vivi提供的wince?????? rewrite命令,將nk.bin展開后保存到flash中,以后nand flash啟動(dòng)展開后的nk.bin。
?????????? 方法二,利用plarform??????builder直接下載展開的鏡像
先定義好參數(shù),輸入命令如下:
param?????? set?????? wince_part_name?????? wince
param?????? wincesource?????? 0????????//表示從以太網(wǎng)啟動(dòng)
param?????? wincedeploy?????? 1??????//表示鏡像已展開
param?????? save
???????? 接下來需要操作plarform builder,eboot從plarform builder下載nk.bin后將把展開后的文件燒寫到nand flash中,以后將直接從nand flash讀取展開后的nk.bin并啟動(dòng),啟動(dòng)時(shí)間一般是15秒左右。
???????? 下面是platform builder(一下簡(jiǎn)稱PB),的具體操作看開發(fā)板的用戶說明。^_^不想打了!
附錄:vivi 命令詳解
在超級(jí)終端界面中鍵入任意鍵(除enter外)進(jìn)入vivi命令界面
vivi>
輸入help 可以見到開發(fā)板上的vivi 支持的命令
vivi> help
Usage:
??????cpu [{cmds}]????????????????????????????-- Manage cpu clocks
??????bon [{cmds}]????????????????????????????-- Manage the bon file system
??????reset?????????????????????????????????? -- Reset the system
??????param [set|show|save|reset]???????????? -- set/get parameter
??????part [add|del|show|reset]?????????????? -- Manage MTD partitions
??????mem [{cmds}]????????????????????????????-- Manage Memory
??????load {...}??????????????????????????????-- Load a file to RAM/Flash
??????go <addr> <a0> <a1> <a2> <a3>?????????? -- jump to <addr>
??????dump <addr> <length>????????????????????-- Display (hex dump) a range of memory.
??????call <addr> <a0> <a1> <a2> <a3>???????? -- jump_with_return to <addr>
??????boot [{cmds}]?????????????????????????? -- Booting linux kernel
??????help [{cmds}]?????????????????????????? -- Help about help?
??????display <vga|pal>?????????????????????? -- Set the display format
??????flash [{cmds}]??????????????????????????-- Manage Flash memory
??????wince [rewrite]???????????????????????????????? -- boot wince from ethernet or f
lash by eboot
??????os <linux|wince>????????????????????????-- set the default os
mem命令 mem系列命令用于對(duì)系統(tǒng)的內(nèi)存進(jìn)行操作
vivi> mem help
'mem' command usage:
----------command parameter list-----------
mem size -- probe dram size
mem read <addr> -- read a word(4bytes) from special dram address
mem write <addr> <vlaue> -- write a word(4bytes) into special dram
address
mem test <start_addr> <size> [<quiet>] -- memory test
-----------sub command list-------------
mem cmp <dst_addr> <src_addr> <length> -- compare
mem copy <dst_addr> <src_addr> <length> -- copy memory from
<src_addr> to <dst_a
ddr>
mem info -- display memory infomation
mem reset -- reset memory control register
mem search <start_addr> <end_addr> <value> -- search memory address
that contain value in the special memory address range
vivi>mem info
RAM Information:????????????????
Default ram size: 64M????????????????????
Real ram size???? : 64M
Free memory?????? : 61M
RAM mapped to???????????? : 0x30000000 - 0x34000000????(SDRAM映射的地址范圍)
Flash memory mapped to????: 0x10000000 - 0x12000000????(Flash映射的地址范圍)
Available memory region : 0x30000000 - 0x33de4000???? (用戶可以使用的有效的內(nèi)存區(qū)域地址范圍)
Stack base address????????: 0x33debffc???? (棧的基地址)
Current stack pointer???? : 0x33debc78??????(當(dāng)前棧指針的值)
Memory control register vlaues???? (S3C2410的內(nèi)存控制寄存器的當(dāng)前值)
?????? BWSCON = 0x22111d10
???? BANKCON0 = 0x00000700
???? BANKCON1 = 0x00000700
???? BANKCON2 = 0x00001f7c
???? BANKCON3 = 0x00000700
???? BANKCON4 = 0x00000700
???? BANKCON5 = 0x00000700
???? BANKCON6 = 0x00018001
???? BANKCON7 = 0x00018001
??????REFRESH = 0x008e01e9
???? BANKSIZE = 0x000000b1
?????? MRSRB6 = 0x00000020
?????? MRSRB7 = 0x00000020
vivi>
load命令
load 命令下載程序到存儲(chǔ)器中(Flash或者 RAM中)過 load help 可
以顯示系統(tǒng)對(duì) load系列命令的幫助提示??
vivi> load help
Usage:
?? load <flash|ram> [ <partname> | <addr> <size> ] <x|y|z|t>
????????關(guān)鍵字參數(shù) flash 和 ram 用于選擇目標(biāo)介質(zhì)是 Flash還是 RAM
到 Flash 中還是先要下載到 RAM 中(臨時(shí)下載到 SDRAM 的起始地址處
0x30000000保存一下,然后再轉(zhuǎn)寫入 FLASH),然后再通過 Flash驅(qū)動(dòng)程
序提供的寫操作,將數(shù)據(jù)寫入到 Flash中選擇了 flash 參數(shù),那名
到底是對(duì) NOR Flash操作還是對(duì) NAND Flash操作,這取決于 bootloader
編譯的過程中,所進(jìn)行的配置,這就要看配置的時(shí)候?qū)TD設(shè)備配置成NOR
Flash還是 NAND Flash??
????????參數(shù) partname 和 addr size二者選其一,partname是 vivi的 MTD分區(qū)表中
的分區(qū)名 MTD分區(qū)的起始地址;addr和
size是讓用戶自己選擇下載的目標(biāo)存儲(chǔ)區(qū)域,而不是使用 vivi的 MTD分區(qū),
addr表示下載的目標(biāo)地址,size表示下載的文件大小,單位字節(jié),size參數(shù)
不一定非要指定得和待下載的文件大小一樣大,但是一定要大于等于待下載
的文件的字節(jié)數(shù)??
????????關(guān)鍵字參數(shù) x y 和 z 分別表示從 PC主機(jī)上下載文件到 ARMer9系統(tǒng)中,
采用哪種串行文件傳送協(xié)議,x表示采用XModem協(xié)議,y表示采用Ymodem協(xié)議,z表示采用 ZModem協(xié)議請(qǐng)注意目前該 bootloader????vivi 還沒有
實(shí)現(xiàn) ZModem協(xié)議,所以該參數(shù)只能選擇 x和 y??
???????? 關(guān)鍵字參數(shù)t應(yīng)該是開發(fā)板vivi增加的,是tftp下載!很好用的!速度比jtag要快多了!
開發(fā)板的vivi eboot燒寫都要通過load命令
如:要燒寫eboot.nb0到flash的eboot分區(qū),首先在超級(jí)中斷進(jìn)入vivi的shell,輸入
load????flash?? eboot????t
使用交叉網(wǎng)線連好PC與開發(fā)板,把eboot.nb0拷貝到于mtftp.exe同一目錄下,在windows命令行輸入
mytftp????-i???? 192.168.0.15????PUT?? eboot.nb0
等待燒寫完成即可
????param命令????param系列命令用于對(duì) bootloader的參數(shù)進(jìn)行操作 通過 param help可以
顯示系統(tǒng)對(duì) param系列命令的幫助提示??
vivi>param help
Usage:
param help????????????????????????-- Help aout 'param' command
param reset?????????????????????? -- Reset parameter table to default table
param save????????????????????????-- Save parameter table to flash memeory
param set <name> <value>??????????-- Reset value of parameter
param set linux_cmd_line "..."????-- set boot parameter
param set wince_part_name "..."?????????? -- set the name of partition wich wince
will be stored in
param show????????????????????????-- Display parameter table
vivi>
param show 可以顯示可以設(shè)置的參數(shù)
vivi> param show????????????????
Number of parameters: 19
name??????????????????????:????????????hex?????????????? integer
-------------------------------------------------------------
mach_type???????????????? :???????? 000000c1??????????193?????? //機(jī)器類型,193表示 S3C2410的開發(fā)系統(tǒng)??
media_type????????????????:???????? 00000003?????????? 3?????? //媒介類型,即指示了bootloader從哪個(gè)媒介啟動(dòng)起來的??
boot_mem_base???????????? :???????? 30000000??????????????805306368
/*引導(dǎo) linux 內(nèi)核啟動(dòng)的基地址映像將被從 Flash 中拷貝到
boot_mem_base + 0x8000 的地址處,內(nèi)核參數(shù)將被建立在
boot_mem_base+0x100的地址處????*/
baudrate??????????????????:???????? 0001c200???????????????? 115200????????//bootloader啟動(dòng)時(shí),默認(rèn)設(shè)置的串口波特率
/*以上三個(gè)參數(shù)和 Xmodem文件傳送協(xié)議相關(guān)??
xmodem_one_nak表示接收端(即 ARMer9系統(tǒng)這端)發(fā)起第一個(gè) NAK信
號(hào)給發(fā)送端(即 PC主機(jī)這端)到啟動(dòng);
xmodem_initial_timeout表示接收端(即 ARMer9系統(tǒng)這端)啟動(dòng) XModem
協(xié)議后的初始超時(shí)時(shí)間,第一次接收超時(shí)按照這個(gè)參數(shù)的值來設(shè)置,但是超
時(shí)一次后,后面的超時(shí)時(shí)間就不再是這個(gè)參數(shù)的值了,而是xmodem_timeout
的值;
xmodem_timeout表示在接收端(即 ARMer9系統(tǒng)這端)等待接受發(fā)送端(即
PC 主機(jī)這端)送來的數(shù)據(jù)字節(jié)過程中,如果發(fā)生了一次超時(shí),那么后面的
超時(shí)時(shí)間就設(shè)置成參數(shù) xmodem_timeout的值了??
這三個(gè)參數(shù)不需要修改,系統(tǒng)默認(rèn)的值就可以了,不建議用戶去修改這幾個(gè)
參數(shù)值????*/
xmodem_one_nak????????????:???????? 00000000??????????????????????0
xmodem_initial_timeout????:???????? 000493e0???????????????? 300000
xmodem_timeout????????????:???????? 000f4240????????????????1000000
/*ymodem_initial_timeout
ymodem_initial_timeout 表示接收端(即 ARMer9 系統(tǒng)這端)在啟動(dòng)了
YModem協(xié)議后的初始超時(shí)時(shí)間??
這個(gè)參數(shù)不需要修改,系統(tǒng)默認(rèn)的值就可以了,不建議用戶去修改這幾個(gè)參
數(shù)值????*/
ymodem_initial_timeout????:???????? 0016e360????????????????1500000
/*boot_delay是 bootloader自動(dòng)引導(dǎo) linux kernel功能的延時(shí)時(shí)間*/
boot_delay????????????????:???????? 00300000????????????????3145728
os????????????????????????:???????? WINCE
display?????????????????? :???????? VGA 640X480
ip????????????????????????:???????? 192.168.0.15
host??????????????????????:???????? 192.168.0.1
gw????????????????????????:???????? 192.168.0.1
mask??????????????????????:???????? 255.255.255.0
wincesource?????????????? :???????? 00000001??????????????????????1
wincedeploy?????????????? :???????? 00000000??????????????????????0
mac?????????????????????? :???????? 00:00:c0:ff:ee:08
wince part name: wince
Linux command line: noinitrd root=/dev/mtdblock/3 init=/linuxrc console=ttyS0
/*Linux command line 不是bootloader的參數(shù),而是kernel啟動(dòng)的時(shí)候,kernel
不能自動(dòng)檢測(cè)到的必要的參數(shù)些參數(shù)需要 bootloader 傳遞給 linux
kernel Linux command line就是設(shè)置 linux kernel啟動(dòng)時(shí),需要手工
傳給 kernel的參數(shù)????*/
part命令 part命令用于對(duì) MTD分區(qū)進(jìn)行操作
vivi> part show
mtdpart info. (7 partitions)
name????????????????offset??????????size??????????flag
------------------------------------------------
vivi??????????????: 0x00000000??????0x00020000?????? 0????128k
param???????????? : 0x00020000??????0x00010000?????? 0???? 64k
kernel????????????: 0x00030000??????0x001c0000?????? 0??????1M+768k
root??????????????: 0x00200000??????0x00400000?????? 0??????4M
eboot???????????? : 0x00600000??????0x00080000?????? 0????512k
wince???????????? : 0x00680000??????0x01c80000?????? 0???? 28M+512k
flashdisk???????? : 0x02300000??????0x01d00000?????? 0???? 29M
MTD分區(qū)是針對(duì) Flash(NOR Flash或者 NAND Flash)的分區(qū),以便于對(duì)
bootloader對(duì) Flash進(jìn)行管理??
part add命令用于添加一個(gè) MTD分區(qū)??
命令的詳細(xì)格式如下:
part add????name????offset????size????flag
參數(shù) name是要添加的分區(qū)的分區(qū)名??
參數(shù) offset 是要添加的分區(qū)的偏移(相對(duì)于整個(gè) MTD 設(shè)備的起始地址的偏
移,在 ARMer9系統(tǒng)中不論配置的是 NOR Flash,還是 NAND Flash,都只
注冊(cè)了一個(gè) mtd_info結(jié)構(gòu),也就是說邏輯上只有一個(gè) MTD設(shè)備,這個(gè) MTD
設(shè)備的起始地址為 0x00000000);
參數(shù) size是要添加的分區(qū)的大小,單位為字節(jié);
參數(shù) flag是要添加的分區(qū)的標(biāo)志,參數(shù) flag的取值只能為以下字符串(請(qǐng)注
意必須為大寫)或者通過連接符 |
這個(gè)標(biāo)志表示了這個(gè)分區(qū)的用途
“BONFS”???? 作為 BONFS文件系統(tǒng)的分區(qū);
“JFFS2”???? 作為 JFFS2文件系統(tǒng)的分區(qū);
“LOCK”??????該分區(qū)被鎖定了;
“RAM”?????? 該分區(qū)作為RAM使用??
例如,添加新的 MTD分區(qū) mypart??
vivi> part add mypart 0x500000 0x100000 JFFS2
mypart: offset = 0x00500000, size = 0x00100000, flag = 8
part del命令用于刪除一個(gè) MTD分區(qū)??
命令的詳細(xì)格式如下:
part del????name
參數(shù) name是要?jiǎng)h除的 MTD分區(qū)的分區(qū)名
bon 命令用于對(duì) BON分區(qū)進(jìn)行操作
BON 分區(qū)是只針對(duì) NAND Flash 設(shè)備的一種簡(jiǎn)單的分區(qū)管理方式
Bootloader支持BON分區(qū),同時(shí)Samsung提供的針對(duì)S3C2410移植的linux
版本中也支持了 BON分區(qū),這樣就可以利用 BON分區(qū)來加載 linux的 root
根文件系統(tǒng)了 MTD 分區(qū)和 BON 分區(qū),當(dāng) ARMer9 系統(tǒng)配置
了 NAND Flash 作為 MTD 設(shè)備,那么 MTD 分區(qū)和 BON 分區(qū)都在同一片
NAND Flash上??
boot命令用于引導(dǎo)linux kernel啟動(dòng)
vivi>boot help
Usage:
????boot <media_type> -- booting kernel
??????value of media_type (location of kernel image
???????? 1 = RAM
???????? 2 = NOR Flash Memory
???????? 3 = SMC (On S3C2410)
????boot <media_type> <mtd_part> -- boot from specific mtd partition
????boot <media_type> <addr> <size>
????boot help -- help about 'boot' command
boot 關(guān)鍵字后面 media_type 必須指定媒介類型,因?yàn)?boot命令對(duì)不同媒介的處理方式
是不同的,例如如果 kernel在 SDRAM中,那么 boot執(zhí)行的過程中就可以
跳過拷貝 kernel映像到 SDRAM中這一步驟了??
Boot命令識(shí)別的媒介類型有以下三種:
ram 表示從 RAM(在 ARMer9系統(tǒng)中即為 SDRAM)中啟動(dòng)linux kernel,
linux kernel必須要放在 RAM中??
nor 表示從NOR Flash中啟動(dòng) linux kernel,linux kernel必須已經(jīng)被燒寫到
了 NOR Flash中??
smc表示從 NAND Flash中啟動(dòng) linux kernel,linux kernel必須已經(jīng)被燒寫
到了 NAND Flash中??
取值參數(shù)意義如下:
參數(shù) mtd_part是 MTD分區(qū)的名 MTD設(shè)備的一個(gè)
分區(qū)中啟動(dòng) linux kernel,kernel映像必須被放到這個(gè)分區(qū)中;
<addr> <size>分別表示 linux kernel起始地址和 kernel的大小為什么要指定
kernel大小呢?因?yàn)閗ernel首先要被copy到boot_mem_base + 0x8000的
地方,然后在 boot_mem_base + 0x100開始的地方設(shè)置內(nèi)核啟動(dòng)參數(shù),要
拷貝 kernel,當(dāng)然需要知道 kernel的大小啦,這個(gè)大小不一定非要和 kernel
實(shí)際大小一樣,但是必須許大于等于 kernel的大小,單位字節(jié)
reset 命令
復(fù)位Arm9系統(tǒng)
part 命令
part 命令用于對(duì)分區(qū)進(jìn)行操作。通過part help 可以顯示系統(tǒng)對(duì)part
系列命令的幫助提示。
• part show 顯示分區(qū)信息
• part add partname part_start_addr part_leng flag 添加分區(qū),參數(shù)flag為分區(qū)類型
• part del partname 刪除分區(qū)
• part save 保存part 分區(qū)信息
• part reset 恢復(fù)為系統(tǒng)默認(rèn)part分區(qū)
----------------------------------------------------------------------
load 命令
load 命令下載程序到存儲(chǔ)器中(Flash 或者RAM 中)。通過load help可以顯示系統(tǒng)對(duì)load 系列命令的幫助提示。
• load flash partname x 使用xmodom 協(xié)議通過串口下載文件并且燒寫帶partname 分區(qū)
例:
-load flash vivi x??????????//注意,這里的vivi是分區(qū)名
-load flash kernel x
-load flash root x
• load ram partname or addr x 使用xmodom 協(xié)議通過串口下載文件到內(nèi)存中
param命令
param 命令用于對(duì)bootloader 的參數(shù)進(jìn)行操作。通過param help 可以
顯示系統(tǒng)對(duì)param 系列命令的幫助提示。
• param show 命令用于顯示bootloader 的當(dāng)前參數(shù)值。
• param reset 將bootloader 參數(shù)值復(fù)位成系統(tǒng)默認(rèn)值。
• param set paramname value 設(shè)置參數(shù)值
• param set linux_cmd_line ”linux bootparam” 設(shè)置linux 啟動(dòng)參數(shù),參數(shù)linux bootparam 表示要設(shè)置的linux kernel 命令行參數(shù)。
• param save 保存參數(shù)設(shè)置
boot命令
boot命令用于引導(dǎo)linux kernel 啟動(dòng)。通過boot help 可以顯示系統(tǒng)對(duì)boot命令的幫助提示。
• boot 默認(rèn)方式啟動(dòng)
• boot ram ramaddr lenth 啟動(dòng)sdram 中ramaddr處長度為lenth的linux 內(nèi)核。
bon 命令
bon 命令用于對(duì)bon分區(qū)進(jìn)行操作。通過bon help 可以顯示系統(tǒng)對(duì)bon
系列命令的幫助提示。bon分區(qū)是nand flash 設(shè)備的一種簡(jiǎn)單的分區(qū)管理方式。
• bon part info命令用于顯示系統(tǒng)中bon分區(qū)的信息。
• bon part命令用于建立系統(tǒng)的bon分區(qū)表。bon分區(qū)表被保存到nand flash
的最后0x4000 個(gè)字節(jié)中,即在nand flash的0x03FFC000 ~0x33FFFFFF 范圍內(nèi),分區(qū)表起始于0x03FFC000。
例如分為3個(gè)區(qū):0~192k,192k~1M,1M~
vivi> bon part 0 192k 1M
doing partition
size = 0
size = 196608
size = 1048576
check bad block
part = 0 end = 196608
go 命令
go 命令用于跳轉(zhuǎn)到指定地址處執(zhí)行該地址處的代碼。
• go addr 跳轉(zhuǎn)到指定地址運(yùn)行該處程序。
???????????? 還可以通過tftp的方式,開發(fā)板啟動(dòng)后,按下除回車之外任意鍵,進(jìn)入vivi的shell,然后輸入
load???????? flash???????? vivi???????? t
???????????? windows 里面命令行里進(jìn)入c;\(之前先把mytftp.exe拷到c盤根目錄下),輸入:
mytftp???????? -i???????? 192.168.0.15????????PUT vivi
???????????? 開發(fā)板上的VIVI在完成接收新的VIVI文件后將把其燒入VIVI分區(qū)中,通過tftp比jtag快多了,一秒鐘就搞定了!^_^
下面是超級(jí)中斷的vivi tftp方式燒寫界面
vivi> load flash vivi t
Ready for downloading using tftp...
Waiting...
Setting MAC address...
Type "tftp -i 192.168.0.15?????? PUT {input-filename}" on the host PC
Press ESC key to exit
Starting the TFTP download...
..
Received 12ea0 Bytes, END...
Download end
Downloaded file at 0x30000000, size = 77472 bytes
Found block size = 0x00014000
Erasing...???????? ... done
Writing...???????? ... done
Written 77472 bytes
vivi>
?????????? 燒寫wince啟動(dòng)的eboot同樣采用tftp的方式,
load?????? flash?????? eboot?????? t
mytftp?????? -i?????? 192.168.0.15?????? PUT?????? eboot.nb0
?????????? 燒寫wince的鏡像文件到nand flash,有兩種方法,一是直接燒寫沒有展開的wince鏡像nk.bin到開發(fā)板,第二種方法是通過platform??????builder將展開后的nk.bin燒寫到開發(fā)板。
?????????? 開發(fā)板的vivi有三個(gè)相關(guān)的參數(shù):
wince_part_name????????(指定wince鏡像nk.bin放置的分區(qū)名);
wincesource????????????????(0表示從以太網(wǎng)啟動(dòng)wince,如果用platform builder來引導(dǎo)wince則需選0;
???????????????????????????????????? 1表示從 nand flash啟動(dòng));
wincedeploy????????????????(0表示存放的nk.bin文件沒展開,1表示展開的,展開后wince啟動(dòng)會(huì)比較快)
??????????方法一,直接燒寫
??????????先定義好參數(shù),輸入命令如下:
param?????? set?????? wince_part_name?????? wince
param?????? wincesource?????? 1????????//表示從nand flash啟動(dòng)
param?????? wincedeploy?????? 0????//表示鏡像沒展開
param?????? save
??????????設(shè)好參數(shù)后,通過tftp燒寫
load?????? flash?????? wince?????? t
mytftp?????? -i?????? 192.168.0.15?????? PUT?????? nk.bin
?????????? vivi將把nk,bin燒寫到nand flash中,在直接從nand flash讀取nk,bin,展開到sdram中,然后從sdram中啟動(dòng)wince。這樣啟動(dòng)時(shí)間一般在45妙左右。
??????????還可以用開發(fā)板的vivi提供的wince?????? rewrite命令,將nk.bin展開后保存到flash中,以后nand flash啟動(dòng)展開后的nk.bin。
?????????? 方法二,利用plarform??????builder直接下載展開的鏡像
先定義好參數(shù),輸入命令如下:
param?????? set?????? wince_part_name?????? wince
param?????? wincesource?????? 0????????//表示從以太網(wǎng)啟動(dòng)
param?????? wincedeploy?????? 1??????//表示鏡像已展開
param?????? save
???????? 接下來需要操作plarform builder,eboot從plarform builder下載nk.bin后將把展開后的文件燒寫到nand flash中,以后將直接從nand flash讀取展開后的nk.bin并啟動(dòng),啟動(dòng)時(shí)間一般是15秒左右。
???????? 下面是platform builder(一下簡(jiǎn)稱PB),的具體操作看開發(fā)板的用戶說明。^_^不想打了!
附錄:vivi 命令詳解
在超級(jí)終端界面中鍵入任意鍵(除enter外)進(jìn)入vivi命令界面
vivi>
輸入help 可以見到開發(fā)板上的vivi 支持的命令
vivi> help
Usage:
??????cpu [{cmds}]????????????????????????????-- Manage cpu clocks
??????bon [{cmds}]????????????????????????????-- Manage the bon file system
??????reset?????????????????????????????????? -- Reset the system
??????param [set|show|save|reset]???????????? -- set/get parameter
??????part [add|del|show|reset]?????????????? -- Manage MTD partitions
??????mem [{cmds}]????????????????????????????-- Manage Memory
??????load {...}??????????????????????????????-- Load a file to RAM/Flash
??????go <addr> <a0> <a1> <a2> <a3>?????????? -- jump to <addr>
??????dump <addr> <length>????????????????????-- Display (hex dump) a range of memory.
??????call <addr> <a0> <a1> <a2> <a3>???????? -- jump_with_return to <addr>
??????boot [{cmds}]?????????????????????????? -- Booting linux kernel
??????help [{cmds}]?????????????????????????? -- Help about help?
??????display <vga|pal>?????????????????????? -- Set the display format
??????flash [{cmds}]??????????????????????????-- Manage Flash memory
??????wince [rewrite]???????????????????????????????? -- boot wince from ethernet or f
lash by eboot
??????os <linux|wince>????????????????????????-- set the default os
mem命令 mem系列命令用于對(duì)系統(tǒng)的內(nèi)存進(jìn)行操作
vivi> mem help
'mem' command usage:
----------command parameter list-----------
mem size -- probe dram size
mem read <addr> -- read a word(4bytes) from special dram address
mem write <addr> <vlaue> -- write a word(4bytes) into special dram
address
mem test <start_addr> <size> [<quiet>] -- memory test
-----------sub command list-------------
mem cmp <dst_addr> <src_addr> <length> -- compare
mem copy <dst_addr> <src_addr> <length> -- copy memory from
<src_addr> to <dst_a
ddr>
mem info -- display memory infomation
mem reset -- reset memory control register
mem search <start_addr> <end_addr> <value> -- search memory address
that contain value in the special memory address range
vivi>mem info
RAM Information:????????????????
Default ram size: 64M????????????????????
Real ram size???? : 64M
Free memory?????? : 61M
RAM mapped to???????????? : 0x30000000 - 0x34000000????(SDRAM映射的地址范圍)
Flash memory mapped to????: 0x10000000 - 0x12000000????(Flash映射的地址范圍)
Available memory region : 0x30000000 - 0x33de4000???? (用戶可以使用的有效的內(nèi)存區(qū)域地址范圍)
Stack base address????????: 0x33debffc???? (棧的基地址)
Current stack pointer???? : 0x33debc78??????(當(dāng)前棧指針的值)
Memory control register vlaues???? (S3C2410的內(nèi)存控制寄存器的當(dāng)前值)
?????? BWSCON = 0x22111d10
???? BANKCON0 = 0x00000700
???? BANKCON1 = 0x00000700
???? BANKCON2 = 0x00001f7c
???? BANKCON3 = 0x00000700
???? BANKCON4 = 0x00000700
???? BANKCON5 = 0x00000700
???? BANKCON6 = 0x00018001
???? BANKCON7 = 0x00018001
??????REFRESH = 0x008e01e9
???? BANKSIZE = 0x000000b1
?????? MRSRB6 = 0x00000020
?????? MRSRB7 = 0x00000020
vivi>
load命令
load 命令下載程序到存儲(chǔ)器中(Flash或者 RAM中)過 load help 可
以顯示系統(tǒng)對(duì) load系列命令的幫助提示??
vivi> load help
Usage:
?? load <flash|ram> [ <partname> | <addr> <size> ] <x|y|z|t>
????????關(guān)鍵字參數(shù) flash 和 ram 用于選擇目標(biāo)介質(zhì)是 Flash還是 RAM
到 Flash 中還是先要下載到 RAM 中(臨時(shí)下載到 SDRAM 的起始地址處
0x30000000保存一下,然后再轉(zhuǎn)寫入 FLASH),然后再通過 Flash驅(qū)動(dòng)程
序提供的寫操作,將數(shù)據(jù)寫入到 Flash中選擇了 flash 參數(shù),那名
到底是對(duì) NOR Flash操作還是對(duì) NAND Flash操作,這取決于 bootloader
編譯的過程中,所進(jìn)行的配置,這就要看配置的時(shí)候?qū)TD設(shè)備配置成NOR
Flash還是 NAND Flash??
????????參數(shù) partname 和 addr size二者選其一,partname是 vivi的 MTD分區(qū)表中
的分區(qū)名 MTD分區(qū)的起始地址;addr和
size是讓用戶自己選擇下載的目標(biāo)存儲(chǔ)區(qū)域,而不是使用 vivi的 MTD分區(qū),
addr表示下載的目標(biāo)地址,size表示下載的文件大小,單位字節(jié),size參數(shù)
不一定非要指定得和待下載的文件大小一樣大,但是一定要大于等于待下載
的文件的字節(jié)數(shù)??
????????關(guān)鍵字參數(shù) x y 和 z 分別表示從 PC主機(jī)上下載文件到 ARMer9系統(tǒng)中,
采用哪種串行文件傳送協(xié)議,x表示采用XModem協(xié)議,y表示采用Ymodem協(xié)議,z表示采用 ZModem協(xié)議請(qǐng)注意目前該 bootloader????vivi 還沒有
實(shí)現(xiàn) ZModem協(xié)議,所以該參數(shù)只能選擇 x和 y??
???????? 關(guān)鍵字參數(shù)t應(yīng)該是開發(fā)板vivi增加的,是tftp下載!很好用的!速度比jtag要快多了!
開發(fā)板的vivi eboot燒寫都要通過load命令
如:要燒寫eboot.nb0到flash的eboot分區(qū),首先在超級(jí)中斷進(jìn)入vivi的shell,輸入
load????flash?? eboot????t
使用交叉網(wǎng)線連好PC與開發(fā)板,把eboot.nb0拷貝到于mtftp.exe同一目錄下,在windows命令行輸入
mytftp????-i???? 192.168.0.15????PUT?? eboot.nb0
等待燒寫完成即可
????param命令????param系列命令用于對(duì) bootloader的參數(shù)進(jìn)行操作 通過 param help可以
顯示系統(tǒng)對(duì) param系列命令的幫助提示??
vivi>param help
Usage:
param help????????????????????????-- Help aout 'param' command
param reset?????????????????????? -- Reset parameter table to default table
param save????????????????????????-- Save parameter table to flash memeory
param set <name> <value>??????????-- Reset value of parameter
param set linux_cmd_line "..."????-- set boot parameter
param set wince_part_name "..."?????????? -- set the name of partition wich wince
will be stored in
param show????????????????????????-- Display parameter table
vivi>
param show 可以顯示可以設(shè)置的參數(shù)
vivi> param show????????????????
Number of parameters: 19
name??????????????????????:????????????hex?????????????? integer
-------------------------------------------------------------
mach_type???????????????? :???????? 000000c1??????????193?????? //機(jī)器類型,193表示 S3C2410的開發(fā)系統(tǒng)??
media_type????????????????:???????? 00000003?????????? 3?????? //媒介類型,即指示了bootloader從哪個(gè)媒介啟動(dòng)起來的??
boot_mem_base???????????? :???????? 30000000??????????????805306368
/*引導(dǎo) linux 內(nèi)核啟動(dòng)的基地址映像將被從 Flash 中拷貝到
boot_mem_base + 0x8000 的地址處,內(nèi)核參數(shù)將被建立在
boot_mem_base+0x100的地址處????*/
baudrate??????????????????:???????? 0001c200???????????????? 115200????????//bootloader啟動(dòng)時(shí),默認(rèn)設(shè)置的串口波特率
/*以上三個(gè)參數(shù)和 Xmodem文件傳送協(xié)議相關(guān)??
xmodem_one_nak表示接收端(即 ARMer9系統(tǒng)這端)發(fā)起第一個(gè) NAK信
號(hào)給發(fā)送端(即 PC主機(jī)這端)到啟動(dòng);
xmodem_initial_timeout表示接收端(即 ARMer9系統(tǒng)這端)啟動(dòng) XModem
協(xié)議后的初始超時(shí)時(shí)間,第一次接收超時(shí)按照這個(gè)參數(shù)的值來設(shè)置,但是超
時(shí)一次后,后面的超時(shí)時(shí)間就不再是這個(gè)參數(shù)的值了,而是xmodem_timeout
的值;
xmodem_timeout表示在接收端(即 ARMer9系統(tǒng)這端)等待接受發(fā)送端(即
PC 主機(jī)這端)送來的數(shù)據(jù)字節(jié)過程中,如果發(fā)生了一次超時(shí),那么后面的
超時(shí)時(shí)間就設(shè)置成參數(shù) xmodem_timeout的值了??
這三個(gè)參數(shù)不需要修改,系統(tǒng)默認(rèn)的值就可以了,不建議用戶去修改這幾個(gè)
參數(shù)值????*/
xmodem_one_nak????????????:???????? 00000000??????????????????????0
xmodem_initial_timeout????:???????? 000493e0???????????????? 300000
xmodem_timeout????????????:???????? 000f4240????????????????1000000
/*ymodem_initial_timeout
ymodem_initial_timeout 表示接收端(即 ARMer9 系統(tǒng)這端)在啟動(dòng)了
YModem協(xié)議后的初始超時(shí)時(shí)間??
這個(gè)參數(shù)不需要修改,系統(tǒng)默認(rèn)的值就可以了,不建議用戶去修改這幾個(gè)參
數(shù)值????*/
ymodem_initial_timeout????:???????? 0016e360????????????????1500000
/*boot_delay是 bootloader自動(dòng)引導(dǎo) linux kernel功能的延時(shí)時(shí)間*/
boot_delay????????????????:???????? 00300000????????????????3145728
os????????????????????????:???????? WINCE
display?????????????????? :???????? VGA 640X480
ip????????????????????????:???????? 192.168.0.15
host??????????????????????:???????? 192.168.0.1
gw????????????????????????:???????? 192.168.0.1
mask??????????????????????:???????? 255.255.255.0
wincesource?????????????? :???????? 00000001??????????????????????1
wincedeploy?????????????? :???????? 00000000??????????????????????0
mac?????????????????????? :???????? 00:00:c0:ff:ee:08
wince part name: wince
Linux command line: noinitrd root=/dev/mtdblock/3 init=/linuxrc console=ttyS0
/*Linux command line 不是bootloader的參數(shù),而是kernel啟動(dòng)的時(shí)候,kernel
不能自動(dòng)檢測(cè)到的必要的參數(shù)些參數(shù)需要 bootloader 傳遞給 linux
kernel Linux command line就是設(shè)置 linux kernel啟動(dòng)時(shí),需要手工
傳給 kernel的參數(shù)????*/
part命令 part命令用于對(duì) MTD分區(qū)進(jìn)行操作
vivi> part show
mtdpart info. (7 partitions)
name????????????????offset??????????size??????????flag
------------------------------------------------
vivi??????????????: 0x00000000??????0x00020000?????? 0????128k
param???????????? : 0x00020000??????0x00010000?????? 0???? 64k
kernel????????????: 0x00030000??????0x001c0000?????? 0??????1M+768k
root??????????????: 0x00200000??????0x00400000?????? 0??????4M
eboot???????????? : 0x00600000??????0x00080000?????? 0????512k
wince???????????? : 0x00680000??????0x01c80000?????? 0???? 28M+512k
flashdisk???????? : 0x02300000??????0x01d00000?????? 0???? 29M
MTD分區(qū)是針對(duì) Flash(NOR Flash或者 NAND Flash)的分區(qū),以便于對(duì)
bootloader對(duì) Flash進(jìn)行管理??
part add命令用于添加一個(gè) MTD分區(qū)??
命令的詳細(xì)格式如下:
part add????name????offset????size????flag
參數(shù) name是要添加的分區(qū)的分區(qū)名??
參數(shù) offset 是要添加的分區(qū)的偏移(相對(duì)于整個(gè) MTD 設(shè)備的起始地址的偏
移,在 ARMer9系統(tǒng)中不論配置的是 NOR Flash,還是 NAND Flash,都只
注冊(cè)了一個(gè) mtd_info結(jié)構(gòu),也就是說邏輯上只有一個(gè) MTD設(shè)備,這個(gè) MTD
設(shè)備的起始地址為 0x00000000);
參數(shù) size是要添加的分區(qū)的大小,單位為字節(jié);
參數(shù) flag是要添加的分區(qū)的標(biāo)志,參數(shù) flag的取值只能為以下字符串(請(qǐng)注
意必須為大寫)或者通過連接符 |
這個(gè)標(biāo)志表示了這個(gè)分區(qū)的用途
“BONFS”???? 作為 BONFS文件系統(tǒng)的分區(qū);
“JFFS2”???? 作為 JFFS2文件系統(tǒng)的分區(qū);
“LOCK”??????該分區(qū)被鎖定了;
“RAM”?????? 該分區(qū)作為RAM使用??
例如,添加新的 MTD分區(qū) mypart??
vivi> part add mypart 0x500000 0x100000 JFFS2
mypart: offset = 0x00500000, size = 0x00100000, flag = 8
part del命令用于刪除一個(gè) MTD分區(qū)??
命令的詳細(xì)格式如下:
part del????name
參數(shù) name是要?jiǎng)h除的 MTD分區(qū)的分區(qū)名
bon 命令用于對(duì) BON分區(qū)進(jìn)行操作
BON 分區(qū)是只針對(duì) NAND Flash 設(shè)備的一種簡(jiǎn)單的分區(qū)管理方式
Bootloader支持BON分區(qū),同時(shí)Samsung提供的針對(duì)S3C2410移植的linux
版本中也支持了 BON分區(qū),這樣就可以利用 BON分區(qū)來加載 linux的 root
根文件系統(tǒng)了 MTD 分區(qū)和 BON 分區(qū),當(dāng) ARMer9 系統(tǒng)配置
了 NAND Flash 作為 MTD 設(shè)備,那么 MTD 分區(qū)和 BON 分區(qū)都在同一片
NAND Flash上??
boot命令用于引導(dǎo)linux kernel啟動(dòng)
vivi>boot help
Usage:
????boot <media_type> -- booting kernel
??????value of media_type (location of kernel image
???????? 1 = RAM
???????? 2 = NOR Flash Memory
???????? 3 = SMC (On S3C2410)
????boot <media_type> <mtd_part> -- boot from specific mtd partition
????boot <media_type> <addr> <size>
????boot help -- help about 'boot' command
boot 關(guān)鍵字后面 media_type 必須指定媒介類型,因?yàn)?boot命令對(duì)不同媒介的處理方式
是不同的,例如如果 kernel在 SDRAM中,那么 boot執(zhí)行的過程中就可以
跳過拷貝 kernel映像到 SDRAM中這一步驟了??
Boot命令識(shí)別的媒介類型有以下三種:
ram 表示從 RAM(在 ARMer9系統(tǒng)中即為 SDRAM)中啟動(dòng)linux kernel,
linux kernel必須要放在 RAM中??
nor 表示從NOR Flash中啟動(dòng) linux kernel,linux kernel必須已經(jīng)被燒寫到
了 NOR Flash中??
smc表示從 NAND Flash中啟動(dòng) linux kernel,linux kernel必須已經(jīng)被燒寫
到了 NAND Flash中??
取值參數(shù)意義如下:
參數(shù) mtd_part是 MTD分區(qū)的名 MTD設(shè)備的一個(gè)
分區(qū)中啟動(dòng) linux kernel,kernel映像必須被放到這個(gè)分區(qū)中;
<addr> <size>分別表示 linux kernel起始地址和 kernel的大小為什么要指定
kernel大小呢?因?yàn)閗ernel首先要被copy到boot_mem_base + 0x8000的
地方,然后在 boot_mem_base + 0x100開始的地方設(shè)置內(nèi)核啟動(dòng)參數(shù),要
拷貝 kernel,當(dāng)然需要知道 kernel的大小啦,這個(gè)大小不一定非要和 kernel
實(shí)際大小一樣,但是必須許大于等于 kernel的大小,單位字節(jié)
reset 命令
復(fù)位Arm9系統(tǒng)
part 命令
part 命令用于對(duì)分區(qū)進(jìn)行操作。通過part help 可以顯示系統(tǒng)對(duì)part
系列命令的幫助提示。
• part show 顯示分區(qū)信息
• part add partname part_start_addr part_leng flag 添加分區(qū),參數(shù)flag為分區(qū)類型
• part del partname 刪除分區(qū)
• part save 保存part 分區(qū)信息
• part reset 恢復(fù)為系統(tǒng)默認(rèn)part分區(qū)
----------------------------------------------------------------------
load 命令
load 命令下載程序到存儲(chǔ)器中(Flash 或者RAM 中)。通過load help可以顯示系統(tǒng)對(duì)load 系列命令的幫助提示。
• load flash partname x 使用xmodom 協(xié)議通過串口下載文件并且燒寫帶partname 分區(qū)
例:
-load flash vivi x??????????//注意,這里的vivi是分區(qū)名
-load flash kernel x
-load flash root x
• load ram partname or addr x 使用xmodom 協(xié)議通過串口下載文件到內(nèi)存中
param命令
param 命令用于對(duì)bootloader 的參數(shù)進(jìn)行操作。通過param help 可以
顯示系統(tǒng)對(duì)param 系列命令的幫助提示。
• param show 命令用于顯示bootloader 的當(dāng)前參數(shù)值。
• param reset 將bootloader 參數(shù)值復(fù)位成系統(tǒng)默認(rèn)值。
• param set paramname value 設(shè)置參數(shù)值
• param set linux_cmd_line ”linux bootparam” 設(shè)置linux 啟動(dòng)參數(shù),參數(shù)linux bootparam 表示要設(shè)置的linux kernel 命令行參數(shù)。
• param save 保存參數(shù)設(shè)置
boot命令
boot命令用于引導(dǎo)linux kernel 啟動(dòng)。通過boot help 可以顯示系統(tǒng)對(duì)boot命令的幫助提示。
• boot 默認(rèn)方式啟動(dòng)
• boot ram ramaddr lenth 啟動(dòng)sdram 中ramaddr處長度為lenth的linux 內(nèi)核。
bon 命令
bon 命令用于對(duì)bon分區(qū)進(jìn)行操作。通過bon help 可以顯示系統(tǒng)對(duì)bon
系列命令的幫助提示。bon分區(qū)是nand flash 設(shè)備的一種簡(jiǎn)單的分區(qū)管理方式。
• bon part info命令用于顯示系統(tǒng)中bon分區(qū)的信息。
• bon part命令用于建立系統(tǒng)的bon分區(qū)表。bon分區(qū)表被保存到nand flash
的最后0x4000 個(gè)字節(jié)中,即在nand flash的0x03FFC000 ~0x33FFFFFF 范圍內(nèi),分區(qū)表起始于0x03FFC000。
例如分為3個(gè)區(qū):0~192k,192k~1M,1M~
vivi> bon part 0 192k 1M
doing partition
size = 0
size = 196608
size = 1048576
check bad block
part = 0 end = 196608
go 命令
go 命令用于跳轉(zhuǎn)到指定地址處執(zhí)行該地址處的代碼。
• go addr 跳轉(zhuǎn)到指定地址運(yùn)行該處程序。
轉(zhuǎn)載于:https://www.cnblogs.com/googlegis/archive/2008/11/28/2979218.html
總結(jié)
以上是生活随笔為你收集整理的vivi eboot wince 烧写的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 萌姬大战获得的兑换码怎么使用
- 下一篇: 联众老板的话