新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > S3c2410軟件調(diào)試總結(jié)

S3c2410軟件調(diào)試總結(jié)

作者: 時(shí)間:2013-12-05 來源:網(wǎng)絡(luò) 收藏

初始化串口
串口統(tǒng)一選用UART0,模式采用115200、1bit STOP、No Parity。

最后跳轉(zhuǎn)到我們自己的應(yīng)用程序!

附:我得程序所使用的地址空間結(jié)構(gòu)以及MMU中C、B的設(shè)置:

Blank Area: RW_FAULT 0x5b000000 ~ 0xffffffff

Sram SFR: NCNB 0x40000000 ~ 0x4affffff

Blank Area: RW_FAULT 0x34000000 ~ 0x3fffffff

Int_Vec, Stack, MTT: CNB 0x33f00000 ~ 0x33ffffff

SDRAM Download: NCNB 0x31000000 ~ 0x33efffff

SDRAM Exec RW: CB 0x30800000 ~ 0x30ffffff

SDRAM Exec R CNB 0x30000000 ~ 0x307fffff

Bank5, FPGA: NCNB 0x28000000 ~ 0x2fffffff

Bank4, FPGA: NCNB 0x20000000 ~ 0x27ffffff

Bank3, Bottom NIC: NCNB 0x18000000 ~ 0x1fffffff

Bank2, Bottom Flash: CNB 0x10000000 ~ 0x17ffffff

Bank1, Bottom Sram: CNB 0x08000000 ~ 0x0fffffff

Bank0, Flash or Sram: CNB 0x00000000 ~ 0x07ffffff


Nor Flash Bootloader
這是我著手寫的第一個(gè)程序,我的想法是讓這個(gè)程序同時(shí)支持通過串口對(duì)Nand 和 Nor FLASH的燒寫,如果不進(jìn)行任何燒寫,那么就跳到Nor Flash的第二個(gè)section啟動(dòng)應(yīng)用程序,這樣一來,即使脫離JTGA,我也可以使用串口進(jìn)行盲調(diào)。

由于有現(xiàn)成的初始化文件和flash燒寫的示例程序,開發(fā)起來還比較快。當(dāng)然也遇到了一些問題,一開始連flash的device ID都讀不出來,后來發(fā)現(xiàn)我指針沒有定義成volatile類型,flash的操作時(shí)序被編譯器優(yōu)化了;再者,在對(duì)Nor Flash進(jìn)行操作時(shí),bank0在MMU中的類型一定要設(shè)為NCNB,這樣比較保險(xiǎn)。

遇到最大的問題就是下面的了,一開始我用jtag把程序下載到0x30000000的地方運(yùn)行,對(duì)Nor Flash的燒寫完全正常,但是當(dāng)把程序下載到Nor Flash中啟動(dòng)運(yùn)行后,再對(duì)Nor Flash的section 2進(jìn)行燒寫時(shí),就出現(xiàn)了問題。所幸沒多久我就意識(shí)到了問題,將程序放在Nor Flash中運(yùn)行,同時(shí)有對(duì)同一片flash進(jìn)行操作,那么操作時(shí)序勢(shì)必會(huì)被CPU的指令讀取時(shí)序所破壞,因此程序必須搬運(yùn)到SDRAM中運(yùn)行。

但是啟動(dòng)地址有必須是零地址,所以我采用了前文提到的scatter文件的方法,將非必要的代碼全部搬到sdram中運(yùn)行,scf文件格式就是前文中的那個(gè)。當(dāng)然采用了__main的入口,調(diào)用了ADS的鏈接庫(kù),讓它幫忙建立程序的運(yùn)行環(huán)境。

至此,Nor Flash Bootloader可以順暢無憂的實(shí)現(xiàn)其功能了。


上一頁(yè) 1 2 3 下一頁(yè)

關(guān)鍵詞: S3c2410 軟件調(diào)試

評(píng)論


相關(guān)推薦

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

關(guān)閉