kaa 连接esp8266

1、kaa 连接esp8266

1) 烧写模式
ESP8266-01USB-to-TTL
URXDTXD
UTXDRXD
CH_PD3.3V
GNDGND
VCC3.3V
GPIO0GND
GPIO23.3V
2)运行模式
ESP8266-01USB-to-TTL
URXDTXD
UTXDRXD
CH_PD3.3V
GNDGND
VCC3.3V

2、基础环境配置

以纯净的ubuntu16.04 64位系统为例

1)安装相关依赖库
sudo apt-get install autoconf libtool libtool-bin bison build-essential gawk git gperf flex texinfo libncurses5-dev libc6-dev-amd64 python-serial libexpat-dev python-setuptools
2)指定ESP8266 SDK和工具链存储的目录
export ESPRESSIF_HOME=/opt/Espressif/
3)安装toolchain
cd $ESPRESSIF_HOME
git clone -b lx106-g++ git://github.com/jcmvbkbc/crosstool-NG.git
cd crosstool-NG
./bootstrap && ./configure --prefix=$(pwd)
make
sudo make install
./ct-ng xtensa-lx106-elf
./ct-ng build
加入toolchain工具位置到环境变量
echo "export PATH=$ESPRESSIF_HOME/crosstool-NG/builds/xtensa-lx106-elf/bin:\$PATH" >> ~/.bashrc
4)安装 ESP8266 RTOS SDK
cd $ESPRESSIF_HOME
export ESP_SDK_HOME=$ESPRESSIF_HOME/esp-rtos-sdk
git clone https://github.com/espressif/esp_iot_rtos_sdk.git $ESP_SDK_HOME
cd $ESP_SDK_HOME
git checkout 169a436ce10155015d056eab80345447bfdfade5
wget -O lib/libhal.a https://github.com/esp8266/esp8266-wiki/raw/master/libs/libhal.a
cd $ESP_SDK_HOME/include/lwip/arch
sed -i 's:#include "c_types.h"://#include "c_types.h":' $ESP_SDK_HOME/include/lwip/arch/cc.h
5)安装esptool.py
cd $ESPRESSIF_HOME
git clone https://github.com/espressif/esptool.git
cd esptool
python setup.py install

3、创建kaa应用

kaa官网demo地址:

[sample demo]: https://github.com/kaaproject/kaa/tree/v0.10.0//doc/Programming-guide/Using-Kaa-endpoint-SDKs/C/SDK-ESP8266/attach/esp8266-sample/

目录结构
CMakeLists.txt
driver/
    uart.h
    uart.c
ld/
    eagle.app.v6.ld
    eagle.rom.addr.v6.ld
kaa/
    <put Kaa SDK here>
user/
    user_main.c
src/
    kaa_demo.c
  • CMakeLists.txt是一个CMake脚本。

  • driver/ uart.c和driver/ uart.h文件实现ESP8266 UART接口的驱动程序。

  • ld /目录包含ESP8266应用程序所需的两个链接器脚本。

  • kaa /目录是你放置生成的Kaa C SDK压缩包并解压的地方。

    mkdir kaa && cd kaa

    tar zxf kaa-c * .tar.gz

  • user / user_main.c包含ESP8266应用程序入口ponit(user_init()函数)并执行ESP8266特定的初始化(例如,初始化UART)。

  • src / kaa_demo.c是一个具有最小Kaa代码的独立于platofrm的源文件。

注:
1)修改kaa/CMakeLists.txt以下选项为off

option(WITH_EXTENSION_PROFILE "Enable profile extension" OFF)
option(WITH_EXTENSION_CONFIGURATION "Enable configuration extension" OFF)
option(WITH_EXTENSION_EVENT "Enable event extension" OFF)
option(WITH_EXTENSION_LOGGING "Enable logging extension" OFF)
option(WITH_EXTENSION_NOTIFICATION "Enable notification extension" OFF)
option(WITH_EXTENSION_USER "Enable user extension" OFF)
option(WITH_ENCRYPTION "Enable encryption" OFF)
option(KAA_RUNTIME_KEY_GENERATION "Enable RSA key generation at runtime" OFF)

2)修改ld/eagle.app.v6.ld文件中相关代码

.text : ALIGN(4)部分中,找到包含以下内容的行:

( .literal .text .literal.* .text.* .stub .gnu.warning .gnu.linkonce.literal.* .gnu.linkonce.t.*.literal .gnu.linkonce.t.*)

从那里删除部分.literal.* .text.*并将其移动到.irom0.text : ALIGN(4),在_irom0_text_start = ABSOLUTE(.);之后添加以下行

*(*.literal.* .text.*)

现在将所有以.literal.和.text开始的部分放置ROM中,这是一个简单粗暴的方法,不管* .a模块(如下面在.text : ALIGN(4)部分中的行所定义的那样),这种类型的所有部分都被移到ROM中。 可能有未发生的复杂情况但 绝对有空间优化链接器映射,这节省了大量的RAM和内存

编译应用程序
mkdir build
cd build
cmake .. \
    -DCMAKE_TOOLCHAIN_FILE=../kaa/toolchains/esp8266.cmake \
    -DKAA_PLATFORM=esp8266 \
    -DBUILD_TESTING=OFF \
    -DCMAKE_BUILD_TYPE=MinSizeRel \
    -DKAA_MAX_LOG_LEVEL=3
    -DWITH_ENCRYPTION = OFF
make
烧写esp8266模块
1)生成烧写的bin文件
esptool.py elf2image build/kaa_demo

使用esptool.py工具产生两个二进制文件 - kaa_demo-0x00000.bin和kaa_demo-0x40000.bin分别flash到0x00000和0x40000 flash地址。

2)烧写程序
sudo esptool.py write_flash 0x00000 build/kaa_demo-0x00000.bin 0x40000 build/kaa_demo-0x40000.bin
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值