开启ucosii的移植之旅:

4.6.1、移植和硬件平台的关系

(1)只要是cortex-m3内核内核的soc移植差异都不大。

同内核同soc的不同开发板移植差异都不大。

不同内核的开发板移植难度大,找的官方移植的同内核版本为起点。

移植的一般思路: 先找到相近的内核移植好的源码。(官网里找一个)

在开发环境上建立好工程模板后,将ucosii的核心代码添加进去。然后编译,解决报错和警告。(在这里我们只是解决了语法错误,并不知道整个代码具体干了什么事,自己是不清楚的)下载运行,并小幅修改代码查看结果(验证自己的想法),最后添加并调试项目需要的BSP,编写并调试项目app部分。

4.6.2开始移植代码

跟着朱老师实战一下: 自己的板子是 STM32F103RCT6,建好工程模板。

编译出错3个错误。

..\app\..\APP\includes.h(52): error:  #5: cannot open source input file "stm32f10x_lib.h": No such file or directory

找不到"stm32f10x_lib.h"头文件,因为老版本的缘故,实际上"stm32f10x_lib.h"里边包含了各个外设的头文件。这个在新版本里没有,但是我们有"stm32f10x.h"

还有绝对路径包含的问题,注意自己的文件名大小写以及对错。

.\Objects\project_template.axf: Error: L6200E: Symbol __ARM_use_no_argv multiply defined (by app.o and main.o).

.\Objects\project_template.axf: Error: L6200E: Symbol main multiply defined (by app.o and main.o).      main函数重复了。我们在user里定义了main函数,而移植过来的app里面也有main函数。

.\Objects\project_template.axf: Error: L6218E: Undefined symbol OS_CPU_SysTickInit (referred from app.o).

.\Objects\project_template.axf: Error: L6218E: Undefined symbol OS_CPU_PendSVHandler (referred from vectors.o).

把一些文件没有添加进来。粗心造成的。 在这里遇到vectors.s这是以前的启动文件,现在用startup_stm32f10x_xx,,xx根据单片机的容量来选择。代码可以编译成功了。

4.6.3整理bsp部分:

实际移植发现的问题:

stm32单片机硬件仿真时超过五个断点就会全速运行不了。

自己对 OSTCBList的指针的理解有偏差:刚开始确实是OS_TCB      OSTCBTbl[OS_MAX_TASKS + OS_N_SYS_TASKS]任务数组,按照元素下标依次连接(在TCB初始化函数中)但是每创建一个任务时(在此之前已经创建了两个任务,)

在OSTCBint函数中 :

ptcb->OSTCBNext = OSTCBList; /* Link into TCB chain */
ptcb->OSTCBPrev = (OS_TCB *)0;
if (OSTCBList != (OS_TCB *)0) {
OSTCBList->OSTCBPrev = ptcb;
}
OSTCBList = ptcb;
 OSTCBList保存的是是上一次的TCB的地址,所以每次OSTCBList

