与Instant Contiki相比,在Windows的IAR下开发可以在线仿真,下载也更方便,因此我想把BLEach的工程移植到IAR下。弄了好几天总算编译并且下载成功了,参考了[这篇TI的wiki][1],过程中的error和warning都是查google一个个改的,过程记录难免会有一些疏忽,欢迎讨论和指正。

软硬件环境:

  • 系统: Win10
  • IDE: IAR for ARM 7.4
  • driverlib 版本:cc26xxware_2_24_02_17393(包含在tirtos_cc13xx_cc26xx_2_20_01_08中)
  • Contiki: 3.0.5 包含BLEach https://github.com/spoerk/contiki

1.创建新工程Project->Creat New Project, Tool chain 选ARM, 建一个新工程:

然后选择工程目录并起名字,我的工程叫cc26xx-BLE-server-demo。

2. 右击工程名 Add->Add Group(可以看作创建文件夹),根据本工程的实际情况创建如下Group:

3. 添加源文件(仅添加本工程编译和链接过程中必须的文件)

application:

core:

core下的net目录:

cpu:

platform

4. 设置设备:

5. 设置编译器的include目录:

这步需要根据编译时产生的"file xxx not found"错误来添加,下面是本工程的include内容:

$PROJ_DIR$\contiki\core
$PROJ_DIR$\contiki\core\sys
$PROJ_DIR$\contiki\core\lib
$PROJ_DIR$\contiki\core\net
$PROJ_DIR$\contiki\examples\cc26xx\cc26xx-ble-server-demo
$PROJ_DIR$\contiki\platform\srf06-cc26xx
$PROJ_DIR$\contiki\platform\srf06-cc26xx\srf06\cc26xx
$PROJ_DIR$\contiki\cpu\cc26xx-cc13xx\lib\cc26xxware\driverlib
$PROJ_DIR$\contiki\cpu\cc26xx-cc13xx\lib\cc26xxware
$PROJ_DIR$\contiki\cpu\cc26xx-cc13xx
$PROJ_DIR$\contiki\platform
$PROJ_DIR$\contiki\core\dev
$PROJ_DIR$\contiki\cpu\cc26xx-cc13xx\dev
$PROJ_DIR$\contiki\cpu\cc26xx-cc13xx\lib\cc26xxware\inc
$PROJ_DIR$\contiki
$PROJ_DIR$\contiki\cpu\cc26xx-cc13xx\rf-core\api

这里建议都用$PROJ_DIR$写成相对路径的形式,方便我们更改工程路径。

6. 设置链接器

这里需要填写TI的开发库cc26xxware driverlib的路径,我的是:..\contiki\cpu\cc26xx-cc13xx\lib\cc26xxware\driverlib\bin\iar\driverlib.lib
此处一定注意driverlib的版本,我使用旧版本出现了no definition for _iar_program_start的error。
本文中的driverlib是从tirtos_cc13xx_cc26xx_2_20_01_08提取出来的,该软件包可以从TI官网下载,其默认安装目录为C:\ti\tirtos_cc13xx_cc26xx_2_20_01_08\products\cc26xxware_2_24_02_17393
如果是其他工程,需要根据链接产生的错误从第3步逐步添加所需要的文件,如果不好定位链接器error中找不到的函数名,可以用source insight新建一个工程来定位函数具体在哪个文件中。

7. 设置宏

在IAR中我们并不使用Makefile,因此需要将一些宏定义显示写在如下窗口:

具体需要根据各级Makefile,..\contiki\platform\srf06-cc26xx\contiki-conf.h和..\contiki\examples\cc26xx\cc26xx-ble-server-demo\project-conf.h设置,本工程中的宏如下:

