- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
移植Small RTOS v1.50.0到AVR单片机的心得体会(部分供参考)
移植Small RTOS v1.50.0到AVR单片机的心得体会(部分供参考)
Small RTOS v1.50.0是smallrtos中的最高端的版本,是个功能完善的实时操作系统,现在这个版本已经是完全重新编写的,只是仍然使用这个名称.Small RTOS v1.50.0在32位CPU上可以说支持无限的任务(仅受内存限制),任务优先级暂定为32级,任务切换基于优先级,同级任务基于轮询.同时,任务之间可以直接放送消息和回馈消息.而等待事件支持可以选择基于FIFO或基于优先级.
但目前Small RTOS v1.50.0仅支持ARM7,近日,本人把它移植到AVR系列的Atmega16/32单片机上,并能稳定的运行.以下是本人移植Small RTOS v1.50.0到AVR单片机的心得体会.
第一步:
把Small RTOS v1.50.0移植到AVR单片机首先我们要选择一个合适的编译器.
AVR的编译器可谓百花齐放,各有特色,这里就不一一作介绍,有兴趣的读者可自己找相关的资料和软件.
本人选择的编译器是ATmanAvr,原因是首先它是个GCC的编译器,功能强大,通用性强,效率也较高.
不过AVR的GCC编译器可不只它一个,像WINAVR也是GCC编译器,AVR Studio更可内嵌GCC,不过本人觉得WINAVR编译多个文件时,较麻烦;AVR Studio仿真时感觉速度不如AtmanAvr快(个人认为,不可深究^_^).
用ATmanAvr组织工程管理文件更容易,这是第二个原因,用winavr编译单个文件尚可,当有多个文件时,对初学者来说就有点难度了;而且用AtmanAvr不用自己设置makefile.
综合上述,本人就选择AtmanAvr作移植的编译器.
第二步:
获得源码,途径有很多,但为了保证原码的正确,建议上周立功的网站下载.
现成的Small RTOS v1.50.0是移植到ARM的版本,要重新移植到AVR上去,要修改地方并不多.
移植要用到的源码是arm、OS、和EX1三个文件夹中的文件.
建议把arm文件夹重命名为AVR,EX1文件夹中的src子文件夹重命名APP.
把文件夹中一些不必要的文件删除,APP文件夹中保留CONFIG.H、ext1.c、OS_CFG.H三个文件;AVR文件夹中保留OS_CPU.H Os_cpu_c.c两个文件即可;OS文件夹无需改动.
第三步:
建立个AtmanAvr的工程,取名为SmallRTOSAVR, 把APP,OS,AVR三个文件夹拷贝到工程所在的文件夹中,并加入到工程中,设置使用ATmega32芯片,并在工程-gt;设置-gt;C/C++-gt;代码优化选择-O2.
把和所有C文件中的 #include config.h 改为 #include ..\APP\config.h.
修改CONFIG.H文件为
#ifndef __RT_CONFIG_HPP
#define __RT_CONFIG_HPP
/* 以下为系统配置
#ifndef TRUE
#define TRUE 1
#endif
#ifndef FALSE
#define FALSE 0
#endif
/* 操作系统定义
#include ..\APP\OS_CFG.H
#include ..\AVR\OS_CPU.H
#include ..\OS\OS.H
/* AVR的特殊代码 */
//这一段无需改动
/* 应用程序配置 */
//以下根据需要改动
#include lt;io.hgt;
#include lt;wdt.hgt;
#include lt;sleep.hgt;
#include lt;Interrupt.hgt;
#include lt;inttypes.hgt;
#include lt;stdbool.hgt;
/* 本例子的配置 */
#endif
OS.H文件是系统定义的一些宏和声明一些函数和变量,都无需改动,保留即可.
OS_CFG.H文件是系统配置文件,无需改动,保留即可.
OS_CPU.H 文件是移植代码CPU配置部分,因为针对最直接的硬件操作,所以要作较多修改,难度也较大.
一、首先定义与编译器无关的数据类型
定义与编译器无关的数据类型
typedef unsigned char boolean; /* 布尔变量 */
typedef unsigned char uint8;无符号8位整型变量 */
typedef signed char int8;有符号8位整型变量 */
typedef unsigned short uint16;无符号16位整型变量 */
typedef signed short int16;有符号16位整型变量 */
typedef long unsigned
文档评论(0)