s3c2440裸机开发调试环境(MDK4.72,Jlink v8,mini2440)
工程源码下载http://download.csdn.net/detail/lc123yx/8280691
我的开发环境:windows 7 32位,J-linkv8,mini2440开发板一块。最后选择了:MDK4.72版本,J-ink v8的当前最新版本J-linkARM v4.94。
1)打开Keil uVision4新建一个工程:
2)新建一个目录用于存放我们的工程文件,这样我用新建一个test目录:并且取工程名为test并保存:
3)接下来选择CUP database:我们选择samsung的S3C2440A,点击OK;之后会出现第二个图问你是否拷贝'S3C2440.s'到工程文件夹并加入到工程里,S3C2440.s是启动代码我们选择YES
4)然后我们需要对S3C2440.s进行一些必须的配置,打开此文件选择编辑界面下面的Configuration wizard进行配置,这里我把全部都打上勾,然后保存:
5)之后新建一个c文件并编写代码,我习惯新建一个main目录用来保存这个存放入口函数的文件,然后把这个文件加到工程里:
测试程序
- #include <S3C2440.H>
- void delay()
- {
- int i,j;
- for(i=0;i<10000;i++)
- {
- for(j=0;j<50;j++);
- }
- }
- int main()
- {
- GPBCON = 0x155555;
- while(1)
- {
- GPBDAT |= 0x1E0;
- GPBDAT &= 0x1C0;
- delay();
- GPBDAT |= 0x1E0;
- GPBDAT &= 0x1A0;
- delay();
- GPBDAT |= 0x1E0;
- delay();
- }
- }
6)把所有c源文件加进工程之后,再选择Target 1的Optionsfor Target ' Target 1'进行相应的配置
④在User选项里相应位置添加命令如下:(用于生成.bin文件和.axf调试文件,添加的命令为:fromelf --bin -o @p.bin @p.axf,记得前面打勾)
如下图Asm配置
⑤在Linker选项里勾上Use Memory Layout from target Dialog,如下图:
⑥在debug选项的配置主要有以下几项:
1)勾上右边的Use,Use里选择J-Link/J-Trace arm(选择Jlink调试)
2)勾上LoadApplication at Startup,勾上Run to main() (让调试的时候直接从main函数开始)
3)在InitializationFile选择之前修改的Ext_ARM.ini文件的路径
在工程目录下建立一个文本文档,复制下面代码,名字改成Ext_RAM.ini 将文中test改成自己的工程名称。
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 Objects\test.axf INCREMENTAL // Download program
- SetupForStart(); // Setup for Running
- g, main // Goto Main
点击Settings按钮,设置JTAG Speed为Auto Selection,如下图
Utilities选项
之后就算配置好了,现在rebuild一下,就可以在工程目录里生成bin文件跟axf文件了,连好Jlink和开发板,点击debug按照开始调试,不出以外,就可以开始调试了,如下所示:
连接上Jlink 开发板Nand Flash启动 点Debug
单步调试