代码结构
本文主要介绍 Micropython 代码中 port 目录下的 k210-freertos
文件夹,也就是kendryte210平台的代码结构。
1. 目录简介
简单介绍 k210-freertos
中的文件及目录
1.1. 文件
代码文件
main.c
是程序入口的代码之外,如果贡献开发者需要对 main 函数进行修改我们就可以在这个文件中进行编辑
脚本文件
一般情况下,请不要对脚本文件进行修改,以免发生意外情况
config.sh
是编译时需要使用的配置脚本,主要是使用 export 配置shell环境中变量以让编译正常进行
build.sh
是用于编译代码,代码编译请看 代码编译
章节
clean_inc.sh
用于编译过程中生成的所有mk文件
flash.sh
用于 linux 环境下烧写程序
mk文件
mk文件是在编译过程中生成的中间文件,一般用于包含代码文件的路径
1.2. 文件夹
代码文件夹
以下目录是用于存放 MaixPy
的所有代码
mpy_support
存放 MicroPython 与 Openmv 相关的代码
platform
存放和平台相关的代码,如sdk,驱动等等
third_party
存放可移植的第三方代码,比如spiffs
其他文件夹
output
存放编译输出文件
tools
存放开发过程需要用的工具脚本,比如打包文件系统
build
存放编译过程中.o文件,所有代码文件夹下都带有一个 build 文件夹,作用都是存放.o文件
inc
存放各个子目录的中间的mk文件,一般情况不修改该目录下的文件
docs
存放文档和例程demo
2. 目录详解
以下我们将详细说明在开发过程中我们经常用到的目录,以方便贡献开发者可以更快上手开发
2.1. mpy_support
mpy_support
文件夹是用于存放和 micropython 有关的所有代码,包括 micropython 所有平台移植代码,如 mpconfigport.h、mpconfigboard.h等等。同时也存放所有 micropython 标准模块如 os、time等等,还有常见的硬件模块,如 SPI、IIC等等
standard_lib
standard_lib
用于存放 micropython 的标准库代码,比如 machine 、 socket 、 os 等等,每个模块都有自己独立的文件夹,其中 include
文件夹存放的是所有的头文件。开发标准模块时可以参考这里
omv
omv
存放的是与 openmv 移植相关的代码,如果需要开发 lcd 、 sensor 、 image 等模块则可以修改该目录下的文件
Maix
Maix
存放的是平台特性功能的代码,比如 FPIOA 功能,其他平台少有,所以我们将 FPIOA 的相关代码存放在 Maix 目录下。后期可能开发的功能如 I2S 、 KPU等都存放在这里。
builtin-py
builtin-py
存放的是MaixPy内置的 Python 文件,Micropython支持将 Python 文件编译到固件中,我们把所有想要内置的 Python 文件都存放在这里以让这些文件可以编译进固件中。比如fm 和 board_info 等功能都是使用这里的 Python 文件实现的
2.2. platform
platform 存放的是所有平台相关代码,比如 sdk 、 驱动等等
sdk
sdk
存放了 kendryte210 的软件开发工具包,一般情况下我们不需要修改这里的代码
drivers
drivers
存放了开发板上常见外设的代码,比如lcd 、 flash 、 sd卡等等
2.3. third_party
third_party
存放了所有第三方移植代码,如果在开发过程中需要用到其他第三方的库或者功能,需要把代码存放在该目录下
spiffs
spiffs
存放了spiffs文件系统的移植代码,在开放过程中,如果需要对 spiffs 文件系统进行配置修改,可以在该目录找到配置文件并修改
2.4. tools
tool
是开发过程中使用到的自己编写的功能脚本,比如打包文件系统,去除固件中多余的数组等等,在开发时如果自己编写了脚本,需要将脚本放在该目录下
2.5. output
output
目录存放了所有的编译最终结果,包括每个代码文件夹和第三方代码生成的静态库、输出的二进制文件和elf文件,其中我们烧录的就是二进制.bin文件