OK6410燒寫裸機(jī)程序到nandflash
先上程序
c程序:
- //led.c
一個(gè)簡(jiǎn)單的循環(huán)點(diǎn)燈程序 - #define
rGPMCON (*(volatile unsigned *)(0x7F008820)) - #define
rGPMDAT (*(volatile unsigned *)(0x7F008824)) - #define
rGPMPUD (*(volatile unsigned *)(0x7F008828)) - void
msDelay(int time) - {
volatile unsigned int i,j; for(i = 0; i < 20000; i++) for(j=0; j - }
- void
GPIO_Init(void) - {
rGPMCON = 0x11111; rGPMPUD = 0x00; rGPMDAT = 0X1F; - }
- void
LedTest(void) - {
volatile unsigned int i; while (1) { for(i=0; i<4; i++) { rGPMDAT = ~(1< msDelay(10); } } - }
- void
main(void) - {
GPIO_Init(); LedTest(); - }
匯編程序:
- .globl
_start - _start:
ldr r0, =0x70000000 orr r0, r0, #0x13 mcr p15,0,r0,c15,c2,4 @ 256M(0x70000000-0x7fffffff) ldr r0, =0x7E004000 mov r1, #0 str r1, [r0] ldr sp, =8*1024 bl main - halt:
b halt
Makefile:
- led.bin:
start.o led.o arm-linux-ld -Ttext 0 -o led.elf start.o led.o arm-linux-objcopy -O binary led.elf led.bin arm-linux-objdump -D led.elf > led.dis - start.o
: start.S arm-linux-gcc -o start.o start.S -c -O2 - led.o
: led.c arm-linux-gcc -o led.o led.c -c -O2 - clean:
rm *.o led.elf led.bin led.dis
我們假設(shè)你的OK6410什么程序都沒有(開機(jī)沒有任何反應(yīng))。
我們將三個(gè)線連接到開發(fā)板上面:
1,開發(fā)板電源線
2,USB轉(zhuǎn)串口線:一端連接電腦USB口,一端連接開發(fā)板。
3,USB device線:一端連接電腦USB口,一端連接開發(fā)板。(就是開發(fā)板上面的小USB口,dnw下載程序用,請(qǐng)根據(jù)飛凌的資料安裝好驅(qū)動(dòng)程序)
硬件連接完畢,現(xiàn)在介紹燒寫步驟。
燒寫原理:用Linux的UBOOT命令 nand 燒寫程序到開發(fā)板。
1,通過SD_Writer.exe將mmc.bin燒寫到SD 卡中
2,將SD卡安裝到開發(fā)板中并啟動(dòng),快速敲空格鍵讓開發(fā)板停留在uboot的啟動(dòng)畫面,如下圖所示。
3,輸入dnw 50008000 下載你要燒寫的程序,如圖:
然后從dnw的usbport->Transmit->Transmit發(fā)送你要生成的led.bin文件。如下圖
4,輸入 nand erase 0 100000 擦除nandflash前1Mb空間。
5,輸入 nand write.uboot 50008000 0 100000 將內(nèi)存地址50008000中的1Mb數(shù)據(jù)寫到nandflash的0~100000空間中。(即前1Mb中,uboot中輸入的數(shù)據(jù)默認(rèn)16進(jìn)制)
6,將開發(fā)板設(shè)置到nandflash啟動(dòng),并啟動(dòng)開發(fā)板,你就可以看到4盞LED燈在循環(huán)亮。
因水平有限,如果有什么錯(cuò)誤請(qǐng)各位網(wǎng)友指出,我看到一定會(huì)更正。
---------------------------------------------------------------------------
2012/08/08修改說明:由于OK6410采用的是每頁4KB的nandflash,而CPU默認(rèn)支持最大2KB每頁的nandflash,而造成第一種方法燒寫超過2KB,則方法失效,這是第二種方法,可以很好的兼容大的bin文件。
評(píng)論