The NDN-Lite library implements the Named Data Networking Stack with the high-level application support functionalities and low-level OS/hardware adaptations for Internet of Things (IoT) scenarios.
The library is written in standard C.
Please go to our wiki page for the project details.
The network stack can be applied to any platforms that support C. To work with the network interfaces (e.g., Bluetooth, Bluetooth Low Energy, IEEE 802.15.4, etc.), usually an adaptation layer is required.
So far, we have tested our library with RIOT OS and Nordic NRF52840 Development Kit.
We also provides related adaptation implementation under ./adaptation/
This Repository provides basic support on nRF52840DK peripheral drivers and their hardware abstraction. Examples of their usage are also included. Examples are only tested on macOS, might work on Linux. The implementation is based on Nordic SDK v15.2.0 and borrows some code from RIOT OS on board flashing.
-
Providing NDN-Lite based IoT package
NDN Lite is the implementation of the core NDN network stack and NDN-based application support, but without the platform-specific adaptation, leaves the job of organizing dependencies to users. This repository provides an IoT package especially for NDN application development over Nordic SDK using GCC. -
Ease-of-Use
This repo includes all needed SDKs in folderthird-party
and configures them in foldertoolchain
. Therefore, users can focus on application development. -
Platform Features are provided
This repo provides hardware abstraction for peripheral drivers in Nordic NRF52 platforms and will be maintained by the NDN IoT development team.
Try hello world example, which shows the usage of system delay and time function.
- Step 1: Modify Settings
Go totoolchain/Makefile.posix
and you will see following statements.
GNU_INSTALL_ROOT := /usr/local/Cellar/arm-none-eabi-gcc/7-2018-q2-update/gcc/bin/
GNU_VERSION ?= 7.3.1
GNU_PREFIX ?= arm-none-eabi
Modify the settings according to your computer. If you ran RIOT based program before, this compiler should already exist in your environment. If not, you need download and install one. On Windows, you can try modify toolchain/Makefile.windows
.
-
Step 2: Install JLink Command Line Tools and Segger RTT tools
If JLink Command Line Tools installed success, callJLinkExe
in your terminal will return some info. You can useexit
to return. If Segger RTT tools installed success, callJLinkRTTClient
in your terminal will return some info. You can useCtrl + C
to return. -
Step 3: Flash target board
Connect nRF52840DK board via cable.
cd examples/hello-world
make flash
Generated HEX files will locate in hello-world/build
folder and further be downloaded to the board.
- Step 4: Connect Board via terminal
In terimal, callJLinkExe
and then typeconnect
. Press ENTER all the way down (which means use defaut setting), output should stop at displaying
ROMTbl[0] @ E00FF000
ROMTbl[0][0]: E000E000, CID: B105E00D, PID: 000BB00C SCS-M7
ROMTbl[0][1]: E0001000, CID: B105E00D, PID: 003BB002 DWT
ROMTbl[0][2]: E0002000, CID: B105E00D, PID: 002BB003 FPB
ROMTbl[0][3]: E0000000, CID: B105E00D, PID: 003BB001 ITM
ROMTbl[0][4]: E0040000, CID: B105900D, PID: 000BB9A1 TPIU
ROMTbl[0][5]: E0041000, CID: B105900D, PID: 000BB925 ETM
Cortex-M4 identified.
J-Link>
Open another terminal can call JLinkExeClient
, you should see output like this
###RTT Client: Connecting to J-Link RTT Server via localhost:19021 Connected.
SEGGER J-Link V6.42b - Real time terminal output
J-Link OB-SAM3U128-V2-NordicSemi compiled Jan 7 2019 14:07:15 V1.0, SN=683605425
Process: JLinkExe
hello, ndn-lite
NDN-Lite: current system time: 494 ms
NDN-Lite: current system time: 997 ms
NDN-Lite: current system time: 1499 ms
NDN-Lite: current system time: 2002 ms
NDN-Lite: current system time: 2504 ms
NDN-Lite: current system time: 3007 ms
NDN-Lite: current system time: 3509 ms
...... ...... ......
You can use Ctrl + C
to exit JLinkExeClient or press RESET button on the board to restart the program. Unless you call exit
in JLink, board is always be "considered" connected.
-
Alarm
- Hardware Dependencies: RTC0
- Software Dependencies: nRF-IEEE-802.15.4-driver (Radio module in future)
- Features: Milliseconds and microseconds time and alarm notification system. This module only support one alarm in runtime. And users should periodically check whether the alarm fires.
-
UART (Removed)
- Hardware Dependencies: UART0
- Software Dependencies: None
- Features: Data exchange via serial port.
-
Non-Volatile Memory
- Hardware Dependencies: NVM Controller
-
Radio
- Hardware Dependencies: Radio, RTC0
- Software Dependencies: Alarm
- Motivation: Current "face to driver" adaptation only enables send/receive. drivers specific setting interfaces (e.g., transmission power, with or without link layer ACK) are needed.
- Features: 802.15.4 and BLE drivers abstraction.
-
Sensor
-
SDK Inclusion
- Add third party SDKs in folder
third-party
. Please only include necessary files you need, whole SDK package might be very large.
- Add third party SDKs in folder
-
Hardware Adaptation
- Create folder
adaptation/platform/*board*
and implement header files inadaptation/platform
- Create folder
-
Toolchain Configuration
- Create folder
toolchain/*board*
and add makefiles to configure SDK compiling and target port. - Add other necessary platform and SDK independent files folder
toolchain
. - This branch use Segger JLink as default flashing tool. If other tools needed, please include them in
third-party
and configure themtoolchain/*board*
.
- Create folder