hbz的NCRE之旅

软知识点

一、嵌入式系统

首先要清楚,嵌入式系统与通用计算机一样,也是由硬件软件两部分组成的。比如巨型机就不是嵌入式系统,属于计算机。
特点①专用性②隐蔽性③资源受限④高可靠性⑤实时性⑥软件固化

1.1处理器

1.主处理器为CPU,其余的都是协处理器,如DSP,GPU等
2.影响程序执行速度的因素:主频指令系统Cache的容量结构逻辑结构
3.CPU的字长有48163264位之分。现在嵌入式系统中使用的最多的还是8位和16位CPU,但32和64位CPU是技术发展的主流。
4.嵌入式系统中的CPU一般具有4个特点:①支持实时处理②低功耗③结构可扩展④集成了测试电路
5.嵌入式处理芯片:(1)微处理器 (2)数字信号处理器DSP ( 3)微控制器(单片机) ( 4)片上系统(SoC)
①SoC比MCU更为强大,SoC将嵌入式系统的几乎全部功能都集成在一块芯片中。
②典型的微处理器产品主要有PowerPC、MC68000、MIPS、AMD、x86等
③之前一直没搞清楚SoC、MCU和CPU的关系,其实很简单,嵌入式处理芯片一般都包括CPU内核

1.1.1 SoC芯片

1.单块集成电路的集成度平均每18~24个月翻一番,这就是摩尔定律。
2.SoC芯片可以分为通用SoC芯片专用SoC芯片两大类。通用SoC芯片中可以只有一个CPU(或DSP),称为单核SoC,也可以有多个,叫多核SoC

1.2存储器

存储器类型
Ps:RAM(Radom Acess Memory)随机存取存储器
        ROM(Read Only Memory)只读存储器

1.3嵌入式应用系统举例

数码相机(DC),是嵌入式系统的典型应用之一。
DC的成像芯片中包含了数以千万记的光电传感单元(也就是像素),每个像素均可感测影像中光信号的亮度和颜色,并将光信号转换为电信号。经A/D变成数字信号,在进行必要的图像处理和数据压缩(大多采用JPEG标准),最后存储在DC的存储器中。
DC的前端将获取的数字图像信号送至后端进行处理,后端是以嵌入式DSP作为CPU的SoC芯片,DSP用于数字图像处理和声音的录制与回放,外围电路负责存储卡的读写,LCD的显示,视频输出,usb的接口操作等。DC中还有一个超低功耗的8位MCU。用于数码相机的嵌入式系统一般配置有实时操作系统和图像处理软件。

1.4数字媒体

1.MPEG-2视频压缩编码主要应用DVD,电缆网络,数字卫星电视转播,数字有线电视,高清晰度电视(HDTV)

1.4.1 数字图像

