vivi eboot wince 烧写
生活随笔
收集整理的這篇文章主要介紹了
vivi eboot wince 烧写
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
今天燒vivi文件到nand flash去,用sjf2410wiggler燒,雖然還不懂編譯vivi,但是先試試燒個vivi bootloader進去玩玩!連上wiggler jtag線,先用H-jtag 軟件檢測到了芯片,然后在命令行打上sjf2410wiggler /f: c:\vivi 進行燒寫。
???????????? 還可以通過tftp的方式,開發板啟動后,按下除回車之外任意鍵,進入vivi的shell,然后輸入
load???????? flash???????? vivi???????? t
???????????? windows 里面命令行里進入c;\(之前先把mytftp.exe拷到c盤根目錄下),輸入:
mytftp???????? -i???????? 192.168.0.15????????PUT vivi
???????????? 開發板上的VIVI在完成接收新的VIVI文件后將把其燒入VIVI分區中,通過tftp比jtag快多了,一秒鐘就搞定了!^_^
下面是超級中斷的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啟動的eboot同樣采用tftp的方式,
load?????? flash?????? eboot?????? t
mytftp?????? -i?????? 192.168.0.15?????? PUT?????? eboot.nb0
?????????? 燒寫wince的鏡像文件到nand flash,有兩種方法,一是直接燒寫沒有展開的wince鏡像nk.bin到開發板,第二種方法是通過platform??????builder將展開后的nk.bin燒寫到開發板。
?????????? 開發板的vivi有三個相關的參數:
wince_part_name????????(指定wince鏡像nk.bin放置的分區名);
wincesource????????????????(0表示從以太網啟動wince,如果用platform builder來引導wince則需選0;
???????????????????????????????????? 1表示從 nand flash啟動);
wincedeploy????????????????(0表示存放的nk.bin文件沒展開,1表示展開的,展開后wince啟動會比較快)
??????????方法一,直接燒寫
??????????先定義好參數,輸入命令如下:
param?????? set?????? wince_part_name?????? wince
param?????? wincesource?????? 1????????//表示從nand flash啟動
param?????? wincedeploy?????? 0????//表示鏡像沒展開
param?????? save
??????????設好參數后,通過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中啟動wince。這樣啟動時間一般在45妙左右。
??????????還可以用開發板的vivi提供的wince?????? rewrite命令,將nk.bin展開后保存到flash中,以后nand flash啟動展開后的nk.bin。
?????????? 方法二,利用plarform??????builder直接下載展開的鏡像
先定義好參數,輸入命令如下:
param?????? set?????? wince_part_name?????? wince
param?????? wincesource?????? 0????????//表示從以太網啟動
param?????? wincedeploy?????? 1??????//表示鏡像已展開
param?????? save
???????? 接下來需要操作plarform builder,eboot從plarform builder下載nk.bin后將把展開后的文件燒寫到nand flash中,以后將直接從nand flash讀取展開后的nk.bin并啟動,啟動時間一般是15秒左右。
???????? 下面是platform builder(一下簡稱PB),的具體操作看開發板的用戶說明。^_^不想打了!
附錄:vivi 命令詳解
在超級終端界面中鍵入任意鍵(除enter外)進入vivi命令界面
vivi>
輸入help 可以見到開發板上的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系列命令用于對系統的內存進行操作
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???? (用戶可以使用的有效的內存區域地址范圍)
Stack base address????????: 0x33debffc???? (棧的基地址)
Current stack pointer???? : 0x33debc78??????(當前棧指針的值)
Memory control register vlaues???? (S3C2410的內存控制寄存器的當前值)
?????? 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 命令下載程序到存儲器中(Flash或者 RAM中)過 load help 可
以顯示系統對 load系列命令的幫助提示??
vivi> load help
Usage:
?? load <flash|ram> [ <partname> | <addr> <size> ] <x|y|z|t>
????????關鍵字參數 flash 和 ram 用于選擇目標介質是 Flash還是 RAM
到 Flash 中還是先要下載到 RAM 中(臨時下載到 SDRAM 的起始地址處
0x30000000保存一下,然后再轉寫入 FLASH),然后再通過 Flash驅動程
序提供的寫操作,將數據寫入到 Flash中選擇了 flash 參數,那名
到底是對 NOR Flash操作還是對 NAND Flash操作,這取決于 bootloader
編譯的過程中,所進行的配置,這就要看配置的時候將MTD設備配置成NOR
Flash還是 NAND Flash??
????????參數 partname 和 addr size二者選其一,partname是 vivi的 MTD分區表中
的分區名 MTD分區的起始地址;addr和
size是讓用戶自己選擇下載的目標存儲區域,而不是使用 vivi的 MTD分區,
addr表示下載的目標地址,size表示下載的文件大小,單位字節,size參數
不一定非要指定得和待下載的文件大小一樣大,但是一定要大于等于待下載
的文件的字節數??
????????關鍵字參數 x y 和 z 分別表示從 PC主機上下載文件到 ARMer9系統中,
采用哪種串行文件傳送協議,x表示采用XModem協議,y表示采用Ymodem協議,z表示采用 ZModem協議請注意目前該 bootloader????vivi 還沒有
實現 ZModem協議,所以該參數只能選擇 x和 y??
???????? 關鍵字參數t應該是開發板vivi增加的,是tftp下載!很好用的!速度比jtag要快多了!
開發板的vivi eboot燒寫都要通過load命令
如:要燒寫eboot.nb0到flash的eboot分區,首先在超級中斷進入vivi的shell,輸入
load????flash?? eboot????t
使用交叉網線連好PC與開發板,把eboot.nb0拷貝到于mtftp.exe同一目錄下,在windows命令行輸入
mytftp????-i???? 192.168.0.15????PUT?? eboot.nb0
等待燒寫完成即可
????param命令????param系列命令用于對 bootloader的參數進行操作 通過 param help可以
顯示系統對 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 可以顯示可以設置的參數
vivi> param show????????????????
Number of parameters: 19
name??????????????????????:????????????hex?????????????? integer
-------------------------------------------------------------
mach_type???????????????? :???????? 000000c1??????????193?????? //機器類型,193表示 S3C2410的開發系統??
media_type????????????????:???????? 00000003?????????? 3?????? //媒介類型,即指示了bootloader從哪個媒介啟動起來的??
boot_mem_base???????????? :???????? 30000000??????????????805306368
/*引導 linux 內核啟動的基地址映像將被從 Flash 中拷貝到
boot_mem_base + 0x8000 的地址處,內核參數將被建立在
boot_mem_base+0x100的地址處????*/
baudrate??????????????????:???????? 0001c200???????????????? 115200????????//bootloader啟動時,默認設置的串口波特率
/*以上三個參數和 Xmodem文件傳送協議相關??
xmodem_one_nak表示接收端(即 ARMer9系統這端)發起第一個 NAK信
號給發送端(即 PC主機這端)到啟動;
xmodem_initial_timeout表示接收端(即 ARMer9系統這端)啟動 XModem
協議后的初始超時時間,第一次接收超時按照這個參數的值來設置,但是超
時一次后,后面的超時時間就不再是這個參數的值了,而是xmodem_timeout
的值;
xmodem_timeout表示在接收端(即 ARMer9系統這端)等待接受發送端(即
PC 主機這端)送來的數據字節過程中,如果發生了一次超時,那么后面的
超時時間就設置成參數 xmodem_timeout的值了??
這三個參數不需要修改,系統默認的值就可以了,不建議用戶去修改這幾個
參數值????*/
xmodem_one_nak????????????:???????? 00000000??????????????????????0
xmodem_initial_timeout????:???????? 000493e0???????????????? 300000
xmodem_timeout????????????:???????? 000f4240????????????????1000000
/*ymodem_initial_timeout
ymodem_initial_timeout 表示接收端(即 ARMer9 系統這端)在啟動了
YModem協議后的初始超時時間??
這個參數不需要修改,系統默認的值就可以了,不建議用戶去修改這幾個參
數值????*/
ymodem_initial_timeout????:???????? 0016e360????????????????1500000
/*boot_delay是 bootloader自動引導 linux kernel功能的延時時間*/
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的參數,而是kernel啟動的時候,kernel
不能自動檢測到的必要的參數些參數需要 bootloader 傳遞給 linux
kernel Linux command line就是設置 linux kernel啟動時,需要手工
傳給 kernel的參數????*/
part命令 part命令用于對 MTD分區進行操作
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分區是針對 Flash(NOR Flash或者 NAND Flash)的分區,以便于對
bootloader對 Flash進行管理??
part add命令用于添加一個 MTD分區??
命令的詳細格式如下:
part add????name????offset????size????flag
參數 name是要添加的分區的分區名??
參數 offset 是要添加的分區的偏移(相對于整個 MTD 設備的起始地址的偏
移,在 ARMer9系統中不論配置的是 NOR Flash,還是 NAND Flash,都只
注冊了一個 mtd_info結構,也就是說邏輯上只有一個 MTD設備,這個 MTD
設備的起始地址為 0x00000000);
參數 size是要添加的分區的大小,單位為字節;
參數 flag是要添加的分區的標志,參數 flag的取值只能為以下字符串(請注
意必須為大寫)或者通過連接符 |
這個標志表示了這個分區的用途
“BONFS”???? 作為 BONFS文件系統的分區;
“JFFS2”???? 作為 JFFS2文件系統的分區;
“LOCK”??????該分區被鎖定了;
“RAM”?????? 該分區作為RAM使用??
例如,添加新的 MTD分區 mypart??
vivi> part add mypart 0x500000 0x100000 JFFS2
mypart: offset = 0x00500000, size = 0x00100000, flag = 8
part del命令用于刪除一個 MTD分區??
命令的詳細格式如下:
part del????name
參數 name是要刪除的 MTD分區的分區名
bon 命令用于對 BON分區進行操作
BON 分區是只針對 NAND Flash 設備的一種簡單的分區管理方式
Bootloader支持BON分區,同時Samsung提供的針對S3C2410移植的linux
版本中也支持了 BON分區,這樣就可以利用 BON分區來加載 linux的 root
根文件系統了 MTD 分區和 BON 分區,當 ARMer9 系統配置
了 NAND Flash 作為 MTD 設備,那么 MTD 分區和 BON 分區都在同一片
NAND Flash上??
boot命令用于引導linux kernel啟動
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 關鍵字后面 media_type 必須指定媒介類型,因為 boot命令對不同媒介的處理方式
是不同的,例如如果 kernel在 SDRAM中,那么 boot執行的過程中就可以
跳過拷貝 kernel映像到 SDRAM中這一步驟了??
Boot命令識別的媒介類型有以下三種:
ram 表示從 RAM(在 ARMer9系統中即為 SDRAM)中啟動linux kernel,
linux kernel必須要放在 RAM中??
nor 表示從NOR Flash中啟動 linux kernel,linux kernel必須已經被燒寫到
了 NOR Flash中??
smc表示從 NAND Flash中啟動 linux kernel,linux kernel必須已經被燒寫
到了 NAND Flash中??
取值參數意義如下:
參數 mtd_part是 MTD分區的名 MTD設備的一個
分區中啟動 linux kernel,kernel映像必須被放到這個分區中;
<addr> <size>分別表示 linux kernel起始地址和 kernel的大小為什么要指定
kernel大小呢?因為kernel首先要被copy到boot_mem_base + 0x8000的
地方,然后在 boot_mem_base + 0x100開始的地方設置內核啟動參數,要
拷貝 kernel,當然需要知道 kernel的大小啦,這個大小不一定非要和 kernel
實際大小一樣,但是必須許大于等于 kernel的大小,單位字節
reset 命令
復位Arm9系統
part 命令
part 命令用于對分區進行操作。通過part help 可以顯示系統對part
系列命令的幫助提示。
• part show 顯示分區信息
• part add partname part_start_addr part_leng flag 添加分區,參數flag為分區類型
• part del partname 刪除分區
• part save 保存part 分區信息
• part reset 恢復為系統默認part分區
----------------------------------------------------------------------
load 命令
load 命令下載程序到存儲器中(Flash 或者RAM 中)。通過load help可以顯示系統對load 系列命令的幫助提示。
• load flash partname x 使用xmodom 協議通過串口下載文件并且燒寫帶partname 分區
例:
-load flash vivi x??????????//注意,這里的vivi是分區名
-load flash kernel x
-load flash root x
• load ram partname or addr x 使用xmodom 協議通過串口下載文件到內存中
param命令
param 命令用于對bootloader 的參數進行操作。通過param help 可以
顯示系統對param 系列命令的幫助提示。
• param show 命令用于顯示bootloader 的當前參數值。
• param reset 將bootloader 參數值復位成系統默認值。
• param set paramname value 設置參數值
• param set linux_cmd_line ”linux bootparam” 設置linux 啟動參數,參數linux bootparam 表示要設置的linux kernel 命令行參數。
• param save 保存參數設置
boot命令
boot命令用于引導linux kernel 啟動。通過boot help 可以顯示系統對boot命令的幫助提示。
• boot 默認方式啟動
• boot ram ramaddr lenth 啟動sdram 中ramaddr處長度為lenth的linux 內核。
bon 命令
bon 命令用于對bon分區進行操作。通過bon help 可以顯示系統對bon
系列命令的幫助提示。bon分區是nand flash 設備的一種簡單的分區管理方式。
• bon part info命令用于顯示系統中bon分區的信息。
• bon part命令用于建立系統的bon分區表。bon分區表被保存到nand flash
的最后0x4000 個字節中,即在nand flash的0x03FFC000 ~0x33FFFFFF 范圍內,分區表起始于0x03FFC000。
例如分為3個區: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 命令用于跳轉到指定地址處執行該地址處的代碼。
• go addr 跳轉到指定地址運行該處程序。
???????????? 還可以通過tftp的方式,開發板啟動后,按下除回車之外任意鍵,進入vivi的shell,然后輸入
load???????? flash???????? vivi???????? t
???????????? windows 里面命令行里進入c;\(之前先把mytftp.exe拷到c盤根目錄下),輸入:
mytftp???????? -i???????? 192.168.0.15????????PUT vivi
???????????? 開發板上的VIVI在完成接收新的VIVI文件后將把其燒入VIVI分區中,通過tftp比jtag快多了,一秒鐘就搞定了!^_^
下面是超級中斷的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啟動的eboot同樣采用tftp的方式,
load?????? flash?????? eboot?????? t
mytftp?????? -i?????? 192.168.0.15?????? PUT?????? eboot.nb0
?????????? 燒寫wince的鏡像文件到nand flash,有兩種方法,一是直接燒寫沒有展開的wince鏡像nk.bin到開發板,第二種方法是通過platform??????builder將展開后的nk.bin燒寫到開發板。
?????????? 開發板的vivi有三個相關的參數:
wince_part_name????????(指定wince鏡像nk.bin放置的分區名);
wincesource????????????????(0表示從以太網啟動wince,如果用platform builder來引導wince則需選0;
???????????????????????????????????? 1表示從 nand flash啟動);
wincedeploy????????????????(0表示存放的nk.bin文件沒展開,1表示展開的,展開后wince啟動會比較快)
??????????方法一,直接燒寫
??????????先定義好參數,輸入命令如下:
param?????? set?????? wince_part_name?????? wince
param?????? wincesource?????? 1????????//表示從nand flash啟動
param?????? wincedeploy?????? 0????//表示鏡像沒展開
param?????? save
??????????設好參數后,通過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中啟動wince。這樣啟動時間一般在45妙左右。
??????????還可以用開發板的vivi提供的wince?????? rewrite命令,將nk.bin展開后保存到flash中,以后nand flash啟動展開后的nk.bin。
?????????? 方法二,利用plarform??????builder直接下載展開的鏡像
先定義好參數,輸入命令如下:
param?????? set?????? wince_part_name?????? wince
param?????? wincesource?????? 0????????//表示從以太網啟動
param?????? wincedeploy?????? 1??????//表示鏡像已展開
param?????? save
???????? 接下來需要操作plarform builder,eboot從plarform builder下載nk.bin后將把展開后的文件燒寫到nand flash中,以后將直接從nand flash讀取展開后的nk.bin并啟動,啟動時間一般是15秒左右。
???????? 下面是platform builder(一下簡稱PB),的具體操作看開發板的用戶說明。^_^不想打了!
附錄:vivi 命令詳解
在超級終端界面中鍵入任意鍵(除enter外)進入vivi命令界面
vivi>
輸入help 可以見到開發板上的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系列命令用于對系統的內存進行操作
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???? (用戶可以使用的有效的內存區域地址范圍)
Stack base address????????: 0x33debffc???? (棧的基地址)
Current stack pointer???? : 0x33debc78??????(當前棧指針的值)
Memory control register vlaues???? (S3C2410的內存控制寄存器的當前值)
?????? 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 命令下載程序到存儲器中(Flash或者 RAM中)過 load help 可
以顯示系統對 load系列命令的幫助提示??
vivi> load help
Usage:
?? load <flash|ram> [ <partname> | <addr> <size> ] <x|y|z|t>
????????關鍵字參數 flash 和 ram 用于選擇目標介質是 Flash還是 RAM
到 Flash 中還是先要下載到 RAM 中(臨時下載到 SDRAM 的起始地址處
0x30000000保存一下,然后再轉寫入 FLASH),然后再通過 Flash驅動程
序提供的寫操作,將數據寫入到 Flash中選擇了 flash 參數,那名
到底是對 NOR Flash操作還是對 NAND Flash操作,這取決于 bootloader
編譯的過程中,所進行的配置,這就要看配置的時候將MTD設備配置成NOR
Flash還是 NAND Flash??
????????參數 partname 和 addr size二者選其一,partname是 vivi的 MTD分區表中
的分區名 MTD分區的起始地址;addr和
size是讓用戶自己選擇下載的目標存儲區域,而不是使用 vivi的 MTD分區,
addr表示下載的目標地址,size表示下載的文件大小,單位字節,size參數
不一定非要指定得和待下載的文件大小一樣大,但是一定要大于等于待下載
的文件的字節數??
????????關鍵字參數 x y 和 z 分別表示從 PC主機上下載文件到 ARMer9系統中,
采用哪種串行文件傳送協議,x表示采用XModem協議,y表示采用Ymodem協議,z表示采用 ZModem協議請注意目前該 bootloader????vivi 還沒有
實現 ZModem協議,所以該參數只能選擇 x和 y??
???????? 關鍵字參數t應該是開發板vivi增加的,是tftp下載!很好用的!速度比jtag要快多了!
開發板的vivi eboot燒寫都要通過load命令
如:要燒寫eboot.nb0到flash的eboot分區,首先在超級中斷進入vivi的shell,輸入
load????flash?? eboot????t
使用交叉網線連好PC與開發板,把eboot.nb0拷貝到于mtftp.exe同一目錄下,在windows命令行輸入
mytftp????-i???? 192.168.0.15????PUT?? eboot.nb0
等待燒寫完成即可
????param命令????param系列命令用于對 bootloader的參數進行操作 通過 param help可以
顯示系統對 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 可以顯示可以設置的參數
vivi> param show????????????????
Number of parameters: 19
name??????????????????????:????????????hex?????????????? integer
-------------------------------------------------------------
mach_type???????????????? :???????? 000000c1??????????193?????? //機器類型,193表示 S3C2410的開發系統??
media_type????????????????:???????? 00000003?????????? 3?????? //媒介類型,即指示了bootloader從哪個媒介啟動起來的??
boot_mem_base???????????? :???????? 30000000??????????????805306368
/*引導 linux 內核啟動的基地址映像將被從 Flash 中拷貝到
boot_mem_base + 0x8000 的地址處,內核參數將被建立在
boot_mem_base+0x100的地址處????*/
baudrate??????????????????:???????? 0001c200???????????????? 115200????????//bootloader啟動時,默認設置的串口波特率
/*以上三個參數和 Xmodem文件傳送協議相關??
xmodem_one_nak表示接收端(即 ARMer9系統這端)發起第一個 NAK信
號給發送端(即 PC主機這端)到啟動;
xmodem_initial_timeout表示接收端(即 ARMer9系統這端)啟動 XModem
協議后的初始超時時間,第一次接收超時按照這個參數的值來設置,但是超
時一次后,后面的超時時間就不再是這個參數的值了,而是xmodem_timeout
的值;
xmodem_timeout表示在接收端(即 ARMer9系統這端)等待接受發送端(即
PC 主機這端)送來的數據字節過程中,如果發生了一次超時,那么后面的
超時時間就設置成參數 xmodem_timeout的值了??
這三個參數不需要修改,系統默認的值就可以了,不建議用戶去修改這幾個
參數值????*/
xmodem_one_nak????????????:???????? 00000000??????????????????????0
xmodem_initial_timeout????:???????? 000493e0???????????????? 300000
xmodem_timeout????????????:???????? 000f4240????????????????1000000
/*ymodem_initial_timeout
ymodem_initial_timeout 表示接收端(即 ARMer9 系統這端)在啟動了
YModem協議后的初始超時時間??
這個參數不需要修改,系統默認的值就可以了,不建議用戶去修改這幾個參
數值????*/
ymodem_initial_timeout????:???????? 0016e360????????????????1500000
/*boot_delay是 bootloader自動引導 linux kernel功能的延時時間*/
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的參數,而是kernel啟動的時候,kernel
不能自動檢測到的必要的參數些參數需要 bootloader 傳遞給 linux
kernel Linux command line就是設置 linux kernel啟動時,需要手工
傳給 kernel的參數????*/
part命令 part命令用于對 MTD分區進行操作
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分區是針對 Flash(NOR Flash或者 NAND Flash)的分區,以便于對
bootloader對 Flash進行管理??
part add命令用于添加一個 MTD分區??
命令的詳細格式如下:
part add????name????offset????size????flag
參數 name是要添加的分區的分區名??
參數 offset 是要添加的分區的偏移(相對于整個 MTD 設備的起始地址的偏
移,在 ARMer9系統中不論配置的是 NOR Flash,還是 NAND Flash,都只
注冊了一個 mtd_info結構,也就是說邏輯上只有一個 MTD設備,這個 MTD
設備的起始地址為 0x00000000);
參數 size是要添加的分區的大小,單位為字節;
參數 flag是要添加的分區的標志,參數 flag的取值只能為以下字符串(請注
意必須為大寫)或者通過連接符 |
這個標志表示了這個分區的用途
“BONFS”???? 作為 BONFS文件系統的分區;
“JFFS2”???? 作為 JFFS2文件系統的分區;
“LOCK”??????該分區被鎖定了;
“RAM”?????? 該分區作為RAM使用??
例如,添加新的 MTD分區 mypart??
vivi> part add mypart 0x500000 0x100000 JFFS2
mypart: offset = 0x00500000, size = 0x00100000, flag = 8
part del命令用于刪除一個 MTD分區??
命令的詳細格式如下:
part del????name
參數 name是要刪除的 MTD分區的分區名
bon 命令用于對 BON分區進行操作
BON 分區是只針對 NAND Flash 設備的一種簡單的分區管理方式
Bootloader支持BON分區,同時Samsung提供的針對S3C2410移植的linux
版本中也支持了 BON分區,這樣就可以利用 BON分區來加載 linux的 root
根文件系統了 MTD 分區和 BON 分區,當 ARMer9 系統配置
了 NAND Flash 作為 MTD 設備,那么 MTD 分區和 BON 分區都在同一片
NAND Flash上??
boot命令用于引導linux kernel啟動
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 關鍵字后面 media_type 必須指定媒介類型,因為 boot命令對不同媒介的處理方式
是不同的,例如如果 kernel在 SDRAM中,那么 boot執行的過程中就可以
跳過拷貝 kernel映像到 SDRAM中這一步驟了??
Boot命令識別的媒介類型有以下三種:
ram 表示從 RAM(在 ARMer9系統中即為 SDRAM)中啟動linux kernel,
linux kernel必須要放在 RAM中??
nor 表示從NOR Flash中啟動 linux kernel,linux kernel必須已經被燒寫到
了 NOR Flash中??
smc表示從 NAND Flash中啟動 linux kernel,linux kernel必須已經被燒寫
到了 NAND Flash中??
取值參數意義如下:
參數 mtd_part是 MTD分區的名 MTD設備的一個
分區中啟動 linux kernel,kernel映像必須被放到這個分區中;
<addr> <size>分別表示 linux kernel起始地址和 kernel的大小為什么要指定
kernel大小呢?因為kernel首先要被copy到boot_mem_base + 0x8000的
地方,然后在 boot_mem_base + 0x100開始的地方設置內核啟動參數,要
拷貝 kernel,當然需要知道 kernel的大小啦,這個大小不一定非要和 kernel
實際大小一樣,但是必須許大于等于 kernel的大小,單位字節
reset 命令
復位Arm9系統
part 命令
part 命令用于對分區進行操作。通過part help 可以顯示系統對part
系列命令的幫助提示。
• part show 顯示分區信息
• part add partname part_start_addr part_leng flag 添加分區,參數flag為分區類型
• part del partname 刪除分區
• part save 保存part 分區信息
• part reset 恢復為系統默認part分區
----------------------------------------------------------------------
load 命令
load 命令下載程序到存儲器中(Flash 或者RAM 中)。通過load help可以顯示系統對load 系列命令的幫助提示。
• load flash partname x 使用xmodom 協議通過串口下載文件并且燒寫帶partname 分區
例:
-load flash vivi x??????????//注意,這里的vivi是分區名
-load flash kernel x
-load flash root x
• load ram partname or addr x 使用xmodom 協議通過串口下載文件到內存中
param命令
param 命令用于對bootloader 的參數進行操作。通過param help 可以
顯示系統對param 系列命令的幫助提示。
• param show 命令用于顯示bootloader 的當前參數值。
• param reset 將bootloader 參數值復位成系統默認值。
• param set paramname value 設置參數值
• param set linux_cmd_line ”linux bootparam” 設置linux 啟動參數,參數linux bootparam 表示要設置的linux kernel 命令行參數。
• param save 保存參數設置
boot命令
boot命令用于引導linux kernel 啟動。通過boot help 可以顯示系統對boot命令的幫助提示。
• boot 默認方式啟動
• boot ram ramaddr lenth 啟動sdram 中ramaddr處長度為lenth的linux 內核。
bon 命令
bon 命令用于對bon分區進行操作。通過bon help 可以顯示系統對bon
系列命令的幫助提示。bon分區是nand flash 設備的一種簡單的分區管理方式。
• bon part info命令用于顯示系統中bon分區的信息。
• bon part命令用于建立系統的bon分區表。bon分區表被保存到nand flash
的最后0x4000 個字節中,即在nand flash的0x03FFC000 ~0x33FFFFFF 范圍內,分區表起始于0x03FFC000。
例如分為3個區: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 命令用于跳轉到指定地址處執行該地址處的代碼。
• go addr 跳轉到指定地址運行該處程序。
轉載于:https://www.cnblogs.com/googlegis/archive/2008/11/28/2979218.html
總結
以上是生活随笔為你收集整理的vivi eboot wince 烧写的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 萌姬大战获得的兑换码怎么使用
- 下一篇: 火影忍者花灯解谜第5关怎么过