概述
什么是移植,为什么要移植
对于嵌入式设备,由于芯片型号和外设差异较大,且资源有限,所以物联网操作系统无法像 Windows/Linux 那样适配集成所有驱动,因此通常会先适配部分芯片/开发板。为了让操作系统运行在其他芯片/开发板上,此时就需要移植。
开发板的移植包括 CPU架构移植、板级/外设驱动移植和操作系统的移植。
指南适用范围
本指南基于STM32芯片平台,以正点原子STM32F407开发板为例介绍如何快速移植LiteOS,其中并不涉及CPU架构移植。
移植目录结构
表格列出了LiteOS源码的目录,其中加粗字体的目录/文件在移植过程中需要修改。
表 1 LiteOS源码目录
一级目录 | 二级目录/文件 | 说明 |
---|---|---|
arch | 芯片架构支持 | |
build | LiteOS编译系统需要的配置及脚本 | |
compat | LiteOS提供的CMSIS-RTOS 1.0和2.0接口 | |
components | 组件代码 | |
demos | 组件和内核的demo | |
doc | LiteOS使用文档 | |
include | components中各模块的头文件 | |
kernel | 内核代码 | |
lib | libc/zlib/posix接口 | |
osdepends | LiteOS提供的部分OS适配接口 | |
targets | bsp | 通用板级支持包 |
Cloud_STM32F429IGTx_FIRE | 野火STM32F429(ARM Cortex M4)开发板的开发工程源码包 | |
STM32F769IDISCOVERY | STM32F769IDISCOVERY(ARM Cortex M7)开发板的开发工程源码包 | |
STM32L431_BearPi | 小熊派STM32L431(ARM Cortex M4)开发板的开发工程源码包 | |
Kconfig | ||
Makefile | ||
targets.mk | ||
tests | 内核及系统库的参考测试代码 | |
tools | build/config | LiteOS支持的各开发板的编译配置文件,移植新的开发板时,需要在这个目录下增加这个新开发板的编译配置文件 |
menuconfig | LiteOS编译所需的menuconfig脚本 | |
stackusage | LiteOS栈使用估算工具 | |
Makefile | 整个LiteOS的Makefile | |
.config | 开发板的编译配置文件,默认为Cloud_STM32F429IGTx_FIRE开发板的配置文件,移植时需要替换成新开发板的编译配置文件 |
target目录下保存了当前已经支持的开发板工程源码。当移植新开发板时,应该在target目录下增加该开发板的目录,目录结构和代码可以参考当前已支持的开发板的目录。例如:
- STM32F4系列的移植可以参考Cloud_STM32F429IGTx_FIRE工程。
- STM32F7系列的移植可以参考STM32F769IDISCOVERY工程。
- STM32L4系列的移植可以参考STM32L431_BearPi工程。