【一天一课】从单片机到嵌入式,需要学点啥?(下篇)

-回复 -浏览
楼主 2022-05-07 14:45:10
举报 只看此人 收藏本贴 楼主

往期回顾:

【一天一课】从单片机到嵌入式,需要学点啥?(上篇)

【一天一课】单片机入门,真的难吗?

【一天一课】 通信网络底层知识扫盲贴

【一天一课】厘清你的困惑点:晶体三极管放大原理的讲解

【一天一课】开关电源设计中的几个经典问题

【一天一课】 全数字锁相环的设计

【一天一课】滤波器怎么选?这十个问题要注意!

【一天一课】如何用对和用好运算放大器?

【一天一课】对比LoRa、NB-IoT,企业如何正确打开物联网大门?

【一天一课】三极管放大电路&开关电路

【一天一课】聊一聊三极管的那些事

【一天一课】别小看我,我不只是二极管

【一天一课】电感学习的小总结

【一天一课】显卡花屏背后:从电容的秘密说起

【一天一课】 叫我们电阻,我很冤!  


从单片机到嵌入式,我们应该了解什么?关于这个问题,在昨天的内容《从单片机到嵌入式,需要学点啥?(上篇)》,我们了解了C语言、单片机、CPU、按键、代码。今天了解一下μC/OS-II操作系统和总线这两部分。


Part6 操作系统认识初步——μC/OS-II


本节我们将对ucosII操作系统有个初步的认识,主要是从下面2个方面进行讲解:


1.UCOSII操作系统的简介

2.UCOSII操作系统组成部分

  

一、UCOSII操作系统的简介:


μC/OS-II 是一种基于优先级的抢占式多任务实时操作系统,包含了实时内核、任务管理、时间管理、任务间通信同步(信号量,邮箱,消息 队列)和内存管理等功能。它可以使各个任务独立工作,互不干涉,很容易实现准时而且无误执行,使实时应用程序的设计和扩展变得容易,使应用程序的设计过程大为减化。


μC /OS-II是一个完整的、可移植、可固化、可裁剪的占先式实时多任务内核。μC/OS-II绝大部分的代码是用ANSI的C语言编写的,包含一小部分汇编代码,使之可供不同架构的微处理器使用。至今,从8位到64位,μC/OS-II已在超过40种不同架构上的微处理器上运行。μC/OS-II已经在世界范围内得到广泛应用,包括很多领域, 如手机、路由器、集线器、不间断电源、飞行器、医疗设备及工业控制上。实际上,μC/OS-II已经通过了非常严格的测试,并且得到了美国航空管 理局(Federal Aviation Administration)的认证,可以用在飞行器上。这说明μC/OS-II是稳定可靠的,可用于与人性命攸关的安全紧要(safety critical)系统。除此以外,μC/OS-II 的鲜明特点就是源码公开,便于移植和维护。

  

二、UCOSII操作系统组成部分:

  

μC/OS-II可以大致分成核心、任务处理、时间处理、任务同步与通信,CPU的移植等5个部分。


1) 核心部分(OSCore.c)

是操作系统的处理核心,包括操作系统初始化、操作系统运行、中断进出的前导、时钟节拍、任务调度、事件处理等多部分。能够维持系统基本工作的部分都在这里。

  

2) 任务处理部分(OSTask.c)

任务处理部分中的内容都是与任务的操作密切相关的。包括任务的建立、删除、挂起、恢复等等。因为μC/OS-II是以任务为基本单位调度的,所以这部分内容也相当重要。

  

3) 时钟部分(OSTime.c)

μC/OS-II中的最小时钟单位是timetick(时钟节拍)。任务延时等操作是在这里完成的。

  

4) 任务同步和通信部分

为事件处理部分,包括信号量、邮箱、邮箱队列、事件标志等部分;主要用于任务间的互相联系和对临界资源的访问。

  

5) 与CPU的接口部分


是指μC/OS-II针对所使用的CPU的移植部分。由于μC/OS-II是一个通用性的操作系统,所以对于关键问题上的实现,还是需要根据具体CPU的具体内容和要求作相应的移植。这部分内容由于牵涉到SP等系统指针,所以通常用汇编语言编写。主要包括中断级任务切换的底层实现、任务级任务切换的底层实现、时钟节拍的产生和处理、中断的相关处理部分等内容。


有了上面基础,是不是感觉操作系统也不是那么深奥了!


Part7 总线,你知多少?


本节我们主要是从下面6个方面进行讲解:

1.总线的简单介绍

2.总线的原理

3.总线的特征

4.总线的分类

5.总线的技术指标

6.传输数据可靠性

一、总线的简单介绍:

其实现实生活中也有很多总线的影子。比如从A地到B地,只能通过船来渡河,并且船一次只能承载一个人,这时候,如果大家蜂拥而上,那么大家都会掉到河里去,轻则都去不了,重则出现死亡。这时,我们可以通过分时来实行,比如多少点是谁坐船过去,人之间的先后顺序如何排序等。这就不知道不觉中运用了总线的时分系统传输性质。

