嵌入式系统

嵌入式系统

Embedded system,一种完全嵌入受控器件内部,为特定应用而设计的专用计算机系统。
根据英国电气工程师协会(U.K. Institution of Electrical Engineer)的定义,嵌入式系统为控制、监视或辅助设备、机器或用于工厂运作的设备。与个人计算机这样的通用计算机系统不同,嵌入式系统通常执行的是带有特定要求的预先定义的任务。由于嵌入式系统只针对一项特殊的任务,设计人员能够对它进行优化,减小尺寸降低成本。嵌入式系统通常进行大量生产,所以单个的成本节约,能够随着产量进行成百上千的放大

在这里插入图片描述
Embedded Operate System,EOS,嵌入式操作系统用于嵌入式系统的操作系统
嵌入式操作系统与通用操作系统的共同点:
1.都完成任务的调度、资源的管理
2.都有一个内核向任务层提供系统级调用
不同点:
1.嵌入式操作系统对实时性有要求;而通用系统往往不要求
2.通用操作系统对任务空间和系统空间有严格区分,以保护系统安全;嵌入式操作系统往往合为一体
3.通用操作系统要求大而全;嵌入式系统要求短小精悍

RTOS

Real-time operating system
典型的单片机程序在程序指针复位后,首先进行堆栈、中断、中断向量、定时器、串行口等接口设置、初始化数据存储区和显示内容,然后就来到了一个监测、等待或空循环,在这个循环中,CPU可以监视外设、响应中断或用户输入。
这段主程序可以看作是一个内核,内核负责系统的初始化和开放、调度其它任务,相当于C语言中的主函数,RTOS就是这样的一个标准内核。

GPIO

General Purpose Input Output 通用输入/输出
在嵌入式系统中常常有数量众多,但是结构却比较简单的外部设备/电路,对这些设备/电路有的需要CPU为之提供控制手段,有的则需要被CPU用作输入信号。而且,许多这样的设备/电路只要求一位,即只要有开/关两种状态就够了,比如灯亮与灭。对这些设备/电路的控制,使用传统的串行口或并行口都不合适。所以在微控制器芯片上一般都会提供一个“通用可编程IO接口”,即GPIO
1.Configure the GPIO direction by writing the GPIO configuration register. Then the logic will set input enable or output enable.
2.If the GPIO was configured as input, the system can read the data register to get the back-end data.
3.If the GPIO was configures as output, the system writes the output data to data register, the data will be sent to the back-end device.
1.观察外设在电路板上的位置和名称
2.分析外设电路原理图,寻找线索
3.分析芯片数据手册,了解芯片(管脚)工作原理
4.写驱动程序

开发板

demo board 用来进行嵌入式系统开发的电路板,包括中央处理器、存储器、输入设备、输出设备、数据通路/总线和外部资源接口等一系列硬件组件
针对某个芯片,以这个芯片为核心,将这个芯片的功能都扩展出来,将每一部分都通过程序把功能都演示出来

FPGA

Field Programmable Gate Array,现场可编程门阵列。
一个可以编写电路的一个东西,一般的比如单片机什么的它里面的电路都已经固化了,只需要把程序输入就行,而FPGA则是通过编程语言把你想要的电路给编出来,它的功能比较强大
它是一种新型的可编程逻辑器(programmable logic device, PLD)。通过设计,FPGA能够完成任何数字器件的功能,上至高性能CPU,下至简单的74系列芯片,都可以用FPGA来实现
它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点

PLD

Programmable Logic Device,可编程逻辑器件
主要实现数字逻辑的集成电路,并且是可以通过编程来改变其功能的
PLD是做为一种通用集成电路生产的,但其最终产品又具有专用集成电路的性质。在传统的集成电路全定制设计中,厂家(设计人员)需要从前端到后端再到生产测试全流程参与,并且产品内部的集成电路(硬件)不能改动,一旦有错误或者有新的需求就必须重新经过Foundry生产,成本高、周期长。而PLD的出现正好弥补了这方面的缺陷。PLD的逻辑功能可以根据用户对器件的编程来决定,设计人员不用介入版图设计和生产流程,可以通过编程快速得到想要的电子系统功能。因此可以认为编程前PLD是通用集成电路,编程后的PLD是专用集成电路