图像数据量 = 图像水平分辨率 × 图像垂直分辨率 × 像素深度 / 8 (计算结果单位为字节

像素深度颜色数目
8256
1665536
241600万
1.4.2 数字音频与数字视频

视频文件格式:.avi,.mov,.rmvb
音频文件格式:.wav

1.4.3 字符集及其编码

①标准ASCII码是7位编码
②GB2312采用双字节等长编码
③GB18030采用不等长编码
④UTF-16采用双字节可变长编码

1.5互联网

1.5.1 IP协议与路由器

IPv4规定,每个IP地址使用4B表示,其中包含网络号主机号两部分。
IP地址分为A类、B类、C类三个基本类,每类有不同长度的网络号和主机号,另外有两类D、E分别作为组播地址和备用地址

A类:0开头的网络号 + 主机号 8位网络号,24位主机号
A类 从1.0.0.0126.255.255.255
B类:10开头的网络号 + 主机号 16位网络号,16位主机号
B类 从128.0.0.0191.255.255.255
C类:110开头的网络号 + 主机号 24位网络号,8位主机号
C类 从192.0.0.0223.255.255.255

C类所在的网络最多能连接多少台主机,C类主机号1个字节,28=256,按理论我觉得应该有256台主机,但是做的题说192.0.0.1 - 223.255.255.254共254台。啊,在网上找到原因了。主机的数量=2 ^主机的二进制位数 - 2,减2是因为主机不包括网络地址和广播地址。

参考链接:https://blog.csdn.net/gatieme/article/details/50989257

通常我们判断一个ip地址是A类还是B、C类,几乎都是看子网掩码
win+R输入cmd,输入ipconfig,即可看到自己的ipv4地址:
我的是192.168.0.7,子网掩码255.255.255.0,很明显是3个字节的网络号,C类。

参考链接:https://www.cnblogs.com/linux-super-meng/p/3701227.html

二、嵌入式处理器

2.1 嵌入式处理器的结构类型

嵌入式处理器的体系结构按指令集可分为:复杂指令集结构(CISC)精简指令集结构(RISC)
按存储机制分为:冯 · 诺依曼结构哈佛结构
按字长分为:8位、16位、32位和64位
按内核系列可分为:51、AVR、PIC、MSP430、MIPS、PowerPC、MC68K、ColdFire、ARM等

CISC和 RISC处理器:CISC处理器指令集中数目很多且结构比较复杂,包含许多很少使用的专用指令,不同指令的长度不相等,执行时间也长短不一。RICS处理器指令数目较少,指令字长统一,格式规整,寻址模式较为单纯,指令操作简单,执行时间短,大多能在1个周期内完成。
冯 · 诺依曼和哈佛结构的不同之处是 CPU连接程序存储器与数据存储器的方式不同。冯氏结构中数据和程序代码共享同一地址空间,程序代码可作为数据来处理,反之亦然,因为具有较好的灵活性。哈佛结构,使用两个独立的存储器分别存储指令和数据,不允许指令和数据并存;使用独立的两条总线,分别作为CPU与每个存储器之间的专用通信路径,而这2条总线之间毫无关联。

2.2 ARM处理器

主流ARM为32位处理器。与其他处理器相比,其主要特点有耗电省、功能强、成本低、32位和16位指令集并存,采用RISC体系结构,存储机制冯氏和哈佛都有。例如ARM7系列是冯诺依曼结构,Cortex-M3系列是哈佛结构。

2.2.1 ARM处理器分类

ARM Cortex处理器包括:
   Cortex-A(A = Application)系列是面向高端应用的处理器
   Cortex-R(R = Real Time)系列是面向实时控制应用的处理器
   Cortex-M(M = Microcontroller)系列是面向微控制器的处理器

2.2.2 ARM处理器工作状态及工作模式

   1. 在ARM体系结构中,处理器可以工作在3种不同的状态,一是ARM状态,二是Thumb状态及Thumb-2状态,三是调试状态。工作模式暂时不看。

1)ARM状态:ARM处理器工作于32位指令的状态,所有指令均为32位宽度。
2)Thumb状态:Thumb状态是ARM执行16位指令的状态。在Thumb模式下,指令代码只有16位,使代码密度变大,占用空间减小。但在异常处理时必须执行32位ARM状态下的ARM指令,如果原来工作于Thumb状态,必须将其切换到ARM状态。对于具有Thumb-2指令集的处理器,Thumb状态就是运行Thumb-2指令的工作状态。
3)调试状态:处理器停机调试时进入调试状态。
※当处理器进行异常处理时,则从异常向量地址开始执行,将自动进入ARM状态,当异常处理返回时,自动切换到Thumb状态
※ARM处理器复位后总处于ARM状态。

   2. ARM处理器工作模式
     ARM体系结构支持7种工作模式,取决于当前程序状态寄存器CPRS的低5位的值。

