其实早在以前学单片机的时候就听说过调试器功能的强大,可是对于单片机Keil可以直接在线仿真,而无需硬件的支持,但arm9貌似不同,脱离硬件点击调试的话会报错,提示目标没有权限,呵呵,可能是我还没找到方法吧,如果有谁知道的希望能告诉我,先谢谢啦!
下面简单说说怎么实现硬件调试
①首先如果你使用的是Keil MDK4.11的可以直接去目录Keil\ARM\Boards\Samsung\S3C2440\RTX_Blinky拷贝一个名叫Ext_RAM.ini的文件,将其放到工程目录下,如果是其他版本的话,那么首先新建一个文件,命名Ext_RAM.ini,向其中写入一下内容,如下
FUNC void SetupForStart (void) { // <o> Program Entry Point PC = 0x30000000; } FUNC void Init (void) { _WDWORD(0x4A000008, 0xFFFFFFFF); // Disable All Interrupts _WDWORD(0x53000000, 0x00000000); // Disable Watchdog Timer // Clock Setup // FCLK = 300 MHz, HCLK = 100 MHz, PCLK = 50 MHz _WDWORD(0x4C000000, 0x0FFF0FFF); // LOCKTIME _WDWORD(0x4C000014, 0x0000000F); // CLKDIVN _WDWORD(0x4C000004, 0x00043011); // MPLLCON _WDWORD(0x4C000008, 0x00038021); // UPLLCON _WDWORD(0x4C00000C, 0x001FFFF0); // CLKCON // Memory Controller Setup for SDRAM _WDWORD(0x48000000, 0x22000000); // BWSCON _WDWORD(0x4800001C, 0x00018005); // BANKCON6 _WDWORD(0x48000020, 0x00018005); // BANKCON7 _WDWORD(0x48000024, 0x008404F3); // REFRESH _WDWORD(0x48000028, 0x00000032); // BANKSIZE _WDWORD(0x4800002C, 0x00000020); // MRSRB6 _WDWORD(0x48000030, 0x00000020); // MRSRB7 _WDWORD(0x56000000, 0x000003FF); // GPACON: Enable Address lines for SDRAM } // Reset chip with watchdog, because nRST line is routed on hardware in a way // that it can not be pulled low with ULINK _WDWORD(0x40000000, 0xEAFFFFFE); // Load RAM addr 0 with branch to itself CPSR = 0x000000D3; // Disable interrupts PC = 0x40000000; // Position PC to start of RAM _WDWORD(0x53000000, 0x00000021); // Enable Watchdog g, 0 // Wait for Watchdog to reset chip Init(); // Initialize memory LOAD *.axf INCREMENTAL // Download program SetupForStart(); // Setup for Running g, main
然后保存,放到工程目录下,或者随便哪里都可以,只要你能保证他不被删除,懒得动手的话可以直接到本文最后的地址下载一个,
②配置工程,点击设置按钮,然后点到debug下,选择你的调试器,然后添加初始化文件,即第一步中创建的那个文件,如下
这里特别注意最后一张图片,不要勾选,否则点击debug会报错,具体原因我目前不清楚,还有网上说需要点击setting设置芯片,我实际调试的结果是不需要,所以不需要添加,保持默认
③修改Ext_RAM.ini文件,根据你所产生的axf文件来进行修改,如下比如我的为uart发送和接收.axf所以需要将①中的*改成uart发送和接收,如图所示
④正式开始调试
首先将开发板上电,接着给MDK添加断点,直接按F9即可添加,如图
然后点击bebug即可开始调试,调试时F11-单步不跳过函数,F10-单步跳过函数,CRL+F11单步跳出函数,如图所示
当然如果需要看启动代码单步运行的话,可以修改Ext_RAM.ini如下,去掉其中的g, main,如图