DSP

digital signal processor是一种独特的微处理器,以数字信号来处理大量信息的器件。其工作原理是接收模拟信号,转换为0或1的数字信号,再对数字信号进行修改、删除、强化,并在其他系统芯片中把数字数据解译回模拟数据或实际环境格式。它不仅具有可编程性,而且其实时运行速度可达每秒数以千万条复杂指令程序,远远超过通用微处理器,是数字化电子世界中日益重要的电脑芯片。它的强大数据处理能力和高运行速度,是最值得称道的两大特色

Driver

驱动程序,添加到操作系统中的一小块代码,其中包含有关硬件设备的信息。有了此信息,计算机就可以与设备进行通信。
驱动程序是硬件厂商根据操作系统编写的配置文件,可以说没有驱动程序,计算机中的硬件就无法工作。操作系统不同,硬件的驱动程序也不同。

Power off

掉电:由于断电、失电、或电的质量达不到要求而引起用电设备不能正常工作的术语

Boot Loader

在操作系统内核运行之前运行的一段小程序。通过这段小程序,可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。通常,Boot Loader是严重地依赖于硬件而实现的,特别是在嵌入式世界。因此,在嵌入式世界里建立一个通用的 Boot Loader 几乎是不可能的
在嵌入式系统中,通常并没有像BIOS那样的固件程序,因此整个系统的加载启动任务就完全由BootLoader来完成。BootLoader是在操作系统内核运行之前运行。可以初始化硬件设备、建立内存空间映射图,从而将系统的软硬件环境带到一个合适状态,以便为最终调用操作系统内核准备好正确的环境。
在一个基于ARM7TDMI core的嵌入式系统中,系统在上电或复位时通常都从地址0x00000000处开始执行,而在这个地址处安排的通常就是系统的BootLoader程序。
Bootloader是嵌入式系统在加电后执行的第一段代码,在它完成CPU和相关硬件的初始化之后,再将操作系统映像或固化的嵌入式应用程序加载到内存中,然后跳转到操作系统所在的空间,启动操作系统运行。

U-Boot

Universal Boot Loader 启动流程

  1. stage1(start.s结构代码)
    U-boot的stage1代码通常放在start.s文件中,它用汇编语言写成
    (1)定义入口。由于一个可执行的image必须有一个入口点,并且只能有一个全局入口,通常这个入口放在rom(Flash)的0x0地址,因此必须通知编译器以使其知道这个入口,该工作可通过修改连接器脚本来完成
    (2)设置异常向量(exception vector)
    (3)设置CPU的速度、时钟频率及中断控制寄存器
    (4)初始化内存控制器
    (5)将rom中的程序复制到ram中
    (6)初始化堆栈
    (7)转到ram中执行,该工作可使用指令ldrpc来完成
  2. stage2(C语言代码部分)
    lib_arm/board.c中的start armboot是C语言开始的函数,也是整个启动代码中C语言的主函数,同时还是整个u-boot(armboot)的主函数,该函数主要完成如下操作:
    (1)调用一系列的初始化函数
    (2)初始化flash设备
    (3)初始化系统内存分配函数
    (4)如果目标系统拥有nand设备,则初始化nand设备
    (5)如果目标系统有显示设备,则初始化该类设备
    (6)初始化相关网络设备,填写ip,c地址等
    (7)进入命令循环(即整个boot的工作循环),接受用户从串口输入的命令,然后进行相应的工作

