基于SmartARM2300开发板的ADS工程移植keil5工程

需求描述:

最近在用LCP2378做项目,需要用到此芯片上的CAN接口,官方给的例程中,是ADS平台下的,根据我个人习惯,想在keil下进行开发,所以就需要将源码转换到keil平台上,根据需要搭建好keil5的软件环境(需要能支持LPC2XXX系列芯片支持包)。

 

1.新建keil工程,选择LCP2378芯片:

2、 会提示是否加载LPC2300.S可以选择加载后可以删除,这个文件相当于ADS里面的Startup.s是程序启动文件(就是复位、中断、main跳转之类的),由于将ADS工程移到这边可以不需要keil自带的LPC2300.S


3、 将ADS工程文件全部考到Keil 工程文件夹下,后在工程中将文件都加入(除了scf文件),keil工程文件加载后如下图:

 

注意:
(1)、不要将scf文件加入到keil工程下,不然编译会将其一起加入编译导致出错,scf文件在工程配置中设置
 

(2)LPC2378例程 有三个分散加载模式,分别是直接加载到RAM中,加载到flash,发布模式(与加载到flash一致)。
三种模式 分别对应上述 mem_b.scf、mem_c.scf、mem_a.scf(与c是相同的)。
三个文件的区别主要是根据不同的板子的flash、ROM、RAM地址决定的,这里根据前面LPC2300存储器映射决定。

 

4、 keil工程配置 ,主要注意以下几点

1)Target下配置如图,注意不要选Use MicroLIB。

2)添加编译头文件连接路径:

剩下的就是生成hex文件的配置,这个不在赘述,之后基本配置就完成了,如果需要仿真调试的,自行在Debug配置项里选择调试器和相应设置。

 

5、 编译连接错误解决

主要是Startup.s中的错误
1) warning: A1876W: Use of '|' as a synonym for the :OR: operator is deprecated.(这个问题暂时没遇到过)
解决方法:把'|'修改为':OR:'


2) warning: A1608W: MOV pc, instruction used, but BX is preferred
解决方法:把"MOV pc," 替换为 "BX"

 


3) Error: L6238E: os_cpu_a.o(subr) contains invalid call from '~PRES8 (The user did not require code to preserve 8-byte aligment of 8-byte data objects)' function to 'REQ8 (Code was permitted to depend on the 8-byte aligment of 8-byte data items)' function OSIntExit.

解决方法:在汇编程序前面加上PRESERVE8

4) warning:  #1-D: last line of file ends without a newline

解决方法:在警告文件末尾添加空白换行。

 

5)本工程编译遇到错误:error:  #147-D: declaration is incompatible with "void CANIntPrg(void)__irq" (declared at line 185 of "can\LPC2300CAN.h")

添加后如下图:

新错误根据此前第“3)”步进行解决。

编译通过后,生成的hex问价下载到开发板上验证一下,可以实现can中断接收和发送,再往里面移植部分像串口驱动和其他的驱动调试。

 

 

参考文献:

http://blog.sina.cn/dpool/blog/s/blog_658bb27f0101kzd2.html

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yzxjd1314

多谢鼓励,探索前行

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值