ARM ADS中的AXD 调试经验集锦

发布者:Yuexin888最新更新时间:2016-12-07 来源: eefocus关键字:ARM  ADS中  AXD  调试经验 手机看文章 扫描二维码
随时随地手机看文章

1,怎么设置AXD连接的Target。 
在菜单的Configure Target…选项中能设置。一般选择MutiIce或ARMUL两种。 
ARMUL是一种ARM的模拟器。一般的算法或一些无需和硬件中断等设备打交道的程式都能通过这个进行调试。使用上非常简单。 
我们一般上板子进行调试都是通过MutiICE来进行。在刚刚安装了系统的时候,菜单中没有MutiICE,需要我们手动添加: 
点击ADD按钮,然后在弹出的文件浏览中,选择“C:\Program Files\ARM\Multi-ICE\Muti-ICE.dll”(默认安装的话)。然后点击“确定”。这样就把MutiICE的调试接口安装上了。

2,怎么保存当前的调试现场。 
我们在调试过程中,经常需要在不同的地方设置断点、设置Watchpoint或打开非常多 source文件。不过,一旦我们关闭了AXD,所有的工 作都白费了。当我们再次打开AXD后,我们得到的仍然是没有所有断点、只打开一个entry文件的调试环境。这里介绍一种方法能自动保存上一次的调试现 场(寄存器的数据都是保存的)。 
        Options->General tab. 这里确认Save and load default sessions 选项 是选中的。然后打开Session File,确保Rselect Target和Reload images 选项是选中的。 
        在设置保存后,我们在关闭AXD后,再次启动,就会自动加载上次的image,恢复寄存器了。 
        如果需要保存多个现场,那么就在设置保存后,在File菜单中选择Save Session来进行保存。不过注意,保存的路径中不能 有空格和特别字符。最佳保存在ClearCase上。在需要恢复现场的时候,只需要Load Session就一切OK。你以前辛辛苦苦设置的断点、 Watchpoint全都回来了。

3,不能设置断点,怎么办? 
不能设置断点时,我仅知有几种解决方案,这里列举一下: 
A:清空CPU的Vector Catch 。 
        在Options->Configure Process..中清除。 
B:Run一下,马上暂停。 
        这种方式对需求不高的断点(诸如设置在APP层中的断点)比较合适。方便。 
C:清除以前的断点。 
        一般发生在Flash调试的情况。首先清除以前的断点,然后才能设置新的断点。 
D:命令行 spp vector_catch 0 
     其实和A相同。如果写在开机script中,那么就能自动排除开机无法设置断点问题。 
E:启动AXD的时候使用?debug这个参数,这样就能添加一个自动断点在Main()上。 

4 ,怎么不reload image就能重新从头开始调试。 
非常多时候我们需要让代码重头跑起来复现一个bug。不过,一般来说,都是reload一下。如果image比较小还能忍受,不过想660那种16M左右的巨型image,这种代价就未免太大。这里介绍几种我所知道的方法,能从头开始调试: 
A:设置Current寄存器。 
        点击 打开process register->current 组。设置pc为0 , cpsr为 svc模式下。关闭Thumb模式。这时F5即可运行下去。 
B:运行脚本 
        这种方式速度更快,也方便。上上之选。 
setpc 0 
sreg cpsr 0xd3

5,怎么无条件跳转? 
一般这种事情最佳是在同一个函数中,某条语句无条件跳到另一条语句上时使用。最佳不要跨函数使用(否则有堆栈错误,非常难查的) 
把光标定在需要跳转到的代码上,右键菜单execute->Set Next Statement .

6,AXD有没有什么辅助工具? 
有的。 
IDA pro ,非常好的axf解析工具。能统计axf文件中的函数、全局变量、调用关系等。界面非常友好,代码界面能清晰看出函数引用关系、变量初始话、变量引用、修改的统计。 
能说,IDA Pro是汇编级的Source insight 。大家能在网络上下载他的最新版安装使用。

7,怎么调试需要加载到Flash上的代码 
以下是我的经验: 
1、   在有jTag调试口的板子上Download一个版本。 
2、   选择 File->load debug symbols 。然后选择CodeWarrior上Release版生成的那个AXF。 
3、 目前就能调试Flash上的程式了。和Debug完全相同。不过注意,在这种情况下,一般只能设置2个断点。