随着网络的发展,现在总线不仅仅局限于时分。还有频分系统、相分系统和码分系统等。只要认真分析,抓住本质东西,总线不是大家想象的那么难理解。

二、总线原理【参考百度百科和网络】

如果说主板(Mother Board)是一座城市,那么总线就像是城市里的公共汽车(bus),能按照固定行车路线,传输来回不停运作的比特(bit)。这些线路在同一时间内都仅能负责传输一个比特。因此,必须同时采用多条线路才能传送更多数据,而总线可同时传输的数据数就称为宽度(width),以比特为单位,总线宽度愈大,传输性能就愈佳。总线的带宽(即单位时间内可以传输的总数据数)为:总线带宽 = 频率 x 宽度(Bytes/sec)。当总线空闲(其他器件都以高阻态形式连接在总线上)且一个器件要与目的器件通信时,发起通信的器件驱动总线,发出地址和数据。其他以高阻态形式连接在总线上的器件如果收到(或能够收到)与自己相符的地址信息后,即接收总线上的数据。发送器件完成通信,将总线让出(输出变为高阻态)。

目前最常见的主要有时分多路复用、频分多路复用和码分多路复用等。

1.时分多路复用(TDMA)

时分复用是将信道按时间加以分割成多个时间段,不同来源的信号会要求在不同的时间段内得到响应,彼此信号的传输时间在时间坐标轴上是不会重叠。

2.频分多路复用(FDMA)

频分复用就是把信道的可用频带划分成若干互不交叠的频段,每路信号经过频率调制后的频谱占用其中的一个频段,以此来实现多路不同频率的信号在同一信道中传输。而当接收端接收到信号后将采用适当的带通滤波器和频率解调器等来恢复原来的信号。

3.码分多路复用(CDMA)

码分多路复用是所被传输的信号都会有各自特定的标识码或地址码,接收端将会根据不同的标识码或地址码来区分公共信道上的传输信息,只有标识码或地址码完全一致的情况下传输信息才会被接收。

总线的通信协议

对于总线的学习,了解其通讯协议是整个过程中最关键的一步,所有介绍总线技术的资料都会花很大的篇幅来描述其协议,特别是ISO/OSI的那七层定义。其实要了解一种总线的协议,最主要的就是去了解总线的帧数据每一位所代表的特性和意义,总线各节点间有效数据的收发都是通过各节点对帧数据位或段的判断和确信来得以实现。


如图1所示是常见的I2C总线上传输的一字节数据的数据帧,其总线形式是由数据线SDA和时钟SCL构成的双线制串行总线,并接在总线上的电路模块即可作为发送器(主机)又可作为接收器(从机)。帧数据中除了控制码(包括从机标识码和访问地址码)与数据码外还包括起始信号、结束信号和应答信号。

起始信号:SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。

控制码:用来选泽操作目标与对象,即接通需要控制的电路,确定控制的种类对象。在读期间,也即SCL时钟线处于时钟脉冲高电平时,SDA上的数据位不会跳变。

数据码:是主机向从机发送的具体的有用的数据(如对比度、亮度等)和信息。在读期间,SDA上的数据位不会跳变。

应答信号:接收方收到8bit数据后,向发送方发出特定的低电平。读/写的方向与其它数据位正好相反,也即是由从机写出该低电平,主机来读取该低电平。

结束信号:SCL为高电平时,SDA由低电平向高电平跳变表示数据帧传输结束。

当然不同的总线其数据位或段的定义肯定不同,但依据同样的原理可以更快的去了解它的协议的特性和特点。虽然其信息帧的大小不一,但具体的某一数据位或数据段都类似于本文所提及的I2C总线,会依据它的协议的要求来定义它所达标的意义和功能。

三、总线的特征

由于总线是连接各个部件的一组信号线。通过信号线上的信号表示信息,通过约定不同信号的先后次序即可约定操作如何实现。总线的特性如下

(1)物理特性:

物理特性又称为机械特性,指总线上部件在物理连接时表现出的一些特性,如插头与插座的几何尺寸、形状、引脚个数及排列顺序等。

(2)功能特性:

功能特性是指每一根信号线的功能,如地址总线用来表示地址码。数据总线用来表示传输的数据,控制总线表示总线上操作的命令、状态等。

(3)电气特性:

电气特性是指每一根信号线上的信号方向及表示信号有效的电平范围,通常,由主设备(如CPU)发出的信号称为输出信号(OUT),送入主设备的信号称为输入信号(IN)。通常数据信号和地址信号定义高电平为逻辑1、低电平为逻辑0,控制信号则没有俗成的约定,如WE表示低电平有有效、Ready表示高电平有效。不同总线高电平、低电平的电平范围也无统一的规定,通常与TTL是相符的。

(4)时间特性:

