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

2013-1-24 09:52 3133 24 24 分类: MCU/ 嵌入式

 

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

 

 

四、其他地方

(1)loader-arch.h

    cpu/msp430/loader-arch.c文件中的#include "loader/loader-arch.h"改成#include "loader/elfloader-arch.h"。(通过逻辑判断)

(2)FSSEL_SMCLK

    contiki-2.5/cpu/msp430/rom.c文件中的FCTL2 = FWKEY | FSSEL_SMCLK | (FN2 | FN1)改成FCTL2 = FWKEY | FSSEL_2 | (FN2 | FN1)。即把FSSEL_SMCLK 改成FSSEL_2 ,这点从io430.h对应的MCU头文件(比如msp430ff161.h)可以看出。

(3) CH_CURS_UP未定义

    透过错误提示信息,可以发现这些类似的错误都跟ctk有关(文件名前缀),在contiki-2.5/core/有个目录ctk,文件ctk.h有这么一行注释"This file is part of the Contiki desktop OS."。纵观ctk的源码可知是跟图形相关的东西,在这里,我们将这些文件从工程目录移除(在core/lib/及core/ctk目录)。后来,查阅资料证实,ctk是Contiki的TK图形库(c是Contiki的首字母,Tk is a graphics library that extends Tcl with graphical-interface facilities)。

(4) core/dev目录

    这个目录改起来很简单,将cc2420相关的文件从工程目录移除,重新编译,会报io.h的错,改成io430.h即可(我觉得直接注释掉会更好)。

(5) core/loader目录

    移除其他平台的文件(比如elfloader-avr.c、cle_avr.c),编译会提示找不到malloc.h、dlfcn.h,再移除报错的文件。再编译,会提示错误(文件cle.c)"expression must be a pointer to a complete object type" ,移除该文件(粗略看下,大概是跟编译器支持有关),再编译就没问题了:-)这对跑Contiki内核不会有影响的,因为仅仅跑内核是没有用到动态加载这个模块的。

(6)LOADER_ARCH_MAGIC和LOADER_ARCH_VERSION没定义

    用Find in Files的目录查找,可知这两个变量在Contiki-2.5/platform/esb/loader/loader-arch.h和Contiki-2.5/platform/msb430/loader/loader-arch.h有定义。在这里,仿照定义这两个变量。创建文件platform/MSP430-169LCD/loader-arch.h文件,文件内容如下:

 

  1. //this file added by jelline
  2. #ifndef __LOADER_ARCH_H__
  3. #define __LOADER_ARCH_H__
  4.  
  5. #define LOADER_ARCH_MAGIC 0x373a
  6. #define LOADER_ARCH_VERSION 0x0001
  7.  
  8. #endif

 

文章评论0条评论)

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