第四节 NuAgent SDK编译注意事项

1.日志系统使用

  为了减少固件占用 code Sram 中的空间。 其中系统的 debug 信息占用了大量的代码空间,因此这里定义了一套新的日志系统。相关代码位于 Source/App/ NuAge-nt /include /log.h 文件。 自定义 5 个级别的日志信息输出,分别为 ERROR, WARNING, NOTICE, INFO, DEBUG。使用宏 DEBUG_LEVEL_SWITCH 作为关,开启相关级别的打印信息。该级别信息在编译的时候决定相关级别的 debug 信息是否编进固件。
  日志系统的各个级别信息使用规范:
  log_err:系统错误打印
  log_warn:系统警告打印
  log_notice:系统运行必要信息打印
  log_info:系统运行状态信息打印
  log_debug:系统调试信息打印
  以上 5 个级别的打印中, log_err、 log_warn 和 log_notice 级别信息默认打开, info 和 debug级别信息默认关闭(DEBUG_LEVEL_SWITCH 值为 0x07)。
  注: 在开发正式的产品时,最终的产品应该屏蔽无用的打印信息,只保留 log_err 级别信息即可,如果有使用串口透传,那么相关相关打印都需要屏蔽掉。

2.Uart串口使用方法

  任务线程 UartTaskThread 用于完成接受从串口发来的数据,代码中已经屏蔽相关线程(由于 NL6621 只有一个串口,因此如果串口用于特殊功能,那么用户将不能使用正常的Debug 打印功能)。
串口收发机制:NL6621 发送数据通过 int uart_data_send(unsigned char *data, unsigned short len)接口发送数据。参数 data 为发送数据的 buffer,len 为发送数据的长度。NL6621 接收串口数据的 buffer 大小设为 512,当接收到的串口数据超过 256 或者接收数据的时间超过 100ms 则唤醒串口接收 UartTaskThread 任务线程。在UartTaskThread线程中完成用户串口数据的处理。用户需要在该任务线程中处理相关数据。
  注意:标准 SDK 代码中,需要打开 HW_UART_IRQ_SUPPORT 宏才能正常的接收串口数据。该宏现已在 global.h

3.GPIO中断使用

  NL6621 支持 GPIO0~GPIO15 一共 16 个 GPIO 口设置成中断 GPIO 口。用户配置 GPIO管脚为外部中断,通过 void gpio_int_setup(int gpio, bool trigMode, bool polarity);函数设置。并通过 void gpio_int_enable(int gpio);函数使能 GPIO 中断, void gpio_int_disable(int gpio)函数关闭 GPIO 中断。

4.Network adapter使用简介

  对接入企业云(私有云以及互联网云)提 供基本的设备端开发框架。以方便已有私有云的企业能够快速的使用 NL6621 芯片接入到企业云。
  由于不同的客户具体的设备实现功能不一样,相应的代码实现也不一样(例如智能插座和智能灯的实现,智能灯挂载天花,不需要 DirectConfig 触发,可以不实现 DirectConfig 功能,只需要实现 softap 配置功能即可)。本文档基于 NuAgent SDK 只作为参考范例,提供基本的 NL6621 开发代码框架,描述设备的联网/建网、创建 UDP\TCP 服务器端、创建 TCP Client 客户端。
  客户根据自己的需求可以对相应功能的裁剪和实现。 这里描述的接口只为了客户能够更好的理解 NL6621 的一些资源和接口的使用。本文档以《NL6621 SDK 用户使用手册.pdf》为基准,添加通用编程接口。相关接口和代码的变动以《NL6621 SDK 用户使用手册.pdf》为准。

5.第三方库str_lib.c使用说明

  在 NuAgent 的 SDK 中,由于 NL6621 使用的代码空间有限,对 ANSI C 中的字符处理函数等做了相应的裁剪,用户如需要使用到这些函数,可以再 util.h 文件中进行寻找,或者在 str_lib.c 文件中进行寻找,如果找不到,那么需要用户自己移植相应的字符串里接口。
  注:NuAgent,详细请参考《NL6621-NuAgent设计概念.pdf》。