CONTIKI_WITH_RPL=0
CONTIKI_WITH_IPV6=1
AUTOSTART_ENABLE
MODE_IEEE802_15_4=1
MODE_BLE=2
MODE=MODE_BLE
BUTTON_SENSOR_CONF_ENABLE_SHUTDOWN=0
BOARD_CONF_DEBUGGER_DEVPACK=1
PACKETBUF_CONF_SIZE=1280
QUEUEBUF_CONF_NUM=1
UIP_CONF_BUFFER_SIZE=1280
CC26XX_CONF_RADIO_MODE=CC26XX_RADIO_MODE_BLE
NETSTACK_CONF_RADIO=ble_cc2650_driver
NETSTACK_CONF_RDC=ble_null_par_driver
NETSTACK_CONF_MAC=ble_l2cap_driver
RTIMER_CONF_MULTIPLE_ACCESS=1
BLE_MODE_CONF_INIT_PEER_ADDR=0x000000000000
SICSLOWPAN_CONF_MAC_MAX_PAYLOAD=1280
SICSLOWPAN_CONF_COMPRESSION=SICSLOWPAN_COMPRESSION_HC06
SICSLOWPAN_CONF_COMPRESSION_THRESHOLD=0
SICSLOWPAN_CONF_FRAG=0
SICSLOWPAN_FRAMER_HDRLEN=0
UIP_CONF_ROUTER=1
UIP_CONF_ND6_SEND_NA=1
UIP_CONF_ND6_SEND_RA=1
UIP_CONF_IP_FORWARD=0

一定注意不要有空格,否则会出现编译错误。
至此,编译器和链接器已经设置好了。
本工程源代码因为是Linux下的gcc编译的,在IAR中编译难免会有一些ERROR和WARNING,我记录了其中几个:

Error[Pe018]: expected a ")" D:\
xxx\contiki\cpu\cc26xx-cc13xx\rf-core\ble-hal\ble-hal-cc26xx.c 720 

这是因为IAR编译器不支持0b开头的二进制,我们把这些变量改为0x的16进制就可以了。

Warning[Pa050]: non-native end of line sequence detected (this diagnostic is only issued once) 

这是因为linux和windows的换行符编码不一样,可以如下设置以不显示这个警告,

Error[Pe852]: expression must be a pointer to a complete object type 

这是因为源码中对(void*)类型的指针进行了加减运算,比如ble-hal-cc26xx.c的line 1180, 通过查找这个变量的类型,我们将其改成

      memcpy(((uint8_t *)packetbuf_dataptr() + packetbuf_datalen()), &rx_data[header_offset], len);

8. 设置Debugger并下载

设置XDS,我使用的是XDS100V3,

Debugger

9. 下载可能会遇到如下错误

Wed Feb 07, 2018 22:31:07: Fatal error: Failed to connect to the XDS emulator (connect ICEPick)... (Error -241 @ 0x0) A router subpath could not be accessed. A security error has probably occurred. (Emulation package 5.1.641.0)
这是因为Flash Programmer2给程序上锁,我们需要用它擦除CC2650的FLASH,然后就可以下载和在线调试了。

更多内容请关注本博客后续文章。

[1] http://processors.wiki.ti.com/index.php/Contiki-IAR

转载于:https://www.cnblogs.com/cola-fish/p/8429061.html

