原创 【转贴】430也能玩嵌入式:Contiki内核在IAR+MSP430下移植(三)

2013-1-24 09:53 1231 12 12 分类: MCU/ 嵌入式

430下也能跑操作系统,本文转自:http://blog.chinaunix.net/uid-9112803-id-3146985.html

2.3 ISR定义修改

Contiki默认开发环境是Linux,其中断服务处理程序定义格式与IAR不同,编译的时候报如下错误:

9112803_1332594807YH6q.png

图4 ISR相关错误

这里只要略加修改即可,改成符合IAR的格式,以button-sensor.c为例,如下:

 

  1. interrupt(PORT2_VECTOR)
  2. irq_p2(void)
  3.  
  4. /***改成如下内容***/
  5. #pragma vector= PORT2_VECTOR
  6. __interrupt void irq_p2(void)

 

2.4 找不到库文件

    Contiki用到了Linux下的库文件,先注释掉,编译单个文件,没问题最好(如cpu/msp430.c的sys/unistd.h),也就是说这个文件压根就没用到这个库文件。如果真用到了,再编译会引进新的错误,此时,果断将文件从工程目录移除(比如dlfcn.h、lib/malloc.h)。你可能会说,为何不将这些头文件从Linux找出来加到编译路径,我确实尝试了,发现可行性不高,因为库文件还调用其他库文件。不过后续移植可能得正视社个问题了。

    注:LINUX下使用动态链接库,源程序需要包含dlfcn.h头文件,文件dlfcn.h定义了调用动态链接库的函数的原型。

2.5 嵌入式汇编修改

(1) __asm__未定义

    GCC下关键字__asm__,等同于IAR的asm。不过,从文档《IAR C/C++ Compiler Reference Guide.pdf》来看,推荐使用关键字__asm(英文原文:the asm keyword is not available when the option --strict is used. The __asm keyword is always available)。在相应文件增加如下代码(比如msp430.c),即可解决:

 

  1. #ifdef __IAR_SYSTEMS_ICC__
  2.   #define __asm__ __asm
  3. #endif

 

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
12
关闭 站长推荐上一条 /3 下一条