2.2.3 ARM处理器的寄存器组织

   ARM处理器共有37个寄存器,包括31个通用寄存器和6个状态寄存器。

  1. ARM状态下的寄存器组织
    (1)通用寄存器

    通用寄存器中不分组的寄存器共8个:R0~R7
    R8~R12共2组计10个寄存器
    R13和R14寄存器有特定功能

    (2)状态寄存器

    状态寄存器共6个,常考的有CPSR(当前程序状态寄存器)SPSR(备份程序状态寄存器)

  2. ARM状态下的寄存器组织

    R0~R12为通用寄存器,R13(SP)是堆栈指针,R14(LR)是链接寄存器,R15(PC)是程序计数器,CPSR和SPSR是状态寄存器

2.2.4 ARM的存储器格式及数据类型
  1. ARM体系结构可以用两种方法存储数据字,称之为大端模式小端模式

    大端模式:32位数据字的高字节存储在低地址中。例如一个32位数据字0x12345678存放在起始地址为0x30001000,大端模式下0x30001000单元存放0x12,0x30001001单元存放0x34……
    小端模式:同样是一个32位数据0x12345678,存放在起始地址为0x30001000,则小端模式下0x30001000单元存放0x78,0x30001001单元存放0x56……

  2. ARM存储器的数据类型

    32位ARM处理器中支持字节(8位),半字(16位),字(32位)3种数据类型

2.2.5 ARM处理器中的MMU和MPU
  1. ARM处理器中的MMU(Memory Management Unit 存储器管理单元 / 内存管理单元)

    1) MMU的功能
     (1)虚拟地址到物理地址映射
     (2)存储器访问权限控制

  2. ARM处理器中的MPU(Memory Protection Unit 存储器保护单元 / 内存保护单元)
    ※ 区别于微处理器(MPU)

2.3 ARM处理器指令集的比较

  • ARM指令集
    ARM指令集全部是32位的指令
  • Thumb指令集
    Thumb全部是16位字长的指令,可以看作是ARM指令的压缩形式
  • Thumb-2指令集
    Thumb-2指令集既有16位指令又有32位指令

三、嵌入式系统硬件组成

3.1 嵌入式系统硬件组成概述

   1.嵌入式最小硬件系统:电源电路、时钟电路、复位电路、JTAG测试接口
   2.典型嵌入式应用系统硬件组成:最小硬件系统、前向通道、后向通道、人机交互   通道以及相互互联通信通道等组成
前向通道:即输入接口,由模拟量输入接口和数字量输入接口组成,模拟输入接口包括传感器、信号调理电路、A/D转换器等构成
后向通道:即输出接口,由模拟量输出接口和数字量输出接口组成,模拟输出接口包括D/A转换器、功率放大器、执行器等组成
人机交互通道包括:键盘或触摸屏输入接口以及LED或LCD显示输出接口
相互互联通道包括:RS-232/RS-485串行通信接口、CAN通信接口、以太网通信接口、USB通信接口等

3.2 嵌入式处理芯片(基于ARM内核的嵌入式芯片的硬件组成)

      按照AMBA总线规范,以ARM内核为基础的嵌入式处理芯片采用系统总线外围总线两层结构的方式构建片上系统。
      AMBA(Advanced Microcontroller Bus Architecture)有助于开发带有大量控制器和外设的多处理系统。标准规定了ARM处理器内核与处理器内部高带宽RAM、DMA以及高带宽外部存储器等快速组件的接口标准(通常称为系统总线),也规定了内核与ARM处理器内部外围端口及慢速设备接口组件的接口标准(通常称为外围总线)。
      连接到系统总线上的高带宽组件包括:电源管理与时钟控制器、测试接口、DMA控制器、USB主机、片上SRAM及Flash、Ethernet、高速GPIO中断控制器、LCD控制器等。
      系统总线通过桥接器与外围总线互连,外围总线连接的硬件组件包括:GPIO、UART、SPI、I2C、USB设备、CAN、ADC、DAC、WDT、Timer、RTC(实时时钟)、PWM等。

3.3 I/O接口及常用I/O设备

