如题。
正在学习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吗?
因为初学问题比较多,还请大家多多指教。
。。。
不知道怎么入门到处乱撞的时候确实是比较繁琐啊,做过的人应该比较清楚吧?我现在就是想请教一下如何入门,或者说是开发过的人是如何做的。。。
这是基本概念问题。
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为好。个人感觉,那是最简单的。
这一版块,太没人气了,是不是大家都成大侠了
如果成大侠了,也常回家看看嘛,家里太冷清了
据说努力顶帖也是一种美德,但我只想大家常回家看看
毕竟每天都有新手需要帮忙,而我能帮的只能是把帖子顶起来
1. 先确认你的JTAG仿真器是否链接成功
2. 确认你是否初始化了存储控制器
如果都OK了,基本上就OK了,哈...........................
呵呵,你的问题太简单有繁琐。
关于如何入门,先用google搜搜,这类问题多的是。
你用axd模拟,内核有几种状态,如果简单的main函数,则在用户态,你就看用户态的寄存器,看别的当然不会有变化了。
谢谢各位,帖已结。
不过还是想说几句,因为当时自己是初学,不知如何入门,摸索了一段时间,在这里问,等了三四天一直没有回复,作为开发学习实在是无法忍受这样的周期。。。后来经过找其他人,包括技术支持,总算是把问题解决了,而这里的这些回帖我都快给忘了,直到今天收到邮件提醒结帖的时候才看到,帮助已经很小了。。
不过还是把帖结了,把问题和答案留下来,供其他有需要的朋友看吧。
我也说说我后来的解决方案。问题就出在于对存储空间没有进行初始化,就像fengme就像朋友所说的那样,我的MultiICE连接是正确的,后来经过初始化之后就没有问题了。
不过使用ADS也只是我当时想了解ARM内部结构的时候学习的一个工具吧,现在我基本都是在Linux环境下,建立NFS服务期,在板子上移植了uboot和Linux,然后连接主机的NFS服务器,下载主机上交叉编译环境下编好的应用程序,或者驱动程序,挂载,目前正在学习驱动程序的编写,有什么心得再来这里跟各位分享吧。。
噢,天,我看错行了,结帖都结错了,全给成下移一位了。。。
feng_me朋友,实在是很抱歉,我欠你20分。。争取给你还上,现在这里也改不了了好像。