2023
这里放一些上班会用到的知识点,应该大部分是关于MCU, 微机原理以及操作系统的内容
十一月
代码的内存分布
一、程序文件中的代码分布:
- Code: 代码文件
- RO data: const等只读数据
- RW data: 初始化值为非零的数据,例如非零初始化的全局变量或者静态变量
- ZI data: 初始化为0的数据
编译成代码后放入flash的部分包含:code + RO data + RW data
运行时RWdata被拷贝至ram, ZI data 也会存在于RAM
二、程序运行时候的内存分布:
- code:代码,通常是只读
- RO data
- data: 初始化过后的全局变量静态变量或者常量
- BSS: block started by symbol, 放置未初始化或者初始化为0的变量,通常在初始化之后会被清零
- heap: 堆, 向上生长,也就是内存地址增加
- stack: 栈,向下生长,也就是内存地址减小
AMR core v7-m cache以及MPU
关于MPU, 能够设置内存cache的操作方式,能够进行region访问权限的保护。
cache的操作:
1. write through: cpu写数据时候同时写入cache以及memory, 保证数据一致, 简单但是速度慢
2. write back: CPU更新数据的时候把cache区域进行标记(dirty),在需要数据时候把数据同步到主存中。
3. write allocate: 写缺失时候,写入主存的时候同时更新cache
4. read allocated: 与 write allocate 类似
MPU的权限(对于特权模式和user模式的探索还需要完善)