本文介绍无AliOS Things的SDK适配过程。
适配流程
整体流程如下图所示,其中HAL和TLS建议以源文件的形式在用户工程进行编译,以避免在工程中编译产生头文件的依赖问题。
移植步骤
以无AliOS Things的SDK的V1.6.0版本为例。
- 下载无AliOS Things的SDK的V1.6.0版本。请参见获取SDK。
- 编译无AliOS Things的SDK。
- 配置交叉编译器路径。
文件build-rules/settings.mk中修改TOOLCHAIN_DLDIR := /home/mytoolchain
配置编译器的文件夹所在的路径,然后修改build-rules/funcs.mk里面的函数Relative_TcPath
增加编译器的相对路径,如以下代码所示。
define
( \
case $(1) in \
xtensa-lx106-elf-gcc ) \
echo "gcc-xtensa-lx106-linux/main/bin" ;; \
arm-none-eabi-gcc ) \
echo "gcc-arm-none-eabi-linux/main/bin" ;; \
nds32le-elf-gcc ) \
echo "bin" ;; \
esac \
)
endef
- 增加config文件。
参考src/board/目录下增加一个新的config配置文件,以ESP8266芯片上适配FreeRTOS系统为例,可以增加一个config.freertos.esp8266文件,示例代码如下。
#添加芯片平台相关的配置
CONFIG_ENV_CFLAGS += \
-DBOARD_ESP8266 -u call_user_start \
-fno-inline-functions \
-ffunction-sections \
-fdata-sections \
-mlongcalls \
-Wl,-static
#配置编译器选项
CONFIG_ENV_CFLAGS += -Os
#配置不需要编译的子模块
CONFIG_src/ref-impl/tls :=
CONFIG_src/ref-impl/hal :=
CONFIG_examples :=
CONFIG_tests :=
CONFIG_src/tools/linkkit_tsl_convert :=
#交叉编译器的前缀,这里不要带路径
CROSS_PREFIX := xtensa-lx106-elf-
- 编译库文件。
- 配置SDK的功能。
您可以选择以下任一方式:
- 直接编辑根目录下面的make.settings文件。
- 执行make menuconfig命令配置。
- 执行make clean命令。
- 执行make reconfig选择配置。
如下图输入数字2就是选择config.freertos.esp8266配置。
- 执行make命令。
如果没有编译错误,生成的库文件libiot_sdk.a在output/release/lib目录下面。
说明 建议您直接在自己的工程中编译HAL和TLS的代码。如果一定要在SDK工程中编译hal,需要先注释掉config.freertos.esp8266中的CONFIG_src/ref-impl/hal :=
,同时将hal源文件放在文件夹src/ref-impl/hal/os/freertos文件夹中,依赖的头文件放到prebuild/freertos/include文件夹中。无AliOS Things的SDK V1.6.0之前的版本头文件依赖有个问题,需要修改根目录下面的project.mk文件中的IMPORT_DIR
的值,修改为IMPORT_DIR := $(TOP_DIR)/prebuilt
。
- 链接库文件到用户工程。
- 将库文件output/release/lib/libiot_sdk.a链接到自己的工程中。
- 将目录output/release/include下面的头文件放置到自己的工程中,并配置头文件路径。
- 在用户的应用程序中添加头文件
include "iot_import.h"
。
- (可选)如果直接在您自己的工程中编译HAL和TLS的代码,还需在config.freertos.esp8266文件中增加以下代码,并执行make reconfig生效。
CONFIG_src/ref-impl/tls :=
CONFIG_src/ref-impl/hal :=
//表示不生成TSL和HAL的库
说明 每次修改了config.freertos.esp8266文件,都需要执行make reconfig才能生效。
- 将example/linkkit/living_platform下面的文件放到用户的工程中编译,然后启动一个任务执行living_platform_main就可将整个SDK运行起来。
说明 SDK运行起来后,即可以调试适配的运行错误,例如coap出错可检查HAL_UDP_xxx.c是否适配好。
make相关命令说明
命令 |
解释 |
make distclean |
清除一切构建过程产生的中间文件,使当前目录仿佛和刚刚clone下来一样。 |
make |
使用默认的或已选中的平台配置文件开始编译。 |
make env |
显示当前编译配置,非常有用,例如可显示交叉编译链,编译CFLAGS等。 |
make reconfig |
弹出多平台选择菜单,用户可按数字键选择,然后根据相应的硬件平台配置开始编译。 |
make config |
显示当前被选择的平台配置文件。 |
make menuconfig |
以图形化的方式编辑和生成功能配置文件make.settings,直接编辑make.settings文件也是有效的。 |
make help |
打印帮助文本。 |
用户适配HAL的说明
- 如果是Linux系统,可以直接参考src/ref-impl/hal/os/ubuntu目录下面的C文件,大部分文件可以直接使用。
- 如果不是Linux的系统,例如FreeRTOS系统,可以参考src/ref-impl/hal/os/ubuntu目录下面的文件实现各个HAL函数的功能。
- 配网相关的HAL函数比较多,详细介绍请参考文档Wi-Fi设备配网适配开发。