请教:关于ADS1.2里codewarror的问题,ARM9

[复制链接]
4423|11
 楼主| sunwind45 发表于 2008-9-20 14:42 | 显示全部楼层 |阅读模式
我有个arm9的板子,想试试,但是不晓得如何设置codewarror.<br /><br />见教程上说的顺序:<br />建个ARM&nbsp;Executable&nbsp;Image&nbsp;---&gt添加源程序&nbsp;----&gtdebugger&nbsp;设置.<br />主要的问题就是debugger的设置,有些可以知道,比如target&nbsp;setting;有些就比较迷茫了:<br />1.&nbsp;ARM&nbsp;Assembler&nbsp;:&nbsp;是不是只要选择了arm的结构为arm920t(我的内核是这个),其他不用再去管了(little&nbsp;endian,No&nbsp;floating&nbsp;point&nbsp;等)?<br />Equivalent&nbsp;Command&nbsp;Line里的东西需要自己去弄吗?<br /><br />2.&nbsp;ARM&nbsp;C&nbsp;Compiler设置是不是跟第一个(ARM&nbsp;Assembler&nbsp;)一样?<br /><br />3.其他编译器我不用,是不是可以不去设置?<br /><br />4.ARM&nbsp;Linker里,RO&nbsp;base和RW&nbsp;base到底该添什么?它们的意思我晓得.但是,我要在仿真器里跑,并不烧到flash里;那么,这个RO&nbsp;base应该是sdram的地址吗?还是说这个只是个用来下载用,转成二进制就会被去掉?直接下到sdram里,可以不用考虑这个ro&nbsp;base?<br />RW&nbsp;base是不是都不用填,默认为sdram?<br /><br />我的nor&nbsp;flash是接在gcs0,sdram是接在gcs6,nand&nbsp;flash不知道接到哪儿了(没搞清楚).<br /><br />5.ARM&nbsp;fromELF.输出文件名是不是必须填?<br /><br />6.对于模板的问题.我也做了个.在新建工程也能看见.但是,建出来的工程文件,它的设置还是默认的设置,跟我建的模板的设置根本不是一回事.这是咋回事?<br />糊涂.<br /><br />另外,我编个闪灯小程序,那么对sdram的初始化是怎么完成的?是不是应该调试器去完成这个过程吗?<br />
twentyone 发表于 2008-9-20 16:00 | 显示全部楼层

看来LZ是个绝对的新手

看了LZ的问题,实在太多。<br /><br />1&nbsp;-&nbsp;选择ARM920T就可以了,一般情况下,都是运行在LITTLE&nbsp;ENDIAN的;<br />2&nbsp;-&nbsp;一样的设置;<br />3&nbsp;-&nbsp;可以不设置;<br />4&nbsp;-&nbsp;程序分为几个部分,RO部分,RW部分,你需要指定RO地址。RW地址可以不指定,如果不指定,默认跟在RO后面。<br />5&nbsp;-&nbsp;你可以暂时不用管FROMELF。这个一个把ELF/AXF文件转换成别的格式的工具。<br />6&nbsp;-&nbsp;你刚开始学,最好不要用别人的模板,自己直接新建工程。这样会对项目结构了解得更好。<br /><br />SDRAM的初始化是用户自己的事情,想AXD和仿真软件,都只是提供了一个调试接口给用户,用户需要利用这个接口完成自己想做的事情。
阿南 发表于 2008-9-20 21:50 | 显示全部楼层

感谢21,回答的非常的耐心.

楼主是什么板子,先找个现成的工程运行一下吧.其实需要设置的地方不多
 楼主| sunwind45 发表于 2008-9-22 08:58 | 显示全部楼层

我的是以前别人买的广州产的s3c2410的板子

没什么资料,就一个光棍板子,里面预装了个linux.<br /><br />现在领导想装个wince进去,让学习学习.<br /><br />目前有个jtagjet仿真器,有chameleon调试器,又下了ads1.2作为编译器.<br /><br />唉,chameleon不晓得咋使,文档很简单,网上也没什么资料.<br /><br />看来,试试ads1.2的axd了.<br /><br />因为我不想用操作系统,只想编个小程序.那么,要把程序load到sdram里去跑,在这之前,是应该需要把sdram(或者说存储空间分配)初始化.否则,sdram应该是不能用的.我想应该是有个初始化文件.调试器在load之前,先用这个初始化文件把cpu初始化了,这样才能直接使用.比如,ti&nbsp;的ccs有个gel文件,codewarror&nbsp;for&nbsp;powerpc&nbsp;有个用户初始化文件,它们都是做这个事的.arm难道不需要?<br /><br />我用的仿真器是jtagjet,使用axd调试有障碍吗?<br /><br />很感谢两位老大的帮忙,还需要啊.
freewing 发表于 2008-9-23 15:57 | 显示全部楼层

