User Tools

Site Tools


proiecte:nuttx-sparrow

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
proiecte:nuttx-sparrow [2018/11/22 22:42]
razvan.barbascu created
proiecte:nuttx-sparrow [2018/11/22 23:47] (current)
razvan.barbascu [Setup]
Line 5: Line 5:
  
 ===== Hardware ===== ===== Hardware =====
-If you are not familiar with Sparrow you can find more about it [[:sparrow_v4_en|Sparrow Wireless Sensor Node]] +If you are not familiar with Sparrow you can find more about it here: [[:sparrow_v4_en|Sparrow Wireless Sensor Node]].
 ===== NuttX ===== ===== NuttX =====
 +[[http://nuttx.org/|Nuttx]] is n RTOS with an emphasis on standards compliance and small footprint. Scalable from 8-bit to 32-bit micro controller environments, the primary governing standards in NuttX are Posix and ANSI standards.
 +
 +Nuttx is very flexible when it comes to communication protocols.
 +It support a large range of protocols from low power ones like 6LoWPAN for radio network drivers (IEEE 802.15.4 MAC and generic packet radios), Radio Network Drivers: IEEE 802.15.4 MAC, Generic Packet Radio, Bluetooth LE. But also more advanced protocols like IEEE 802.11 FullMac, IPv4, IPv6, TCP/IP, UDP, ARP, ICMP, ICMPv6, IGMPv2 (client) stacks.
 +
 +Memory allocation on this RTOS is grouped into standard heap memory allocation, granule allocator, shared memory, and dynamically sized, per-process heaps. Depending on what platform you chose to run Nuttx, you can adapt this memory allocator to use the appropriate amount of memory.
 +
 +This RTOS is made to be portable and works most of the ARM processors, 8-bit Atmel architecture and more. It also has a large number of drivers already implemented, but it has not yet been ported to the Sparrow's microcontroller, ATmega128RFA1.
 +
 +When it comes to multi-threading and scheduling, Nuttx is the most advanced one, having implemented a few scheduling algorithms like FIFO, round-robin, and “sporadic” scheduling.
 +
 +NuttX uses a flash aware file system which handles all the operations with the memory and makes it transparent to the user. It is a filesystem that has been designed to work primary with small, serial NOR type flash parts that are 1M byte to 16M byte in size (though this is not a limitation). The filesystem operates by segmenting the flash (or flash partition) into “logical sectors” of equal size and then managing them (allocating, mapping, chaining, releasing, etc.) to build files and directories.
 +
 +Nuttx also provides an optional small, scalable, bash-like shell with rich feature set and small footprint used for debugging, configuration and launching applications.
 ===== Setup ===== ===== Setup =====
 +<code bash Install Packets>
 +sudo apt-get install build-essential git texinfo libgmp-dev libmpfr-dev libmpc-dev libncurses5-dev bison flex gettext gperf libtool autoconf pkg-config libftdi-dev libusb-1.0-0-dev zlib1g zlib1g-dev python-yaml gcc-avr avr-libc avrdude
 +</code>
 +
 +<code bash Install NuttX Tools>
 +clone tools repo: https://github.com/jodersky/nuttx/tree/master/misc/tools
 +cd tools/kconfig-frontends
 +./configure --enable-mconf
 +LD_RUN_PATH=/usr/local/lib
 +make
 +make install
 +</code>
 +
 +<code bash Get NuttX for Sparrow>
 +git clone git@bitbucket.org:vanbarbascu/nuttx_sparrow.git
 +cd nuttx_sparrow
 +</code>
 +
 +<code bash Configure and Build>
 +LD_LIBRARY_PATH=/usr/local/lib/ tools/configure.sh -l -a apps sparrow_4.1/nsh
 +make
 +</code>
 +
 +<code bash Flash to board>
 +tools/flash.sh --port /dev/ttyUSB0
 +</code>
 +
 +Connecting to the serial port gives us the NuttxShell.
 +<code >
 +screen /dev/ttyUSB0
 +</code>
 +
 ===== Bibliography ===== ===== Bibliography =====
  
 +[[http://www.nuttx.org/Documentation/NuttxPortingGuide.html#Introduction|NuttX porting guide]]
  
 +[[https://clkdiv8.com/wiki/doku.php|Sparrow Wireless Sensor Node]]
proiecte/nuttx-sparrow.1542919334.txt.gz · Last modified: 2018/11/22 22:42 by razvan.barbascu