文章目录
1. 嵌入式基本概念
1.1 什么是嵌入式
简单来说嵌入式设计来专门干一件事情,通用计算机可以用来或者学习,或者打游戏,或者直播等等不确定的用途相区别。随着时间的推移这两者的区分度不是很大,譬如树莓派用的是嵌入式的硬件(嵌入式的特性是软硬可裁剪的控制系统),但是它可以用来完成通用计算机的任务。当然你如果愿意也可以用台式机器的主板装入冰箱去控制冰箱的运动。
1.2 学习的内功
- C语言、数据结构
- 模拟电路、数字电路
- 逻辑分析仪器、万用表等等
1.3 什么是ARM
- 精简指令集:RISC
- 复杂指令集:CISC复杂指令集的特点是指令数目多而复杂,每条指令字长并不相等,电脑必须加以判读,并为此付出了性能的代价。但是相对比同主频的手机SOC来说,复杂指令集性能依旧强悍。
1.4 区分概念
- MCU和MPU:前者集成内存和FLASH,后者没有需要外挂类似手机。
- DSP和FPGA:DSP两层含义一种代表技术,一种代表含有这种功能的芯片,FPGA可以看作是万能的芯片可以DIY串口个数等等。
2. 嵌入式开发流程
2.1 交叉开发
程序的编写在PC,程序的运行在另一个平台。
2.2 集成开发环境
集合编辑器、编译器以及下载调试功能于一体的IDE
2.3 调试和下载器
- JLINK:只要是ARM架构就可以使用。
- ST-LINK:ST生产的芯片的下载调试器
2.4 打印输出
因为嵌入式开发设备简陋,因此不能像电脑一样在屏幕上打印输出调试信息,因此可以通过重写printf函数定义到串口输出调试信息找BUG。这里就设计电平转换的问题。
- TTL和USB不同的电平表示逻辑1和逻辑0