Blame view

RIOT/doc/doxygen/src/getting-started.md 5.06 KB
a752c7ab   elopes   add first test an...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
  Getting started                                              {#getting-started}
  ===============
  
  [TOC]
  
  Downloading RIOT code                                  {#downloading-riot-code}
  =====================
  You can obtain the latest RIOT code from
  our [Github](https://github.com/RIOT-OS/) repository either by
  [downloading the latest tarball](https://github.com/RIOT-OS/RIOT/releases) or
  by cloning the [git repository](https://github.com/RIOT-OS/RIOT).
  
  In order to clone the RIOT repository, you need the
  [Git revision control system](http://git-scm.com/) and run the following
  command:
  
  ~~~~~~~~ {.sh}
  git clone git://github.com/RIOT-OS/RIOT.git
  ~~~~~~~~
  
  Compiling RIOT                                                {#compiling-riot}
  ==============
  
  Setting up a toolchain                                {#setting-up-a-toolchain}
  ----------------------
  Depending on the hardware you want to use, you need to first install a
  corresponding toolchain. The Wiki on RIOT's Github page contains a lot of
  information that can help you with your platform:
  
  * [ARM-based platforms](https://github.com/RIOT-OS/RIOT/wiki/Family:-ARM)
  * [TI MSP430](https://github.com/RIOT-OS/RIOT/wiki/Family:-MSP430)
  * [Atmel ATmega](https://github.com/RIOT-OS/RIOT/wiki/Family%3A-ATmega)
  * [native](https://github.com/RIOT-OS/RIOT/wiki/Family:-native)
  
  The build system                                            {#the-build-system}
  ----------------
  RIOT uses [GNU make](https://www.gnu.org/software/make/) as build system. The
  simplest way to compile and link an application with RIOT, is to set up a
  Makefile providing at least the following variables:
  
   * `APPLICATION`: should contain the (unique) name of your application
   * `BOARD`: specifies the platform the application should be build for by
     default
   * `RIOTBASE`: specifies the path to your copy of the RIOT repository (note,
     that you may want to use `$(CURDIR)` here, to give a relative path)
  
  Additionally it has to include the `Makefile.include`, located in RIOT's root
  directory:
  
  ~~~~~~~~ {.mk}
  # a minimal application Makefile
  APPLICATION = mini-makefile
  BOARD ?= native
  RIOTBASE ?= $(CURDIR)/../RIOT
  
  include $(RIOTBASE)/Makefile.include
  ~~~~~~~~
  
  You can use Make's `?=` operator in order to allow overwriting
  variables from the command line. For example, you can easily specify the target
  platform, using the sample Makefile, by invoking make like this:
  
  ~~~~~~~~ {.sh}
  make BOARD=iotlab-m3
  ~~~~~~~~
  
  Besides typical targets like `clean`, `all`, or `doc`, RIOT provides the
  special targets `flash` and `term` to invoke the configured flashing and
  terminal tools for the specified platform. These targets use the variable
  `PORT` for the serial communication to the device. Neither this variable nor
  the targets `flash` and `term` are mandatory for the native port.
  
  For the native port, `PORT` has a special meaning: it is used to identify the
  tap interface if the `netdev_tap` module is used. The target `debug` can be
  used to invoke a debugger on some platforms. For the native port the additional
  targets such as `all-valgrind` and `valgrind` exist. Refer to
  `cpu/native/README.md` for additional information
  
  Some RIOT directories contain special Makefiles like `Makefile.base`,
  `Makefile.include` or `Makefile.dep`. The first one can be included into other
  Makefiles to define some standard targets. The files called `Makefile.include`
  are used in `boards` and `cpu` to append target specific information to
  variables like `INCLUDES`, setting the include paths. `Makefile.dep` serves to
  define dependencies.
  
  Unless specified otherwise, make will create an elf-file as well as an Intel
  hex file in the `bin` folder of your application directory.
  
  Learn more about the build system in the
  [Wiki](https://github.com/RIOT-OS/RIOT/wiki/The-Make-Build-System)
  
  Building and executing an example           {#building-and-executing-an-example}
  ---------------------------------
  RIOT provides a number of examples in the `examples/` directory. Every example
  has a README that documents its usage and its purpose. You can build them by
  typing
  
  ~~~~~~~~ {.sh}
  make BOARD=samr21-xpro
  ~~~~~~~~
  
  or
  
  ~~~~~~~~ {.sh}
  make all BOARD=samr21-xpro
  ~~~~~~~~
  
  into your shell.
  
  To flash the application to a board just type
  
  ~~~~~~~~ {.sh}
  make flash BOARD=samr21-xpro
  ~~~~~~~~
  
  You can then access the board via the serial interface:
  
  ~~~~~~~~ {.sh}
  make term BOARD=samr21-xpro
  ~~~~~~~~
  
  If you are using multiple boards you can use the `PORT` macro to specify the
  serial interface:
  
  ~~~~~~~~ {.sh}
  make term BOARD=samr21-xpro PORT=/dev/ttyACM1
  ~~~~~~~~
  
  Note that the `PORT` macro has a slightly different semantic in `native`. Here
  it is used to provide the name of the TAP interface you want to use for the
  virtualized networking capabilities of RIOT.
  
  We use `pyterm` as the default terminal application. It is shipped with RIOT in
  the `dist/tools/pyterm/` directory. If you choose to use another terminal
  program you can set `TERMPROG` (and if need be the `TERMFLAGS`) macros:
  
  ~~~~~~~~ {.sh}
  make -C examples/gnrc_networking/ term \
      BOARD=samr21-xpro \
      TERMPROG=gtkterm \
      TERMFLAGS="-s 115200 -p /dev/ttyACM0 -e"
  ~~~~~~~~