3.3.1 串行外设接口SPI

   SPI一般使用4条线:串行时钟线SCK主机输入 / 从机输出数据线MISO主机输出 / 从机输入数据线MOSI低电平有效的从机选择线SSEL,注意有的SPI接口芯片带有中断信号线INT,有的没有MOSI
   采用SPI可以构成:“一主一从式”, “一主多从式”, “互为主从式”, “多主多从式” 系统

3.3.2 通用串行总线USB

USB总线接口支持设备的即插即用热插拔功能
USB的主要特点:

  1. 使用方便:一个端口可以连接多个不同的设备,支持热插拔
  2. 速度快:目前USB 2.0的速度为480 Mb/s(60MB/s), USB 3.0达到5 Gb/s( 640 MB/s)
  3. 连接灵活
  4. 独立供电:USB接口提供了内置电源

四、嵌入式系统软件

4.1 嵌入式操作系统

1)实时系统应该具备的7个特性:

  1.具有异步I/O和中断处理能力
  2.任务切换时间和中断延迟时间确定
  3.优先级中断和调度
  4.抢占式调度
  5.内存锁定
  6.连续文件
  7.同步

2)实时系统具有如下几个关键特性

  1.时间约束性
  2.可预测性
  3.可靠性
  4.交互性

3)实时操作系统的实时性指标

  1.中断延迟时间
  2.任务切换时间 / 进程切换时间
  3.任务抢占时间
在操作系统中,术语 “任务” 和 “进程” 基本上是通用的

4)强实时型嵌入式操作系统

  Vxworks,pSOS,μC/OS-II,QNX,RTEMS,Nucleus等

5)嵌入式操作系统的内核结构
  操作系统的内核结构分成两类:单内核微内核

单内核(宏内核)结构:有些操作系统把内核的各个功能模块(进程管理、文件系统、设备管理、网络通信等)整合在一起,模块间的交互通过直接调用其他模块中的函数来实现,执行效率高,性能好。这种操作系统内核称为单内核或宏内核。
优点 是应用程序生成效率高,系统花费在内核功能切换上的开销非常小,对外来事件反应速度快,操作系统内核的运行效率高。其 缺点 是即使不使用的功能组件和设备驱动程序也常驻在内存中,占用资源较多,缺乏可扩展性,维护工作量大,任务执行时间的可预测性较低,可靠性较低排除故障和增加新功能需要重编译。
单内核结构的操作系统有:传统的Unix,BSD Unix,Linux,MS-DOS,Windows 9x,Windows CE 和 Android操作系统也都属于单内核结构。

微内核结构:操作系统仅将必须的基本功能(如任务调度,任务间通信,低级存储管理,中断处理等)放在内核,他们运行在核心态;其他功能都在内核之外,由在用户态运行的服务来完成,这种做法使内核的结构很小,所以称为微内核结构。优点:(1)内核精巧。结构紧凑,占用内存少,适合资源相对紧张的的嵌入式系统(2)开发和维护方便(3)接口一致(4)可扩展性与可配置性强,但各个功能之间的切换而引起的开销比较大。(5)各个模块之间松散耦合,只完成服务功能。

4.2 引导加载程序

      U-Boot是公认的功能最强的通用bootloader,用于Linux操作系统引导程序加载且支持不同体系结构处理器种类最多。

4.3 μC/OS嵌入式操作系统

μC/OS主要特点:
(1) 公开源码的高质量实时内核
(2) 可以值
(3) 可裁剪、可固化
(4) 时间确定性
(5) 多任务:μC/OS-II可以管理64个任务,其中8个保留给系统,已于56个用于用户任务,允许每个任务有不同的栈空间,分配给不同任务的优先级不能相同,因此μC/OS-II不支持时间片轮转调度机制。

在μC/OS中当前程序进入临界区时,并不希望sys进行任务调度,或者处理器转入中断服务程序,有两种解决办法:
1.利用宏OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()实现关中断和开中断。
2.利用函数OSSchedLock()和OSSchedUnlock()给调度器上锁和解锁(以上两点同时也可以用于保护任务之间的共享数据,在加上一点:利用信号量、互斥信号量、邮箱和消息队列进行任务间通信)

