TRTOS嵌入式操作系统二次开发使用说明



TRTOS

使

 

一、系统添加设备修改参数说明

1、Tos系统参数设置(文件位置
Tos/Configs/Define.h)

2、设备的添加和挂载

设备统一读写接口函数类型typedef void (*DeviceWRFunc)(void *Addr,void*Data,void *Length);

设备的挂载接口

在写好的外部设备驱动后如果该设备属于独占操作的需要添加到设备管理序列,以便通过系统内部的设备管理功能协调各任务轮流使用

3、Tos的Main入口执行顺序

对已经写好的的外部驱动设备,需要在DeviceList_Init();和Device_Init();之间进行挂载

注意:每个任务总共使用的堆栈大小不得超过默认堆栈大小X任务个数

二、系统的使用

1、任务的创建

*任务的函数类型必须是typedef 
void (*Tos_Task)(void *)类型

*任务中必须要调用系统延时函数

创建一个最简单的任务

Led灯以600个系统周期循环闪烁

*类似于下类情况的或系统运行异常导致下类情况发生的,系统将会在20秒过后从新启动

*在任务调用设备时是不用考虑该设备是否被占用,系统会自行按照任务优先级安排任务去使用。

2、设备使用

在Tos操作系统中集成了设备管理功能。

在任务执行 
BOOLTos_TaskGetDev(uint8 ID,uint32 Timeout)函数并传入设备Id时,当该设备处于空闲状态。该设备会被锁定,其他需要使用该设备的任务都进入休眠或等到超时状态,当该任务使用完设备后执行BOOL
Tos_TaskDropDev(uint8 ID)函数并传入设备Id,该设备被释放,释放的同时,会激活正等候此设备的其他任务,在等候的所有任务中,优先级最高的会被首先激活。

3、调试工具的使用

在系统开发阶段都需要用到调试功能,使用前需要对调试工具进行初始化,一般可以在系统运行前执行DeBug_Init()函数,如果系统硬件既支持液晶显示屏又支持串口那样调试就可以分别从液晶屏和串口输出。

调试信息管道:如果某个任务在调试的时候是处于独占调试工具的时候可以执行DeBug_Get()函数,系统的调试功能只会显示该当前任务调试信息,结束独占执行DeBug_Drop();

控制抑制调试输出:在支持多调试输出的情况下可以对输出通道进行选择。如只通过串口打输出或只通过液晶屏输出抑或不输出,void DeBug_OutSet(uint8
OutSet);OutSet的值填DeBug_LCD|DeBug_USART即选择两种输出为0是不输出,为0xff是选择全部输出。

选择输出调试消息内容:在调用DeBug(…..)调试接口时,在最后一个参数既为消息类型。

消息内容有如下几种

在执行DeBug_SetType(Infor_Infor);后,调试输出的消息中只显示Infor_Infor类型的消息。

4、消息队列的使用

消息接收方创建消息队列实体

发送消息方创建消息实体,并且把消息实体的地址填到接收方的消息队列消息地址中,

接收方再还原出消息内容。

5、邮箱的使用

邮箱的使用很简单,只是把32位的数据内容传送到对方邮箱地址中,传送的是数据还是地址由使用着决定。

三、自带驱动使用介绍

1、内部flash读写驱动

读取数据和保存数据到单片机内部的flash中

2、触摸屏驱动

如下几个动作是在触摸屏时间出发前后发生的,用户可以根据在接口内填充自定义的处理事件。

/*************************************************************

Func: 
松开动作事件

Date: 
2014 端午节

Note: 
测试

*************************************************************/

void Touch_UpIngEvent()

{

if(Touch_Event.UpIng_Event)//判断是否存在处理任务

{

DeBug("TOUCH_EVENT_UPING",Infor_Infor);

Touch_Event.UpIng_Event=Null;//任务单次激发

}

}

/*************************************************************

Func: 
按下动作事件

Date: 
2014 端午节

Note: 
测试

*************************************************************/

void Touch_DownIngEvent()

{

if(Touch_Event.DownIng_Event)

{

DeBug("TOUCH_EVENT_DOWNING",Infor_Infor);

Touch_Event.DownIng_Event=Null;

}

}

/*************************************************************

Func: 
松开超时事件

Date: 
2014 端午节

Note: 
测试

*************************************************************/

void Touch_UpDelayEvent()

