MDK linker和debug的设置以及在RAM中调试

有误或者表述不清楚请指出,谢谢 

硬件:TQ2440开发板、jlink  V8 固件

软件:J-LINK  ARM 4.08i、MDK4.20

 

先解释下MDK中三种linker之间的区别

设置集中在option linker选项卡

1.采用Target对话框中的ram和rom地址。采用此方式,需在linker选项卡中的Use Memort Layout from

Target Diaglog选项选中,并且在Target中设置好ram、rom地址。MDK会根据Target对话框中设定的ram

和rom地址自动生成一个分散加载文件。最后链接器会根据此文件中的信息对目标文件进行连接,生成axf文件。

如下图:

至于rom和ram是片内还是片外,容量多大就需要根据芯片和开发板来决定了。

 

2.直接通过linker选项卡中的R/O Base和R/W Base来设定链接信息。链接器最后可根据此处指定的地址信息进

行连接,连接的文件应该是顺序存放了,最多RO和RW分开。此时需要注意的是应将 Use Memort Layout from

Target Diaglog前的勾去掉,且保证Scatter File中未包含分散加载文件。并且要在Misc control中设定镜像的入口点,如:

--first 2440init.o(Init)

 

2440init.o对应的是启动代码汇编源文件2440init.s,Init是对应的是段名在异常向量表之前。此处需要根据具体文件修改。

3.最后一种为直接采用分散加载文件。

在设置linker的时候可以注意下linker control string的信息,看看linker的输入信息是否符合自己的要求。

此处应该是只要选择使用scatter file文件,那么其他链接方式的设置自动失效。

可以从linker control string的信息看出来。

 

对应TQ2440开发板的设置

由于TQ2440开发板采用的是片外的ram和片外的flash,所以我这里直接采用前面说到的第二种方法。

就是通过手动设置ro的地址,其中0x30000000就是片外ram的地址。rw未指定,则说明rw数据顺序

存存放到ro段之后。

 

MDK Jlink 外部RAM调试设置

设置集中在option 的debug选项卡下

1.先将黑点调到右边,然后在右边的下拉框中选中J-LINK/J-TRACE,然后点击Setting,找到Info中的JLink,点击查看Jlink和MDK能否连接起来,在点击下面的Target查看仿真器能否找到cpu。

load Application at startup貌似去掉和不去掉的效果是一样的,猜测这个选项和前面Target中的rom地址有关,因为rom地址的后面有startup这个选项。我这里未采用Target方式链接,所以将此勾去掉了。

2.然后是ram调试是最重要的init文件。这个文件的作用是在加载axf调试文件前先将ram初始化完毕,需要完成设置总线时钟,设置bank控制寄存器等(sdram直接挂在bank6上)。本来想偷懒,直接将MDK安装文件夹下Clabsys公司的2440开发板的Ext_RAM.ini拷贝出来,结果调试的时候出现了莫名其妙的错误,猜测是初始化的问题。打开看了下,发现能看懂,MDK自带的文件只初始化了bank6。于是动手将TQ2440的init_sdram改造了下,做了个新的Ext_RAM.ini,可以顺利调试。需要注意的是,Init文件需要根据工程做一定修改,具体是在LOAD命令处。附init文件:

 

 

