打印

ADS2.2哪里有下载和**?

[复制链接]
2401|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
decoder8|  楼主 | 2007-11-8 17:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我的代码:    if (type == USB_STANDARD_REQUEST)
        (*StandardDeviceRequest[req])();
定义:void (*StandardDeviceRequest[])(void) =
{
    get_status,
    clear_feature,
    reserved,
    set_feature,
    reserved,
    set_address,
    get_descriptor,
    reserved, 
    get_configuration,
    set_configuration,
    get_interface,
    set_interface,
    reserved,
    reserved,
    reserved,
    reserved
};    
我用ADS2.2MAKE后,后成的ELF文件,在SDRAM中调试,调用get_status()时不能跳到正确的函数地址,选中下面那项时,MAKE后就可以了,不明白为什么会这样?请高手指教,给我一个解决问题的思路也可以的!先谢谢了!

相关帖子

沙发
dld2| | 2007-11-8 17:54 | 只看该作者

建议

生成链接符号文件,比较一下开关打开关闭的区别。

使用特权

评论回复
板凳
decoder8|  楼主 | 2007-11-8 20:38 | 只看该作者

我看了一下ELF地址定位

我对比了下两种情况下,get_descriptor()的定位,没有上面的选项时地址是0x0c002388,选项有时是0x0c001b60,按道理说,这个没有关系的呀!地址是ADS定义的呀!难道用函数指针时还要用scatter文件定义映像文件的地址映射?我在ADS手册中没有找到可用的解决方法,请各位指点!!

使用特权

评论回复
地板
decoder8|  楼主 | 2008-1-21 16:25 | 只看该作者

这个问题我已经解决,现在把解决方案发上来,希望对后来者有

首先说明一下:解决这个问题时,我请教了很多高手有这个坛子里的,比如:00,阿南等,也有别个坛子的朋友,他们给了我很多非常有用的建议,我很感谢他们!
这个问题主要是我写的bootloader有问题,为了简单我省去了代码从Flas中拷贝
到SDRAM中部分功能,因为我是自己做着玩一下的,不是做产品,我只须在SDRAM中
调试出来就OK了.RO区的代码不会有问题,但RW区就不一样,它是由|Image$$RW$$Limit|和|Image$$RW$$Base|给出的,所以它和RO区可能有重复区域,如果代码是在Flash中,程序运行时由bootloader完成代码的拷贝那就不会有问题,我所用的方法在用Jtag把程序下到SDRAM中运行,原代码没有展开,地址在RW区后都是错的了,所以函数指针就不能跳到正确的地址了,因为MAP文件中的地址和实际的地址不一样的.在我生成的MAP文件中,我看到RW区的一些地址和调试时看到的不一至.这也验证了我的想法.
解决办法:可以加入拷贝代码部分,也可把一些局部变量数组前加上Const放到RO区.这两种方法我都试过了,都是可行的.
摸索的日子很痛苦,当初这个问题捆饶了我几个星期,今天翻旧,看到了这个贴子,就写了点,希望后来者可以少走这个弯.表达能力有限,让各位见笑了!

使用特权

评论回复
5
djyos| | 2008-1-21 22:35 | 只看该作者

哈哈,我遇到过类似的问题

数月前调试djyos的加载器时碰到的,不过我没有像你那样费那么多周章。

使用特权

评论回复
6
decoder8|  楼主 | 2008-1-22 11:03 | 只看该作者

各人的思考方式不一样!

我搞51比较多,可能有后遗症吧!不过这个问题认真去分析,还是有很多可以细纠的地方的,并不是一无是处呀!对遇到这种问题的新手可能有用吧!

使用特权

评论回复
7
tubie| | 2008-2-2 09:49 | 只看该作者

ADS2.2哪里有下载和**?

使用特权

评论回复
8
zkr| | 2008-2-2 15:44 | 只看该作者

ADS貌似就出到1.2 Patch 848。

在下来就是RealView的那套了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

103

帖子

0

粉丝