arch
├── api 存放uboot提供的接口函数
├── board 根据不同开发板定制的代码,代码也不少
├── common 通用的代码,涵盖各个方面,已命令行处理为主
├── cpu 与体系结构相关的代码,uboot的重头戏
├── disk 磁盘分区相关代码
├── doc 文档,一堆README开头的文件
├── drivers 驱动,很丰富,每种类型的设备驱动占用一个子目录
├── examples 示例程序
├── fs 文件系统,支持嵌入式开发板常见的文件系统
├── include 头文件,已通用的头文件为主
├── lib_【arch】 与体系结构相关的通用库文件(10个文件,支持10种处理器架构)
├── nand_spl NAND存储器相关代码
├── net 网络相关代码,小型的协议栈
├── onenand_ipl
├── post 加电自检程序
└── tools 辅助程序,用于编译和检查uboot目标文件

RAM

ARM处理器工作模式一共有7种:

USR 模式    	正常用户模式,程序正常执行模式
FIQ模式(Fast Interrupt Request)	处理快速中断,支持高速数据传送或通道处理
IRQ模式	处理普通中断
SVC模式(Supervisor)	操作系统保护模式,处理软件中断swi  reset
ABT 中止(Abort mode){数据、指令}	处理存储器故障、实现虚拟存储器和存储器保护
UND未定义(Undefined)	处理未定义的指令陷阱,支持硬件协处理器的软件仿真
SYS 系统模式(基本上=USR)(System)运行特权操作系统任务

除了用户模式之外的其他6种处理器模式称为特权模式
特权模式下,程序可以访问所有的系统资源,也可以任意地进行处理器模式的切换。
特权模式中,除系统模式外,其他5种模式又称为异常模式。

中断

中断优先级
ARM处理器中有7种类型的异常,按优先级从高到低的排列如下:
复位异常(Reset)
数据异常(Data Abort)
快速中断异常(FIQ)
外部中断异常(IRQ)
预取异常(Prefetch Abort)
软件中断(SWI)
未定义指令异常(Undefined instruction)

IP核

全称知识产权核(intellectual property core)
在集成电路的可重用设计方法学中,IP核是指某一方提供的、形式为逻辑单元、芯片设计的可重用模块。
三类IP核:
软核 通常是与工艺无关、具有寄存器传输级硬件描述语言描述的设计代码,可以进行后续设计
硬核 通过逻辑综合、布局、布线之后的一系列工艺文件,具有特定的工艺形式、物理实现方式
固核 通常介于上面两者之间,它已经通过功能验证、时序分析等过程,设计人员可以以逻辑门级网表的形式获取

SoC System on Chip

SoC是在一个芯片上由于广泛使用预定制模块IP(Intellectual Property)而得以迅速发展的集成电路。从设计上来说,SoC就是一个通过设计复用达到高生产率的硬件软件协同设计的过程。
从方法学的角度来看,SoC是一套极大规模集成电路的设计方法学,包括IP核可复用设计/测试方法及接口规范、系统芯片总线式集成方法学、系统芯片验证和测试方法学。
SOC是一种设计理念,就是将各个可以集成在一起的模块集成到一个芯片上,借鉴了软件的复用概念,也有了继承的概念

ARM的功耗较低面积较小,所以各大厂商通常会把它的CPU和各类外围IP都放到一起,然后自己拿着图纸去流片,生产出来的也是一个正方形,下面有很多引脚,这个东西不仅包含了CPU,还包含了其他的控制器,这个东西就叫做SOC(system on chip)。从英文来看,所谓的四核SOC什么的,本意就不是单指CPU,而是四核系统。
soc包含:
1.逻辑核包括CPU、时钟电路、定时器、中断控制器、串并行接口、其它外围设备、I/O端口以及用于各种IP核之间的粘合逻辑等等;
2.存储器核包括各种易失、非易失以及Cacha等存储器;
3.模拟核包括ADC、DAC、PLL以及一些高速电路中所用的模拟电路

事件

用户对窗口上各种组件的操作,如按下确定按钮,选择某个单选按钮或者复选框。每一种控件有自己可以识别的事件,如窗体的加载、单击、双击等事件,编辑框(文本框)的文本改变事件等。
事件有系统事件和用户事件。
系统事件由系统激发,如时间每隔24小时,银行储户的存款日期增加一天。
用户事件由用户激发,如用户点击按钮,在文本框中显示特定的文本。事件驱动控件执行某项功能