[cpp] view plaincopyprint?
  1. FUNC void SetupForStart (void) { 
  2.  
  3. // <o> Program Entry Point  
  4.   PC = 0x30000000; 
  5.  
  6.  
  7. FUNC void Init (void) { 
  8.     _WDWORD(0x53000000, 0x00000000); 
  9.     _WDWORD(0x4A000008, 0xFFFFFFFF); 
  10.     _WDWORD(0x4A00001C, 0x000007FF); 
  11.     _WDWORD(0x53000000, 0x00000000); 
  12.     _WDWORD(0x56000050, 0x000055AA); 
  13.     _WDWORD(0x4C000014, 0x00000007); 
  14.     _WDWORD(0x4C000000, 0x00FFFFFF); 
  15.     _WDWORD(0x4C000004, 0x00061012); 
  16.     _WDWORD(0x4C000008, 0x00040042); 
  17.     _WDWORD(0x48000000, 0x22111120); 
  18.     _WDWORD(0x48000004, 0x00002F50); 
  19.     _WDWORD(0x48000008, 0x00000700); 
  20.     _WDWORD(0x4800000C, 0x00000700); 
  21.     _WDWORD(0x48000010, 0x00000700); 
  22.     _WDWORD(0x48000014, 0x00000700); 
  23.     _WDWORD(0x48000018, 0x0007FFFC); 
  24.     _WDWORD(0x4800001C, 0x00018005); 
  25.     _WDWORD(0x48000020, 0x00018005); 
  26.     _WDWORD(0x48000024, 0x008E0459); 
  27.     _WDWORD(0x48000028, 0x00000032); 
  28.     _WDWORD(0x4800002C, 0x00000030); 
  29.     _WDWORD(0x48000030, 0x00000030); 
  30.  
  31.  
  32. // Reset chip with watchdog, because nRST line is routed on hardware in a way   
  33. // that it can not be pulled low with ULINK  
  34.  
  35. _WDWORD(0x40000000, 0xEAFFFFFE);        // Load RAM addr 0 with branch to itself  
  36. CPSR = 0x000000D3;                      // Disable interrupts  
  37. PC   = 0x40000000;                      // Position PC to start of RAM  
  38. _WDWORD(0x53000000, 0x00000021);        // Enable Watchdog  
  39. g, 0                                    // Wait for Watchdog to reset chip  
  40.  
  41. Init();                                 // Initialize memory  
  42. LOAD ..\output\codec.axf INCREMENTAL    // 此处需修改axf文件的路径各工程设置可能不一样需要在此处修改!  
  43. SetupForStart();                        // Setup for Running  
  44. stop, pc                                // 想要直接到main可设置为  g, main 
FUNC void SetupForStart (void) {// <o> Program Entry PointPC = 0x30000000;
}FUNC void Init (void) {_WDWORD(0x53000000, 0x00000000);_WDWORD(0x4A000008, 0xFFFFFFFF);_WDWORD(0x4A00001C, 0x000007FF);_WDWORD(0x53000000, 0x00000000);_WDWORD(0x56000050, 0x000055AA);_WDWORD(0x4C000014, 0x00000007);_WDWORD(0x4C000000, 0x00FFFFFF);_WDWORD(0x4C000004, 0x00061012);_WDWORD(0x4C000008, 0x00040042);_WDWORD(0x48000000, 0x22111120);_WDWORD(0x48000004, 0x00002F50);_WDWORD(0x48000008, 0x00000700);_WDWORD(0x4800000C, 0x00000700);_WDWORD(0x48000010, 0x00000700);_WDWORD(0x48000014, 0x00000700);_WDWORD(0x48000018, 0x0007FFFC);_WDWORD(0x4800001C, 0x00018005);_WDWORD(0x48000020, 0x00018005);_WDWORD(0x48000024, 0x008E0459);_WDWORD(0x48000028, 0x00000032);_WDWORD(0x4800002C, 0x00000030);_WDWORD(0x48000030, 0x00000030);
}// 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 chipInit();                                 // Initialize memory
LOAD ..\output\codec.axf INCREMENTAL    // 此处需修改axf文件的路径各工程设置可能不一样需要在此处修改!
SetupForStart();                        // Setup for Running
stop, pc                                // 想要直接到main可设置为  g, main

具体设置如图:

转载:http://blog.csdn.net/rockrockwu/article/details/7093435

转载于:https://www.cnblogs.com/Hdd-Yi/archive/2013/04/19/3030386.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/274283.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LBS核心技术解析(引子)

http://www.cnblogs.com/LBSer/archive/2013/04/25/3048754.html 引子&#xff1a; 人们常用“上知天文&#xff0c;下知地理”来形容一个人的博学&#xff0c;人们总是用三要素论“什么时间、什么地点&#xff0c;发生或干了什么事情”来描述一件事情,人们也常常借用“天时、地…

Vim中数字自增、自减

&#xff08;1&#xff09;ctrl a&#xff1a;数字自动增加1 按下ctrl a&#xff1a; &#xff08;2&#xff09;number ctrl a&#xff1a;数字自动增加number 例子&#xff1a;想将20修改成100&#xff0c;按下80 ctrl a&#xff1a; &#xff08;3&#xff09;ctrl x…

开源服务器Tornado的初步了解

文章结束给大家来个程序员笑话&#xff1a;[M] 明天看了下Python的一个新web框架&#xff0c;由Facebook开源。不得不说&#xff0c;品牌效应啊&#xff0c;只要是Facebook开源的目项&#xff0c;没有不好用的。Tornado可以说是好用到了极致&#xff0c;从开打官方面页开始懂得…

多线程的那群“象”

最初学习多线程的时候&#xff0c;只学了用Thread这个类&#xff0c;记忆中也用过Mutex&#xff0c;到后来只记得Thread的使用&#xff0c;其余的都忘了。知道前不久写那个Socket连接池时遇到了一些对象如&#xff1a;Semaphore&#xff0c;Interlocked&#xff0c;Mutex等&…

优秀HTML5网站学习范例:从“饥饿游戏浏览器”谈用户体验

继影片《饥饿游戏》获得票房成功后&#xff0c;《饥饿游戏2&#xff1a;火星燎原》也于2012年宣布开拍&#xff0c;将在今年的11月22日登陆全球各大院线。值此之际&#xff0c;微软携手美国狮门影业公司和 RED Interactive Agency 一起为影迷打造了一个基于 HTML5 现代网页规范…

[开源]jquery.ellipsis根据宽度(不是字数)进行内容截断,支持多行内容

jquery.ellipsis 自动计算内容宽度&#xff08;不是字数&#xff09;截断&#xff0c;并加上省略号&#xff0c;内容不受中英文或符号限制。 如果根据字数来计算的话&#xff0c;因为不同字符的宽度并不相同&#xff0c;比如l和W&#xff0c;特别是中英文&#xff0c;最终内容宽…

不安装游戏apk直接启动法

原文地址&#xff1a;http://blog.zhourunsheng.com/2011/09/%E6%8E%A2%E7%A7%98%E8%85%BE%E8%AE%AFandroid%E6%89%8B%E6%9C%BA%E6%B8%B8%E6%88%8F%E5%B9%B3%E5%8F%B0%E4%B9%8B%E4%B8%8D%E5%AE%89%E8%A3%85%E6%B8%B8%E6%88%8Fapk%E7%9B%B4%E6%8E%A5%E5%90%AF%E5%8A%A8%E6%B3%95…

Android客户端打包方案分享

基本介绍 Android应用的自动化打包是应用持续集成以及多渠道发布的基础。当前Android客户端自动化打包的主要有两种方式&#xff0c;Ant和Maven。两种方式本质上都是调用Android SDK里面提供的工具&#xff0c;不过各自有各自的特点。 1. Ant脚本 好处&#xff1a;开发成本较低…

您的UX库不只是书籍

hp ux 密码不过期Looking back on past self, one thing I wish I’d realised is the importance of keeping notes of everything.回顾过去的自我&#xff0c;我希望我意识到的一件事是记录所有事情的重要性。 This means everything interesting I’ve read and written; e…

交互设计精髓_设计空间的精髓

交互设计精髓重点 (Top highlight)什么是空间&#xff1f; (What is Space?) Space is the dimension of height, depth and width within which all things exist and move. Space or Empty space or White space or Negative space are alias given to describe intensional…

ux和ui_UI和UX设计人员的47个关键课程

ux和ui重点 (Top highlight)This is a mega-list of the most critical knowledge for UI, UX, interaction, or product designers at any level.这是所有级别的UI&#xff0c;UX&#xff0c;交互或产品设计人员最关键的知识的大清单。 Many of these lessons are also appli…

深入理解Java内存模型(七)——总结

处理器内存模型 顺序一致性内存模型是一个理论参考模型&#xff0c;JMM和处理器内存模型在设计时通常会把顺序一致性内存模型作为参照。JMM和处理器内存模型在设计时会对顺序一致性模型做一些放松&#xff0c;因为如果完全按照顺序一致性模型来实现处理器和JMM&#xff0c;那么…

沉浸式ui设计_有助于沉浸的视频游戏UI —武器轮

沉浸式ui设计Many action-adventure games rely on the feeling of thrills via bullets, fire, grenade, more bullets, and gigantic booms. The way to enable all these is to offer a massive arsenal, from machetes to assault rifles all the way till bazookas.许多动…

ux设计师薪水_客户现在也是UX设计师

ux设计师薪水Some of you probably know by now, I’m not too fond of the monster the UX industry has become. It’s overblown, overcomplicated and often dishonest towards the clients. It’s also in itself undefined. (where is the E in Experience?)你们中的某些…

分步表单_角色创建分步指南

分步表单The first thing most of us designers are taught is the concept of personas and the necessity of them when it comes to UX and product design. However, knowing is different from applying and it can be difficult to know where to begin when we’re aske…

svg配合css3动画_带有Adobe Illustrator,HTML和CSS的任何网站的SVG动画

svg配合css3动画A top trend in web design for 2020 is the increased use of SVG animations on web pages and in logo design. In this article, we will implement a simple and straight forward method to create relatively complex animation. We will use Adobe Illu…

基于pt100温度计仿真_基于8pt网格的设计系统

基于pt100温度计仿真重点 (Top highlight)This article is the 2nd in a two part series — to the previous chapter in which I demonstrate how to establish an 8pt grid.本文是该系列文章的第二部分 &#xff0c;这是上一章 的第二部分 &#xff0c;在上一章中&#xff0…

利用 k8s 建立软件商店_为企业建立应用商店

利用 k8s 建立软件商店It’s June 2019. I’m sitting in a conference room in Research Triangle Park in North Carolina. At the end of the table are the two executives that have been tapped to lead a new endeavor on behalf of IBM’s $34 billion acquisition of …

苹果复兴_类型复兴的故事:来自Type West的经验教训

苹果复兴Last Fall, I began the 去年秋天&#xff0c;我开始 在旧金山的Type West program at the Letterform档案库中Letterform Archive in San Francisco. For those of you who don’t know, the Letterform Archive is creative heaven — a type nerd’s letter art co…

C#调用ATL COM

作者&#xff1a;朱金灿 来源&#xff1a;http://blog.csdn.net/clever101 简单介绍C#程序如何调用ATL编写的COM组件。 首先新建一个ATL工程&#xff0c;具体如下&#xff1a; 1. 填写工程名称和路径&#xff0c;如下图&#xff1a; 2. 选择工程的服务器类型为动态链接库&a…