本文介绍如何搭建开发环境和基于各版本的SDK编译固件。
准备开发环境
- 搭建SDK的开发环境。
建议您在64位Ubuntu下搭建设备端SDK的开发环境,并使用vim编辑代码。该部分的操作请自行查阅网络相关文档完成。
说明 暂不支持在Windows系统(含Windows子系统)下编译生活物联网平台SDK。 - 安装Ubuntu(版本16.04 X64)程序运行时库。
请您按顺序逐条执行命令。
sudo apt-get update sudo apt-get -y install libssl-dev:i386 sudo apt-get -y install libncurses-dev:i386 sudo apt-get -y install libreadline-dev:i386
- 安装Ubuntu(版本16.04 X64)依赖软件包。
请您按顺序逐条执行命令。
sudo apt-get update sudo apt-get -y install git wget make flex bison gperf unzip sudo apt-get -y install gcc-multilib sudo apt-get -y install libssl-dev sudo apt-get -y install libncurses-dev sudo apt-get -y install libreadline-dev sudo apt-get -y install python python-pip
- 安装Python依赖包。
请您按顺序逐条执行命令。
python -m pip install setuptools python -m pip install wheel python -m pip install aos-cube python -m pip install esptool python -m pip install pyserial python -m pip install scons
说明 安装完成后,请您使用aos-cube --version查看aos-cube的版本号,需确保aos-cube的版本号大于等于0.5.11。如果在安装过程中遇到网络问题,可使用国内镜像文件。
### 安装/升级 pip python -m pip install --trusted-host=mirrors.aliyun.com -i https://mirrors.aliyun.com/pypi/simple/ --upgrade pip ### 基于pip依次安装第三方包和aos-cube pip install --trusted-host=mirrors.aliyun.com -i https://mirrors.aliyun.com/pypi/simple/ setuptools pip install --trusted-host=mirrors.aliyun.com -i https://mirrors.aliyun.com/pypi/simple/ wheel pip install --trusted-host=mirrors.aliyun.com -i https://mirrors.aliyun.com/pypi/simple/ aos-cube
编译含AliOS Things的SDK(V1.3.0及以上版本)
如果您基于含AliOS Things的SDK(V1.3.0及以上版本)来开发设备固件,请根据以下步骤来编译SDK。
- 在开发环境中解压下载的SDK压缩包。如果您通过Git命令的方式下载SDK,则无需解压。
- 将开发的业务代码存放到SDK相应的目录下。
如果您基于V1.3.0以上版本开发设备固件,可以将开发的代码存放到Products/品类目录/应用名/…下(例如Products/example/smart_outlet为单路智能插座参考实现)。
SDK V1.3.0及以上版本的详细目录结构如下所示。
ali-smartliving-device-alios-things ├── build.sh ├── LICENSE ├── Living_SDK │ ├── 3rdparty │ ├── app │ ├── board │ ├── build │ ├── device │ ├── doc │ ├── example │ ├── framework │ ├── gen_firmware.sh -> example/smart_led_strip/gen_firmware.sh │ ├── include │ ├── kernel │ ├── LICENSE │ ├── NOTICE │ ├── platform │ ├── projects │ ├── README.md │ ├── security │ ├── site_scons │ ├── test │ ├── tools │ ├── ucube.py │ └── utility ├── Products │ ├── example │ ├── Smart_lighting │ └── Smart_outlet ├── README.md ├── Service │ └── version └── tools ├── 5981a.sh ├── amebaz_dev ├── amebaz_dev.sh ├── asr5501 ├── asr5501.sh ├── bk7231u ├── bk7231udevkitc.sh ├── cmd ├── mk3060.sh ├── mk3080.sh ├── moc108 ├── mx1270.sh ├── rda5981 ├── rtl8710bn └── scripts
- 编译SDK。
- 在SDK根目录,执行
vim build.sh
命令打开build.sh文件。 - 根据硬件使用的模组型号和要编译的应用,修改文件中的如下参数。
default_type="example" //配置产品类型 default_app="smart_outlet" //配置编译的应用名称 default_board="uno-91h" //配置编译的模组型号 default_region=SINGAPORE //配置设备的连云区域: //V1.5.0及以下版本:设备在中国内地激活配置为MAINLAND,其余地区激活配置为SINGAPORE //V1.6.0及以上版本:配置为MAINLAND或SINGAPORE都可以,设备可以全球范围内激活 default_env=ONLINE //配置连云环境 Debug log:default_debug=0 default_args="" //配置其他编译参数 //更多介绍请参见README.md
- 执行./build.sh命令。
以基于uno-91h模组编译smart_outlet应用为例,编译完成后,在out\smart_outlet@uno-91h目录下会生成smart_outlet@uno-91h_all.bin文件。该文件为需要烧录到真实设备中的固件。
说明 : build.sh脚本会自动判断指定模组的toolchain(交叉编译工具链)是否已经安装,如果没有安装,脚本会自动安装。编译该版本SDK时,如果出现头文件、静态库缺失等错误,请参见常见问题。
- 在SDK根目录,执行
编译含AliOS Things的SDK(V1.1.0及以下版本)
如果您基于含AliOS Things的SDK V1.1.0或者V1.0.0版本(原天猫精灵Wi-Fi SDK)来开发设备固件,请根据以下步骤来编译SDK。
- 在开发环境中解压下载的SDK压缩包。如果您通过Git命令的方式下载SDK,则无需解压。
- 将开发的业务代码存放到SDK相应的目录下。
可以将开发的代码存放到example/应用名下,如您基于linkkitapp开发,即把新增加的代码合入example/linkkitapp目录。
SDK V1.1.0之前版本与SDK V1.3.0及以上版本的目录对比如下。
- 编译SDK。
- 以mk3060模组为例,如果是第一次编译,在SDK根目录,执行编译如下命令,会自动安装指定模组的toolchain。
aos make helloworld@mk3060
- 如已经安装toolchain,在SDK根目录,执行编译如下命令。
aos make linkkitapp@mk3060
编译完成后,在out\linkkitapp@mk3060\binary目录下会生成linkkitapp@mk3060_crc.bin文件。该文件为需要烧录到真实设备中的固件。
如果编译失败且提示头文件或静态库缺失的错误,请参见常见问题。
- 以mk3060模组为例,如果是第一次编译,在SDK根目录,执行编译如下命令,会自动安装指定模组的toolchain。
编译无AliOS Things的SDK
如果您基于无AliOS Things的SDK来开发设备固件,请根据以下步骤来编译SDK(无AliOS Things SDK各版本的编译操作一致)。
- 在开发环境中解压下载的SDK压缩包。如果您通过Git命令的方式下载SDK,则无需解压。
- 将开发的业务代码存放到SDK相应的目录下。
不含AliOS Things的SDK目录结构如下所示。
ali-smartliving-device-sdk-c ├── build-rules │ ├── docs │ ├── funcs.mk │ ├── hooks │ ├── misc │ ├── pre-build.sh │ ├── _rules-complib.mk │ ├── _rules-coverage.mk │ ├── _rules-dist.mk │ ├── _rules-flat.mk │ ├── _rules-kmod.mk │ ├── _rules-libs.mk │ ├── rules.mk │ ├── _rules-modinfo.mk │ ├── _rules-origin.mk │ ├── _rules-prefix.mk │ ├── _rules-prog.mk │ ├── _rules-repo.mk │ ├── _rules-submods.mk │ ├── _rules-top.mk │ ├── scripts │ └── settings.mk ├── CMakeLists.txt ├── components │ ├── tick_notify │ └── timer_service ├── Config.in ├── Config.linkkit ├── docs │ ├── 智能生活C-SDK适配FreeRTOS帮助文档.pdf │ ├── 智能生活SDK复位功能介绍.pdf │ └── 智能生活设备配网绑定问题分析参考.pdf ├── examples │ ├── cJSON.c │ ├── cJSON.h │ ├── iot.mk │ └── linkkit ├── include │ ├── exports │ ├── imports │ ├── iot_export.h │ └── iot_import.h ├── lib │ ├── ANDES_N10 │ ├── ARM968E-S │ ├── Cortex-M4 │ ├── linux │ └── xtensa ├── LICENSE ├── linkkit_kv.bin ├── makefile ├── make.settings ├── output │ └── release ├── prebuilt │ ├── extra │ ├── mdm9206 │ ├── ubuntu │ └── win7 ├── project.mk ├── README.md ├── sdk-c.mk └── src ├── board ├── infra ├── protocol ├── ref-impl ├── sdk-impl ├── security ├── services └── tools
- 编译SDK。
- 在SDK根目录,执行
vim make.settings
命令打开make.settings文件。 - 根据硬件使用的模组型号和要编译的应用,修改文件中的如下参数。
其中详细的参数解释请参见基于非认证的模组开发。
#=========Basic Features========== FEATURE_SRCPATH="." FEATURE_MQTT_COMM_ENABLED=y FEATURE_MQTT_AUTO_SUBSCRIBE=y FEATURE_DEVICE_MODEL_ENABLED=y FEATURE_OTA_ENABLED=y FEATURE_DEV_BIND_ENABLED=y FEATURE_SUPPORT_TLS=y #Support unified service post FEATURE_DM_UNIFIED_SERVICE_POST=y #=========Basic Features========== #=========User Config Features========== FEATURE_ALCS_ENABLED=y # FEATURE_DEVICE_MODEL_GATEWAY=n # # AWSS Configurations # FEATURE_WIFI_PROVISION_ENABLED=y FEATURE_AWSS_SUPPORT_SMARTCONFIG=y FEATURE_AWSS_SUPPORT_ZEROCONFIG=y FEATURE_AWSS_SUPPORT_DEV_AP=y
- 执行make distclean命令。
- 执行make reconfig命令,并在出现以下提示后,输入选项对应的序号。
请根据要编译的目标平台(即board)来选择。如果您编译demo,则选择7。
SELECT A CONFIGURATION: 1) config.esp8266.aos 6) config.rhino.make 2) config.freertos.esp8266 7) config.ubuntu.x86 3) config.macos.x86 8) config.win7.mingw32 4) config.mk3060.aos 9) config.xboard.make 5) config.mk3080.aos
- 执行make命令。
以编译config.ubuntu.x86为例,编译完成后,在output/release/bin目录下会生成living_platform文件为demo。如果您编译真实固件请参见无AliOS Things的SDK适配指南。
- 在SDK根目录,执行