Contiki移植到STM32F103VC

发布者:Enchanted2021最新更新时间:2018-08-04 来源: eefocus关键字:Contiki  移植  STM32F103VC 手机看文章 扫描二维码
随时随地手机看文章

Contiki官网下载V2.5源码http://www.contiki-os.org/


contiki-2.5源码中,stm32移植的相关内容分散在两个文件夹中,第一, cpu\arm\stm32f103,这个文件夹存放的stm32移植的相关文件;第二,platform\stm32test,这个文件夹中有一个不是那么完整的例子。


在Contiki-2.5源码文件夹下用到的有:\core\sys\下面所有文件,\cpu\arm\stm32f103\clock.c文件主要修改,\platform\stm32test\contiki-conf.h文件。

STM32工程下主要用到的文件:core_cm3.c,system_stm32f10x.c,startup_stm32f10_hd.s,stm32f10x_it.c


例子代码如下:

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

unsigned int idle_count = 0;

int

main()

{

  dbg_setup_uart();

  printf("Initialising\n");


  clock_init();

  process_init();

  process_start(&etimer_process, NULL);

  autostart_start(autostart_processes);

  printf("Processes running\n");

  while(1) {

    do {

    } while(process_run() > 0);

    idle_count++;

    /* Idle! */

    /* Stop processor clock */

    /* asm("wfi"::); */ 

  }

  return 0;

}


Contiki 系统移植步骤


在cpu\arm\stm32f10\clock.c文件中添加: 

#include "stm32f10x.h"

在cpu\arm\stm32f10\clock.c文件中删除:

#include

#include

1

2

修改void clock_init()函数为:

void

clock_init()

{

    //every msec got int

    if (SysTick_Config(SystemCoreClock / CLOCK_SECOND))

  { 

    /* Capture error */ 

    while (1);

  }

}


修改void SysTick_Handler(void)函数为:

void SysTick_Handler(void)

{

    current_clock++;

  if(etimer_pending() && etimer_next_expiration_time() <= current_clock) {

    etimer_request_poll();

    /* printf("%d,%d\n", clock_time(),etimer_next_expiration_time   ()); */


  }

  if (--second_countdown == 0) {

    current_seconds++;

    second_countdown = CLOCK_SECOND;

  }

}


在keil中新建一个工程,就可以了。

新建测试工程主函数:

#include

#include

#include

#include

#include

#include

#include

#include

#include "bsp.h"


PROCESS_NAME(led_process);


AUTOSTART_PROCESSES(&led_process);


void

main()

{

  bsp_init();


    dbg_setup_uart();

  printf("Initialising...\r\n");


  clock_init();

  process_init();

  process_start(&etimer_process, NULL);

  autostart_start(autostart_processes);

  printf("Processes running...\r\n");

  while(1) {

    do {

    } while(process_run() > 0);

  }

  //return 0;

}


一个点灯的线程:

#include

#include

#include

#include

#include "bsp.h"


PROCESS(led_process, "Led");

PROCESS_THREAD(led_process,ev,data){

    static struct etimer et;

    PROCESS_BEGIN();


    etimer_set(&et, (CLOCK_SECOND*2));

    while(1){

        printf("-->Waiting .......\r\n");

        //PROCESS_WAIT_EVENT_UNTIL(etimer_expired(&et));

        PROCESS_WAIT_EVENT_UNTIL(ev==PROCESS_EVENT_TIMER);

        printf("-->Timer Got.\r\n");

        bsp_led_toggle(BOARD_LED_ALL);

        etimer_reset(&et);

    }

    PROCESS_END();

}


以下图片为keil工程结构的参考 

工程结构

关键字:Contiki  移植  STM32F103VC 引用地址:Contiki移植到STM32F103VC

上一篇:keil 的stm32启动文件分析
下一篇:基于keil的contiki系统的stm32移植

推荐阅读最新更新时间:2024-03-16 16:10