单片机

MCU Micro controller Unit,又称单片微型计算机(Single Chip Microcomputer)
把CPU的频率与规格做适当缩减,并将内存(memory)、计数器(Timer)、USB、A/D转换、UART、PLC、DMA等周边接口,甚至LCD驱动电路都整合在单一芯片上,形成芯片级的计算机,为不同的应用场合做不同组合控制

单片机的开发主要指单片机应用系统的开发,包括硬件开发和软件开发
硬件开发是指根据单片机要实现的控制功能开发出实际的电路
软件开发是指为单片机编写程序,使单片机在程序的控制下,接收输入端送入的信号并发出相应的控制信号,驱动硬件电路工作,从而实现相应的控制功能

通信

在单片机技术中,单片机与单片机或单片机与其他设备之间的数据传输称为通信。
并行通信:同时传输多位数据的方式。在并行通信方式下,单片机中的8位数据10011101通过8条数据线同时送到外部设备中
串行通信:逐位依次传输数据的方式。在串行通信方式下,单片机中的8位数据10011101通过1条数据线逐位送到外部设备中

串行通信又分为异步通信和同步通信
异步通信:以帧为单位进行数据传输,一帧数据传送完成后,可以接着传送下一帧数据,也可以等待。一帧数据由起始位、数据位、奇偶校验位和停止位组成
同步通信:取消了停止位,前面的起始位用同步信号代替,在同步信号后面可以跟很多数据。但由于在通信时要求发送端和接收端严格保持同步,这需要用复杂的电路来保证,所以单片机很少采用这种通信方式

串行通信根据数据的传送方向分为三种
单工方式:数据只能向一个方向传送,数据只能由发送端传输给接收端
半双工方式:数据可以双向传送,但同一时间,只能向一个方向传送,只有一个方向的数据传送完成后,才能往另一个方向传数据
全双工方式:数据可以双向传送,通信的双方都有发送器和接收器,由于有两条数据线,所以双方在发送数据的时候可以同时接收数据

UART

Universal Asynchronous Receiver Transmitter通用异步收发器
用来传输串行数据
发送数据时,CPU将并行数据写入UART,UART按照一定格式在TxD线上串行发出;
接收数据时,UART检测到RxD线上的信号,将串行收集放到缓冲区中,CPU即可读取UART获得的这些数据

Data Transmission steps
(1) The system writes the control register to program the stop bit, parity bit and write
the baud speed register.
(2) Host system writes data to TX FIFO and enables the UART module.
(3)The controller will ensure that the TX FIFO is not empty before the transmission
process. Content in TX FIFO is transferred in serial transmitter block.
(4) (optional ‐ if configured) Serial transmitter adds parity check on to TX output.
(5) After a frame has been transmitted, UART holds the output high for one (or two if
configured) bit time (these are called the “STOP” bits).
(6) If the UART module is still asserted, and TX FIFO is not empty, another frame will
be transmitted.
(7) The system can write data to TX FIFO if the status register indicate the TX FIFO is
empty.

Steps for Receiving Data
(1) Program the stop bit, parity bit and baud speed, and RX FIFO trigger value.
(2) The system asserts the UART module, then the receiver detects the low level on
the coming message.
(4) Serial receiver receives the serial data bits and writes the data to RX FIFO, if RX
FIFO is overrun, the data will be ignored.
(5)(optional- if configured) Serial receiver receives error check bit and verifies incoming
byte, if the verification failed, interrupt request is set.
(6) Receive one (or two if configured) stop bit, if the received stop bit was not “1”,
interrupt request output bit is set.

I2C

Inter IC BUS

SPI

Serial Peripheral Interface(串行外设接口)

watch dog

用于监测单片机程序运行状态的芯片,防止程序发生死循环或者说程序跑飞。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

春夏与冬

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值