2860|0

6366

帖子

4912

TA的资源

版主

楼主
 

430也能玩嵌入式:Contiki内核在IAR+MSP430下移植(六) [复制链接]

3.3 重复段Error[e24]
链接时提示如下错误:
图6 IAR Error[e24]示意图
   
造成这个问题的原因是有些文件包含了msp430.h,而有些文件包含了io430.h。以MSP430F1611为例,前者通过宏定位到msp430f1600.h,通过则是定位到iox16x.h,而这两个文件有很多重叠的地方(如本例的IE1)。cpu/msp430/rom.c包含了io430.h,flash.c包含了msp430.h,在这里,将flash.c包含的msp430.h改成io430.h。
同样的问题也发生在cpu/msp430/watchdog.c、core/dev/sht11.c、platform/MSP430-169LCD/dev/button-sensor.c(这个还得从包含的头文件追溯,在cpu/msp430/dev/hwconf.h文件)、cpu/msp430/leds-arch.c、cpu/msp430/clock.c、cpu/msp430/cc2420-arch-sfd.c等,可以通过Find in Files寻找msp430.h来替换。
3.4 外部符号未定义
(1) BV
在cpu/msp430/button.c提示外部符号BV未定义,通过Find in Files查找,可知该宏通常是定义在contiki-conf.h或者platform-conf.h文件,如下:
图7 BV宏定义位置

这里,模仿其他例程,在platform/MSP430-169LCD/contiki-conf.h文件加入如下代码:


    #ifndef BV   #define BV(x) (1<<(x))
  • #endif


(2)cc2420_sfd_counter、cc2420_sfd_start_time和cc2420_sfd_end_time
在cpu/msp430/cc2420-arch-sfd.c提示外部符号cc2420_sfd_counter.c、cc2420_sfd_start_time和cc2420_sfd_end_time未定义,该文件将这三个变量声明为外部变量,源码如下:


    extern volatile uint8_t cc2420_sfd_counter; extern volatile uint16_t cc2420_sfd_start_time;
  • extern volatile uint16_t cc2420_sfd_end_time;


事实上,这三个变量已经在contiki-2.5/core/dev/cc2420.c文件定义了, 而这个文件已经被我工程目录删除了,因为编译cc2420.c会引发一系列端口未定义(如TXEPT、UTXIFG0),而这些端口大概是跟cc2420芯片有关吧。这里,我们简单将cpu/msp430/目录下的cc2420*.c文件从工程移除。
 
点赞 关注

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表