请教ADS调试ARM的问题,不知道如何入门。。

yerenhjy 2008-03-22 05:14:18
如题。

正在学习ARM的开发,采用的是ARM920T的内核。为了进一步熟悉其架构,现想先进行一些简单的开发,比如用汇编调试一下MOV等指令,看看内部寄存器的变化情况,选用JTAG仿真器和AXD进行调试。这个应该算是最简单的入门吧?

现在的问题是,我用汇编写了一个程序,(其实也基本就是参考ADS安装目录下的Examples),弄到ADS中Compile和make,然后就用AXD对其axf文件进行调试,程序源代码也出现在AXD中了,可是单步运行的时候怎么寄存器的状态都不变的啊,r0,r1等,只有那个指示当前位置的pc寄存器中的值会变化,怎么回事啊?

我查看其反汇编程序,居然是如下:
start [0xffffffff] dci 0xffffffff ; ? undefined
00008004 [0xffffffff] dci 0xffffffff ; ? undefined
00008008 [0xffffffff] dci 0xffffffff ; ? undefined
0000800c [0xffffffff] dci 0xffffffff ; ? undefined
blockcopy [0xffffffff] dci 0xffffffff ; ? undefined
00008014 [0xffffffff] dci 0xffffffff ; ? undefined
...

似乎是程序没有编译好?请教一下……
因为实验室老师和师兄都没有开发过ARM,一个人摸索起来真的很费劲,还请版上各位多多指教,先谢过了。。

另外,我对于ARM的开发流程还是不太了解,我看一些书上说是先给ARM移植好U-Boot,然后剪裁和移植Linux,编写驱动程序,然后再编写应用程序就OK了,我现在也是准备这样子做的。有些书又介绍说用ADS开发,是不是说用ADS的话就是开发一些没有操作系统的啊?如果我想开发ARM+Linux的话,还有必要学习ADS的开发么?开发ADS的话需要先弄好U-Boot吗?

因为初学问题比较多,还请大家多多指教。
...全文
1238 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
yerenhjy 2008-04-19
  • 打赏
  • 举报
回复
噢,天,我看错行了,结帖都结错了,全给成下移一位了。。。

feng_me朋友,实在是很抱歉,我欠你20分。。争取给你还上,现在这里也改不了了好像。
yerenhjy 2008-04-19
  • 打赏
  • 举报
回复
谢谢各位,帖已结。

不过还是想说几句,因为当时自己是初学,不知如何入门,摸索了一段时间,在这里问,等了三四天一直没有回复,作为开发学习实在是无法忍受这样的周期。。。后来经过找其他人,包括技术支持,总算是把问题解决了,而这里的这些回帖我都快给忘了,直到今天收到邮件提醒结帖的时候才看到,帮助已经很小了。。

不过还是把帖结了,把问题和答案留下来,供其他有需要的朋友看吧。

我也说说我后来的解决方案。问题就出在于对存储空间没有进行初始化,就像fengme就像朋友所说的那样,我的MultiICE连接是正确的,后来经过初始化之后就没有问题了。
不过使用ADS也只是我当时想了解ARM内部结构的时候学习的一个工具吧,现在我基本都是在Linux环境下,建立NFS服务期,在板子上移植了uboot和Linux,然后连接主机的NFS服务器,下载主机上交叉编译环境下编好的应用程序,或者驱动程序,挂载,目前正在学习驱动程序的编写,有什么心得再来这里跟各位分享吧。。
haihua825 2008-04-12
  • 打赏
  • 举报
回复
应该是程序没有下载进去,检查JTAG连接先
hall919 2008-04-08
  • 打赏
  • 举报
回复
呵呵,你的问题太简单有繁琐。
关于如何入门,先用google搜搜,这类问题多的是。
你用axd模拟,内核有几种状态,如果简单的main函数,则在用户态,你就看用户态的寄存器,看别的当然不会有变化了。
fanghw 2008-04-07
  • 打赏
  • 举报
回复
1. 先确认你的JTAG仿真器是否链接成功
2. 确认你是否初始化了存储控制器

如果都OK了,基本上就OK了,哈...........................
feng_me 2008-03-27
  • 打赏
  • 举报
回复
这是基本概念问题。

1、ADS1.2自带AXD调试工具,一般使用Multiice来进行连接。你首先需要确定你的确使用了Jtag连接成功了。我见过很多初学者一直在ARMulate里面混,还以为上板子呢。

2、如果MultiICE是正确的,那么恭喜,你这是非常常见的Data Abort错误。你需要重新连接MultiICE,然后,确定你的Image的区域的确可写。建议你尝试着利用AXD写写RAM。如果可写,证明你的Jtag还算连接正确,如果不可写,你需要重新看好。


ADS当然可以使用操作系统。不过,linux一般还是用GNU工具链比较好。最好不要交叉使用。

推荐ADS使用的操作系统:uCos、eCos



作为bootloader,uboot只是功能比较强大而已。不是必须使用的工具。建议你自己用ADS先写写自己的bootloader为好。个人感觉,那是最简单的。
yerenhjy 2008-03-23
  • 打赏
  • 举报
回复
。。。

不知道怎么入门到处乱撞的时候确实是比较繁琐啊,做过的人应该比较清楚吧?我现在就是想请教一下如何入门,或者说是开发过的人是如何做的。。。
色郎中 2008-03-22
  • 打赏
  • 举报
回复
还真烦琐

6,125

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 硬件设计
社区管理员
  • 硬件设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