写在前面:本文内涉及知识均为个人根据所学进一步理解整理所得,参考内容为学校的课件以及网络。仅为个人学习所用,不可用作学术权威参考,建议不要引用,任何错误欢迎指正,欢迎大家在评论区讨论。
嵌入式系统就是集成了计算机的设备
(这个设备一般是有别于电脑的东西,比如自动售货机,电梯等)
特点:
具有特殊用途,如自动贩卖机有贩卖用途
内置计算机通常较廉价、经得起折腾,而且一般比较小(手机等手持计算机的出现模糊了嵌入式计算机(以下称EMC)和一般计算机的界限)
内存等有限制(比起台式和笔记本而言,只有几百bytes的内存)
实际应用中,有单芯片的,多芯片的,softcore (没找着应该咋翻译。。)或者半导体知识产权核(IP-cores)【后两者为可重用芯片,就是给你一块板可以自己设计,包括ASIC (Application specific integrated circuit) 或者FPGA (Field Programmable Gate Array)内的嵌入式计算器】
嵌入式编程可以让我们对软件有完全的控制
优点就是自己安排的就不会浪费内存等资源
缺点就是没有任何错误保护的机制,就是说当程序员犯傻的时候,程序就不运行了。
比起正常的编程来说,更简单但是限制更多。e.g. 甚至没办法自主完成乘法(乘法后面会大概讲到)
限制多体现在:实时操作 (Real time operation)、内存管理 (Memory management)
特点:
实时控制,当我们给出输入时,相应的输出会尽可能快地给出
快速反应
较短的预热时间
无人值守也可以24/7运行
不需要操作系统也可以运行简单的程序
当执行嵌入式编程时我们必须了解硬件中发生了什么
单片机系统
微控制器构造
汇编语言/C语言编程
与电子元件的连接
外围设备的使用,中断以及通信的使用
了解其他微控制器和嵌入式设备
如何用电路来控制现实生活中的某样东西?
方法一:数字电子元件(Digital Electronics)+ 数字设计方法 (Digital design methods)
元件包括:布尔操作与逻辑门,数字的进制、相加、触发器逻辑门的组合(truth table),逻辑门的串联(state diagrams/machines),存储(闪存RAM与只读存储器ROM)
设计方法包括:卡诺图(实际不太用)、VHDL/Verilog/System C等硬件描述语言
我们需要体积更小,价格更便宜,且不需要具备特别好的并行能力(high parallelism)
方法二:可编程设备Programmable devices(计算机/微控制器)
通过命令instructions来代替之前的逻辑门,不同的命令会影响用于决定电流状态的变量。
在这些设备上还有其他与外界连接的输入与输出。
和FPGA需要重构内部逻辑门的连接不同,我们只改变代码,不改变设备上的晶体管。

要注意数据和程序代码是分开存储的
Register寄存器:寄存器就是一堆D触发器的集合。通常用方块表示
(D flip-flop:可以捕获上升沿的状态然后输出)
每个寄存器都是一个存储单元,可以被读取或写入。
它和RAM的不同,就是寄存器是内置在CPU里的,而闪存在外面。也因为内置的缘故,它通过CPU计时,运行时可以立即反应。
ALU算术与逻辑单元:CPU中唯一负责计算的部分,可以接收两个输入数据(input word)和一个运算代码(operation code)然后输出计算结果。
比如两个输入是1和2,运算代码是加法,输出结果就是3。
注:ALU的输出会接到工作寄存器(Working register)上,工作寄存器再将结果作为输入回传到ALU中,ALU的一个输入一定来源于工作寄存器。理由是总线上每次只能写入一个值,当处理两个数据时,就需要将一个数据先放到W Reg上。
Working Register工作寄存器:
W Reg总是ALU的一个数据来源。
因为RAM只与总线相连,所以W Reg必须充当RAM和别的寄存器间的媒介。
ALU的另一个输入(operand)从其他地方(如programme)中来。
Pin引脚:用来连接EMC和外界的,通常不会画Vdd和Vss(因为默认电源已经连接)
Computer Buses计算机总线:一条线旁边写个数字,用来表示这是很多条线的集合,上面的数字代表传输的信号占多少存储。整个计算机共享总线,它连接的每个部分都能随时接入总线。
但是当多个输出想要写入总线时,就会造成争用(contention),这可能造成短路。
1kiB = 1024 B = 1024 bytes, 1Mib = 2^20 b = 1024*1024 bits
Tristate buffer三态缓冲器:

可以看作一个开关
address decoder地址解码器:

图中个人理解应该是
四个门分别在唯一的一种A1,A0搭配时输出1,因此当我们需要输出2^n种不同的内容时不需要四条线来传输,而只需要n条线加上2^n个逻辑门即可。
地址解码器也可以用作乘法器multiplexer(mux)。
好嘞,这是我第一周的课程学习啦,基本是一些基本概念,之后可能会有更多编程之类的内容,希望能坚持写下去!这周说不定还可以写一篇professional studies的,如果我学得快,第二周的也会提前看完更新,新学期冲冲冲!
references:最后一张图来源于我的第一周EMC课件,因为不是学术论文我就不好好写references啦。