在IAR下移植CC2650 contiki工程相关推荐

  1. 在IAR下如何查看工程的堆栈(STM32)

    在IAR下编程,难免少不了要跟堆栈打交道,但是打交道之前也要知道堆栈的大小,以及堆栈的位置在哪里? Options->Linker->Overridde default->Edit查 ...

  2. IAR下μCosIII移植心得

    2种方法的移植体验让我有了想法 一.野火和网上的移植方法相同之处 都是下载ucosIII源文件,原封不动的拷过来 UcosIII源文件的获取:从官网www.micrium.com下载ucosIII源文 ...

  3. IAR 下根据官方库建立 STM32的工程

    目录 1. IARforSTM32工程v0.0版本.... 1 2. IARforSTM32工程v0.1版本.... 6 2.1今天v0.0版本出现了警告.... 6 2.2下载仿真.... 7 2. ...

  4. Eclipse+WIN7+CC2538移植开发Contiki

    Eclipse+WIN7+CC2538的Contiki开发,题目好长啊,不少人不熟悉Linux开发环境,当然也我也不是很习惯,所以呢就想找个Windows环境下开发喽,这一次谈谈如何在Windows下 ...

  5. IAR版本不兼容打开工程文件的方法

    https://blog.csdn.net/jerrylwb/article/details/16916593 说起来本人用IAR也有好几年,从最开始的IAR for AVR到IAR FOR MSP4 ...

  6. IAR中移植UCOS II系统以及sourceInsight 使用

    ucos 学习笔记 1 sourceInsight 使用 CSDN参考链接 新建工程 第一步:project中new project 第二步:在高亮部分输入工程的地址,工程文件夹与IAR工程文件夹放在 ...

  7. ffmpeg-0.8 开源编码解码库从linux下移植到windows vs2005

    最新 ffmpeg-0.8 开源编码解码库,从linux下移植到windows vs2005,全部开源. 需要 Intel C++ Compile 和 开源的SDL库支持,由于 Intel C++ C ...

  8. ffmpeg-0.6.3开源编码解码库,从linux下移植到windows vs2005,全部开源。

    ffmpeg-0.6.3开源编码解码库,从linux下移植到windows vs2005,全部开源. 需要 Intel C++ Compile 和 开源的SDL库支持,由于 Intel C++ Com ...

  9. STM32移植LVGL8.0.2超详细的保姆级教程附移植好的工程文件

    文章目录 前言 一.什么是LVGL? 二.先看效果 三.移植前准备工作 1.准备原有工程 2.下载LVGL源码 四.开始移植 1.把源码搬运到工程文件夹里 2.把搬运好的代码添加到keil工程 3.动 ...

  10. Windows下程序向Linux下移植实践

    一.问题的提出 在程序员中有这样一个说法,若一个程序不能移植到Linux下,那这个程序将看不到未来. 由于Linux操作系统源码公开是的,开发库等辅助工具都是源码公开的,这样就减少了程序的不可预知性, ...

最新文章

  1. (转)Spring中ThreadLocal的认识
  2. pyspark AttributeError: 'NoneType' object has no attribute 'setCallSite'
  3. nginx A/B 灰色发布
  4. 备战ccpc分站赛:秦皇岛和威海站(数论模块和dp模块)
  5. Java与C++有何区别呢?请看以下几点就明白了……
  6. 快速排序 - python版超详细讲解
  7. 蟒蛇语言和python_蛇、蟒、蚺、蝰有什么区别
  8. Android usb audio调用流程(二)
  9. 网传字节跳动实习生删除所有轻量级模型,还有救吗?
  10. Atitit.ui控件---下拉菜单选择控件的实现select html
  11. Asp.net MVC3中进行自定义Error Page
  12. 关于quicktime
  13. 专线多个ip 虚拟服务器,一个云服务器可以做几个ip虚拟机
  14. # 欢迎使用马克飞象
  15. JavaScript之for循环、while循环 continue、break与代码规范
  16. 面向对象分析与设计的底层逻辑
  17. 数据库 SQL Server 检测到基于一致性的逻辑 I/O 错误 页撕裂 执行 读取 期间,发生了该错误 恢复
  18. 七麦js破解(最新)
  19. 道路天气数据:提高当今驾驶员和未来自动驾驶汽车的安全性
  20. 自己动手做计算机-计算机科学的本质

热门文章

  1. Netty编解码框架分析
  2. 承认吧,你就是不行!
  3. 双十一真的是全年最便宜的么?
  4. 教你一招最屌的阅读开源项目的姿势
  5. 标准的软件开发是怎样的?
  6. C语言求字符串并集,怎样用c语言写求集合的交集,并集,补集”这个程序?
  7. 环一维数组最大子数组问题
  8. onmouseover|onmouseout和onmouseenter|onmouseleave的区别
  9. 最有价值的编程忠告[转CSDN]
  10. Luogu4494 [HAOI2018]反色游戏 【割顶】