Here are some questions and answers about the design of Tollos –
please let me know if you have any other questions that could be
- Some microcontroller development systems
provide a configuration language and tool which builds a custom ‘library’
the application is linked to. Why does Tollos not have a configuration
A configuration tool imposes another layer of complexity and tools
on the programmer. Instead, the Tollos libraries are intended to
be fixed, with configuration being resolved at link time.
For example, instead of requiring separately compiled system libraries
for each combination of chip and oscillator frequency, Tollos provides
a single library for each chip family, which can be compiled once
and then forgotten.
- Why do the ‘getting started’ pages use Windows
examples and scripts? Why not Linux?
Partly because Windows is the more complicated system, so it was
necessary to cover the need for a USB device driver, for example.
Also, the scripts are simple and should be easily ported to some
other scripting language. At the moment I’m concentrating on the
- Why does Tollos use a 25 Hz tick? Some other
systems use a 1kHz tick.
Tollos runs a 10 kHz SysTick. The user tick() routine is called
every 40 ms (400 SysTicks) by default because this is a suitable
interval for refreshing a display, but the API lets you choose any
tick interval >0 µs (including 1000, giving 1 kHz – suitable for
many robotic applications).
It is recommended that the tick interval be set to a multiple of
the internal SysTick (currently 100us) for accurate tick timing.
- Where is the network stack?
The target applications for Tollos are battery-driven, hand-held
devices with long running time. These don’t really have the power
budget for WiFi, and for connecting to a PC, laptop, or tablet, mini
USB is just as convenient as Ethernet and perhaps more appropriate.
However, there are some network stacks available which could be suitable
for use with Tollos.
- Why does the API use functions to alter GPIO
bits, instead of allowing direct manipulation of the hardware registers?
Allowing direct access to the ports for bit-twiddling requires exposing
the microcontroller details to the application at compile time; a
particular chip family would have to be selected in order to compile
an application. Further, the Tollos ‘glue’ for bits takes care of
configuration of the bits (pin selection, input/output, etc.) which
otherwise would differ depending on the microcontroller.
Although in practice one usually needs to know the device connections
in order to decide which pins to use, etc., the layering in Tollos
permits the possibility of abstracting this kind of detail more in
the future, and makes it simpler to move applications from one chip
family to another.