第八周:嵌入式编程[FabNotes016]
这周学习嵌入式编程。
让我们继续体验填鸭式猛灌新名词的课堂教学笔记吧!!
微处理器/微控制器
内存: registers, SRAM(静态存储器), DRAM(动态随机存取记忆体), EEPROM(只读存储器), FLASH(闪存), fuse
外设: A/D(模拟数字转换 Analog to Digital), comparator, D/A, timer/counter/PWM(脉宽调制), USART(串行通信), USB
word size: 8, 16, 32, 64
芯片家族: 8051, PIC, MSP, AVR (课程用到的), ARM, STM32, mbed, PSoC, xCORE, Propeller
供应商: Octopart, Digi-Key, Mouser, Newark, Farnell, SparkFun, Adafruit
时钟
RC (10%, 1% calibrated 校准)
ceramic 陶瓷 (0.5%)
quartz 石英 (50 ppm)
PLL 锁相环
instruction cycles 指令周期
overclocking 超频
开发
in-system development (加载程序到处理器)
引导程序(bootloader): Arduino, DFU, Micronucleus
JTAG 主控器, PDI 并行数据接口
ICE
ISP: 用来跟编程器交互的程序
编程器
FabISP
avrdude
Atmel-ICE
JTAG, PDI
ISP
汇编语言: hex file, instruction set, opcodes, mnemonics, directives, expressions, avr-as, gavrasm
C 语言 (Arduino 底层语言): 需要用编译器将 C 语言代码转成十六进制代码(hex codes)
AVR 依据 GCC (the GNU Compiler Collection) 而设计. AVR Libc 提供 C 语言和 AVR 通信的库
OS X 请用 CrossPack for AVR
在课程中,我们使用 GCC 将 C 语言代码编译成 AVR 可以读懂的十六进制代码
IDE
写程序, 编译, 加载到处理器
Atmel Studio, Eclipse, AVR, CodeBender
Interpreters(一般都很慢): Python, BASIC, FORTH, AVRSH, Javascript(Espruino, Tessel, iop.io)
主机通讯
有一些与串口通讯的库,比如 python 的 pyserial
FTDI: 提供 USB 与其他模块的通信连接(包括模块、线缆、集成电路等)
连接线
libFTDI
板子
AVR
toolchain: CrossPack for OS X
Atmel AVR系列是一种基于改进的哈佛结构、8位~32位精简指令集(RISC)的微控制器
Arduino: 开发板 + C 语言库 + IDE + 烧录程序 + 头文件
XMEGA: AVR 较新的系列
ARM
ARM 是主流的手机处理器架构
STM32
Rasberry Pi
PSoC: 芯片上的可编程系统 windows only