最近有点闲,公司新年过后一直没有项目,手头上维护的两个程序也比较稳定。

想起来去年做的商业时钟,做了一半,销售反馈回来说,市场不明朗,不建议往下开展,就搁置了,趁着现在有空,把他捡起来。

原来的代码都是裸机在跑,手头上维护了一个液晶程序,也是裸机,代码量巨巨巨巨大,全局变量巨巨巨巨巨多,不停的中断搞得人头大,维护代码真的是痛不欲生啊,想改又不能改,太难受。这次代码虽然做了一半多,但是算我第一个项目,水平那个烂啊,我都不忍心再看一遍,现在没有业务压力和时间限制,打算上个操作系统看看。

比对了一下用户很大的freeRTOS和ucos的官方移植,freeRTOS貌似代码量小一点,但是官方的移植例程看的头疼是怎么回事,相比之下,ucos3的代码看起来比较容易懂,果断ucos,毕竟飞过外太空的,现在能看到的缺点就是不能商用,这是个大麻烦。小公司根本不会考虑这种预算。不管了,先快速上手理解一下RTOS的基本概念,后期商用再换成freeRTOS应该也比较容易。

官方用107做的移植,我的板子也是107,但是官方代码里面串口2的中断处理没看懂,而且比较习惯看标准库,遂决定自己移植一下。主要参考正点原子的移植教程。

移植还是比较容易的,我从官网下的最新的ucos版本V3.03.01,主要解决两个问题:

1.修改启动文件钟PendSV的向量地址为ucos中异常处理的函数入口。主要是os_cpu_a.s的内容,这个函数就是ucos中用来做函数切换的,我直接把ucos中这个函数入口改成了stm32中的异常处理函数。改完以后要记得屏蔽掉原来PendSV_Handle中断服务函数。

2.实现系统运行需要的时钟节拍。系统运行需要一个时钟节拍,作为系统心跳。这里用systick作系统时钟节拍,和官方完全一样。

移植完成,创建第一个任务,点灯,正常,大功告成。

从裸机到实时操作系统RTOS的更多相关文章

  1. 嵌入式实时操作系统VxWorks入门――开发环境构建[转]

    VxWorks 操作系统是美国WindRiver公司于1983年设计开发的一种嵌入式实时操作系统(RTOS),它以其良好的可靠性和卓越的实时性被广泛地应用在通 信.军事.航空.航天等高精尖技术及实时性 ...

  2. 嵌入式实时操作系统μCOS原理与实践任务控制与时间的解析

    /*************************************************************************************************** ...

  3. vxworks 实时操作系统

    VxWorks 是美国 Wind River System 公司( 以下简称风河公司 ,即 WRS 公司)推出的一个实时操作系统.Tornado 是WRS 公司推出的一套实时操作系统开发环境,类似Mi ...

  4. 第三周作业、实时操作系统µC/OS介绍及其它内容

    作业要求 见<实时控制软件设计>第三周作业 1 阅读笔记--µC/OS 1.1 基本介绍 µC/OS是由Micrium公司研发的实时操作系统,以µC/OS-II或µC/OS-III为内核, ...

  5. RTX51 Tiny实时操作系统学习笔记—初识RTX51 Tiny

     一,RTX51 Tiny简单介绍    RTX51 Tiny是一种实时操作系统(RTOS),能够用它来建立多个任务(函数)同一时候运行的应用(从宏观上看是同一时候运行的,但从微观上看,还是独立运行的 ...

  6. VxWorks Fuzzing 之道:VxWorks 工控实时操作系统漏洞挖掘调试与利用揭秘

    转载:freebuf 0×00 前言 关于VxWorks,这里引用44CON议题<攻击 VxWorks:从石器时代到星际>探究 一文章中的介绍: VxWorks 是世界上使用最广泛的一种在 ...

  7. 使用Nucleus SE实时操作系统

    使用Nucleus SE实时操作系统 Using the Nucleus SE real-time operating system 到目前为止,在本系列文章中,我们详细介绍了Nucleus SE提供 ...

  8. ucos实时操作系统学习笔记——内核结构和任务创建

    对于ucos实时操作系统,邵贝贝的那本书已经写得很详细了,我因为之前不深的研究过ucos,所以在这里做一个笔记,写一些个人对该操作系统的理解,仅仅是个人理解,如果有人看到这边随笔有不对的地方,望给我指 ...

  9. ucos实时操作系统学习笔记——操作系统在STM32的移植

    使用ucos实时操作系统是在上学的时候,导师科研项目中.那时候就是网上找到操作系统移植教程以及应用教程依葫芦画瓢,功能实现也就罢了,没有很深入的去研究过这个东西.后来工作了,闲来无聊就研究了一下这个只 ...

随机推荐

  1. 工控随笔_02_西门子_WinCC的IO域利用C脚本返回值

    WinCC的输入输出域用来显示信息或者接受操作人员的输入.当作为显示功能时,只有直接的变量连接 才能正常的显示,如果使用动态对话框进行设置且用了表达式则不能正确显示. 但是有时候我们在WinCC变量管 ...

  2. H264--2--语法及结构

    转自:http://blog.csdn.net/yangzhongxuan/article/details/8003494 名词解释 场和帧 :    视频的一场或一帧可用来产生一个编码图像.在电视中 ...

  3. SSH 服务配置

    服务端 启用使用密钥登录 登录到服务器 检查是否存在.ssh文件夹,如果没有则创建该文件夹 $ mkdir ~/.ssh $ chmod 700 ~/.ssh 检查公钥列表文件是否存在,如果没有则创建 ...

  4. 卸载npm

    npm uninstall npm -g yum remove nodejs npm -y

  5. 离线手动部署docker镜像仓库——harbor仓库(HTTPS)

    实验环境: harbor服务器系统:CentOS Linux release 7.5.1804 (Core)harbor服务器IP:10.1.12.114harbor版本:v1.5.0docker版本 ...

  6. 软件测试:2.Two Faulty Programs

    软件测试:2.Two Faulty Programs Questions: 1.Identify the fault; 2.If possible, identify a test case that ...

  7. WebBrowser2控件使用

    一 简介 这是一个IE实现的com接口, 简单的浏览一个网页可以用这个东西, 局限性是IE现在有好多版本, 不同版本对标准的支持是不一样的, 而且将来不排除windows把IE给干掉了 二 使用 1 ...

  8. Python绘图的颜色设置

    (转载):Python中的matplotlib函数中的颜色选取 转载链接:https://www.cnblogs.com/darkknightzh/p/6117528.html 原文内容:完全出自于自 ...

  9. GVIM 设置 vimrc

    set expandtab set nobackup set nosmartindent set noautoindent set ruler au BufRead,BufNewFile *.sv s ...

  10. wine install

    # yum -y groupinstall 'Development Tools' # yum -y install libX11-devel libxml2-devel libxslt-devel ...