资源描述
KEIL MDK 4.13 + J-Link V7 调试S3C2440的工程配置 前两天说把友善之臂的自带的那个并口调试器转接成了J-Link的,昨晚开始尝试写点小代码,结果发现对S3C2440这个片子的配置,还要动点脑筋。不过这个脑筋我也没动,直接搜索了些东西,抄袭了些东西。说实话,网上有一点点参考资料,但是都说得不全,最后还是把KEIL自带的工程“KeilARMBoardsSamsungS3C2440RTX_Blinky”拷贝并修改,摸索了点东西。具体的配置方式如下:新建工程,选择Samsung的S3C2440A:点击“OK”,出现下面的对话框:点击“是”,添加KEIL自带的STARTUP.s到工程中,进入下一步,管理组件:进行如下配置:完了进行工程配置:目标选项如下配置,这些数值根据开发板上的硬件资源进行调整;使用Thumb-Mode和使用MicroLIB可以有效减少代码尺寸:配置输出文件夹:将Object文件放到这个Obj文件夹:LIST文件放到这个文件夹:调整汇编编译选项,使用Thumb模式:下面的就是关于J-Link的配置了,注意不要勾选Load Application at Startup,还要配置Initialization File,这个文件在文末进行介绍:JTAG Speed可以选择Auto Selection:最后是下载项的配置,不要选中“Update Target Before Debugging”:具体的配置如下:下面是EXT_RAM.ini的内容,拷贝下来略作修改就可以使用:/*/* Ext_RAM.INI: External RAM (SDRAM) Initialization File */*/ / /*/* This file is part of the uVision/ARM development tools. */* Copyright (c) 2005-2008 Keil Software. All rights reserved. */* This software may only be used under the terms of a valid, current, */* end user licence from KEIL for a compatible version of KEIL software */* development tools. Nothing else gives you the right to use this software. */*/FUNC void SetupForStart (void) / Program Entry PointPC = 0x30000000;FUNC void Init (void) _WDWORD(0x4A000008, 0xFFFFFFFF); / 禁用所有中断 _WDWORD(0x53000000, 0x00000000); / 禁用看门狗定时器 / 时钟配置 / 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 / 配置和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: 使能SDRAM相关的地址线/ Reset chip with watchdog, because nRST line is routed on hardware in a way / that it can not be pulled low with ULINK/ 由于nRST不能通过J-Link进行拉低,使用看门狗复位芯片_WDWORD(0x40000000, 0xEAFFFFFE); / Load RAM addr 0 with branch to itselfCPSR = 0x000000D3; / 禁用中断PC = 0x40000000; / 定位PC到RAM的起始位置_WDWORD(0x53000000, 0x00000021); / 使能看门狗g, 0 / 等待看门狗复位芯片Init(); / 初始化内存LOAD ObjKEIL_S3C2440.axf INCREMENTAL/ 下载程序SetupForStart(); / 配置运行g, main / Goto Main上面的红色加粗部分ObjKEIL_S3C2440.axf是要调整的,调整跟你的工程配置相适应,比如我的输出文件名是KEIL_S3C2440,就写成了现在的这个样子。OK,下面是一个简单的例子,控制连接在GPB5的LED闪烁:#includeint main(void) unsigned int i ; /配置GPB5为输出口 GPBCON &= (0x3 10) ; GPBCON |= (0x1 10) ; while(1) /使GPB5输出低电平 GPBDAT &= (15); /延时 for(i=0;i200000;i+); /使GPB5输出高电平 GPBDAT |= (15); /延时 for(i=0;i200000;i+); 开始Debug,至此,这个代码已经可以在SDRAM进行调试。
展开阅读全文