最新免费av在线观看,亚洲综合一区成人在线,中文字幕精品无码一区二区三区,中文人妻av高清一区二区,中文字幕乱偷无码av先锋

登錄 免費注冊 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機 | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

at91FR40162 Flash 燒寫

作者:randomkuan 欄目:ARM技術(shù)
AT91FR40162.html">AT91FR40162 FLASH.html">FLASH 燒寫
AT91FR40162,嵌入了一個AT49BV1604A/1614A FLASH.html">FLASH,想使用JTAG接口自己寫程序燒寫這個FLASH.html">FLASH,在網(wǎng)上看到這樣一篇文章:

通常所說的JTAG大致分兩類,一類用于測試芯片的電氣特性,檢測芯片是否有問題;一類用于Debug;一般支持JTAG的CPU內(nèi)都包含了這兩個模塊。
   一個含有JTAG Debug接口模塊的CPU,只要時鐘正常,就可以通過JTAG接口訪問CPU的內(nèi)部寄存器和掛在CPU總線上的設(shè)備,如FLASH,RAM,SOC(比如4510B,44Box,AT91M系列)內(nèi)置模塊的寄存器,象UART,Timers,GPIO等等的寄存器。
   
   上面說的只是JTAG接口所具備的能力,要使用這些功能,還需要軟件的配合,具體實現(xiàn)的功能則由具體的軟件決定。
   例如下載程序到RAM功能。了解SOC的都知道,要使用外接的RAM,需要參照SOC DataSheet的寄存器說明,設(shè)置RAM的基地址,總線寬度,訪問速度等等。有的SOC則還需要Remap,才能正常工作。運行Firmware時,這些設(shè)置由Firmware的初始化程序完成。但如果使用JTAG接口,相關(guān)的寄存器可能還處在上電值,甚至?xí)r錯誤值,RAM不能正常工作,所以下載必然要失敗。要正常使用,先要想辦法設(shè)置RAM。在ADW中,可以在Command窗口通過Let 命令設(shè)置,在AXD中可以在Command窗口通過Set命令設(shè)置。
   下面是一個設(shè)置AT91M40800的命令序列,關(guān)閉中斷,設(shè)置CS0-CS3, 并進行Remap,適用于AXD(ADS帶的Debug)
       setmem 0xfffff124,0xFFFFFFFF,32   ---關(guān)閉所有中斷
    setmem 0xffe00000,0x0100253d,32   ---設(shè)置CS0
    setmem 0xffe00004,0x02002021,32   ---設(shè)置CS1
    setmem 0xffe00008,0x0300253d,32  ---設(shè)置CS2
    setmem 0xffe0000C,0x0400253d,32   ---設(shè)置CS3
    setmem 0xffe00020,1,32    ---Remap
如果要在ADW(SDT帶的DEBUG)中使用,則要改為:
       let 0xfffff124=0xFFFFFFFF   ---關(guān)閉所有中斷
    let 0xffe00000=0x0100253d   ---設(shè)置CS0
    let 0xffe00004=0x02002021   ---設(shè)置CS1
    let 0xffe00008=0x0300253d   ---設(shè)置CS2
    let 0xffe0000C=0x0400253d   ---設(shè)置CS3
    let 0xffe00020=1      ---Remap