开启ucosii的移植之旅的更多相关文章

  1. Docker学习总结(6)——通过 Docker 化一个博客网站来开启我们的 Docker 之旅

    通过 Docker 化一个博客网站来开启我们的 Docker 之旅 这篇文章包含 Docker 的基本概念,以及如何通过创建一个定制的 Dockerfile 来 Docker 化Dockerize一个 ...

  2. STM32W108无线传感器网络嵌入式uCOS-II的移植及实时环境监測

    基于STM32W108无线开发板,将ucos-ii v2.86内核移植到其上,并加入用户任务.实现对温湿度.超声波.声音.光敏等传感器的控制及实时数据採集. 14.1开发环境说明 硬件:STM32W1 ...

  3. uCOS-II之移植20160823

    首先我们看一下uC/OS-II的框架图: 1.配置文件修改 +------------------------------------------ |core: os_core.c |  os: os ...

  4. 用浏览器快速开启Docker的体验之旅

    互联网科技发展创造了很多奇迹,比如我今天要提到的 docker 技术就是其一.我很早就关注它(在2015年写过这方面的博客),那会儿还只是一个开源项目,现在已经是一个行业事实标准了,它推动了云原生的变 ...

  5. 开启我的Android之旅-----记录Android环境搭建遇到的问题

    在现在这个离不开手机的时代,对于手机APP的开发也是一个很大的市场,所以自己也想去探一探手机APP开发,在我们进行Android开发的第一步就是搭建环境,具体怎么搭建我就不说,这里记录一下在搭建环境的 ...

  6. Docker(一)Linux开启你的Docker之旅

    前言 Docker容器最早受到RHEL完善的支持是从最近的CentOS 7.0开始的,官方说明是只能运行于64位架构平台, 内核版本为2.6.32-431及以上(即 >= CentOS 6.5, ...

  7. vim 开启我们的Python之旅

    1.在我们的Mac系统下打开“终端”,输入python,然后回车即可看到我们电脑是否安装了python,以及它的版本,这里我的是2.7.5版本,如果未安装请百度之.

  8. 在 Ubuntu 开启 GO 程序编译之旅

    本文将使用 putty 连接到一台阿里云 Ubuntu 16.04 服务器,在其上安装 go 语言的编译环境,旨在呈现从安装到"你好,世界!"涉及的方方面面,希望完成这个过程无须觅 ...

  9. 使用python开启你的opencv之旅---图像的读入,存储

    python的便捷是如此的引人着迷,而opencv给python提供的接口使我们能够使用python来快速验证我们的想法,或者与别的模块快速结合,在这个系列文章我会通过jupyter notebook ...

随机推荐

  1. sleep、yield、join方法简介与用法 sleep与wait区别 多线程中篇(十五)

    Object中的wait.notify.notifyAll,可以用于线程间的通信,核心原理为借助于监视器的入口集与等待集逻辑 通过这三个方法完成线程在指定锁(监视器)上的等待与唤醒,这三个方法是以锁( ...

  2. Vcomputer简介

    1.Vcompter存储程序式计算机虚拟机软件简介   Vcompter存储程序式计算机虚拟机软件的文件名为comp_alpha(一般要先安装java运行环境,然后双击该软件即可运行),该软件是桂林电 ...

  3. WPF 自定义 ImageButton

    控件源码: public class ImageButton : Button    {        public ImageButton() {        } public string No ...

  4. .NET Framework VS .NET Core

    本文对应的原文来至 c-sharpcorner 的一篇文章,文末有链接.如有错误,还请指正. 前言 你会为你的下一个应用程序选择哪一种开发平台 - .NET Framework 或者 .NET Cor ...

  5. Django学习之七:Django 中间件

    目录 Django 中间件 自定义中间件 - - - 大体两种方式 将中间件移除 实例 中间件加载源码阅读 总结 Django 中间件 Tips: 更新日志: 2019.01.31 更新django中 ...

  6. hive基本操作与应用

    通过hadoop上的hive完成WordCount 启动hadoop Hdfs上创建文件夹 上传文件至hdfs 启动Hive 创建原始文档表 导入文件内容到表docs并查看 用HQL进行词频统计,结果 ...

  7. vue实例化

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. 【English】十六、时间相关

    〇.其他 date: I have a date with her tomarrow. n.约会;日期,日子;时代,年代; vt.过时;使…显老;显示出…时代(或年龄);鉴定…的年代 vt.& ...

  9. Visual Studio Code自定义快捷键(eclipse习惯)

    左下角设置按钮 -> Keyboard Shortcuts -> keybindings.json. [ { "key": "alt+/", &qu ...

  10. Java设置接口跨域

    现在我们很多项目都是基于Java的REST结构风格前后端分离,在前端访问后端的时候就存在跨域,这个时候后端接口不处理就会存在访问不了.上代码! 1.创建一个Filter 在web.xml中配置 < ...