AXD 调试经验,使用及问题

嵌入式系统——ADS和AXD的基本操作 文章目录ADS的基本使用创建项目往项目中增加文件设置程序的只读地址和可读可写地址设置debug调试的程序入口编写代码编译调试AXD的基本使用注意调试界面调试界面为空 ADS的基本使用 创建项目 注意:一定要指定英文路径,不能有中文,一般是第一个 往项目中增加文件 注意,一定要打后缀名s 设置程序的只读地址和可读可写地址 RO Base:是程序区地址,只可以读,不可以进行修改 RW Case:是数据区的地址,可以读,可以写 设置debug调试的程序入口 程序调试入口应该是代码区,就是程序去,R 阅读详情

AXD 使用经验

1、使用AXD进行调试:   

    AXD不会自动去帮你配置SDRAM,配置SDRAM是用户的事情。AXD只不过提供了命令行,让用户可以配置CPU内部的管理单元。AXD下载的时候,假设用户已经配置好了SDRAM,所以在下载的时候,是用户的责任去确保下载的区域是可写的。所以在AXD中应在运行程序之前让AXD运行一段自动配置SDRAM的指令。

   AXD中的VECTOR CATCH的作用,其实VECTOR CATCH的原理就是在相应的位置设置断点,捕捉中断。你在VECTOR CATCH的设置的地方设置了相应的位,就会设置断点。

   在AXD中可以随意设置PC。下载到RAM中设定PC为0x30000000(64SDRAM,s3c2440时 )如果你想让程序从地址0x0开始执行,你可以在AXD里自己设定PC的值,不过你自己要保证从地址0x0能取到有效的指令

2、1. AXD调试没有什么特别的,他的工作原理是将编译好的运行时映像download到ARM相应地址中去,

然后捕获arm 的PC 强制其到 ADS中 entry point 所设置的映像入口地址上,然后你一点击run,pc就从这个入口地址取指,后面该咋执行就咋执行去了。实际代码的硬件运行环境就是ARM芯片的运行环境。

首先要明确一点的是ADS(AXD) 在线debug时要将编译好的运行时代码download到ARM 的相应地址上去,这里这个download的地址,就是arm上存储部件的地址,必须是RAM型的存储特性才可以被AXD进行download,如果这个地址域被映射成是Flash存储器,AXD 是download不了的,虽然AXD不报错,但可以

通过在AXD下用dissambly 查看一下,如果是flash则看不到正确的指令。

3、正确download之后就是执行程序了,一般外扩SDRAM要有对它时序的配置,这里用AXD调试注意一点

当用外部SDRAM进行download程序时,比如说刚复位过的ARM,extern SDRAM这时还没有对他进行时序配置,这时用AXDdownload到 SDRAM的话可能会有问题,(AXD是通过jtag口在通过sdram把code放到sdram上去的,如果不在axd加载code前实现配置好sdram时序就无法保证加载的正确性,和运行时的正确性,)运行会产生什么异常指令之类的怪现象。sothat ,定要给AXD提供一个已经配置好时序确实可用的SDRAM 这样才能保证download。

正确做法是:在AXD界面内执行菜单Options/Configure Interface/Session File,选择Run Configuration Script,单击Browse,找到该初始化脚本.注意,初始化脚本"2440init.txt"必须放在英文目录下.在AXD界面内的Command Line Interface,可以看到AXD是否运行了该初始化脚本,初始化脚本的内容为(micro2440 ):

  Setmem  0x53000000 0x00000000  32
Setmem  0x4A000008 0xFFFFFFFF  32
Setmem  0x4A00001C 0x000007FF  32
Setmem  0x53000000 0x00000000  32
Setmem  0x56000050 0x000055AA  32
Setmem  0x4C000014 0x00000007  32
Setmem  0x4C000000 0x00FFFFFF  32
Setmem  0x4C000004 0x00061012  32
Setmem  0x4C000008 0x00040042  32
Setmem  0x48000000 0x22111120  32
Setmem  0x48000004 0x00002F50  32
Setmem  0x48000008 0x00000700  32
Setmem  0x4800000C 0x00000700  32
Setmem  0x48000010 0x00000700  32
Setmem  0x48000014 0x00000700  32
Setmem  0x48000018 0x0007FFFC  32
Setmem  0x4800001C 0x00018005  32
Setmem  0x48000020 0x00018005  32
Setmem  0x48000024 0x008E0459  32
Setmem  0x48000028 0x00000032  32
Setmem  0x4800002C 0x00000030  32
Setmem  0x48000030 0x00000030  32

