ADS转RVMDK ZLG 2134 2200 ARM7的菜鸟问题

[复制链接]
3610|24
 楼主| asbsp23 发表于 2013-12-18 09:49 | 显示全部楼层 |阅读模式
本帖最后由 asbsp23 于 2013-12-18 11:48 编辑

最近翻出了公司老人买的ZLG的ARM7开发板,有LPC2200和LPC2141,在看资料的时候发现都是用ADS1.2写的。之前有点KEIL基础,也看来几个ADS1.2转KEIL 的资料,不过有个头文件“rt_sys.h”里面有一句extern "C"{.........}让我迷惑了,是在里面声明的函数的编译方式是有什么特别的吗?还是这个是又ADS1.2带过来的?求指教。。。。。。
另:图片为移植时的一个报错,怀疑是电脑的环境没设置好,大神帮忙看看啊?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
huangxz 发表于 2013-12-18 10:10 | 显示全部楼层
这个是为了跟cpp兼容设计的,如果是纯c,直接删掉就可以了
 楼主| asbsp23 发表于 2013-12-18 11:49 | 显示全部楼层
huangxz 发表于 2013-12-18 10:10
这个是为了跟cpp兼容设计的,如果是纯c,直接删掉就可以了

感谢,帮我看看新问题啊,万分感谢~!
huangxz 发表于 2013-12-18 15:47 | 显示全部楼层
发错图了吧,图片是个分散加载文件呢
 楼主| asbsp23 发表于 2013-12-19 08:10 | 显示全部楼层
huangxz 发表于 2013-12-18 15:47
发错图了吧,图片是个分散加载文件呢

报错就是在这过不去,我怀疑是不是在启动代码里需要再加个初始化函数,还是说函数进入的地址不对啊。
jxyggg 发表于 2013-12-19 12:54 | 显示全部楼层
asbsp23 发表于 2013-12-19 08:10
报错就是在这过不去,我怀疑是不是在启动代码里需要再加个初始化函数,还是说函数进入的地址不对啊。 ...

楼主你是不是报的这个错误:
error: L6236E: No section matches selector - no section to be FIRST/LAST.
huangxz 发表于 2013-12-19 14:03 | 显示全部楼层
jxyggg 发表于 2013-12-19 12:54
楼主你是不是报的这个错误:
error: L6236E: No section matches selector - no section to be FIRST/LAS ...

出现这个错误是因为你没有启动代码
huangxz 发表于 2013-12-19 14:04 | 显示全部楼层
asbsp23 发表于 2013-12-19 08:10
报错就是在这过不去,我怀疑是不是在启动代码里需要再加个初始化函数,还是说函数进入的地址不对啊。 ...

你报的什么错都没发出来看看
jxyggg 发表于 2013-12-19 14:40 | 显示全部楼层
huangxz 发表于 2013-12-19 14:03
出现这个错误是因为你没有启动代码

huangxz你好,我也遇到过这个问题的,不过我用的是2416,模仿2440的启动代码改了一下我2416的启动代码,编译是通过了,但是JLINK仿真没法跳入MAIN函数,遂使用软件单步simulation,发现我的Entry point虽然是设置了,但确实没有跳入到MAIN。一直在汇编段循环,想请教一下到底怎么回事,可以详细交流吗?谢谢!
craaazyfor 发表于 2013-12-19 14:46 | 显示全部楼层
1. 没必要去做这种无谓的移植;
2. ADS的启动代码和KEIL有些约定不一样,你得去查相关资料,要对这个很熟;
3. LPC2200比较经典,但是已经有点out了,有精力的话去研究点别的;
huangxz 发表于 2013-12-19 15:48 | 显示全部楼层
jxyggg 发表于 2013-12-19 14:40
huangxz你好,我也遇到过这个问题的,不过我用的是2416,模仿2440的启动代码改了一下我2416的启动代码, ...

可能的原因是你的堆栈设置有问题,特别是使用target.c一定要分配堆,
你可以是是。
jxyggg 发表于 2013-12-19 16:14 | 显示全部楼层
huangxz 发表于 2013-12-19 15:48
可能的原因是你的堆栈设置有问题,特别是使用target.c一定要分配堆,
你可以是是。 ...

