在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > OK6410燒寫裸機程序到nandflash

            OK6410燒寫裸機程序到nandflash

            作者: 時間:2016-11-21 來源:網(wǎng)絡(luò) 收藏
            初學嵌入式我是從裸機程序開始的,剛學的時候也怎么也不知道將裸機程序在開發(fā)板上面運行。網(wǎng)上其實有很多辦法,但是我測試過都是在UBOOT的基礎(chǔ)上用DNW或者jlink等工具拷貝到內(nèi)存中去運行,重啟開發(fā)板后就失效了,而且UBOOT會對開發(fā)板的運行環(huán)境初始化,這樣的運行環(huán)境,和我們把程序燒寫到nandflash里去運行是不一樣的。如:uboot會對CPU時鐘初始化,讓cpu運行在532mhz下(或者其他的頻率),而從nandflash運行程序我們一般都沒有初始化CPU時鐘,則CPU靠外部晶振提供時鐘,我們的OK6410開發(fā)板的外部晶振是12Mhz(XTO,XTI引腳),差別之大則體現(xiàn)在運行速度上面。

            下面我們介紹怎么將我們寫好的bin文件燒寫到nandflash的前8KB中去,當開發(fā)板啟動后,它會直接拷貝nandflash的前8K到sram中運行。

            本文引用地址:http://www.biyoush.com/article/201611/319456.htm

            先上程序

            c程序:

            [cpp]view plaincopy
            1. //led.c一個簡單的循環(huán)點燈程序
            2. #definerGPMCON(*(volatileunsigned*)(0x7F008820))
            3. #definerGPMDAT(*(volatileunsigned*)(0x7F008824))
            4. #definerGPMPUD(*(volatileunsigned*)(0x7F008828))
            5. voidmsDelay(inttime)
            6. {
            7. volatileunsignedinti,j;
            8. for(i=0;i<20000;i++)
            9. for(j=0;j
            10. }
            11. voidGPIO_Init(void)
            12. {
            13. rGPMCON=0x11111;
            14. rGPMPUD=0x00;
            15. rGPMDAT=0X1F;
            16. }
            17. voidLedTest(void)
            18. {
            19. volatileunsignedinti;
            20. while(1)
            21. {
            22. for(i=0;i<4;i++)
            23. {
            24. rGPMDAT=~(1<
            25. msDelay(10);
            26. }
            27. }
            28. }
            29. voidmain(void)
            30. {
            31. GPIO_Init();
            32. LedTest();
            33. }

            匯編程序:

            [plain]view plaincopy
            1. .globl_start
            2. _start:
            3. ldrr0,=0x70000000
            4. orrr0,r0,#0x13
            5. mcrp15,0,r0,c15,c2,4@256M(0x70000000-0x7fffffff)
            6. ldrr0,=0x7E004000
            7. movr1,#0
            8. strr1,[r0]
            9. ldrsp,=8*1024
            10. blmain
            11. halt:
            12. bhalt

            Makefile:

            [plain]view plaincopy
            1. led.bin:start.oled.o
            2. arm-linux-ld-Ttext0-oled.elfstart.oled.o
            3. arm-linux-objcopy-Obinaryled.elfled.bin
            4. arm-linux-objdump-Dled.elf>led.dis
            5. start.o:start.S
            6. arm-linux-gcc-ostart.ostart.S-c-O2
            7. led.o:led.c
            8. arm-linux-gcc-oled.oled.c-c-O2
            9. clean:
            10. rm*.oled.elfled.binled.dis


            將上述3個文件放在Linux上面編譯生成led.bin,然后將led.bin拷貝到windows目錄下。

            我們假設(shè)你的OK6410什么程序都沒有(開機沒有任何反應(yīng))。

            我們將三個線連接到開發(fā)板上面:

            1,開發(fā)板電源

            2,USB轉(zhuǎn)串口線:一端連接電腦USB口,一端連接開發(fā)板。

            3,USB device線:一端連接電腦USB口,一端連接開發(fā)板。(就是開發(fā)板上面的小USB口,dnw下載程序用,請根據(jù)飛凌的資料安裝好驅(qū)動程序)

            硬件連接完畢,現(xiàn)在介紹燒寫步驟。

            燒寫原理:用Linux的UBOOT命令 nand 燒寫程序到開發(fā)板。

            1,通過SD_Writer.exe將mmc.bin燒寫到SD 卡中,將開發(fā)板設(shè)置到SD卡啟動。(具體方法參見飛凌開發(fā)板linux3.0.1用戶手冊.pdf)

            2,將SD卡安裝到開發(fā)板中并啟動,快速敲空格鍵讓開發(fā)板停留在uboot的啟動畫面,如下圖所示。

            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ù)默認16進制)

            6,將開發(fā)板設(shè)置到nandflash啟動,并啟動開發(fā)板,你就可以看到4盞LED燈在循環(huán)亮。

            因水平有限,如果有什么錯誤請各位網(wǎng)友指出,我看到一定會更正。

            ---------------------------------------------------------------------------

            2012/08/08修改說明:由于OK6410采用的是每頁4KB的nandflash,而CPU默認支持最大2KB每頁的nandflash,而造成第一種方法燒寫超過2KB,則方法失效,這是第二種方法,可以很好的兼容大的bin文件。




            評論


            技術(shù)專區(qū)

            關(guān)閉