Welcome to the uracoli Blog

µracoli stands for microcontroller radio communications library and is intended to be a package that demonstrates capabilities and usage of Atmel's IEEE-802.15.4 radio transceivers AT86RF{230,231,212} in combination with AVR 8 bit microcontrollers (e.g. ATmega16, ATmega1281, ATmega128RFA1, ...).

Sonntag, 30. September 2012

Changes in uracoli Version 0.3.0

In order to improve the usage of uracoli, there are some changes that affect the usage.
  • libradio and libioutil libraries are combined to liburacoli
  • The HIF baudrate can now be predefined in board.cfg and overwritten on the command line
  • A python terminal program with TKinter GUI is available as alpha version
  • The wireshark interface script sniffer.py got a TKinter GUI and a custom wireshark dissector in LUA for the p2p protocoll is added.

Library Handling

A remarkable change is, that the libraries libradio_<board>.a and libioutil_<board>.a are combined to liburacoli_<board>.a. This change does not affect the code size of the applications since a library is just a collection of modules. Compared with a real library where you can borrow books, this change means that we moved two smaller libraries into a larger building but the number of books that you can lend stays the same.

The main advantage of this change is, that it shortens the linker command line:
avr-gcc .... -lradio_<board>.a -lioutil_<board>.a
changes to
avr-gcc .... -luracoli_<board>.a


In the new uracoli version the handling of the baud rate was mainly realized by hardcoded
numbers in the call of the HIF initialization function, e.g. hif_init(9600). Since the boards have different capabilities regarding its maximum baud rate, this is now (optionally)
reflected in the file board.cfg. The entry for an Atmel controller base base board looks now so:

comment    = REB Controller Base Board with REB23x/REB212 attached
image      =
include    = boards/board_cbb2xx.h
aliases    = cbb230b cbb231 cbb212 cbb232 cbb233
cpu        = atxmega256a3
bootoffset = 0x0000
ccflags    =
f_cpu      = 2000000UL
no_app     = diag rdiag wuart2 wibo albo
no_xmpl    =
baudrate   = 115200

This baudrate value is now written into the generated file board_cfg.h and looks so:

#elif defined(cbb230) || defined(cbb230b) || \
      defined(cbb231) || defined(cbb212) || \
      defined(cbb232) || defined(cbb233)
# define BOOT_LOADER_ADDRESS (0x0)
#  define HIF_DEFAULT_BAUDRATE (115200)
# endif
# include "boards/board_cbb2xx.h"

As you see with the ifdef,this value can be overwritten from the command line. The hand over of a user specified baudrate is available in the Makefiles of the source code package  uracoli-src-0.3.0.zip as well as in the scons build from the repository or  uracoli-devel-0.3.0.zip. A user defined baud rate of 1200 bit/s can be specified in the following way:

make -C wuart baudrate=1200 rdk230 
scons baudrate=1200 rdk230 

Python Terminal Programm - sterm.py

Oh no! Not yet another terminal programm. I had started sterm.py several years ago and I did forgot it in the past years. It is a tool that can handle multiple RS232/USB connections in parallel. You can configure as  many serial links as the size of your screen allows. Some basic features are a connect button, echo on/off, logfile on/off as well as a set of predefined macros that can be send over the serial line. All features can be configured in "win-ini" style config file. One of the usefull features of this tool that it is scriptable with Python scripts, that 
means sending characters to the device and waiting for a response, allow to write smart that can help automate testing.

Wireshark Sniffer

The sniffer proxy tool got  a major change. Its name is now sniffer.py rather then ieee802154.py. It sends the sniffed data now via stdout rather then a named pipe. The tool has now TKinter frontend, that provides GUI control of the channel setting, the data rate and starting and stopping of the sniffing. The command line reads now so:
python sniffer.py -p COM1 | wireshark -ki -

Currently sniffer.py always opens the GUI. In future releases there might be a headless option, if this is requested by users.

The scipt p2p.lua is an example dissector that decodes the P2P protocol (P2P: peer to peer), that is used by wibo, wuart and other radio based applications.

Keine Kommentare:

Kommentar veröffentlichen