8,使用fromelf命令 
fromelf命令能对我们生成的axf文件进行进一步操作的命令。 
诸如: 
从axf文件中抽出二进制代码:fromelf ?bin ?output a.bin a.axf 
从axf文件中抽出二进制代码:fromelf ?m32 ?output a.s32 a.axf

9,FAQ 
Q:   生成的ram方式的redboot映像文件,应该使用什么工具调试编译的ram方式的redboot。 
用ADS调试工具只能加载.axf格式的文件 
A:   用ADS还能加载bin文件(File->Load Memory From Memory...),能使用ADS命令行或脚本初始化SDRAM 
load bin文件时需要指定载入地址,对于s3c44b0x通常为0x0c040000,即在相应的ldi文件中指定的 
SECTION_rom_vectors (ram, 0x0c040000, LMA_EQ_VMA) 
将BIN程式Load后,将PC指针修改为0X0C040000即可


关键字:ARM  ADS中  AXD  调试经验 引用地址:ARM ADS中的AXD 调试经验集锦

上一篇:STM32学习笔记1 IO口学习
下一篇:从Nand Flash启动U-BOOT的基本原理

推荐阅读最新更新时间:2024-03-16 15:23

第2课:ARM汇编学习
首先要明确这节课要学的是什么: 1通过学习ARM汇编语言从而了解ARM处理器的工作原理。 2用汇编写Bootloader 在这里汇编的基本语法在《ARM嵌入式系统开发》里面已经写过了。这里就写一点需要特别注意的地方 我们学汇编,并不是要求用汇编写很多复杂的程序。那样不切实际,那些可以用更高一层的C来写。 7种寻址方式: 1立即数寻址 ADD r0,r0,#1 2寄存器寻址 ADD r0,r0,r1 3寄存器间接寻址 LDR r0, 4寄存器变址寻址 :前变址,自动变址,后变址 LDR r0, LDR r0, ! LDR r0, ,#4 5堆栈寻址 我们一般用FD 满递减 LDM {sp}!,{r1-r4}
[单片机]
iOS 逆向之ARM汇编
最近对iOS逆向工程很感兴趣。 目前iOS逆向的书籍有: 《Hacking and Securing IOS Applications》, 《iOS Hacker's Handbook》中文书籍有《iOS应用逆向工程:分析与实战》 中文博客有: 程序员念茜的《iOS安全攻防系列》 英文博客有:Prateek Gianchandani的iOS 安全系列博客 这些资料中都涉及到有ARM汇编,但都只是很泛地用到,并没有对iOS上的ARM汇编进行比较详细的讲解。因此,经过一系列的学习对iOS下的ARM有了一定的理解。在此打算用几篇博文记录下来,备忘之,分享之, 限于本人水平有限,如有错误请不吝赐教。 我们先讲一些ARM汇编的基
[单片机]
iOS 逆向之<font color='red'>ARM</font>汇编
始于ARM与三星:苹果自行设计的SoC是怎么走到今天
2005 年的 WWDC 上,乔布斯(Steve Jobs)公布了一项重要的计划:将 Mac 从 IBM 的 PowerPC,转移到 Intel 的 x86 架构。然而在当时,苹果也在私下进行两件大事:开发平板电脑,以及当时仍以 iPod 设计为基础、但加入了通讯功能的原型手机。 苹果移动装置之初:为什么是 ARM? 苹果开发触控式平板电脑的时间点其实比手机还早。乔布斯坦言,他是因为参加微软高级工程师的婚礼,才打听到微软正在设计以触控笔来操作的平板电脑(注 1)。当时苹果对手机的想法还没有完全脱离 iPod 的转盘,直到 Jony Ive 向乔布斯单独简报能用手指卷动页面的多点触控原型,Jobs 才拍板把原本放在平板电脑的多点
[半导体设计/制造]
俄罗斯研发ARM处理器以替代Intel
有时候,DIY比采购更好,甚至是在微处理器产品上。俄罗斯本周证实,政府将资助一个项目,即俄罗斯自行研发代号为贝加尔湖的处理器。这个项目最后交易价值数千万美元。俄罗斯超级计算机厂商T-Platforms将成为该项目的牵头厂商。 和地球上其他国家类似,俄罗斯希望对内部机密进行保密。因此,它认为它不能信任美国制造的处理器,例如那些由英特尔和AMD制造的处理器。鉴于外界传闻表示,美国国家安全局已经与这两个公司在过去进行合作,有可能在计算机硬件中内建几乎无法察觉后门程序,因此我们很容易理解为什么俄罗斯希望走自行研发的道路。 俄罗斯的贝加尔处理器将采用ARM Cortex A57处理器架构。之前,普京在2010年定下目标,将所
[单片机]
ARM看好多核、64位元处理器发展 不往PC靠拢
    而针对近期经常被提出讨论的多核心、64位元等议题,在此次与ARM处理器部门市场营销策略副总裁Noel Hurley、多媒体处理器部门产业合作及营销副总裁Dennis Laudick所进行说明活动中,我们也提问ARM方面对此类议题看法。 ARM处理器部门市场营销策略副总裁Noel Hurley 对于多核应用发展 ARM持正向看法 针对Qualcomm、Nvidia等厂商确实提出各自的多核心架构设计,以及不同省电技术应用,ARM处理器部门市场营销策略副总裁Noel Hurley认为其实多核心策略并没有所谓最好差别,毕竟同样都是看重于省电与效能之间的平衡,ARM big.LITTLE技术也同样是针对此目的而提出,因此认为这样的
