编译aiot c-sdk到raspberry

  • 下载源码
  • 在 tools/board 中 复制 config.ubuntu.x86 并重命名为 config.raspberry.3b, raspberry为系统类型,3b为架构


    image.png
  • 添加这个文件后,在主目录下 make rconfig 就能看到这个选项了


    编译aiot c-sdk到raspberry_第1张图片
    image.png
  • 这个文件实际上定义了编译器,链接器等配置项,有了这个,就可以在编译时使用正确的交叉编译器等工具
  • 修改config.raspberry.3b
CONFIG_ENV_CFLAGS   += \
    -Os -Wall \
    -g3 --coverage \
    -D_PLATFORM_IS_LINUX_ \
    -D__UBUNTU_SDK_DEMO__ \
#    -DNO_EXECUTABLES \
    
CONFIG_ENV_CFLAGS   += \
    -DWITH_MQTT_DYN_BUF=1 \
    -DWITH_MEM_STATS=0 \
    -DWITH_MEM_STATS_PER_MODULE=0 \
    -DWITH_MQTT_JSON_FLOW=1 \
    -DWITH_MQTT_ZIP_TOPIC=1 \
    -DWITH_MQTT_SUB_SHORTCUT=1 \
    -DSDK_TEAM_TEST \

CONFIG_ENV_CFLAGS   += \
    -DCONFIG_MQTT_RX_MAXLEN=5000 \
    -DCONFIG_MBEDTLS_DEBUG_LEVEL=0 \


CONFIG_ENV_CFLAGS   += -rdynamic
CONFIG_ENV_CFLAGS   += -Werror -Wno-unused

CONFIG_ENV_LDFLAGS  += -lpthread -lrt

CROSS_PREFIX        := arm-linux-gnueabihf-


CONFIG_tests                    :=
#CONFIG_src/mqtt/examples        :=
  • 我本机上安装的是 arm-linux-gnueabihf-gcc 所以,添加统一的前缀


    image.png
  • 主目录下进行 make menuconfig,配置库选项


    编译aiot c-sdk到raspberry_第2张图片
    image.png
  • 在wrappers/os下复制 ubuntu,并重命名为 raspberry(这里的名字和CONFIG_raspberry.3b中的对应上)

  • 这个文件实际上是库中硬件的设备实现,因为raspberry和ubuntu都是Linux大类,所以不需要很多的改动,直接用看看

  • 编译时,提示HAL_UART_Linux.c中缺少 at_parser.h


    image.png
  • 根据名称应该是和串口的实现有关,而网络连接应该用不上,直接注释掉

  • 再编译,成功。

  • 在output/release/lib下生成库


    编译aiot c-sdk到raspberry_第3张图片
    image.png
  • 在output/release/bin中生成测试程序


    编译aiot c-sdk到raspberry_第4张图片
    image.png
  • 测试程序的修改:打开src/mqtt/examples/mqtt_example.c

  • 声明函数和写入产品,设备信息


    编译aiot c-sdk到raspberry_第5张图片
    image.png
  • 重新编译,拷贝到系统中运行,正常连接


    image.png
  • 测试程序说明:测试程序自己定时发布主题 usr/get,而且自己订阅了这个主题。运行效果就是,每隔一段时间,自发自收。


    编译aiot c-sdk到raspberry_第6张图片
    image.png
  • 说明:sdk也有Python的,安装对应的包就好了,但一些包可能对系统有要求或者对python版本有要求。

你可能感兴趣的:(编译aiot c-sdk到raspberry)