可以把这保存为.txt格式的,然后放在没有中文的目录下,在用刚才那样导入进去就行了。在ads中点击调试后,如果SDrAM被配置过了,在axd的command line中会出现

4. 正确进行AXD download 后,接下来就是执行代码了, 这里也有要注意的事情,就是,代码里不要有再次对SDRAM进行时序配置的指令出现,这就好比,程序已经在SDRAM里运行了,然后在运行的过程中又对SDRAM进行了配置,这会出现什么异常之类的怪现象的。但全速运行可能没事。

5.不要用AXD的"reload current image" 进行reload  可以通过设定PC指针:setpc 0x30000000  在command line中让程序从起始处执行

6.cpu 发生中断的跳转地址永远是0x00000000 - 0x000020。

  对于发生其他的几种异常也是这样,当发生了这些异常后,cpu的pc指针就自动指向此处,在这些地址通常放一些跳转指令,跳转到真正的中断程序或者其他异常处理程序。(对于2440来说是这样)


AXD 运行错误;

 1.Processor ARM720T raise a exception cause : the processor was reset

    这个是AXD 检测到PC指针跳到 0x00000000,从0x00000000 取指执行 后产生的东东, 一般正常运行情况下PC只会产生其他7种异常(watch dog 例外). 当pc跳转到0x00000000 取指执行时会被AXD截获作为异常处理而弹出上面的终止框. (ex. mov pc,#0x0 这样的指令在AXD下全速运行时就会引起上面的终止) 其实有时用户就是想要在AXD监视下仍能使PC模拟复位的状况从0x00000000 执行程序,这样的话可以将AXD->option-->configurate processor 对话框中的vector catch选项的[R]   选项去掉. 这个选项就是AXD用来监视PC从0x00000000 取指时产生终止的功能 。把它去掉,这样就可以在AXD下顺利模拟PC从复位(0x00000000)来取指执行了。还有其他几个选项是:



AXD使用技巧

1.如何保存当前的调试现场。
我们在调试过程中,经常需要在不同的地方设置断点、设置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全都回来了。

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

3.      如何不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即可

此部分来源于http://blog.chinaunix.net/space.php?uid=730738&do=blog&id=130291


比较好的配置AXD的博客http://blog.youkuaiyun.com/shuaishuai80/article/details/6202210


ARM调试工具AXD与armsd使用指南 在嵌入式系统开发中,调试工具是确保代码质量的关键组件。ARM架构作为嵌入式领域的主流平台,其官方调试工具AXD和armsd基于RDI协议设计,支持JTAG/SWD等多种连接方式。调试器核心原理包括源码级单步执行、内存/寄存器访问、条件断点设置等功能,能显著提升开发效率。在物联网设备和Cortex-M系列开发中,熟练使用这些工具可以快速定位内存泄漏、性能瓶颈等典型问题。通过图形化界面(AXD)和命令行工具(armsd)的配合,开发者既能进行交互式调试,也能实现自动化测试脚本。特别是在多核调试和低阶符号调试场景 阅读详情

相关推荐

关于U-boot调试

帖子(1)  当板子做好后,一般都是先用AXD初始化好sdram,然后将U-boot下载到sdram中进行调试,然后等flash调试好后,就可以将U-boot烧写到flash中再进行调试 问题: 1.为了能将U-boot下载到sdram中调试,除了要定义CONFIG_SKIP_LOWLEVEL_INIT和CONFIG_SKIP_RELOCATE_UBOOT这两个宏之外,是否还应该在

HEN_MAN的专栏 4305

ADS,AXD基本使用说明

首先File -> New 创建一个C文件。 编写C文件,完成后右上角点击保存。再File -> New,新建一个项目点击右键,选择Add Files将之前写的C文件添加进去。 点击画圈图标Make编译。 编译通过,没有错误,右上角关闭。 再次点击画圈图标进行Debug。 点击之后会进入AXD。 点击画圈图标。再次点击该图标运行。 输出结果,运行成功。如果点击Debug,进入不了ADX,则可以在软件根目录/Bin目录下,找到axd.exe文件,以管理员身份运行。选择Options -> Confi

耀灵的博客 3700

用ads仿真arm920t的设置.rar_ADS ARM9_ARM920T_ads_arm 仿真_sdram

ads仿真arm920t的设置 附件中有两个文件 1、sdram配置文件,用obey c:\setm.txt进行配置 2、sdram设置图片

AXD调试应用技巧

1、如何设置AXD连接的Target。在菜单的Configure Target…选项中可以设置。一般选择MutiIce或者ARMUL两种。ARMUL是一种ARM的模拟器。一般的算法或者一些无需和硬件中断等设备打交道的程序都可以通过这个进行调试。使用上非常简单。我们一般上板子进行调试都是通过MutiICE来进行。在刚刚安装了系统的时候,菜单中没有MutiICE,需要我

yzj19870824的专栏 1301

【HAL库-STM】智能温控按键小风扇【胎教级教学】

硬件设备:DHT11,0.96寸oled屏,二/三/四线风扇(不挑),面包板 、f10的精英板等等。当人在的风扇面前时可以自行控制风扇,不在面前时又想开风扇就让他温控自行开启,(在这里有一个想法就是加上蓝牙和wifi控制的功能能够远程遥控,这个如果做的再全一点就要自主研发是一个多功能app,这里没有做。针对这个dht11,我一开始是卡在了这个check函数里面,一直是我给完dht11低电平和高电平后,dht11不回复我低电平和高电平,这个不是我的问题,当时代码是没毛病的,这个点一直卡着我。吐血五天实现小成品

weixin_52451652的博客 1740

LSTM预测股票数据---数据预处理

# 导入相应的模块 import pandas as pd import numpy as np import matplotlib.pyplot as plt import tensorflow as tf # 获取训练集 def get_train_data(data,batch_size = 60 ,time_step = 20,train_begin = 0,train_end = 58...

qq_35358021的博客 3360

AXD 调试使用经验及问题

AXD 使用经验 1、使用AXD进行调试:        AXD不会自动去帮你配置SDRAM,配置SDRAM是用户的事情。AXD只不过提供了命令行,让用户可以配置CPU内部的管理单元。AXD下载的时候,假设用户已经配置好了SDRAM,所以在下载的时候,是用户的责任去确保下载的区域是可写的。所以在AXD中应在运行程序之前让AXD运行一段自动配置SDRAM的指令。    AXD中的V

Aguangg_6655_la的博客 3296

ADS负载牵引仿真避坑指南:从零开始搞定Loadpull模板设置

本文是一份针对ADS负载牵引仿真的深度避坑指南,详细解析了Loadpull模板从初始化配置到结果解读的全过程。文章重点阐述了如何根据设计目标灵活设置扫描圆、采样点等关键参数,以解决仿真不收敛、结果不完整等常见问题,并指导读者在功率与效率之间做出理性权衡,最终提取出用于匹配网络设计的最优负载阻抗。

weixin_29234423的博客 597

嵌入式 AXD调试经验,使用及问题

AXD 使用经验 1、使用AXD进行调试: AXD不会自动去帮你配置SDRAM,配置SDRAM是用户的事情。AXD只不过提供了命令行,让用户可以配置CPU内部的管理单元。AXD下载的时候,假设用户已经配置好了SDRAM,所以在下载的时候,是用户的责任去确保下载的区域是可写的。所以在AXD中应在运行程序之前让AXD运行一段自动配置SDRAM的指令。 AXD中的VECTOR CATCH的作用,其实VE

skdkjxy的专栏 1751

Java开发者必看:Apache PDFBox实现PDF数字签名完整指南(附源码)

本文为Java开发者提供了使用Apache PDFBox实现PDF数字签名的完整指南。详细介绍了从环境配置、核心原理到完整代码实现的全过程,涵盖证书管理、签名位置计算、性能优化及实际应用案例,并附有可直接复用的源码,帮助开发者高效集成PDF数字签名功能。

o1p2q3r的博客 339

DLPFC.h5ad格式数据简便获取方式+STAGATE论文复现问题

简便获取DLPFC.h5ad格式的数据方式

apple_74057836的博客 2257

AXD 汇编调试经验,使用及问题

AXD 使用经验 1、使用AXD进行调试:        AXD不会自动去帮你配置SDRAM,配置SDRAM是用户的事情。AXD只不过提供了命令行,让用户可以配置CPU内部的管理单元。AXD下载的时候,假设用户已经配置好了SDRAM,所以在下载的时候,是用户的责任去确保下载的区域是可写的。所以在AXD中应在运行程序之前让AXD运行一段自动配置SDRAM的指令。    AXD中的VECTOR

我的专栏 1463

C# 工业视觉性能极致优化:多线程推理池 + 对象复用 + 批量检测,速度提升 10 倍实战

set;} // 输入图像set;} // 异步返回结果set;} // 用于监控延迟性能优化不是魔法,而是对资源生命周期的精细管理和对硬件特性的充分利用。多线程池解决了 CPU/GPU 闲置问题。对象池解决了 GC 停顿问题。零拷贝解决了总线带宽瓶颈。严格的 Dispose解决了内存泄漏问题。这套架构已在多个高速锂电、3C 电子检测产线落地,轻松应对 200ms 甚至 50ms 的严苛节拍。记住,在工业领域,稳定性与速度同等重要。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 303

ARM ADS中的AXD 调试经验集锦

maxshi的专栏 500

6、基于集成学习技术的边坡稳定性预测及滑坡易发性研究

本研究基于集成学习技术对云阳县的边坡稳定性及滑坡易发性进行预测分析。通过比较SVM、RF、XGBoost和LR四种模型,发现集成学习模型在准确率和少数类识别方面表现更优。特征重要性分析表明剖面形状是影响边坡稳定性的关键因素。同时,引入基于定性分析的分区建模方法,构建父模型与子区域模型,提升了滑坡易发性制图的精度。研究成果为地质灾害的预防与管理提供了科学依据和技术支持。

peach的博客 126

一文入门车载以太网:从原理到实战,看完就能上手开发

新手选型遵循“适配场景、兼顾成本、优先车规”的原则:普通场景(车载娱乐、普通诊断):100Base-T1 PHY(LAN8742)+ 非TSN交换机(SJA1105)+ STM32H743 ECU + 普通STP线缆;ADAS场景:1000Base-T1 PHY(TJA1101)+ TSN交换机(SJA1110)+ NXP S32G399 ECU + 高抗干扰STP线缆;避免过度选型:如普通娱乐场景无需选择TSN交换机、ASIL-B级芯片,否则会增加成本;

getusushu的博客 318

ARM ADS中的AXD 调试经验集锦(转)

ARM ADS中的AXD 调试经验集锦(转)2008-05-04 14:531、如何设置AXD连接的Target。 在菜单的Configure Target…选项中可以设置。一般选择MutiIce或者ARMUL两种。ARMUL是一种ARM的模拟器。一般的算法或者一些无需和硬件中断等设备打交道的程序都可以通过这个进行调试。使用上非常简单。

dengxin123的专栏 973

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

AXD Jlink仿真注意的错误

多人根据jlink的手册来设置使用ADS,但都不能在S3c2440 上面运行成功。 下面的设置能成功运行。供大家参考。 ADS  项目属性设置: -ro-base = 0x30000000 entry 0x30000000 Init Section: 2440init.o Init AXD下需要加载一个SDRAM初始化文件。 AXD下-->Option->Config In

临渊羡鱼不如退而结网 1369

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

FS44BOXII的调试心得

FS44BOXII的调试心得 1.拿到板子,若要进行恢复出厂设置,则需要重新烧写BIOS程序,首先将RS232串口来传输数据,若电脑主机没有RS232串口接口,则可采用USB转串口的方式实现,本人即采用这种方式。在该过程中,注意设置USB的COM通讯方式,目前本人采用COM4,如图所示: 2.同理,设置好DWN.EXE中对应的COM通讯端口为COM4,如...

dengji8846的博客 189

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

ADS1.2配置

最近调试ARM程序,之前的项目是在ADS1.2中进行开发的,调试配置费尽周折,终于摸索出来了,总结一下以供后续参考。 1)ARM Developer Suite 编译——Make一下,看有没有错误;若有错误,点击Project——选择Remove object code重新编译,由于之前编译的代码路径有可能不一样。 2)AXD调试工具配置 打开AXD,选择Options——Configu

程序人生 2245

AXD调试BLOB

AXD调试BLOB今天终于又有所进步 ,把AXD连上板子后,烧了一个没有源代码但是可以正常工作的BIN文件。设置一个断点地址在0X0处,就可以看见汇编代码了,终于初始化的所有设置都一清二楚了,不过我改了一下主频后(直接修改二进制文件),不能正常工作,不知道原因,反正肯定是影响到其他地方了。然后一步一步的跟踪代码,发现在FLASH中调试只能设两个断点,否则就没用了(直接跑飞到RAM去

空着比乱晃好 2224
上一篇: ARM中关于绝对寻址相对寻址LDR,ADR的理解
下一篇: AXD 使用点滴
Lq_automatic
博客等级 码龄16年 19粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值