為了方便使用,可以將上述命令保存為一個文件config.ini, 在Console窗口輸入 ob config.ini 即可執(zhí)行。
    使用其他debug,大體類似,只是命令和命令的格式不同。

   
    設(shè)置RAM時,設(shè)置的寄存器以及寄存器的值必須和要運行程序的設(shè)置一致。一般編譯生成的目標(biāo)文件是ELF格式,或類似的格式,包含有目標(biāo)碼運行地址,運行地址在LINK時候確定。Debug下載程序時根據(jù)ELF文件中的地址信息下載程序到指定的地址。如果在把RAM的基地址設(shè)置為0x10000000, 而在編譯的時候指定Firmware的開始地址在0x02000000, 下載的時候,目標(biāo)碼將被下載到0x02000000,顯然下載會失敗。
    
    通過JTAG下載程序前應(yīng)關(guān)閉所有中斷,這一點和Firmware初始化時關(guān)閉中斷的原因相同。在使用JTAG接口的時候,各中斷的使能未知,尤其是FLASH里有可執(zhí)行碼的情況,可能會有一些中斷被使能。使用JTAG下載完代碼,要執(zhí)行時,有可能因為未完成初始化就產(chǎn)生了中斷,導(dǎo)致程序異常。所以,需要先關(guān)閉中斷,一般通過設(shè)置SOC的中斷控制寄存器完成。
    在Firmware中,在Enable某個中斷之前,最好先清除Pending的中斷,避免意外。
    使用JTAG寫FLASH.html">FLASH。在理論上,通過JTAG可以訪問CPU總線上的所有設(shè)備,所以應(yīng)該可以寫FLASH,但是FLASH寫入方式和RAM大不相同,需要特殊的命令,而且不同的FLASH擦除,編程命令不同,而且塊的大小,數(shù)量也不同,很難提供這一項功能。所以一般Debug不提供寫FLASH.html">FLASH功能,或者僅支持少量幾種FLASH.html">FLASH。
    
   目前就我知道的,針對ARM,只有FLASH.html">FLASHPGM這個軟件提供寫FLASH功能,但使用也非常麻煩。AXD,ADW都不提供寫FLASH功能。我寫FLASH.html">FLASH的方法時是,自己寫一個簡單的程序,專門用于寫目標(biāo)板的FLASH,利用JTAG接口,下載到目標(biāo)板,再把要燒寫的目標(biāo)碼裝成BIN格式,也下到目標(biāo)板(地址和燒FLASH的程序的地址不同),然后運行已經(jīng)下載的燒FLASH的程序。使用這種方式,比起FLASH.html">FLASHPGM的寫FLASH.html">FLASH,速度似乎要快一些。
      我在一片使用At91 CPU,帶網(wǎng)口的板子上寫FLASH.html">FLASH的實例:

      先使用AXD+JTAG調(diào)試好BootRom,及FLASH.html">FLASHPgm(極簡單的小程序),寫B(tài)ootRom到FLASH.html">FLASH的步驟如下:

      1)設(shè)置CS0(FLASH)為0x01000000,CS1(RAM)為0x02000000,大小為1MByte

      2)將寫FLASH.html">FLASH的小程序FLASH.html">FLASHPgm.Elf(定位在0x02000000)下載。FLASH.html">FLASHPgm的功能是將0x02080000~0x0208ffff的數(shù)據(jù)按FLASH.html">FLASH的方式寫入到0x01000000~0x0107ffff,還會通過控制LED的閃爍顯示寫入的成功與失敗。

      3)將BootRom.Elf 轉(zhuǎn)成Bin文件,BootRom.Bin,使用AXD的"File"->"Load MEMORY from file...", 將BootRom.Bin下載到起始地址為0x02080000。

      4)執(zhí)行程序。這時被執(zhí)行的是FLASH.html">FLASHPgm.Elf,BootRom.Bin被寫入到FLASH.html">FLASH



我的問題是:我按照他的方法好像不行,ob config.ini里面用不用remap那個命令,因為我覺得用了它,內(nèi)部ram的地址是映射到0了,而不是0x02000000,FLASH.html">FLASH的地址是0x01000000。如果不用remap命令,AT91FR40162復(fù)位后,ram的地址應(yīng)該是0x300000,FLASH.html">FLASH的地址是0x0啊,到底這些地址的關(guān)系是怎樣的,具體操作又如何(我想把字庫燒進FLASH.html">FLASH里面)?請高手指明方向!



參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
三行簡單的程序,幫忙解釋一下,謝謝...
2440 MIPS是多少?用Mplayer播放器可實現(xiàn) 30frame/s 嗎?
2440 可解D1嗎?
沒有MMU,用uclinux系統(tǒng)的話,是不是每調(diào)一次程序都要重?zé)到y(tǒng)
有用windows enbeded xp 做嵌入開發(fā)的么?
免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入


Copyright © 1998-2006 udpf.com.cn 浙ICP證030469號