堆栈设置是在汇编段里面进行的吗?目前只做了关闭看门狗、屏蔽中断,初始化MMU等等操作。
 楼主| asbsp23 发表于 2013-12-19 20:42 | 显示全部楼层
craaazyfor 发表于 2013-12-19 14:46
1. 没必要去做这种无谓的移植;
2. ADS的启动代码和KEIL有些约定不一样,你得去查相关资料,要对这个很熟; ...

谢谢你的回复,其实本身研究这个移植就是想知道周立功的开发板的那些历程用KEIL编译下效果怎么样,而且有人说KEIL建立工程自动添加的启动代码不对,我对比了一下,是有些区别,就想移植下比较。ARM7的东西,肯定是除非一些特殊情况才会用了,也是新手菜鸟的启蒙问题吧。
 楼主| asbsp23 发表于 2013-12-19 20:45 | 显示全部楼层
huangxz 发表于 2013-12-19 15:48
可能的原因是你的堆栈设置有问题,特别是使用target.c一定要分配堆,
你可以是是。 ...

谢谢您的回复,后来我在选择加载文件的地方,也就是LINKER选项中,选择了原来ADS的分散加载文件mem_c.scf,编译通过,您上面说的很正确,我还想问个问题是,ARM7要是用KEIL的话启动代码是用默认的就行吗?分散加载的就需要自己写吗?那周立功历程里面的一些初始化函数也是得修改的,是吧?
 楼主| asbsp23 发表于 2013-12-19 20:47 | 显示全部楼层
jxyggg 发表于 2013-12-19 14:40
huangxz你好,我也遇到过这个问题的,不过我用的是2416,模仿2440的启动代码改了一下我2416的启动代码, ...

谢谢您的回复,请参考下我的意见,我今天后来通过编译的情况是确定了分散加载的具体位置,您编译的不通过有可能是因为使用了分散加载来提高性能,但是具体地址不符合。您可以尝试搜索下有个专门对分散加载进行解释的文档,在百度文库里就有,希望听到您的好消息。
 楼主| asbsp23 发表于 2013-12-19 20:49 | 显示全部楼层
jxyggg 发表于 2013-12-19 16:14
堆栈设置是在汇编段里面进行的吗?目前只做了关闭看门狗、屏蔽中断,初始化MMU等等操作。 ...

谢谢您的回复,就我看到的是一些堆栈的初始化,比如大小,是在启动代码startup.s里有的,关于target.c的情况我明天再仔细看一下,希望能尽快和您讨论。
jxyggg 发表于 2013-12-19 21:24 | 显示全部楼层
asbsp23 发表于 2013-12-19 20:49
谢谢您的回复,就我看到的是一些堆栈的初始化,比如大小,是在启动代码startup.s里有的,关于target.c的 ...

樱木君你客气了。。。我才是真菜鸟,很多时候都是照葫芦画瓢,对于我自己这边的问题我还在继续摸索中。倒是有个问题困扰我有段时间了,就是.s文件和debugger选项里面添加的ini文件,作用都是初始化,.s的是高效率的汇编语句,ini则是一段keil脚本,这两者在初始化上面有什么区别吗?而且在网上的教程中写到,如果是JLINK的在线仿真,则必须要添加该ini文件,否则就会报code56的错误代码。
rocdove 发表于 2013-12-19 22:03 | 显示全部楼层
谁知道17楼的问题,同求
jxyggg 发表于 2013-12-19 22:11 | 显示全部楼层
rocdove 发表于 2013-12-19 22:03
谁知道17楼的问题,同求

恩恩,一起讨论。。。主要是对汇编苦手,看不出来端倪。。。
rocdove 发表于 2013-12-19 22:15 | 显示全部楼层
jxyggg 发表于 2013-12-19 22:11
恩恩,一起讨论。。。主要是对汇编苦手,看不出来端倪。。。

那就慢慢等吧,自己再好好看看吧,一起学习
您需要登录后才可以回帖 登录 | 注册

本版积分规则

13

主题

68

帖子

1

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