freeRTOS的移植和维护,了解嵌入式系统的一些基本原理和相关背景是十分必要的。本人在最初从事RTOS的移植和维护时,遇到的最大的困难就是不了解这些基本原理和相关背景,跳了无数的坑,想想都是泪。
以下都是自己原创,源于在RTOS移植和维护中各种跳坑经验,欢迎各位同学指出其中错误反馈给我,也欢迎分享转载,但请注明出处(整理成文不容易)。
好了,废话不多说,进入正题。
PS: 20180610,更正部分错误,添加一些新内容
嵌入式系统硬件架构
如下图所示,嵌入式系统的硬件由核(core)、总线(bus)和各类外设(peripheral)组成。其中core是最重要的部分,当前core大多使用哈佛架构(HarvardArchitecture),包括如下部分
· CPU用于执行指令,
· IRAM用于存放CPU运行指令集合,也被记为ICache或是其他名称
DRAM用于存放指令相关数据,也被记为DCache或是其他名称peripheral通过bus与core进行数据交互,常见的外设包括
· 通用异步收发传输器,即UART,多用于与PC的数据交互。
· 数据搬移加速器,即DMA,用于搬移数据。
· 定时器,即Timer。
· 存储器,即Memory,主要是核外的存储器(IRAM和DRAM也是memory的一类),当下常用的主要分为断电后数据丢失和不丢失两类,如DDR和flash。
peripheral之间可以通过总线进行数据交互,也可通过其内部专用数据通道进行数据交互。
对处理能力要求高的嵌入式系统还往往使用多核系统(multi-core system),如下图所示,其中core与core之间通过内部bus(InternalBus)进行通信,内部存储器(Internal Memory)用于支持core与core之间的高速数据交互,也被记为二级缓存(L2 Cache)。相应地,一级缓存即为IRAM和DRAM。其中,多个cor