osd-contiki/platform/ev-aducrf101mkxz/README.md
Jim Paris 6db05caed9 Fix radio hangups when trying to transmit with radio off.
The border-router tries to transmit and do other stuff after turning
the radio off, and the radio driver didn't handle that very well.
With this fix, it's no longer necessary to reset the border router
after starting tunslip6.
2014-07-23 16:21:53 -04:00

160 lines
5 KiB
Markdown

Building Contiki for the EV-ADuCRF101MKxZ Board
===============================================
On Debian/Ubuntu Linux:
-----------------------
For older versions of Ubuntu (prior to 14.04), add the external
package repository that provides recent versions of GCC for ARM:
sudo add-apt-repository -y ppa:terry.guo/gcc-arm-embedded
sudo apt-get update
For all systems, install the required development packages:
sudo apt-get install git make gcc-arm-none-eabi python-serial
Obtain the Contiki source code:
git clone https://github.com/contiki-os/contiki.git
Build Contiki's `example-abc`:
make -C contiki/examples/rime \
TARGET=ev-aducrf101mkxz \
example-abc.ev-aducrf101mkxz.hex
The default radio frequency can optionally be specified on the
command-line as follows. A clean rebuild may be needed when changing
it:
make -C contiki/examples/rime \
TARGET=ev-aducrf101mkxz \
RF_CHANNEL=915000000 \
clean \
example-abc.ev-aducrf101mkxz.hex
The code can be flashed to the eval board and tested using
[adi-cm3sd](https://github.com/jimparis/adi-cm3sd.git). Obtain
`adi-cm3sd`:
git clone https://github.com/jimparis/adi-cm3sd.git
Connect the evaluation board using its J-Link board, or any other
serial adapter. Flash `example-adc` and open a terminal by running:
adi-cm3sd/cm3sd.py -a contiki/examples/rime/example-abc.ev-aducrf101mkxz.hex \
/dev/serial/by-id/usb-SEGGER_J-Link_000541011111-if00
replacing `/dev/serial/by-id/usb-SEGGER_J-Link_000541011111-if00` with
the path to the correct serial device. Flash the same code on a
second evaluation board to see them communicate.
### IPv6 Example ###
#### Border Router ####
First, build and run the IPv6 `border-router` example:
make -C contiki/examples/ipv6/rpl-border-router \
TARGET=ev-aducrf101mkxz \
SERIAL_ID='"00001234"' \
border-router.ev-aducrf101mkxz.hex
adi-cm3sd/cm3sd.py -a contiki/examples/ipv6/rpl-border-router/border-router.ev-aducrf101mkxz.hex \
/dev/serial/by-id/usb-SEGGER_J-Link_000541011111-if00
After flashing, close the terminal with `CTRL-C`, then build and run
the SLIP tunnel on the host machine:
make -C contiki/tools tunslip6
sudo contiki/tools/tunslip6 \
-s /dev/serial/by-id/usb-SEGGER_J-Link_000541011111-if00 \
-B 115200 -v3 aaaa::1/64
Open the border router's home page at: http://[aaaa::3230:3030:3132:3334]/
#### Web Server ####
Then, build and flash the IPv6 `webserver6` example on another eval
board. The different `SERIAL_ID` ensures that the webserver uses a
link-local IP address that is different from that of the border
router:
make -C contiki/examples/webserver-ipv6 \
TARGET=ev-aducrf101mkxz \
SERIAL_ID='"00005678"' \
webserver6.ev-aducrf101mkxz.hex
adi-cm3sd/cm3sd.py -a contiki/examples/webserver-ipv6/webserver6.ev-aducrf101mkxz.hex \
/dev/serial/by-id/usb-SEGGER_J-Link_000541022222-if00
Open the web server's home page at: http://[aaaa::3230:3030:3536:3738]/
On Windows:
-----------
### Install prerequisites ###
Install [git](http://git-scm.com/download/win/) with default options.
Install MinGW as follows:
* Download and run [mingw-get-setup.exe](https://sourceforge.net/projects/mingw/files/latest/download).
* Select `Install`, `Continue`, and `Continue` again.
* Click `Basic Setup` on the left panel.
* Click the checkbox next to `mingw32-base`, then click `Mark for Installation`.
* Select 'Installation -> Apply Changes' from the menu bar.
* Click 'Apply', then close and quit the MinGW installer.
### Install toolchain ###
Contiki can be built with either GCC or IAR:
* **GCC**: Install
[GNU Tools for ARM Embedded Processors](https://launchpad.net/gcc-arm-embedded/+download).
Use the "Windows installer" version. Ensure that "Add path to
environment variable" is selected in the installer.
* **IAR**: Install
[IAR Embedded Workbench](http://www.iar.com/ewarm/).
### Building `example-abc` ###
Open a shell by right-clicking the desktop or any folder and
selecting `Git Bash`.
Obtain the Contiki source code:
git clone https://github.com/contiki-os/contiki.git
Build Contiki's `example-abc`:
* **GCC**
/c/mingw/bin/mingw32-make -C contiki/examples/rime \
TARGET=ev-aducrf101mkxz \
example-abc.ev-aducrf101mkxz.hex
* **IAR**
/c/mingw/bin/mingw32-make -C contiki/examples/rime \
IAR=1 \
TARGET=ev-aducrf101mkxz \
example-abc.ev-aducrf101mkxz.hex
Other build options like `RF_CHANNEL` and `SERIAL_ID` can be specified
as in the Linux instructions above.
### Flashing and running ###
The resulting file
`contiki/examples/rime/example-abc.ev-aducrf101mkxz.hex` can be
flashed to the evaluation board using ADI's
[CM3WSD](http://www.analog.com/static/imported-files/eval_boards/CM3WSD.zip)
utility.
Use a terminal emulator (e.g. HyperTerminal) at 115200 baud to see the
program output.