[手机便携]
arm是什么意思 什么是ARM
arm是什么意思 ARM(Adanced RISC Machines),是一个公司名字,也是一种处理器的通称,还可以认为是一种技术名字。 1991年ARM公司成立于英国Cambridge,主要销售晶片设计技术的授权。目前,采用ARM技术知识产权(IP)核的微处理器,即我们通常说的ARM微处理器,已遍及工业控制、消费类电子产品、通信系统、网络系统、无线系统等各类产品市场,基于ARM技术的微处理器应用约占据了32位RISC微处理器75%以上的市场份额,ARM技术正在逐步渗入到我们生活的各方面。 ARM公司是专门从事基于RISC技术晶片设计开发的公司,作为知识产权供应商,本身不直接从事晶片生产,靠转让设计许可由合作公司生产各具特色的
[单片机]
arm2410和44b0启动文件分析
工程里面的头文件 2410Init.s包括了板子上电后的初始话,具体有几个步骤: 讲述S3C2410启动程序设计 1. 屏蔽所有中断,关看门狗。 2. 根据工作频率设置PLL寄存器 3. 初始化存储控制相关寄存器 4. 初始化各模式下的栈指针 5. 设置缺省中断处理函数 6. 将数据段拷贝到RAM中,将零初始化数据段清零 7. 跳转到C语言Main入口函数中 要看懂这个头文件是比较难的,我跟DVD视频的教程看了两遍,弄懂了一些,视频上讲的是 ARM7 S3C44B0的 Init.s 但我觉得和2410的差不多。我将这个程序注释了一下。可能有些地方不是很正确,只提供参考。 ;========
[单片机]
μC/OS-II与ARM在中央空调机组控制器的应用
随着中央空调的普及应用,如何对中央空调机组实施有效的控制,是许多科研人员研究的重要课题。目前国内中央空调机组控制器硬件方面主要采用8位单片机为核心处理器,这种方式由于资源有限,导致人机交互不友好、机组的实时监控性能低、整机运转难以实现多机组网联控、节能效果差 。采用RISC架构的ARM微处理器具有小体积、低功耗、低成本、高性能的特点,指令执行速度快,执行效率高,且具有丰富的片内外围电路,有利于简化系统设计,提高系统可靠性。本控制系统选择了Philips公司ARM7处理器LPC2210,移植了实时操作系统μC/OS-II,系统运行稳定可靠。 1 空调系统简介及控制要求 中央空调由集中制冷/加热站和空调机组两大部分组成。前者提供
[单片机]
μC/OS-II与<font color='red'>ARM</font>在中央空调机组控制器<font color='red'>中</font>的应用
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved