Contiki 在STM32 中的移植
2016-03-14 14:32
183 查看
使用野火的板子进行Contiki移植:
开发环境:IAR+STM32
代码移植基本上参照xukai871105 前辈的教程,不同之处是使用的是寄存器的操作方式,并没有是用STM32 的库函数。
代码如下:
实现简单的串口发送。在编译过程中出现no definition for “autostart_processes”错误,跟踪代码后发现有如下宏:
便在头文件添加了
但依然解决不了错误;经过百度后知道在前面没有调用宏PROCESS(name, strname) ;AUTOSTART_PROCESSES(…);致使后面的autostart_processes未定义。
最后编译完成后,烧写到板子时提示代码区域有误便使用了ifc 文件便解决问题。
开发环境:IAR+STM32
代码移植基本上参照xukai871105 前辈的教程,不同之处是使用的是寄存器的操作方式,并没有是用STM32 的库函数。
代码如下:
#include "contiki.h" #include "stm32/usart/usart.h" /* For usart_puts()*/ #include <stdio.h> /* For printf() */ #include "sys/clock.h" #include "sys/process.h" #include "sys/procinit.h" #include "sys/etimer.h" #include "sys/autostart.h" PROCESS(hello_world_process, "Hello world"); /*声明一个函数,该函数是进程的执行体,即进程的thread函数指针所指的函数;定义一个进程 */ AUTOSTART_PROCESSES(&hello_world_process); /*AUTOSTART_PROCESSES宏实际上是定义一个指针数组,存放Contiki系统运行时需自动启动的进程*/ /*Define the process code*/ PROCESS_THREAD(hello_world_process, ev, data) { PROCESS_BEGIN(); PROCESS_END(); } unsigned int idle_count = 0; int main() { clock_init(); uart_init(72,115200); printf("Initialising\r\n"); process_init(); process_start(&etimer_process, NULL); autostart_start(autostart_processes); //process_start(&blink_process,NULL); printf("Processes running\r\n"); while(1) { do { } while(process_run() > 0); idle_count++; /* Idle! */ /* Stop processor clock */ /* asm("wfi"::); */ printf("idle_count:%d\r\n",idle_count); } return 0; }
实现简单的串口发送。在编译过程中出现no definition for “autostart_processes”错误,跟踪代码后发现有如下宏:
#if ! CC_NO_VA_ARGS #if AUTOSTART_ENABLE #define AUTOSTART_PROCESSES(...) \ struct process * const autostart_processes[] = {__VA_ARGS__, NULL} #else /* AUTOSTART_ENABLE */ #define AUTOSTART_PROCESSES(...) \ extern int _dummy #endif /* AUTOSTART_ENABLE */
便在头文件添加了
#define AUTOSTART_ENABLE 1
但依然解决不了错误;经过百度后知道在前面没有调用宏PROCESS(name, strname) ;AUTOSTART_PROCESSES(…);致使后面的autostart_processes未定义。
最后编译完成后,烧写到板子时提示代码区域有误便使用了ifc 文件便解决问题。
相关文章推荐
- php常见判断
- IIS mime类型 任意类型
- html入门的笔记总结
- MIPI接口LCD屏调试心得
- 基于Flex的裁剪图片功能封装
- 为什么linux驱动要专门有杂项设备呢
- 用JAVA打暴雪星际争霸(1)--搭建开发环境
- IMA: maintain i_readcount in the VFS layer
- 管中窥豹:Docker生态系统一览
- stl源码剖析学习笔记(一)重点数据结构概览
- Android基础-AutoCompleteTextView用法
- SAP帮助信息的获取
- CSS入门笔记 - 初识CSS
- C++在C语言基础之上增强的几个实用特性总结
- android studio 遇到的bug 收集
- kAri OJ130 非平方等式(二分加枚举)
- iOS 利用runtime关联对象
- Integrity Measurement Architecture
- [疯狂Java]AWT剪切板:图像传递
- Spring ContextLoaderListener与DispatcherServlet所加载的applicationContext的区别