{

if(Touch_Event.Up_Event)

{

DeBug("TOUCH_EVENT_UP",Infor_Infor);

Touch_Event.Up_Event=Null;

}

}

/*************************************************************

Func: 
按下超时事件

Date: 
2014 端午节

Note: 
测试

*************************************************************/

void Touch_DownDelayEvent()

{

if(Touch_Event.Down_Event)

{

DeBug("TOUCH_EVENT_DOWN",Infor_Infor);

Touch_Event.Down_Event=Null;

}

}

触摸屏
监视任务void Task_GetTouch(void *Tags);

触摸屏校准函数,数据正确则不校准void TouchScreen_Correct();

3、ModBus协议介绍

 

总线控制

  • 波特率19200; 数据位8位;停止位1位;
    奇偶校验位无;
  • 主机始终是系统中通讯的发起者,其他外围设备始终作为从机使用,被动响应主机命令。
  • 主机和外围设备只有在有数据发送时才置于发送状态,其余为接收状态;
  • 主机发送广播指令时,外围设备不发送反馈消息;
  • 主机指定目的地址情况下,被指定的外围设备在接收到指令后5毫秒后500毫秒内响应。

    主机在发出指令后500毫秒内没有收到反馈认为该指令发送失败并重发,重发3次

    地址分配

    最多设备数250个,最大可分配249个地址给丛机设备使用,主机始终使用0x01,

    广播使用0xff,且只有主机拥有广播权限

    协议组成

    协议分析

    主机消息组成

    第一层协议不包含数据段里面的数据内容


名称


起始标识


接收方地址


本地地址


消息帧标识


流水号


消息长度


数据


校验


结束码


长度


1


1


1


1


1


2


n+3


2&1


1


例如


0x7e


0x78


0x01


0x01


0x15


0x000n+3


0x7f

第二层协议只包含数据的内容结构信息


名称


数据标识


数据长度


数据段数据


长度


1


2


0xn


例如


0x01


0x000n


。。。。。。。

例如.同步时间(2014/08/13
05:23:03)的数据帧

7E FF 01 02 01 00 0B 01 00 08
20 14 08 13 19 05 23 03 92 7F

校验.校验方式可以选择Crc校验,也可以选择异或校验。

ModBus驱动文件接口使用

发送:

MB
 ModBusMsg;//创建协议实例

ModBus_Create(&ModBusMsg,0x01,0x94,CheakMode_Xor);//初始化实例

x=ModBus_CreateMsg(&USART1_TX_Buffer[0],&ModBusMsg,0x01,0x01,0x01,&Buf[0],LCD_YSIZE*2);//生成报文

USART1_DMAWriteDatas(&USART1_TX_Buffer[0],x);//使用报文

接收:

TRTOS嵌入式操作系统二次开发使用说明

时间: 2024-11-12 18:00:29

TRTOS嵌入式操作系统二次开发使用说明的相关文章

如何快速理解一个全新的嵌入式操作系统(续)

---基于TI CC254X OSAL的分析 当工具链配置完成后,SourceInsight向你展示一份源码工程,不借助百度和开发文档,能否在一两个小时内理解源码的组成框架和接口,进行快速开发? 上一篇<如何快速理解一个全新的嵌入式操作系统>我们已经分析了如何快速理解OSAL的任务调度和任务间通信(其实OSAL只是酷似多任务操作系统的单任务系统),再理解好OASL的消息产生和处理过程,我们就能够进行快速开发了. 一.消息的来源 嵌入式系统的消息包括两种,一是系统消息,包括低电.热插拔等,由系统

腾讯RTX二次开发相关的一些注意事项

http://www.cnblogs.com/netWild/p/4241650.html —————————————————————————————————————————————————————————————————————————————— 在企业即时通信方面,腾讯的RTX在国内的占有率应该是很高的 所以,就避免不了要与其他系统进行消息集成 腾讯为此提供了二次开发的工具包,支持JAVA.C#.VB等多种开发语言 但是,目前为止,腾讯官方提供的开发包都是基于X86架构的,这个问题非常头疼

Python什么是二次开发的意义?python在.net项目采用

