linux下,基于cc2538的contiki平台搭建
2015-05-31 22:21
204 查看
先说一下背景吧,contiki是集成了ipv6协议,然后融合无线传感器网络技术,最终形成了自己的一套独特的。无线类型的,具有ipv6特点的,低功耗,低速率的通信协议—-6lowpan。在我看来,说白了,就是一种协议栈,与大家熟悉的zigbee协议栈一样,我潜意识里称它为ipv6协议栈(为了便于理解,就管它叫ipv6协议栈了)。contiki源码是在linux下开发的,如果不是因为它封装了ipv6协议栈,鬼才会用contiki系统呢,还不如研究资料多的FreeRtos去。一开始,想把contiki移植到IAR上,毕竟在windows平台下开发,资源多一些,也比较熟悉这个环境,可以在线仿真,调试。花了差不多一个月,断断续续的往IAR下移植contiki,主要是基于硬件cc2538(网上有移植好的案例,是基于stm32平台的,没人搞cc2538),程序是可以正常编译链接了,但仿真时,有些中断进不去,程序不是按正常的流程执行。为了应急,只能去那个没有在线仿真,看程序到底执行到那一步的话,只能靠串口打印了解的linux平台了。
回归正题,下面就详细介绍ubuntu14.04下,基于contiki的cc2538平台搭建。
(1)windows下的配置
Contiki源码中,为cc2538提供了bsl的下载方式,即串口下载,并且在为我们提供了cc2538的下载工具—cc2538-bsl.py。而从TI提供的关于cc2538的官方手册—cc2538 Rom User’s Guide知,cc2538有两种启动方式:flash启动和rom启动。前者主要是针对仿真器下载时使用,后者主要是为bsl下载使用。TI提供的源码中,都是将cc2538配置成了flash启动,那么,我们在使用bsl下载前,需要将其配置为rom启动。这其中,主要是对寄存器Boot Loader Backdoor配置。Boot Loader Backdoor寄存器各位表示的意义,如图1-1和图1-2。
需要注意的是Boot Loader Backdoor是一个32位的寄存器,目前TI只开发了前八位的功能,其他位作为预留。这其中最关键的是对宏的配置:#define BOOTLOADER_BACKDOOR_DISABLE 0xf3FFFFFF 只需要将其前八位配置为f3即可,这样,就是能了rom启动,并且通过PA3管脚为低来控制是程序下载还是程序运行。具体代码如下,只需要把它复制到main函数的前面,用IAR下载到cc2538里面即可。
(2)linux下的配置
我们采用的是ubuntu14.04版本,进入系统后,打开终端,快捷键ctrl+alt+t。
1, 建立终端管理员账户,指令:sudo passwd ,输入密码并确认。如果已经有账户,可以省略步骤1。
2, 进入终端管理员账户,指令:su,输入密码。
3, 配置ubuntu下的rom启动,首先进入配置文件目录,指令:cd /contiki-master/platform/cc2538dk 打开contiki-conf.h文件,指令:vim contiki-conf.h 参照图1-3修改。
4, 连接设备,这里要用到usb转ttl模块和四根杜邦线。cc2538的TXD连接模块RXD,cc2538的RXD连接模块TXD,cc2538的GND连接模块GND,cc2538的VCC连接模块3.3VCC。然后将模块插到电脑usb口,参看设备。指令:ls /dev/,如图1-4,可以发现一个ttyUSB0设备,即我们的模块。配置设备权限可读,可写,可执行,指令:chmod 777 ttyUSB0
5, 配置下载工具,进入Makefile目录,指令:cd /contiki-master/platform/cc2538dk ,修改Makefile.include文件,参照图1-5。其中,%.p:%.bin是下载指令和要下载bin文件格式。要注意的就是,contiki源码中,是%.upload:%.bin ,为了以后下载程序时方便,我们换成了%.p:%.bin,这将使下载程序可以省点事。 python (BSL)−e−w−v−p/dev/ttyUSB0(BSL) -e -w -v -p/dev/ttyUSB0 <是要通过下载工具cc2538-bsl.py下载到ttyUSB0设备里面。
6, 安装M3内核交叉编译器,指令:apt-get install gcc-arm-none-eabi,输入Y确定安装。完成安装后,可以查看安装情况和编译器的相关信息,指令:arm-none-eabi-gcc -v(注意,安装的时候和安装完后,编译器名字的差异)
7, 进入cc2538的例程,指令:cd contiki-master/examples/cc2538dk/ 尝试编译工程,指令:make 。编译结束会生成一个.bin文件,然后下载程序(下载前,要将PA3管脚拉低,并复位cc2538),指令:make cc2538-demo.p,可以参考图1-6
,即下载成功。将PA3管脚悬空,复位cc2538,程序就可以正常运行了。到此,ubuntu14.04下,基于cc2538的contiki开发平台搭建完毕。
回归正题,下面就详细介绍ubuntu14.04下,基于contiki的cc2538平台搭建。
(1)windows下的配置
Contiki源码中,为cc2538提供了bsl的下载方式,即串口下载,并且在为我们提供了cc2538的下载工具—cc2538-bsl.py。而从TI提供的关于cc2538的官方手册—cc2538 Rom User’s Guide知,cc2538有两种启动方式:flash启动和rom启动。前者主要是针对仿真器下载时使用,后者主要是为bsl下载使用。TI提供的源码中,都是将cc2538配置成了flash启动,那么,我们在使用bsl下载前,需要将其配置为rom启动。这其中,主要是对寄存器Boot Loader Backdoor配置。Boot Loader Backdoor寄存器各位表示的意义,如图1-1和图1-2。
需要注意的是Boot Loader Backdoor是一个32位的寄存器,目前TI只开发了前八位的功能,其他位作为预留。这其中最关键的是对宏的配置:#define BOOTLOADER_BACKDOOR_DISABLE 0xf3FFFFFF 只需要将其前八位配置为f3即可,这样,就是能了rom启动,并且通过PA3管脚为低来控制是程序下载还是程序运行。具体代码如下,只需要把它复制到main函数的前面,用IAR下载到cc2538里面即可。
/**********************flash_acc ********************/ #define FLASH_START_ADDR 0x00200000 #define BOOTLOADER_BACKDOOR_DISABLE 0xf3FFFFFF #define SYS_CTRL_EMUOVR 0x400D20B4 #define SYS_CTRL_I_MAP 0x400D2098 typedef struct { uint32_t ui32BootldrCfg; uint32_t ui32ImageValid; uint32_t ui32ImageVectorAddr; } lockPageCCA_t; #ifdef __IAR_SYSTEMS_ICC__ __root const lockPageCCA_t __cca @ ".flashcca" = #elif __TI_COMPILER_VERSION__ #pragma DATA_SECTION(__cca, ".flashcca") #pragma RETAIN(__cca) const lockPageCCA_t __cca = #else __attribute__ ((section(".flashcca"), used)) const lockPageCCA_t __cca = #endif { BOOTLOADER_BACKDOOR_DISABLE, // Bootloader backdoor disabled 0, // Image valid bytes FLASH_START_ADDR // Vector table located at flash start address }; /**********************flash_acc ********************/
(2)linux下的配置
我们采用的是ubuntu14.04版本,进入系统后,打开终端,快捷键ctrl+alt+t。
1, 建立终端管理员账户,指令:sudo passwd ,输入密码并确认。如果已经有账户,可以省略步骤1。
2, 进入终端管理员账户,指令:su,输入密码。
3, 配置ubuntu下的rom启动,首先进入配置文件目录,指令:cd /contiki-master/platform/cc2538dk 打开contiki-conf.h文件,指令:vim contiki-conf.h 参照图1-3修改。
4, 连接设备,这里要用到usb转ttl模块和四根杜邦线。cc2538的TXD连接模块RXD,cc2538的RXD连接模块TXD,cc2538的GND连接模块GND,cc2538的VCC连接模块3.3VCC。然后将模块插到电脑usb口,参看设备。指令:ls /dev/,如图1-4,可以发现一个ttyUSB0设备,即我们的模块。配置设备权限可读,可写,可执行,指令:chmod 777 ttyUSB0
5, 配置下载工具,进入Makefile目录,指令:cd /contiki-master/platform/cc2538dk ,修改Makefile.include文件,参照图1-5。其中,%.p:%.bin是下载指令和要下载bin文件格式。要注意的就是,contiki源码中,是%.upload:%.bin ,为了以后下载程序时方便,我们换成了%.p:%.bin,这将使下载程序可以省点事。 python (BSL)−e−w−v−p/dev/ttyUSB0(BSL) -e -w -v -p/dev/ttyUSB0 <是要通过下载工具cc2538-bsl.py下载到ttyUSB0设备里面。
6, 安装M3内核交叉编译器,指令:apt-get install gcc-arm-none-eabi,输入Y确定安装。完成安装后,可以查看安装情况和编译器的相关信息,指令:arm-none-eabi-gcc -v(注意,安装的时候和安装完后,编译器名字的差异)
7, 进入cc2538的例程,指令:cd contiki-master/examples/cc2538dk/ 尝试编译工程,指令:make 。编译结束会生成一个.bin文件,然后下载程序(下载前,要将PA3管脚拉低,并复位cc2538),指令:make cc2538-demo.p,可以参考图1-6
,即下载成功。将PA3管脚悬空,复位cc2538,程序就可以正常运行了。到此,ubuntu14.04下,基于cc2538的contiki开发平台搭建完毕。
相关文章推荐
- RedHat Enterprise Linux5 安装wireshark
- [我的Linux学习之路]VMware下的RHEL 6.4 安装gcc和gcc-c++(适用于RHEL 6.5)
- RedHat Enterprise Linux5中文显示乱码的解决办法
- LINUX-软件安装(二)
- LINUX-软件安装(一)
- U盘安装centos 6.4教程(总算是弄好了)
- Linux基础--3VIM编辑
- linux中md5sum命令的重要作用------顺便聊聊两次与之相关的经历
- UNIX和Linux
- linux内存共享
- 在CentOS6上使用源码编译LAMP平台
- Linux python 配置
- [Linux]grep删除空行
- Linux操作系统上用数据泵导库
- Qt移植 Window --Linux
- Centos6.5学习之添加用户
- 查看文件系统类型的Linux命令
- Linux-dd命令详解
- Linux的sysctl 命令参数详解
- linux syslogd服务