分析uboot移植第一阶段的各种代码
一直uboot的过程: 1. 选择是什么架构的单片机或者平台 在总的make file 里面 2. 更改时钟配置 3. 更改串口相关的时钟配置 4. 选用适当的norflash 5.选用适当的nandflash 1. 100ask24x0_config : unconfig @(MKCONFIG)(MKCONFIG)(@:_config=) arm arm920t 100ask24x0 NULL s3c24x0 其中 第一个参数 ARM 表示的是架构是什么架构 我们这里的架构是ARM架构 第二个参数是 什么CPU 这里是 Arm920t的CPU 第三个参数是什么开发板:这里是 100ask24x0的开发板 第四个参数是
[单片机]
06-S3C2440学习之移植2012u-boot到S3C2440(移植过程四)支持Nand Flash+支持DM9000网卡
一、支持nand读写 移植 uboot到S3C2440(移植过程一)新建单板+修改时钟+SDRAM+UART(←点击查看)过程中,为了避免当时编译出现的错误,我们屏蔽了 include/configs/smdk2440.h: //#defineCONFIG_CMD_NAND (1)取消#defineCONFIG_CMD_NAND的注释,编译出现如下错误: (2)因为include/configs/smdk2440.h中: CONFIG_S3C2410改为了CONFIG_S3C2440,所以下面的定义没了 (3)分析下nand是如何发命令 数据 地址的。 CLE高:命令 ALE高:地址 (4)把d
[单片机]
06-S3C2440学习之<font color='red'>移植</font>2012u-boot到S3C2440(<font color='red'>移植</font>过程四)支持Nand Flash+支持DM9000网卡
STM32移植lwip之官方工程修改
本篇目标:在之前的硬件基础上,修改ST官方移植lwip的工程,使PC机能ping通stm32 材料准备: 硬件基础:stm32f407+lan9303 官方资料:包含代码和移植手册(stm32官方移植lwip资料) 修改代码:包含移植后的代码(STM32官方移植lwip修改代码) 跟着文件路径打开其中一个工程,先选择不带操作系统的练习测试 文件路径:STM32F4x7_ETH_LwIP_V1.1.1 - Project - Standalone - tcp_echo_server - MDK-ARM - Project.uvproj 先编译一下,出现3个Warning,其中两个是变量定义未使用,不影响暂且不管,还有一
[单片机]
STM32<font color='red'>移植</font>lwip之官方工程修改
BLOB启动流程与Bootloader程序可移植性研究
  在嵌入式系统应用中,通过引导程序(Bootloader)可以初始化硬件设备、建立内存空间的映射图、加载内核,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境 。Bootloader依赖于实际的硬件和应用环境,对于不同的硬件架构以及相同架构的不同 电路 板,都需要不同的Bootloader。由于单独开发Bootloader的工作量较大,因此开发人员一般针对固定体系构架开发一种可移植性的Bootloader,使之能够在少量修改后应用于同一体系构架的其他电路板。BLOB就是一种针对ARM体系定制的可移植性良好的嵌入式Linux引导程序。BLOB支持多种CPU,包括SA1100、SA1110、PXA
[单片机]
BLOB启动流程与Bootloader程序可<font color='red'>移植</font>性研究
JFFS2文件系统的移植
JFFS2是JFFS的后继者,由Red Hat重新改写而成。JFFS2的全名为JournallingFlash File System Version 2(闪存日志型文件系统第2版),其功能就是管理在MTD设备上实现的日志型文件系统。与其他的存储设备存储方案相比,JFFS2并不准备提供让传统文件系统也可以使用此类设备的转换层。它只会直接在MTD设备上实现日志结构的文件系统。JFFS2会在安装的时候,扫描MTD设备的日志内容,并在RAM中重新建立文件系统结构本身。 除了提供具有断电可靠性的日志结构文件系统,JFFS2还会在它管理的MTD设备上实现“损耗平衡”和“数据压缩”等特性。 JFFS2 功能如下: Ø 支持NAND
[单片机]
I.MX6Q(TQIMX6Q/TQE9)学习笔记——新版BSP之CAN移植
经过前面的移植,tqimx6q已经完美支持网卡,现在,我们来移植CAN。其实这里所谓的移植,仅仅是配置DTS,使内核能够检测到CAN设备,CAN驱动本身是freescale维护的。下面开始CAN的移植。 DTS编写 参考imx6q其它的DTS编写方式,我们可以如下编写DTS文件: ... &flexcan1 { pinctrl-names = default ; pinctrl-0 = &pinctrl_flexcan1_3 ; status = okay ; }; &iomuxc { ... flexcan1 { pinctrl_flexcan1_3: flexcan1g
[单片机]
LwIP学习笔记——STM32 ENC28J60移植与入门
0.前言 去年(2013年)的整理了LwIP相关代码,并在STM32上“裸奔”成功。一直没有时间深入整理,在这里借博文整理总结。LwIP的移植过程细节很多,博文也不可能一一详解个别部分只能点到为止。 【本文要点】 【1】不带操作系统的LwIP移植,LwIP版本为1.4.1。 【2】MCU为STM32F103VE,网卡为ENC28J60。 【3】移植过程重点描述ethernetif.c和LwIP宏配置等。 【4】一个简单的TCP echo例子。 【5】力求简单,没有DHCP功能,甚至没有用到网卡中断。 【代码仓库】 代码仓库位于 Bitbucket (要源代码请点击这里)。博文中不能把每个细节描述
[单片机]
LwIP学习笔记——STM32 ENC28J60<font color='red'>移植</font>与入门
在MOTOROLAA68K系列MCU上移植μC/OS-II
以下介绍如何将μC/OS-II移植到MOTOROLA MC68K系列CPU上。 一、MC68K CPU简介 MC68K及68020、68040等的著名的MOTOROLA32位微处理器,和与之兼容的68K、CPU32、CPU32+等CPU扩充定时处理单元TPU、队列串行模块QSM、系统控制模块和RAM等组成MC683xx系列单片机。 CPU32内部有8个32位通用数据寄存器,8个32位通用地址寄存器。8个通用数据寄存器可作为累加器使用,也可看成C语言中各种类型的变量;8个通用地址寄存器,可作为变址寄存器使用,也可看成C语言中的指针型变量。CPU32有独立的用户堆栈指针和系统堆栈指针,可区分程序区、数据区、系统区、
[嵌入式]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved