新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > S3c2410软件调试总结

S3c2410软件调试总结

作者:时间:2013-12-05来源:网络收藏

初始化串口
串口统一选用UART0,模式采用115200、1bit STOP、No Parity。

最后跳转到我们自己的应用程序!

附:我得程序所使用的地址空间结构以及MMU中C、B的设置:

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
这是我着手写的第一个程序,我的想法是让这个程序同时支持通过串口对Nand 和 Nor FLASH的烧写,如果不进行任何烧写,那么就跳到Nor Flash的第二个section启动应用程序,这样一来,即使脱离JTGA,我也可以使用串口进行盲调。

由于有现成的初始化文件和flash烧写的示例程序,开发起来还比较快。当然也遇到了一些问题,一开始连flash的device ID都读不出来,后来发现我指针没有定义成volatile类型,flash的操作时序被编译器优化了;再者,在对Nor Flash进行操作时,bank0在MMU中的类型一定要设为NCNB,这样比较保险。

遇到最大的问题就是下面的了,一开始我用jtag把程序下载到0x30000000的地方运行,对Nor Flash的烧写完全正常,但是当把程序下载到Nor Flash中启动运行后,再对Nor Flash的section 2进行烧写时,就出现了问题。所幸没多久我就意识到了问题,将程序放在Nor Flash中运行,同时有对同一片flash进行操作,那么操作时序势必会被CPU的指令读取时序所破坏,因此程序必须搬运到SDRAM中运行。

但是启动地址有必须是零地址,所以我采用了前文提到的scatter文件的方法,将非必要的代码全部搬到sdram中运行,scf文件格式就是前文中的那个。当然采用了__main的入口,调用了ADS的链接库,让它帮忙建立程序的运行环境。

至此,Nor Flash Bootloader可以顺畅无忧的实现其功能了。


上一页 1 2 3 下一页

关键词: S3c2410 软件调试

评论


相关推荐

技术专区

关闭