# HeliosSDK **Repository Path**: brian_chenchi/HeliosSDK ## Basic Information - **Project Name**: HeliosSDK - **Description**: HeliosSDK 简版 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-11-16 - **Last Updated**: 2024-06-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 代码工程管理及编译指导 --- ## 功能介绍 - **每个独立的功能组件使用一个对应的以`.mk`作为后缀的`Makefile`文件进行管理。** 开发者可在其中添加期望被编译的源文件、仅被本组件内部访问的头文件路径、可被所有组件访问的头文件路径、仅被本组件内部使用的宏定义、可被所有组件使用的宏定义,以及本组件需要依赖的其他组件。 - **支持同一个代码工程里包含多个不同业务功能的应用代码。** 开发者可以在该SDK下添加多个不同的应用代码文件夹,如`app`、`app2`等。应用代码目录的存放位置可放在SDK根目录下的任何位置,为了规范起见,建议直接放在根目录下。如果在某个组件中需要添加相应的组件测试`demo`,该`demo`应用建议放在该组件的目录下。 - **通过编译脚本的命令行进行指定应用的编译和目标清除** 启动`heliso`命令,可以将指定应用目录下的代码和SDK一起编译,也可以调用`helios clean`命令,清除编译生成的`output`文件夹。 ## 操作说明 #### **1. 使用`.mk`文件进行组件的管理** 任何一个组件的根目录下必须存在一个和当前文件夹同名的`.mk`文件。该Makefile文件中可以添加以下脚本代码: ``` NAME = component_name # 组件名称,建议和所在目录名称一致 GLOBAL_INCS = public/inc # 允许外部引用的头文件路径,不在此列的头文件路径,其他组件无法直接引用 GLOBAL_DEFINE = PUBLIC_MACRO # 当前组件内定义的、允许外部组件引用的宏。 $(NAME)_CFLAGS = -Wno-error=incompatible-pointer-types # 仅当前组件内部可引用的编译选项 $(NAME)_ARCHIVES := src/archive.a # 当前组件内参与编译的库文件 $(NAME)_SRCS := src/source.c asm.s # 当前组件内参与编译的源码文件,包括c和汇编 $(NAME)_INCS := local/Inc # 仅当前组件内部可引用的头文件路径,在此列的头文件路径,其他组件无法直接引用 $(NAME)_DEFINE := LOCAL_MACRO # 当前组件内定义的、仅组件内部可引用的宏,不允许外部组件引用。 $(NAME)_COMPONENTS := third_party/LinkSDK \ system/protocols/ftp # 当前组件依赖的其他组件的相对路径(相对于根目录) ``` #### 2. 环境搭建 访问 下载 Windows 或 Ubuntu 平台的编译工具链。 - Windows 平台目前最新版本为 [V1.4.0](https://github.com/QuecPython/toolchain/releases/download/V1.4.0/helios-toolchain_1.4.0.exe),直接双击安装即可。 - Ubuntu 平台目前最新版本为 [V1.1.0](https://github.com/QuecPython/toolchain/releases/download/V1.1.0/helios-toolchain),在需要安装工具链的目录下,执行 `sudo helios-toolchain `。 #### **3. 编译命令** ##### 编译命令示例 - 编译:`helios make sample @EC800GCN_LD EC800GCNLD_App_V1.0.0` - 清除:`helios clean` ##### 编译命令格式 ```bash [] [] [] ``` - ``:编译命令,即`helios` - ``:脚本的行为,取值如下: - `help`:打印编译脚本的用法。 - `menuconfig`:编译配置菜单。 - `make`:构建编译目标。 - `private_clean`:清除应用层内部在编译前生成的私有的目标文件,比如python服务需要提前生成_frozen_mpy.c和相关头文件,该命令可清除之。 - `clean`:清除编译目标(即 `output` 目录)。 - ``:可选项,当``取值为make时,必选。 - 指定应用代码相对于 SDK 根目录的路径。 - ``:可选项,当``取值为 `make` 时生效。 - 参数格式:`@`分隔的多个单词,目前限定于`模块型号`和`编译命令回显开关`。例如`EC200UCN_AA@verbose`,表示编译EC200UCN_AA的模块,打开编译命令回显开关。该参数的首尾也可以添加`@`。 - 当只有一个单词时,务必在首或尾,或首尾同时,添加`@`。 - 默认编译 EC200UCN_AA 模组。 - ``:可选项,当``取值为make时生效。 - 用来指定固件版本号,默认值为应用代码文件夹名称。