现在的位置: 首页 > 综合 > 正文

MDK4.6调试FL2440环境搭建

2012年06月10日 ⁄ 综合 ⁄ 共 3076字 ⁄ 字号 评论关闭

原文链接:http://blog.sina.com.cn/s/blog_874d30c90101mf7t.html



FL2440的开发板我买回来好久了,随板子配有的全是ads的资料,但是前段时间在学校老师要求我们要学会用mdk的环境来进行软件的开发,为了这件事情,我真的纠结了好久,网上有很多资料,可是发现tq2440、ok2440、mini2440的资料偏多,我也尝试着按照这些资料对自己的fl2440的板子进行测试,但是始终不能成功,也就把板子放置了好长一段时间。

今天晚上我又硬着头皮进行了尝试,我就不信我解决不了这个问题,功夫不负有心人,我终于解决了这个问题,看着跑马灯在我的fl2440的板子上成功的运行,我感觉很欣慰,下面就和大家来分享一下我的研究成果(当然前提是你也有fl2440开发板配套的那些实验代码,因为我是直接利用的)
1.新建一个project->s3c2440,这个我想大家都懂得吧....
2.会跳出是否加入默认的s3c2440init.s,这时候选择否,因为如果加入默认的s3c2440init.s我没成功过!
3.设置project的options
(1)Target:
Read/Only...那个部分,在ROM1前面的default打勾,然后Start:0x0,Size:0x100000,最后要选中startup
Read/Write...那个部分,在RAM1前面的default打勾,然后Start:0x30800000,Size:0x2000000,最后Noint不选中!
如图:
FL2440+MDK4.6+Jlinkv8的配置
(2)设置debug
选中右侧的use,然后选择为J-Link/J-TRACE ARM,然后点击setting,JTAG speed设置为Auto Selection,点击OK。然后Initialization File:选择为Ext_RAM.ini(这个文件貌似在fl2440配套的资料里没有,在mdk安装的路径下我也没找到,但是我在网上找到了,在本文末我会附上这段代码的,只要复制下来然后保存成这个文件名并放置到project所在目录下,然后再进行浏览的时候就会有这个文件了。)
如图:
FL2440+MDK4.6+Jlinkv8的配置
FL2440+MDK4.6+Jlinkv8的配置
(3)Utilities
把use target..设置为J-Link/J-TRACE ARM,然后去掉后面Update Target的勾,这一步一定要做!否则会出现报错!然后点击Setting,如果其中的description有一条S3C2440 NAND...就可以直接点ok了,如果没有就点击Add,然后找到S3C2440 NAND..这一条,再点击OK。
如图:
FL2440+MDK4.6+Jlinkv8的配置

FL2440+MDK4.6+Jlinkv8的配置
4.加入光盘中led跑马灯的实验代码中的init.s和main.c

5.修改Init.s
在第一行加PRESERVE8,第二行修改为AREA RESET,CODE,READONLY
6.编译,调试。
就可以看到跑马灯实验的成功结果了!
附:Ext_RAM.ini的代码(新建一个txt,复制下面的代码进去后,把文件名修改成Ext_RAM.ini就可以了,注意这段代码最后的LOAD .\4.axf INCREMENTAL要修改成与自己project配套的名称,我的名字就取了一个4,如果是aaa,就改成LOAD
.\aaa.axf INCREMENTAL
):
// <<< Use Configuration Wizard in Context Menu >>>                           // 
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 .\4.axf INCREMENTAL                // Download program
SetupForStart();                        // Setup for Running
g, main                                 // Goto Main

抱歉!评论已关闭.