时间特性又称为逻辑特性,指在总线操作过程中每一根信号线上信号什么时候有效,通过这种信号有效的时序关系约定,确保了总线操作的正确进行。

为了提高计算机的可拓展性,以及部件及设备的通用性,除了片内总线外,各个部件或设备都采用标准化的形式连接到总线上,并按标准化的方式实现总线上的信息传输。而总线的这些标准化的连接形式及操作方式,统称为总线标准。如ISA、PCI、USB总线标准等,相应的,采用这些标准的总线为ISA总线、PCI总线、USB总线等。

四、总线的分类

总线按功能和规范可分为五大类型:

数据总线(Data Bus):在CPU与RAM之间来回传送需要处理或是需要储存的数据。

地址总线(Address Bus):用来指定在RAM(Random Access Memory)之中储存的数据的地址。

控制总线(Control Bus):将微处理器控制单元(Control Unit)的信号,传送到周边设备,一般常见的为 USB Bus和1394 Bus。

扩展总线(Expansion Bus):可连接扩展槽和电脑。

局部总线(Local Bus):取代更高速数据传输的扩展总线。

按照传输数据的方式划分,可以分为串行总线和并行总线。

串行总线中,二进制数据逐位通过一根数据线发送到目的器件;并行总线的数据线通常超过2根。常见的串行总线有SPI、I2C、USB及RS232等。

按照时钟信号是否独立,可以分为同步总线和异步总线。

同步总线的时钟信号独立于数据,而异步总线的时钟信号是从数据中提取出来的。SPI、I2C是同步串行总线,RS232采用异步串行总线。

五、总线的技术指标

1、总线的带宽(总线数据传输速率)

总线的带宽指的是单位时间内总线上传送的数据量,即每钞钟传送MB的最大稳态数据传输率。与总线密切相关的两个因素是总线的位宽和总线的工作频率,它们之间的关系:

总线的带宽=总线的工作频率*总线的位宽/8

或者 总线的带宽=(总线的位宽/8 )/总线周期

2、总线的位宽

总线的位宽指的是总线能同时传送的二进制数据的位数,或数据总线的位数,即32位、64位等总线宽度的概念。总线的位宽越宽,每秒钟数据传输率越大,总线的带宽越宽。

3、总线的工作频率

总线的工作时钟频率以MHZ为单位,工作频率越高,总线工作速度越快,总线带宽越宽。

六、传输数据可靠性

可靠性是评定总线最关键的参数,没有可靠性,传输的数据都是错误的信息,便就失去了总线的实际意义。为了提高总线的可靠性,通常采用的措施有:

采用数据帧发送前发送器对总线进行侦听,只有侦听到总线处于空闲状态下时才可向总线传送数据帧,这样避免了不同节点的数据冲突。

采用双绞线差分信号来传送数据,以降低单线的电压升降幅度,减小信号的边沿产生的高次谐波。

适当的让数据的边沿具有一定的斜坡。

增加匹配电阻和电容等来减少总线上信号的发射和平衡总线上的分布电容等。

采用合适的网络拓扑结构和屏蔽技术等来减少受其他信号的干扰。

还有就是在软件上通过数字滤波、数据校验纠错等措施来提高数据传输的可靠性。

看了上面的是不是对总线没有那么陌生了,感觉总线没有那么恐怖了!

文/量子CPU

来源:网络整理

如果喜欢本文,请动手点个赞,分享给你的好友!


相关阅读:

51单片机系列:

51单片机寄存器详解

51单片机C语言学习笔记3: 存储器结构

51单片机DIY制作实例:酷炫的旋转LED数字显示电子钟

dota前期英雄之51单片机+keilC51+单片机C语言

基于51单片机的太阳能草坪灯设计

掌握方法与技巧轻松学习51单片机

【我的学习笔记】MSP430F系列与传统MCS51系列单片机的学习比较

51单片机晶振的21个问题总结

我的51单片机之路

51单片机DIY做PLC编程

51单片机指令快速记忆方法总结


单片机的其他文章:

单片机的嵌入式系统的低消耗设计

STM8的C语言编程:--8位定时器应用之一

单片机C语言精确延时

如何写出高效优美的单片机C语言代码?

【单片机到嵌入式之路】序列之二:苦逼的CPU

周立功写给学单片机的年轻人--如何学有所用?

源 《单片机那些事儿》(连载)为初学而生 模块化编程篇

利用高级单片机的新低功耗模式

MSP430F系列单片机学习笔记_库函数编程思想

怎样成为单片机高手?

45个C编写的单片机应用程序

【博客大赛】说说单片机、PSOC、FPGA之间的主要区别

征服单片机万能步骤

[博客大赛]linux下开发C8051F的一点杂谈

【博客大赛】【视频】《31天环游单片机(共100讲)》持续连载中...

单片机系统硬件抗干扰常用方法实践

单片机各种复位电路原理

单片机C语言程序该这样写,不是教科书上教的那样?

长按二维码识别关注

电子路上一起走!

我要推荐
转发到

友情链接