移植μC/OS到一个嵌入式系统电路板上正常运行,必须满足以下要求:

(1)处理器的C编译器能产生可重入代码
(2)用C语言就可以打开和关闭中断
(3)处理器支持中断,并且能产生定时中断
(4)处理器支持能够容纳一定量数据的硬件栈区
(5)处理器有将栈区指针和其他CPU寄存器读出和存储到栈区或内存中的指令

4.4 HAL库系统提供以下服务

(1)结合Newlib ANSI C标准库,向用户提供熟知的标注库函数,向用户提供熟知的标准库;
(2)提高设备驱动,使用户可以访问系统中的所有设备;
(3)为用户提供了与HAL服务相统一的标准接口(HAL API),例如数据访问 、中断处理和报警设施;
(4)系统初始化,在 main() 函数之前完成软核处理器Nios和运行库环境的初始化任务;
(5)设备初始化,在 main() 函数之前完成每个设备的实例化和初始化。

硬知识点

ARM指令

1.ARM指令分类及指令格式

(1)分支类

记忆方法:B开头或带B

助记符指令功能
B跳转指令
BL带返回的跳转指令
BLX带返回和状态切换的跳转指令
BX带状态切换的跳转指令

注:BIC位清零指令,属于数据处理类
BKPT断电中断指令,属于异常中断类指令

2.寻址方式

1)立即寻址
2)寄存器寻址
3)寄存器间接寻址

LDR R5, [ R4 ] 将以R4的值为地址的存储器中的数据传送到R5中
STR R1, [ R2 ] 将R1的值传送到以R2的值为地址的存储器中
由于ARM对存储器只有加载和存储两种操作,因此凡是与存储器操作有关的指令仅限于LDR和STR

4)基址加变址寻址

LDR R0, [R1, #4] 将寄存器R1的内容自动加4,形成操作数的有效地址,从中取得3位操作数存入寄存器R0中
STR R1, [R2, #8] 将寄存器R1中的32位操作数存储到R2+8指示地址开始的存储区域中
LDR R0, [R1, #4] !将寄存器R1的内容自动加4,形成操作数的有效地址,从中取得3位操作数存入寄存器R0中,然后R1的内容自增4,符号“!”表示指令在完成数据传送后应该更新基址寄存器
LDR R0, [R1], #4 以寄存器R1的内容作为操作数的有效地址,从而取得操作数存入寄存器R0中,然后R1的内容自动增加4
LDR R0, [R1, R2] 将寄存器R1的内容加上寄存器R2的内容形成操作数的有效地址,从而取得操作数存入寄存器R0中
STR R0, [R2, R2] 将寄存器R0的内容存储到由 R1 + R2 指示的有效地址对应的存储单元中
※不加H和B表示加载或存储字数据,加B表示字节数据存储或加载,加H表示半字数据加载或存储
参考链接:https://blog.csdn.net/u013477200/article/details/50723555

5)相对寻址

3.数据处理类指令

1)逻辑操作指令

ADD R0, R0, #3 将R0与3按位相与,结果放在R0中
ORR R0, R0, #3 将R0与3按位相或,结果放在R0中
AND指令经常用于屏蔽某些位(清零),ORR经常用于对某些位进行置位(变1)

4.ARM汇编器所支持的伪指令

(1)数据定义伪指令

格式功能描述
DCB分配一片连续的字节存储单元并对数据初始化
DCW分配一片连续的半字存储单元并对数据初始化
DCD分配一片连续的字存储单元并对数据初始化
DCQ分配一片连续的双字节存储单元并对数据初始化

(2)其他伪指令

格式功能描述
CODE16指示以下指令为16位Thumb指令代码
CODE32指示以下指令为32位ARM指令代码
名称 EQU 表达式 [,类型]定义标号名称的值为表达式,且该处为32/16位的ARM/Thumb指令
EXPORT全局标号声明伪指令
IMPORT引入一个标号伪指令
EXTERN外部标号引用声明伪指令
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值