没有图我说个~毛(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学习(例子篇)的更多相关文章

  1. 基于raw os 的事件触发系统

    Raw os的事件触发系统有以下特点: 1 基于UML的状态机理念设计,实现了有限状态机(fsm)以及层次状态机(HSM). 2 实现了活动对象(ACTIVE OBJECT)的特性,一个活动对象包含了 ...

  2. or1200下raw-os学习(任务篇)

    这次就来说说基于上一节介绍的系统框图去建立我们所需要的任务,顺便学习Raw-OS提供的API,根据上节的分析,对于Slave Board有如下设计: Slave Board有三个任务,分别负责测试阻抗 ...

  3. Java并发包下锁学习第一篇:介绍及学习安排

    Java并发包下锁学习第一篇:介绍及学习安排 在Java并发编程中,实现锁的方式有两种,分别是:可以使用同步锁(synchronized关键字的锁),还有lock接口下的锁.从今天起,凯哥将带领大家一 ...

  4. Java并发包下锁学习第二篇Java并发基础框架-队列同步器介绍

    Java并发包下锁学习第二篇队列同步器 还记得在第一篇文章中,讲到的locks包下的类结果图吗?如下图: ​ 从图中,我们可以看到AbstractQueuedSynchronizer这个类很重要(在本 ...

  5. 如何系统学习C 语言(下)之 预处理命令篇

    大话c语言(下)之 预处理命令篇 预处理就是在编译之前,通过一些预处理命令对源代码进行管理和控制的过程. 由源代码得到可执行的程序,会经过预处理.编译.汇编和链接几个过程 预处理命令大致可以分为文件包 ...

  6. 一、React Native 搭建开发环境(1)(Mac OS - IOS项目篇)

    React Native是Facebook推出的一个开发IOS和安卓APP的技术.至于更多的详情,这里不再描述,大家可以自行百度它的定义. 原因:由于我想在一台电脑上同时开发IOS和Android两个 ...

  7. Unix和Linux下C语言学习指南

    转自:http://www.linuxdiyf.com/viewarticle.php?id=174074 Unix和Linux下C语言学习指南 引言 尽管 C 语言问世已近 30 年,但它的魅力仍未 ...

  8. [置顶] Firefox OS 学习——manifest.webapp结构分析

    在Firefox OS 学习——Gaia 编译分析  这篇文章多次提到manifest.webapp文件,对于做过android app 开发的人来说,都很熟悉Android.mk 和Manifest ...

  9. Docker虚拟化实战学习——基础篇(转)

    Docker虚拟化实战学习——基础篇 2018年05月26日 02:17:24 北纬34度停留 阅读数:773更多 个人分类: Docker   Docker虚拟化实战和企业案例演练 深入剖析虚拟化技 ...

随机推荐

  1. js实现页面重定位的几种方法

    参考地址:http://www.cnblogs.com/super-d2/archive/2011/10/01/2197004.html js实现页面重定向 在现行的网站应用中URL重定向的应用有很多 ...

  2. JVM必备指南(转)

    本文由 ImportNew - xiafei 翻译自 anturis.欢迎加入翻译小组.转载请见文末要求. 简介 Java虚拟机(JVM)是Java应用的运行环境,从一般意义上来讲,JVM是通过规范来 ...

  3. 怎样让你的安卓手机瞬间变Firefox os 畅玩firefox os 应用

    Firefox os 手机迟迟不能在国内大面积上市.如今能买到的Firefox os手机国内就一款Firefox os ZET OPEN C ,但这款手机配置确实还不如人意.价格方面也不实惠,对于我们 ...

  4. phpmailer【PHP邮件】的用法

    第一,需要下载PHPMailer文件包phpmailer. http://phpmailer.sourceforge.net/ 第二,确认你的服务器系统已经支持socket ,通过phpinfo(); ...

  5. c#为了实现自己的线程池功能(一)

    线程池的技术背景 在面向对象编程中,创建和销毁对象是非常费时间的,由于创建一个对象要获取内存资源或者其他很多其他资源,所以提高服务程序效率的一个手段就是尽可能降低创建和销毁对象的次数.特别是一些非常耗 ...

  6. 九度 题目1044:Pre-Post

    转载请注明本文链接http://blog.csdn.net/yangnanhai93/article/details/40658571 题目链接:pid=1044">http://ac ...

  7. 获取编译学习笔记 (六)—— si、di,双环

    疯狂暑期学习  汇编入门学习笔记 (六)-- si.di,双重循环 參考: <汇编语言> 王爽 第7章 1. and和or指令,与[bx+idata] and和or.就不多说了. [bx+ ...

  8. android 设置默认启动network mode

    network mode常见类型 WCDMA preferred : 0 GSM only : 1 WCDMA only : 2 GSM UMTS : 3 CDMA : 4 ... (参考RILCon ...

  9. 通过action 跨进程启动activity

    在一些场景中我们需要从一个进程启动另外的一个应用的activity,这有什么好办法? 这里介绍一种方法,通过自定义 action 通过filter来启动. 如果你需要启动一个你自己写的另一个app的a ...

  10. Python3.4 邮件(包含附件与中国)

    import smtplib import os from email.mime.text import MIMEText from email.mime.multipart import MIMEM ...