Nol.A SDK Library  24.7.1
For IoT System Software Development
Nol.A-SDK Library: C++ Library for developing resource-constrained embedded systems

Introduction

Nol.A-SDK는 IoT용 embedded systems 개발을 위한 Atom 기반 개발환경입니다. 그리고 Nol.A-SDK Library는 다양한 하드웨어, 통신 프로토콜, 라이브러리 등을 지원하기 위한 C++ 라이브러리, Makefile, 링커 스크립트, 플래싱 스크립트 등의 모음입니다.

Coding-Style

Nol.A-SDK에서는 C++를 기본 언어로 사용합니다. 물론 C 파일도 컴파일 및 링킹을 지원합니다. 저희가 지원하는 보드들은 다양하지만 모두 GCC를 사용합니다. 자세한 보드별 컴파일러 종류 및 버전 정보는 Supported Boards 를 참고해주세요. 문법 표준은 C++14 with GNU extensions (gnu++14), 및 C99를 지원합니다.

사용자 애플리케이션의 시작 지점은 Arduino 처럼 setup() 입니다. setup()에서는 각종 초기화를 수행합니다.

void setup() {
Serial.begin(115200);
Serial.printf("Hello World!\n");
// Do something.
}
virtual int printf(const char *,...)
printf 출력을 내보냅니다.
Definition: Print.hpp:230
virtual error_t begin(uint32_t speed=115200, Config_t config=_8N1)=0
시리얼 포트를 초기화합니다.

Arduino와 달리 loop() 같은 함수는 지원하지 않습니다. 그 대신 postTask() 와 Timer 를 지원합니다.

[TBD]

Keywords

  • NOLA_VER_MAJOR: Library version (major number)
  • NOLA_VER_MINOR: Library version (minor number)
  • NOLA_VER_PATCH: Library version (patch number)

Project Options

Nol.A-SDK에서 프로젝트 별로 생성되는 Nol.A-project.json 파일에 다음과 같은 옵션을 추가하면 추가적인 기능을 사용할 수 있습니다.

일부 option 들은 보드별로 지원 가능 여부가 다릅니다. 자세한 정보는 보드별 정보를 참고해주세요.

Heap and Stack Size

  • NOLA_HEAP_SIZE: Heap 크기를 지정(단위: byte)
  • NOLA_STACK_SIZE: Stack 크기를 지정(단위: byte)

위 옵션들은 생략시 보드별 기본 heap 및 stack 크기를 사용합니다. 자세한 정보는 보드별 정보를 참고해주세요.

Debugging Messages

  • NOLA_DEBUG_AT86RF233: 1이면 AT86RF233Chip 드라이버의 디버깅 메시지를 출력
  • NOLA_DEBUG_CC1200: 1이면 CC1200Chip 드라이버의 디버깅 메시지를 출력
  • NOLA_DEBUG_DW1000: 1이면 DW1000Chip 드라이버의 디버깅 메시지를 출력
  • NOLA_DEBUG_6LORAWAN: 1이면 IPv6LoRaWAN 프로토콜의 디버깅 메시지를 출력
  • NOLA_DEBUG_SX126X: 1이면 SX126xChip 드라이버의 디버깅 메시지를 출력
  • NOLA_DEBUG_SX127X: 1이면 SX127xChip 드라이버의 디버깅 메시지를 출력
  • NOLA_DEBUG_SX1301: 1이면 SX1301Chip 드라이버의 디버깅 메시지를 출력
  • NOLA_DEBUG_HTTP: 1이면 HTTP 프로토콜의 디버깅 메시지를 출력
  • NOLA_DEBUG_IPV6: 1이면 IPv6 프로토콜의 디버깅 메시지를 출력
  • NOLA_DEBUG_IEEE802_15_4FRAME: 1이면 IEEE802.15.4 프로토콜의 디버깅 메시지를 출력
  • NOLA_DEBUG_LORAWAN: 1이면 LoRaWAN 프로토콜의 디버깅 메시지를 출력
  • NOLA_DEBUG_LPPMAC: 1이면 LPPMac 프로토콜의 디버깅 메시지를 출력
  • NOLA_DEBUG_DSTWRANGING: 1이면 DSTWRanging 프로토콜의 디버깅 메시지를 출력
  • NOLA_DEBUG_TSCHMAC" 1이면 TSCHMac 프로토콜의 디버깅 메시지를 출력

예를 들어, SX127xChip 드라이버와 LoRaWAN 프로토콜의 디버깅 메시지를 출력하기 위해서는 다음과 같이 옵션을 지정하면 됩니다.

{
"options": "NOLA_DEBUG_LORAWAN=1 NOLA_DEBUG_SX127X=1",
}

The '.noinit' Section

프로젝트에서 초기화되지 않는 변수를 사용하고 싶으면 다음과 같이 변수명에 attribute를 지정할 수 있습니다.

int foo __attribute__ ((section(".noinit")));

MSP430, ESP32 계열 MCU 에서는 .noinit section에 별도의 제약이 없습니다. 다만, 너무 많이 지정하면 힙 또는 스택 영역이 줄어들어 애플리케이션이 정상 동작하지 않을 수 있습니다. 그 외 MCU 들은 각 보드별 크기 제한이 있으며, 자세한 정보는 보드별 정보를 참고해주세요.