mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2024-12-29 04:50:03 +01:00
137 lines
5.9 KiB
Plaintext
137 lines
5.9 KiB
Plaintext
/**
|
||
@defgroup boards_fox fox
|
||
@ingroup boards
|
||
@brief Support for the fox board
|
||
|
||
## Components
|
||
|
||
| MCU | [ST2M32F103REY](http://www.st.com/web/catalog/mmc/FM141/SC1169/SS1031/LN1565/PF164485) – 32-bits |
|
||
|:------------- |:------------------------------------------------------------------------------------------------- |
|
||
| RAM | 64KiB |
|
||
| Flash | 512KiB |
|
||
| radio chipset | [AT86RF231](http://www.atmel.com/images/doc8111.pdf) |
|
||
| | a IEEE802.15.4-compliant radio at 2.4 GHz |
|
||
|
||
## Implementation Status
|
||
|
||
| Device | ID | Supported | Comments |
|
||
|:----------------- |:------------- |:----------|:------------------------- |
|
||
| MCU | [STM23F103REY](http://www.st.com/st-web-ui/static/active/en/resource/technical/document/reference_manual/CD00171190.pdf) | partly | Energy saving modes not fully utilized |
|
||
| Low-level driver | GPIO | yes | |
|
||
| | PWM | no | |
|
||
| | UART | full | |
|
||
| | I2C | yes | |
|
||
| | SPI | yes | one SPI device for now |
|
||
| | USB | no | |
|
||
| | RTT | yes | in progress |
|
||
| | RNG | no | no HW module |
|
||
| | Timer | full | |
|
||
| Radio Chip | AT86RF231 | partly | will be remodelled soon |
|
||
|
||
|
||
##### Note on at86rf231 radio driver
|
||
|
||
The current implementation of the radio driver for the at86rf231 chip uses
|
||
the basic operation modes. This gives
|
||
you basic sending and receiving functionality but no hardware address
|
||
filtering and no auto-ACKs etc. Due to the fact this radio device is an IEEE
|
||
802.15.4 compliant device it supports radio channels from 11 to 26. When trying
|
||
to set a channel out of range the driver returns an error and prints a message
|
||
with `DEVELHELP` enabled.
|
||
|
||
## Toolchains
|
||
|
||
See [ARM Family](https://github.com/RIOT-OS/RIOT/wiki/Family:-ARM)
|
||
|
||
Working:
|
||
* [gcc-arm-embedded](https://github.com/RIOT-OS/RIOT/wiki/Family:-ARM#gcc-
|
||
arm-embedded-toolchain)
|
||
* [gcc-linaro](https://github.com/RIOT-OS/RIOT/wiki/Family:-ARM#linaro-
|
||
toolchain)
|
||
|
||
### Programming and Debugging
|
||
|
||
In order to program (flash) and debug the node you need
|
||
[OpenOCD](http://openocd.sourceforge.net/) and an ARM version of gdb (`arm-none-
|
||
eabi-gdb`), which provided by most toolchains. Most Linux distributions provide
|
||
also a package for OpenOCD. The required configuration files are provided by
|
||
RIOT.
|
||
When starting the debugger with `make debug BOARD=fox` GDB connects to
|
||
openocd, loads the elf-file and puts the MCU into halt state. Before setting
|
||
breakpoints it is sometimes needed to use the following workflow
|
||
```
|
||
bash
|
||
monitor reset run
|
||
monitor reset halt
|
||
b <breakpoint>
|
||
c
|
||
```
|
||
For best debugging experience also change the `-Os` flag in
|
||
`Makefile.inlcude`'s `CFLAGS` variable to `-O0`.
|
||
|
||
## Debugging
|
||
|
||
For debugging you need to open a terminal. Here you simply have to call `make
|
||
debug` - assuming that the current directory is your application directory. It
|
||
establishes an openocd connection to the device and starts gdb connected to the
|
||
openocd instance. For example, it should look something like this
|
||
```
|
||
[user@host RIOT]$ cd examples/default/
|
||
[user@host default]$ BOARD=fox make
|
||
Building application default for fox w/ MCU stm32f1.
|
||
...
|
||
[user@hostdefault]$ BOARD=fox make debug
|
||
RIOT/boards/hikob-common/dist/debug.sh RIOT/boards/fox/dist/gdb.conf
|
||
RIOT/examples/default/bin/fox/default.elf
|
||
Open On-Chip Debugger 0.8.0 (2014-07-27-20:18)
|
||
Licensed under GNU GPL v2
|
||
For bug reports, read
|
||
http://openocd.sourceforge.net/doc/doxygen/bugs.html
|
||
GNU gdb (GNU Tools for ARM Embedded Processors) 7.4.1.20140401-cvs
|
||
Copyright (C) 2012 Free Software Foundation, Inc.
|
||
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
|
||
This is free software: you are free to change and redistribute it.
|
||
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
|
||
and "show warranty" for details.
|
||
This GDB was configured as "--host=x86_64-apple-darwin10 --target=arm-none-
|
||
eabi".
|
||
For bug reporting instructions, please see:
|
||
<http://www.gnu.org/software/gdb/bugs/>...
|
||
Reading symbols from RIOT/examples/default/bin/fox/default.elf...done.
|
||
idle_thread (arg=<optimized out>) at RIOT/core/kernel_init.c:67
|
||
67 lpm_set(LPM_IDLE);
|
||
JTAG tap: stm32f1x.cpu tap/device found: 0x3ba00477 (mfg: 0x23b, part:
|
||
0xba00, ver: 0x3)
|
||
JTAG tap: stm32f1x.bs tap/device found: 0x06414041 (mfg: 0x020, part: 0x6414,
|
||
ver: 0x0)
|
||
target state: halted
|
||
target halted due to debug-request, current mode: Thread
|
||
xPSR: 0x01000000 pc: 0x0800027c msp: 0x20002200
|
||
Loading section .text, size 0x6df4 lma 0x8000000
|
||
Loading section .ARM.exidx, size 0x8 lma 0x8006df4
|
||
Loading section .relocate, size 0x120 lma 0x8006dfc
|
||
Start address 0x8000000, load size 28444
|
||
Transfer rate: 11 KB/sec, 7111 bytes/write.
|
||
(gdb) c
|
||
Continuing.
|
||
```
|
||
|
||
The node will reboot and you can continue to use `gdb` like you're used to.
|
||
In some cases it
|
||
seems necessary to prepend a `monitor reset run` before executing continue.
|
||
In general you can
|
||
use openocd commands prepended by `monitor`.
|
||
In the case the node crashes it can be reset with the following sequence
|
||
```
|
||
Bash
|
||
(gdb) monitor reset halt
|
||
(gdb) monitor reset run
|
||
```
|
||
|
||
## Troubleshooting
|
||
|
||
For terminal output on OS X (`make term`) you need to install a driver:
|
||
http://www.ftdichip.com/Drivers/VCP.htm
|
||
http://www.ftdichip.com/Drivers/VCP.htm
|
||
*/
|