DSP

嵌入式三级整理四

2019-07-13 16:09发布

  • 嵌入式操作系统中,核心部分称为内核,对硬件设备进行控制和管理的程序模块称为驱动程序。
  • 数码相机由前后端组成,前端负责数字图像的获取,后端负责数字图像的处理。后端通常以嵌入式DSP作为核心的soc芯片。DSP用于完成数字图像处理,此外,数码相机中还有一个超低功耗的8位MCU,负责操作控制。高端数码相机配置还有实时操作系统和图像处理软件,使用的闪存卡主要用来存储照片而不是系统软件。
  • 一个应用程序的工程项目中,必须包含启动引导程序,uc/OS-II的库文件,应用程序文件等。在应用程序的主函数中,必须初始化uc/OS-II的操作系统,用OSTaskCreate()函数创建任务,并用OSStart()函数启动任务调度。
  • GPA0-GPA22功能单一,仅作为地址线的控制线使用。
  • 内核对任务的管理通过任务控制块OS_TCB(Task Control Block)进行,OS_TCB数据结构中的OSTCBX、OSTCBY、OSTCBBitX  OSTCBBitY这4个变量用于加速任务进入就绪态或者进入等待事件发生状态的过程。他们是依据任务的优先级OSTCBPrio计算得出,OS_TCB数据结构中的第一个字段是*OS_TCBStrPtr,它是指向任务独立堆栈的栈顶指针。
  • 任务控制块的内容包含:任务优先级、任务状态字、指向任务堆栈栈顶的指针。
  • 嵌入式系统软件大多存储在非易失存储器中,即使断电也不会消失,目前使用最多的是非易失性存储器是flash存储器,分为NOR 和NAND ,前者主要存储系统中的固件,后者用于辅助存储器。
  • ARM中某部件能把系统中不同类型的存储器进行统一管理,通过地址映射需要运行在连续地址空间的软件可以运行在不连续的物理存储器中,需要较大存储空间的软件可以在较小容量的物理存储器中运行,这就是虚拟存储器技术,完成这一功能的部件用英文简写表示为MMU。
  • Thumb-2状态是ARMv7版本的ARM处理器所具有的新状态,如Cortex系列
常用指令 MVN ----------取反传送 SUB------------减法 ADD-----------加法 SBC----------带借位减法 ADC-----------带进位加法 RSB-------反向减法 RSC--------带借位反向减法 TEQ-------异或 TST-------按位与 BIC--------与非 CMP-----比较
SPI----全双工同步串行外设接口,总线配置灵活,课用于单主机单从机配置,单主从互换配置,单主多从配置,多主多从配置。
uc/OS-II嵌入式操作系统的特点:       源码公开       驱动属于底层,需要开发商自行开发       不包含基本的设备驱动程序       使用uc/OS-II的栈空间校验函数,可以确定每个任务要多少栈空间       抢占式实时操作系统       不支持时间片轮转调度,赋给每一个任务的优先级不同       每个任务有自用栈
uC/OS-II可以管理64个任务,最高优先级是0,系统保留了4个最高优先级任务和4个最低优先级任务,用户就最多只有56个任务
uC/OS-II中保护任务之间的共享数据和提供任务间通信的方法:         利用宏         利用函数         利用信号量、互斥信号量、邮箱、消息队列进行任务间通信
uC/OS-II系统服务       创建任务:OSTaskCreate()       删除任务:OSTaskDel()       任务挂起:OSTaskSuspend()       任务恢复:OSTaskResume()
uC/OS-II判断进行任务调度的3个条件:           中断嵌套层数共享全程变量OSInitNesting=0(所有的ISR均已经执行完毕)           任务调度加锁层数共享全程变量OSLockNesting = 0(调度没有被禁止)           就绪表查到的最高优先级任务的优先级比当前任务的优先级高
一般来说,按照实时性能和内核结构来分,大多数嵌入式Linux系统发行版属于软实时单内核嵌入式操作系统 任务处于休眠态,相当于该任务驻留在内存中,但是还没有交给内核处理 uC/OS-II能提供周期性时钟信号(时钟节拍),用于实现任务的正确延时和超时确认,节拍率范围在10hz-100hz 进程调度模块负责控制进程对cpu资源的使用,所采取的调度策略是使得各个进程能平均访问cpu,同时保证内核能及时执行硬件操作。 ARM处理器内部片内数据存储器通常使用SRAM,片内程序存储器通常用flash ROM,通过ARM处理器片内的外部存储控制器可以对处理器片外扩展的SRAM和flash ROM进行管理和控制。
单内核               优点:性能较好,系统各个组件间可以相互调用,功能切换和通信开销较小                缺点:占用资源较多,维护工作量大 微内核:操作系统将必须的基本功能(任务调度、任务间通信、低级存储管理、中断处理)放入内核,他们运行在核心态,其他功能均在内核外,由在用户态运行的组件来实现。                  优点:内核精巧、结构紧凑、占用内存少;开发维护方便;接口一致;可扩展性与可配置性强;可靠性高;支持分布式系统                  缺点:效率低,性能较差
UART--串行异步通信接口通用异步收发器,由发送器、接收器、控制单元、波特率发生器等构成。发送器负责字符的发送,可以采用先进先出(FIFO)或者普通模式发送,接收器负责外部送来字符的接收,可以是FIFO或者普通模式。接收和发送缓冲器的状态被记录在UART的状态寄存器中。通过读取其状态位即可了解当前接收或发送缓冲器的状态是否满足接收和发送条件。波特率在外部时钟下,通过编程可以产生所需要的波特率,其大小由波特率系数和寄存器如UBRDIVn决定。
Bootloader通常支持启动加载和下载模式,其依赖于cpu的体系结构,大多数bootloader分为stage1和stage2两个阶段。依赖于cpu体系结构的代码,如设备初始化代码等放在stage1,stage2通常用c语言实现,这样可以实现更复杂的功能,代码具有更好的可读性和可移植性。系统加电后cpu执行的第一条指令是BootLoader程序中的另一条程序,往往存储在某种类型的固态存储设备(ROM,EEPROM,FLASH ROM)等。
嵌入式系统加电后执行的第一批最初操作称为引导或者自举(boot),对应的程序称为引导程序或者加载程序,英文术语是BootLoader。引导加载程序主要完成内存加电自检、外设存在自检、内存地址映射、初始化外围设备、内存寻址定位、加载和启动操作系统。
运行态:得到了cpu控制权正在运行的任务状态,运行态任务是当前任务就绪集里面的最高优先级任务。 休眠态:任务驻留在内存中,但是还未交给内核管理。 uC/OS-II操作系统系统中,处于运行态的任务不可能直接转入的状态是休眠态。
uC/OS-II的内核提供的基本功能:     任务调度、任务间通信、同步、时间管理、内存管理、任务管理