这里有个教程可以参考

这里有个教程可以参考<br />只是这个是用sky2440的板子来做实验的。是s3c2440&nbsp;的cpu&nbsp;。<br />链接:http://www.embedsky.net/bbs/viewthread.php?tid=20&extra=page%3D1<br /><br />归纳起来,就是2楼说的情况。&nbsp;具体,你可以下这个教程看看。有从建立,到使用的过程的详细图解。还是用h-jtag来仿真的。<br />版权归:)&nbsp;:&nbsp;&nbsp;http://www.embedsky.net<br /><br /><br />我的淘宝:http://shop34627750.taobao.com/<br />
 楼主| sunwind45 发表于 2008-9-24 10:11 | 显示全部楼层

感谢!

我去下了,还没看.<br /><br />我的chameleon调试器,已经发现它的初始化文件了.它用的是个宏文件,以mac为扩展名.<br />只是有些命令不清楚是什么意思,没有说明文档.<br />参考了例子,修改了下,能够对sdram操作了.<br /><br />现在的问题就是codewarror的编译问题.<br />它的image&nbsp;entry&nbsp;point&nbsp;是指的运行起始地址???需要填吗?<br /><br />我想直接load二进制文件,然后改pc指针,直接去跑.<br />但是,我搞不清楚运行起始地址是哪个.<br /><br />在ARM&nbsp;Linker命令行里会有这个:-first&nbsp;2410init.o(Init).这个是哪儿来的?<br /><br />呵呵.
armfan 发表于 2008-9-24 11:08 | 显示全部楼层

re :

还是找找ads资料在问吧<br />或是留下邮箱,我给你发过去几个文档。
 楼主| sunwind45 发表于 2008-9-24 15:55 | 显示全部楼层

我是一边在试,一边在问,一边在看资料,老大们别怕麻烦

现在,我基本上把我的chameleon的调试环境熟悉了些.<br /><br />用ads1.2生成elf文件,可以直接用chameleon去调试了.<br /><br />现在的问题是代码运行到_rt_entry的_rt_stackheap_init就出了问题,根本到不了我的main()函数.<br /><br />刚才看了资料,ads在开始有个_mian()作为c语言的入口函数,随后有_rt_entry等等.那么,在用的时候,要注意什么呢?我的问题好象就是出在这里了.<br /><br />另外,这个入口函数是ads提供的,网上说可以自己写一个代替,难道提供的不如自己写的吗?还是说因为自己写的用的方便?<br /><br />我的email:sunwind45@163.com<br /><br />谢谢各位大虾的帮忙啊.
 楼主| sunwind45 发表于 2008-9-26 09:58 | 显示全部楼层

问题是出在_user_initial_stackheap

现在根据程序运行的情况看,是出在_user_initial_stackheap里.<br /><br />它修改了SP的值,为0x80000,这个地址在我的板子上是个FLASH,不可能作为stack使用.<br /><br />看资料说,STACK的基地址是调试器设定的.<br /><br />这个事情就很难办了.<br /><br />chameleon资料太少了.要想找它的stack默认设置难啊.至少在软件界面上没发现有可以去改的地方.<br /><br />
 楼主| sunwind45 发表于 2008-9-26 11:26 | 显示全部楼层

问题确定了,就是stack的初始化问题

刚试了下,在它刚把stack的基地址改成0x80000的时候,我人为的改成sdram的一个地址.这样,程序就跑了,灯也闪了.<br /><br />目前,就是不晓得它从哪里取的stack的基地址.<br />它执行了一个SWI的软中断,好象就是取了这个基地址.<br /><br />另外,想知道,ads1.2里是这样说的,stack的基地址跟调试环境有关.要是我不使用ads里所说的几种调试器,那么它这个值会是去哪儿取?<br /><br />要是不用ads1.2,用keil,是不是就没这个问题?<br /><br />还得继续看.<br />老大们也帮帮忙.<br /><br />呵呵
 楼主| sunwind45 发表于 2008-9-26 16:59 | 显示全部楼层

自己顶

你们在调试时没有这样的问题吗?<br /><br />axd调试器是在peripheral.ami文件里设置了默认值,现在就不知道如何对chameleon.<br /><br />要是不使用semihosting,是不是就比较麻烦啊?<br /><br />我还是希望使用标准的东西,呵呵<br /><br />现在模糊的可能是,semihosting不支持jtagjet仿真器.
 楼主| sunwind45 发表于 2008-10-13 10:03 | 显示全部楼层

问题解决

chameleon需要在初始化mac文件里加条语句,直接初始化top_of_memory.<br />这样就可以了.<br />至于AXD&nbsp;,还没通.它总是死在SWI&nbsp;那里.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

74

主题

178

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部