or1200下Raw-OS学习(例子篇)
没有图我说个~毛(J)线(B)~对吧???
直接上一个以前做过的项目来说说怎么去从一个前后台的程序过度到利用操作系统去管理的你代码吧~以前想过直接用事件驱动的框架去编写代码的,无奈这方面的资料实在太少~而且我的水平也不足以胜任,既然现在在全力支持Raw-OS,那么就用RTOS的框架去描述这个工程lor,好了,直接上图了,没有图我说个~毛(J)线(B),一个ICT的例子,先给框图再说功能吧,也希望初学者能和小弟我一起讨论讨论,仅限于初学者哈~大牛不小心路过就不要吐槽小弟了~
这是一个简易ICT的模块框图。
至于ICT是个什么东东呢~各位可以自行google一下,不解释了~说多了都是泪~
这里就直接解释这个东西是拿来干什么用的
首先,ICT的作用是测试电路板的物理连通性而做的
那这里的话~我们有一个主控板(Master Board),若干个子板(Slave Board)
子板功能:负责测试待测试的电路板(UUT)的阻抗、电压和常态的电流~对于阻抗呢?首先我们会在选定的板卡上去留出测试点,或者你可以找一块电脑主板,认真看看,会发现很多的测试点,这就是我们肋完板之后会做ICT的测试,看看是否有元件虚焊,短接,掉件之类的,因为你想想,一个电路功能模块出现以上这些情况之后,一定会在某些关键点上发生阻抗值的改变,一定是。所以我们只要用板卡测出阻抗值不对就可以认定这个板卡有问题。不知道大家有没有见识过生产那边用人工检板那种盛况,好一点的公司会用专门的显示仪器做图像阴影扫描~SMT的时候会做,但是轮到插件过完波峰焊之后一般都是人工检板,省成本嘛~天朝嘛~老板嘛~天朝的老板嘛~你懂的~
对于电压呢?一样道理,主要是检查芯片和主要的供电端是否加电正确。
对于电流呢?如果不正常工作的情况下,常态电路是会有变化的
所以呢,综合起来,进入系统的任务划分~我们可以先简单的设计出4个任务了~
1.测试阻抗用的:MeasureImpedance
2.测量电压用的:MeasureVoltage
3.测量电流用的:MeasureCurrent
4.接收Master Board启动信息:GetMasterCmd
至于Master Board来说,是通过I2C总线去负责各个Slave Board的通信的,至于相关的任务,我们留到信号量学习完毕之后再去具体设计,目前先分工好Master Board和Slave Board的任务先
看图说话啊,对于Master Board来说,先接收按键的功能选择信息,然后启动Slave Board,收集各个Slave Board的测量信息,归总到Master Board上,然后将测量信息打印到LCD屏上做显示,同时将板次信息和结果写入到SD Card中留备份~至于Uart是Debug阶段用的。
又所以呢,对于Master Board来说,可以先设计出5个任务:
1.按键消息处理:KeyMsgProcess
2.启动Slave Board:MasterSendCmd
3.收集Slave Board测量信息:GetMeasureMsg
4.LCD显示结果:LcdDisp
5.结果存入SD Card:SdStore
然后,下一篇任务的API学习,然后具体我们设计相关的任务,以后也根据这个历程学习学习从无到有的设计吧~至于需求分析这些略过吧~以后有机会和大家分享分享
这些全都是只是抽象出来在or1200这个架构下验证程序设计的正确性,实际的项目是用Cotex-M4做主控完成的~刷屏这个当时真是搞死人了~
or1200下Raw-OS学习(例子篇)的更多相关文章
- 基于raw os 的事件触发系统
Raw os的事件触发系统有以下特点: 1 基于UML的状态机理念设计,实现了有限状态机(fsm)以及层次状态机(HSM). 2 实现了活动对象(ACTIVE OBJECT)的特性,一个活动对象包含了 ...
- or1200下raw-os学习(任务篇)
这次就来说说基于上一节介绍的系统框图去建立我们所需要的任务,顺便学习Raw-OS提供的API,根据上节的分析,对于Slave Board有如下设计: Slave Board有三个任务,分别负责测试阻抗 ...
- Java并发包下锁学习第一篇:介绍及学习安排
Java并发包下锁学习第一篇:介绍及学习安排 在Java并发编程中,实现锁的方式有两种,分别是:可以使用同步锁(synchronized关键字的锁),还有lock接口下的锁.从今天起,凯哥将带领大家一 ...
- Java并发包下锁学习第二篇Java并发基础框架-队列同步器介绍
Java并发包下锁学习第二篇队列同步器 还记得在第一篇文章中,讲到的locks包下的类结果图吗?如下图: 从图中,我们可以看到AbstractQueuedSynchronizer这个类很重要(在本 ...
- 如何系统学习C 语言(下)之 预处理命令篇
大话c语言(下)之 预处理命令篇 预处理就是在编译之前,通过一些预处理命令对源代码进行管理和控制的过程. 由源代码得到可执行的程序,会经过预处理.编译.汇编和链接几个过程 预处理命令大致可以分为文件包 ...
- 一、React Native 搭建开发环境(1)(Mac OS - IOS项目篇)
React Native是Facebook推出的一个开发IOS和安卓APP的技术.至于更多的详情,这里不再描述,大家可以自行百度它的定义. 原因:由于我想在一台电脑上同时开发IOS和Android两个 ...
- Unix和Linux下C语言学习指南
转自:http://www.linuxdiyf.com/viewarticle.php?id=174074 Unix和Linux下C语言学习指南 引言 尽管 C 语言问世已近 30 年,但它的魅力仍未 ...
- [置顶] Firefox OS 学习——manifest.webapp结构分析
在Firefox OS 学习——Gaia 编译分析 这篇文章多次提到manifest.webapp文件,对于做过android app 开发的人来说,都很熟悉Android.mk 和Manifest ...
- Docker虚拟化实战学习——基础篇(转)
Docker虚拟化实战学习——基础篇 2018年05月26日 02:17:24 北纬34度停留 阅读数:773更多 个人分类: Docker Docker虚拟化实战和企业案例演练 深入剖析虚拟化技 ...
随机推荐
- Knockout获取数组元素索引的2种方法,在MVC中实现
原文:Knockout获取数组元素索引的2种方法,在MVC中实现 在遍历数组.集合的时候,通常要获取元素的索引,本篇体验使用Knockout获取索引的2种方法. 假设有这样的一个模型: namespa ...
- sql大小转换函数
将字段值转换成大写 UPDATE t SET [name]=UPPER([name]) 将字段值转换成小写 UPDATE t SET [name]=LOWER([name])
- 阅读zepto.js的core中的Core methods
学习zepto.js,參考资料:http://www.zeptojs.cn/ 跟jQuery一样.其选择符号也是$; 首先接触的是 $.() 选择 $(selector, [context]) ⇒ ...
- zend studio 10 实现代码自动换行
在一篇zend framework 的PHP编码标准的文章中看到了这么一段: 一行 80 字符以内是比较合适,就是说,ZF 的开发者应当努力在可能的情况下保持每行代码少于 80 个字符,在有些情况下, ...
- android client随机验证码生成函数
由于该项目使用验证码.自己找了一些资料.尽量把这个验证码做出来.代码不是很,較的简单,以下给大家看看我是怎么实现该功能的: 源代码地址下载:http://download.csdn.net/detai ...
- Windows Phone开发(29):隔离存储C
原文:Windows Phone开发(29):隔离存储C 本文是隔离存储的第三节,大家先喝杯咖啡放松,今天的内容也是非常简单,我们就聊一件东东--用户设置. 当然了,可能翻译为应用程序设置合适一些,不 ...
- docker 现实---中小企业docker环境结构(五)
docker对于中小企业,设定paas他没有足够的能量,没有必要为,个人二手sandbox实用性和小点.我个人觉得,中小企业可以使用docker要规范发展.测试.生产环境. 他画了一个简单的图表: d ...
- webservice一片:其中在外线呼叫数据,查看返回数据
经Android数据被访问,返回的数据(json格公式,object数据类型:strJson) 业务需求:经webservice调用外部暴露数据并返回json数据序列化.阅读到数据库表:[SQ_Eve ...
- 从零開始学android<RelativeLayout相对布局.十六.>
相对布局管理器指的是參考某一其它控件进行摆放,能够通过控制,将组件摆放在一个指定參考组件的上.下.左.右等位置,这些能够直接通过各个组件提供的属性完毕. 以下介绍一下各个方法的基本使用 No. 属性名 ...
- NYOJ710 外星人的供给站 【贪心】
外星人的供给站 时间限制:1000 ms | 内存限制:65535 KB 难度: 描写叙述 外星人指的是地球以外的智慧生命.外星人长的是不是与地球上的人一样并不重要,但起码应该符合我们眼下对生命基 ...