任何人都知道python在.net该项目是做什么的啊? 辅助用途,用作"二次开发"..net站点的话python主要是CGI才用.能够用python编写B/S程序. 解释一下二次开发:        对于Python来说.他本身未定义主函数 , 和LUA一样,他们都是解释语言,须要一个拥有主函数的主语言帮助解释.那么不管是在C/C++/JAVA/C#中都是一样,我们的主语言负责整个程序的大功能.而这些子语言用以完毕一些辅助的功能.比方WOW的插件 ,单纯的WOW是C++写的,可是里面的

java快速开发平台 二次开发 SSM后台框架

获取[下载地址]     [免费支持更新]三大数据库 mysql  oracle  sqlsever   更专业.更强悍.适合不同用户群体[新录针对本系统的视频教程,手把手教开发一个模块,快速掌握本系统] A 集成代码生成器 [正反双向(单表.主表.明细表.树形表,开发利器)+快速构建表单; freemaker模版技术 ,0个代码不用写,生成完整的一个模块,带页面.建表sql脚本,处理类,service等完整模块B 集成阿里巴巴数据库连接池druid;  数据库连接池  阿里巴巴的 druid.

java快速开发平台 二次开发 外包项目利器 springmvc SSM后台框架源码

获取[下载地址]   [免费支持更新]三大数据库 mysql  oracle  sqlsever   更专业.更强悍.适合不同用户群体[新录针对本系统的视频教程,手把手教开发一个模块,快速掌握本系统] A集成代码生成器 [正反双向(单表.主表.明细表.树形表,开发利器)+快速构建表单;freemaker模版技术 ,0个代码不用写,生成完整的一个模块,带页面.建表sql脚本,处理类,service等完整模块B 集成阿里巴巴数据库连接池druid;  数据库连接池  阿里巴巴的 druid.Drui

.NET AutoCAD二次开发之路(一、基础篇)

学习AutoCAD二次开发已经有一段时间了,磕磕碰碰,十分的艰辛枯燥.但回想一下还是会有些小激动,嘿嘿!最近这段时间一直都有这么个想法,就是将我学习CAD二次开发的过程用文字的方式记录下来,形成系列,并定期更新.主要内容就是记录自己每天学习过程中所碰见的问题和感悟,并总结今天所学到的内容.目的一是激励自己坚持下去,看着自己一步一步的提高,多有成就感.还有就是和大家积极沟通,希望能够指正我的错误,减少我的弯路.再者就是望能给后面学习的人一点点借鉴经验,好吧其实还有点装B的心里.废话不多说就进入今天

【0001(基础)】Skyline二次开发入门经典系列教程总览

本人是从2012年开始接触Skyline二次开发的,经历过 v6.0~v6.5(最新的6.6版本还未使用)的所有版本.作为一名非GIS专业毕业的大学本科生,鬼使神差般地进入了这个瑰丽的GIS领域.因此,在从事了4年多的Skyline二次开发工作后,我不能说我是"授业有专攻",更不能说我是"闻道有先后".在这个领域内,大牛之人比比皆是,正是因为他们的存在与指引,才使得我现在有点东西可以写出来供大家交流沟通.   整理这个系列教程的原因主要出于如下几点的考虑: 1.Sk

【流媒体开发】VLC Media Player - Android 平台源码编译 与 二次开发详解 (提供详细800M下载好的编译源码及eclipse可调试播放器源码下载)

作者 : 韩曙亮  博客地址 : http://blog.csdn.net/shulianghan/article/details/42707293 转载请注明出处 : http://blog.csdn.net/shulianghan VLC 二次开发 视频教程 : http://edu.csdn.net/course/detail/355 博客总结 : -- 本博客目的 : 让 Android 开发者通过看本博客能够掌握独立移植 VLC Media Player 核心框架到自己的 app 中,

小程序开发工具教程汇总,亲测无需代码,简单操作,可二次开发!

制作小程序要简单点,开发的方式简单点.所以!不得不扒一扒这款开发工具某即速应用,无需代码,简单操作,还可套用模板快速生成小程序代码包,支持二次开发.当然市面上还有很多款小程序编辑器,但大部分还是那种开发接单的,水太深了,交不起学费,还是自己来琢磨吧!大家有什么好的小程序工具类可以分享给我! 以下将我网上参与学习培训总结的一些资料文档分享出来,供大家参考学习.特别是不懂代码的朋友,这款开发工具还是可以试试的!容易上手! 当然首先,我们还是要先下载:最新版的微信开发者工具(方便进入代码二次编辑) 接