记一次无技术手册开发墨水屏驱动的过程
我是不是花钱找罪受?哈哈,怎么会呢。
[忆语游心] 写在前面
No Game, No Life.
成都之旅
傍水映月、细雨静夜。
计算机原理与嵌入式系统笔记:第十四篇
试题为回忆版,可能有疏漏/错误
选择:
绪论 嵌入式系统设计流程
前变址
立即数判断
简答题:
直接映射和全相连的概念、二者优缺点
补码计算、CPSR位判断
AMBA总线
分析题:
MIPS数据通路、流水线寄存器位宽、信号含义
EDF调度表
编程题:
While-Do结构的FIR滤波器/循环书写
总体是不算太难的。考场里最快交卷的时间是开考后一个半小时。
概念考察的不少,需要好好背一背。主要是理解。
信号数量、位宽啥的不用背,图上一般都会有,含义其实也能通过看图上面的MUX来判断。
2024.7.4 成绩下发。平时97,期末89,总分91,排名前15%。感觉老师改卷是偏松的。考的最好的一门 最好的应该是电工实习,战胜100%的人
计算机原理与嵌入式系统笔记:第十三篇
多进程与多速率系统
任务与进程
任务(task) 是一个密切相连的操作组合的功能描述。
任务也可定义为若干进程或线程的组成。
进程(process) 是一个程序的单次执行。
两次运行相同的程序,可以创建两个不同进程
每个进程拥有自己的状态:
寄存器状态
存储器状态
操作系统管理进程
为什么需要多进程?多任务本身即是多进程,多进程有助于在时间复杂系统中应用。
多速率系统
多速率(multirate) 的嵌入式计算系统很常见,程序设计必须满足多种速率对计算的时间要求。
任务之间可以是同步或不同步
同步的任务可以以不同的速率发生
根据任务的实际计算需求,进程运行在不同的速率
进程的时间约束
进程的时间约束会影响可用的调度策略,进程有两个重要的约束:
释放时间(release time):也叫起始时间(initiation time),进程处于准备执行状态的时刻,此时未取得CPU控制,也没有开始运行。
截止时限(deadline):指明计算何时必须结束。
非周期性进程由一个事件触发;周期性进程在每个周期都执行,在周期开始时初始化。
进程的速率约束
进程的速率约束指 ...
计算机原理与嵌入式系统笔记:第十二篇
程序组件与程序模型
嵌入式软件常用的三个组件结构:
状态机(State machine)
循环缓冲区(Circular buffer)
队列(Queue)
状态机适合于交互式系统,循环缓冲区和队列应用于数字信号处理系统。
状态机
有限状态机是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型,分为两种:
Moore机:输出只由当前状态确定
Mealy机:输出依赖于当前状态和输入
循环缓冲区
流数据通常用于信号处理领域的程序设计中,数据定期传送,新数据按规律到达,且每个数据生命周期有限,需要程序立即处理。循环缓冲区是便于程序高效处理流数据的一种数据结构。数据窗口尺寸不变,只是随时间滑动。
索引指向循环缓冲区的下一个被替换的数据位置(input)和当前使用的数据位置(use)。
12345678910111213141516171819202122232425262728293031#define CMAX 6 /* filter order */int circ[CMAX]; /* circular buffer */int pos; /* pos ...
计算机原理与嵌入式系统笔记:第十一篇
CPU总线
计算系统包括微处理器(CPU)、输入输出设备(I/O Devices)和存储器。
总线(bus) 是系统组件之间的公共连接,是CPU与存储器和设备进行通信的机制,定义它们之间通信的协议。
协议(protocol) 定义了设备之间如何通信。
四周期握手协议
设备1升高查询信号的输出电平,告诉设备2准备监听数据。
当设备2准备好接收数据时,它使应答信号为高电平。这时设备1和设备2已准备好发送或接收数据。
一旦数据传送完毕,设备2使应答信号为低电平,表示已经接收完数据。
检测到应答信号变低,设备1降低其查询信号的输出电平
典型总线结构
总线的基本操作是读和写,典型的总线结构包括以下组件:
Clock:时钟,用于总线各组件之间的同步。
R/W:当总线读时,R/W为1;当总线写时,R/W为0。
Address:是一个a位信号束(bundle),传输访问的地址。
Data:是一个n位信号束,用于传输CPU发送或者接收的数据。
Data ready:数据就绪,表示数据信号束上的值有效。
传输由CPU控制,R/W和地址是单向信号,CPU决定地址和方向。
总线操作的时序图与顺序图
...
计算机原理与嵌入式系统笔记:第十篇
MIPS流水线结构
必考的牢弟
流水线组成与加速比估算
MIPS的流水线由5级组成,每级完成指令执行的一个步骤:
IF:从存储器中取指令
ID:指令解码和读寄存器
EX:指令执行操作或地址计算
MEM:存取存储器操作数
WB:将结果写回寄存器
一般假设寄存器堆的读或写为100ps,其他操作为200ps。则:
lw指令既要读又要写寄存器堆,并且要访问数据存储器,因此耗时800ps;
sw指令不需要写入寄存器堆,因此耗时700ps;
R-type指令不需要访问数据存储器,因此耗时600ps;
branch指令不需要访问数据存储器,也不需要写入寄存器堆,因此耗时500ps。
则执行3条lw指令的加速比应该是1.71,执行3条R-type指令的加速比应该是1.28。
有关流水线的更多内容请参阅:ARM第四话:流水线!
流水线各级延时不均衡会降低加速比,进/出流水线的延时也会降低加速比。
面向流水线的指令集设计
设计适应流水线的MIPS指令集,应当遵循“4+1”原则:
所有的指令长度都相同(32-bit)
简化了流水线第一级取指和第二级译码
而x86指令的长度:1~15 byte ...
计算机原理与嵌入式系统笔记:第九篇
MIPS处理器
MIPS是RISC处理器的一种,全程为无内部互锁流水级的微处理器(Microprocessor without interlocked pipelined stages),其机制是尽量利用软件办法避免流水线中的数据相关问题。MIPS处理器广泛用于路由器上,常见的路由器使用的处理器有发哥联发科MT7621等。
时钟周期
MIPS采用两相非交叠时钟,流水线级是两层的锁存器。
指令
MIPS有三类指令:
存储器访问指令(Load/Store指令):
取字(lw),存字(sw)
算术/逻辑指令(R-type指令):
加法(add),减法(sub),与(and),或(or),小于则置位(slt)
分支指令(Branch指令):
相等则跳转(beq),无条件跳转(j)
记好开头6位对应的数字就知道这是什么指令了!最简单的办法!
0:R-Type
4:Branch
35:lw
43:sw
寄存器中的Rs/Rt/Rd到底是什么意思?
Rs表示源寄存器Source Register,Rt代表作为中间缓存的目标寄存器Target Register,Rd表示目的 ...
计算机原理与嵌入式系统笔记:第八篇
输入/输出设备
输入输出设备(I/O Devices)通常有一些模拟元件或非电子元件(比如磁盘驱动器),但与CPU的接口通常是数字逻辑——一组寄存器。
对于IO编程支持,有两种办法:IO指令和内存映射IO:
I/O指令为I/O设备提供了单独的地址空间。
内存映射I/O是最普遍的方法,即使是提供I/O指令的CPU也不排除使用内存映射I/O。
内存映射I/O是为每个I/O设备的寄存器提供一个地址。
程序使用普通的CPU读写内存命令来与设备通信。
如: 在C语言中定义和使用一个变量时,编译器隐藏了变量地址,可以使用指针来操纵I/O设备的地址。
123456789101112// 读取任意存储单元的函数peekint peek(char *location) { return *location; }#define DEV1 0x1000dev_status = peek(DEV1); /*读取设备寄存器*/// 写入任意存储单元的函数pokevoid poke(char *location, char newval) { (*locatio ...