米+油 发表于 2012-12-16 14:39:39

Keil是如何实现TQ2440对sdram的在线调试的

其实重点就是那个EXT_RAM.ini文件,这个文件在Keil的安装目录的board目录下有。是官方给的一个文件。 通过对jlink的commander的操作,我们知道可以直接对s3c2440的寄存器进行写,所以,keil就是利用的这个功能,而要对那些寄存器进行写操作,才能让sdram正常工作呢,上面的ini文件就是实现这个功能的。下面是ini文件做的事。_WDWORD(0x40000000,0xEAFFFFFE);      // Load RAM addr 0with branch to itselfCPSR = 0x000000D3;                      // Disable interruptsPC= 0x40000000;                     // Position PC to start of RAM_WDWORD(0x53000000,0x00000021);      // Enable Watchdog//g, 0                                    // Wait for Watchdog to resetchip Init();                                 // InitializememoryLOAD output\ledflow.axfINCREMENTAL         // Download programSetupForStart();                        // Setup for Running
大体知道是通过init()函数对SDRAM进行了初始化(就是对MEMORY CONTROLLER寄存器进行了配置),然后把我们的调试程序*.axf文件下载到sdram中去,最后把PC=0X30000000 FUNC void SetupForStart (void) { // <o> Program Entry Point PC = 0x30000000;} 点了debug后,就会先运行这个ini文件,使sdram正常工作,然后pc到0X30000000后就开始跑,在debug选项中√上了Run to main(),所以程序会在main外停下来,下面就可以实现程序的单步了。

embedsky_lhh 发表于 2012-12-17 09:05:31

顶顶,这个必须顶顶
页: [1]
查看完整版本: Keil是如何实现TQ2440对sdram的在线调试的