Commit graph

2959 commits

Author SHA1 Message Date
Michael LeMay 31ad67abd7 x86: Support configurable UART baud rate
This patch extends the Intel Quark X1000 SoC UART initialization API to
accept a numeric baud rate specification.
2016-08-03 07:58:51 -07:00
Michael LeMay e50b73c9b1 galileo: Add support for containerized build environment
This patch adds a Dockerfile for building a container configured as a
build environment for Intel Galileo boards.  This patch also provides
documentation for using the containerized build environment.  Finally, it
streamlines the instructions for booting Contiki on Galileo and includes
other documentation refinements.
2016-08-02 20:54:41 -07:00
Michael LeMay 836fa4d6fa galileo: Build link-stats.c when IPv6 is enabled
This is required by the IPv6 implementation in Contiki OS.
2016-07-31 17:03:42 -07:00
Sumankumar Panchal 6dfd358821 TSCH port for CC2538 based platforms. 2016-07-22 09:38:25 +05:30
George Oikonomou 4495d14702 Make ROM bootloader configurable through contiki- or project-conf.h 2016-07-17 00:26:52 +01:00
George Oikonomou 01590088d3 Update to latest CCxxwares: Srf06+EM drivers 2016-07-17 00:26:52 +01:00
George Oikonomou f6437b6086 Update to latest CCxxwares: Sensortag drivers 2016-07-17 00:26:52 +01:00
George Oikonomou 5de7b1bbac Update to latest CCxxwares: Launchpad drivers 2016-07-17 00:26:51 +01:00
George Oikonomou c42cb2b0cb Update to latest CCxxwares: common drivers 2016-07-17 00:26:51 +01:00
George Oikonomou c87e579b06 Adjust ContikiMAC timings for CC13xx PROP mode
#1684 slightly varied RF startup time and, as a result, threw ContikiMAC timing configuration off. This manifests itself with very poor CC13xx PROP mode radio performance, as documented in #1747.

This pull fixes this bug by slightly increasing ContikiMAC's inter-packet interval. This gives the receiver a little more time to respond with an ACK to unicast frames.

Fixes #1747
2016-07-17 00:04:07 +01:00
George Oikonomou dcad5e7e3f Merge pull request #1727 from g-oikonomou/contrib/cc26xx/trng
Add CC13xx/CC26xx TRNG Support
2016-07-16 23:34:53 +01:00
George Oikonomou fe571c7dc3 Merge pull request #1754 from atiselsts/enhancement/cc26xx_reduced_guard_time
CC26xx: change default TSCH guard time to 1.8ms
2016-07-16 19:47:16 +01:00
Atis Elsts 081ec100a4 TSCH: add RADIO_DELAY_BEFORE_DETECT to rx guard time when waiting for a packet to be received 2016-07-16 18:08:41 +01:00
Antonio Lignan 0d0e726b38 Merge pull request #1764 from alignan/pull/zoul-dht22
Added DHT22 sensor to Zoul-based platforms
2016-07-15 12:50:34 -05:00
Robert Olsson a8aa778b31 Removed unused file platform/avr-rss2/dev/ds18b20.c 2016-07-15 13:17:40 +02:00
Marko Gucanin 1fc9bbe315 added { } 2016-07-08 16:25:34 +02:00
Marko Gucanin 1a1d17143b return from exception handler if E_EXC_SYSCALL is generated 2016-07-06 16:28:47 +02:00
Marko Gucanin 74d04562df Revert "removed exception handler for SYSCALL, causing an infinite loop after calling vAHI_SwReset()"
This reverts commit c4def60cdd.
2016-07-06 15:45:15 +02:00
Oliver Schmidt 98a795b967 Merge pull request #1730 from groessler/something_to_pull
Some 6502 target changes
2016-07-06 09:17:39 +02:00
Marko Gucanin c4def60cdd removed exception handler for SYSCALL, causing an infinite loop after calling vAHI_SwReset() 2016-07-05 16:44:24 +02:00
Antonio Lignan d5e2a779d4 Added DHT22 sensor to Zoul-based platforms 2016-07-04 18:00:09 +02:00
Antonio Lignan 6360a09cc7 Merge pull request #1726 from feshie/pr-zoul-motes-flash-fix
zoul: Add support for flashing to multiple devices
2016-06-30 12:13:41 +02:00
Antonio Lignan 17d784ead3 Merge pull request #1745 from alignan/pull/z1-contiki-conf
Minor changes to z1/contiki-conf.h
2016-06-30 09:47:16 +02:00
Atis Elsts b6617f17c5 CC26xx: always request HF crystal oscillator at radio on() 2016-06-29 16:41:33 +03:00
Harald Pichler 349f6bf429 Merge branch 'contiki' into osd 2016-06-29 09:04:54 +02:00
George Oikonomou 91255f5a81 Merge pull request #1711 from xukai871105/master
One fix to sensorTag board_i2c.c
2016-06-28 23:55:02 +01:00
Atis Elsts 1e4141b589 CC26xx: change default TSCH guard time to 1.8ms 2016-06-29 01:14:12 +03:00
Harald Pichler 3c8e91d74e cleanup confilicrts 2016-06-28 16:37:16 +02:00
George Oikonomou 3a105f2141 Disable CC2650_FAST_RADIO_STARTUP by default
`CC2650_FAST_RADIO_STARTUP` is required for TSCH, but it currently breaks ContikiMAC. We set the default value to the one that will work with the default choice of RDC.

Fixes #1744
2016-06-27 17:20:26 +01:00
Arthur Fabre ab1652648e zoul: Add support for flashing to multiple devices
This adds support for flashing to multiple devices, by implementing the
$MOTES option used by the Z1.
This replaces the $PORT interface, as it only allowed flashing to one
device at a time, and the $MOTES interface was still used for other
tasks (such as getting a list of connected devices).

A foreach loop is used to dynamically create an upload rule per device
that needs to be flashed.
The "main" upload rule depends on the device specific ones.
This allows for parallel flashing.

The PORT variable can still be sued for backwards compatibility.

Changed the MOTES variable that makes a $(shell) call to not be
recursively expanded.
2016-06-27 11:23:45 +01:00
Antonio Lignan 108e43b103 Made configuration parameters easily overridable to be consistent with Travis CI tests 2016-06-25 23:17:26 +02:00
Antonio Lignan 99822545c5 Added BOARD_STRING to the Z1 platform 2016-06-24 23:58:32 +02:00
Antonio Lignan 0034322fe0 Made configuration parameters easily overridable from project-conf.h (without having to undef first) 2016-06-24 23:54:08 +02:00
Antonio Lignan 1002b7ffee Fixed spacing 2016-06-24 23:36:40 +02:00
Antonio Lignan 442e1be391 Moved project-conf.h inclusion to the top of contiki-conf.h 2016-06-24 23:34:23 +02:00
Christian Groessler c26085ec8c Some 6502 target changes
- platform/atarixl/Makefile.atarixl: put two more objects into high memory
- platform/atarixl/contiki-conf.h: define WWW_CONF_WGET_EXEC
- tools/6502/Makefile: add 'clean' target; remove unused CONTIKI define
2016-06-17 16:42:50 +02:00
Nicolas Tsiftes a8989f9f1c Merge pull request #1724 from nvt/coffee-simplify
Coffee: minor enhancements
2016-06-15 18:56:10 +02:00
George Oikonomou adfeaa5500 Add missing include 2016-06-15 10:31:55 +01:00
Nicolas Tsiftes 5010309005 Make the I/O semantics functionality in Coffee unconditional so that the API becomes consistent across platforms.
Change certain CPP conditionals into C conditionals, which should be possible for the compiler to optimize at runtime. This makes the source code easier to read.
2016-06-14 21:08:00 +02:00
Atis Elsts 3a99639294 cc26xx: implement CC2650_FAST_RADIO_STARTUP option, required for TSCH 2016-06-14 00:54:33 +03:00
Atis Elsts 3ff8aa8ad8 srf06-cc26xx: add node_id variable 2016-06-14 00:54:32 +03:00
Atis Elsts f99511f494 srf06-cc26xx: add default TSCH configuration for the platform 2016-06-14 00:54:32 +03:00
George Oikonomou 4b67e21d2e Merge pull request #1714 from alignan/pull/add-relay
Added generic relay driver for the zoul-based platforms
2016-06-13 19:45:46 +01:00
Simon Duquennoy 4fd8f67053 Merge pull request #1715 from sumanpanchal/zoul-tsch
TSCH port for Zolertia ReMote/Zoul.
2016-06-13 09:03:16 +02:00
Sumankumar Panchal 373fda46f7 TSCH port for Zolertia ReMote/Zoul. 2016-06-12 16:37:01 +05:30
Benoît Thébaudeau 9845973971 cc2538: Print SoC information upon startup
If STARTUP_CONF_VERBOSE is enabled, print SoC information upon startup.

Signed-off-by: Benoît Thébaudeau <benoit.thebaudeau.dev@gmail.com>
2016-06-11 23:23:38 +02:00
xukai bd0716b044 Merge remote-tracking branch 'contiki-os/master' 2016-06-10 12:54:59 +08:00
Antonio Lignan 092f0e62fe Added generic relay driver for the zoul-based platforms 2016-06-09 15:53:25 +02:00
Simon Duquennoy ed11320dc3 Platform cooja: provision 300 links for RPL non-storing mode 2016-06-08 14:02:46 +02:00
xukai a1ea6d311f Fix i2c bug in sensortag flatform. 2016-06-08 15:09:00 +08:00
Antonio Lignan ee0b02c819 Merge pull request #1684 from g-oikonomou/contrib/cc26xx/aux-ctrl-and-adc
Add CC13xx/CC26xx AUX controller module, ADC support, ALS driver and example
2016-06-07 14:36:28 +02:00
Antonio Lignan b3faefe602 Merge pull request #1433 from mdlemay/x86-mm
X86 memory management
2016-06-05 13:49:49 +02:00
Antonio Lignan c746ca105a Merge pull request #1705 from simonduq/pr/nrf52dk-rtimer-diff
Platform nrf52dk: use RTIMER_CLOCK_DIFF instead of RTIMER_CLOCK_LT
2016-06-03 21:59:25 +02:00
Simon Duquennoy 64679642f2 Saving ROM and RAM 2016-06-03 16:44:06 +02:00
Simon Duquennoy 752fef9e42 Added link-stats and nbr-table to avr-ravenusb makefile 2016-06-03 15:46:05 +02:00
Oliver Schmidt 0151a7c27e Merge pull request #1706 from oliverschmidt/master
Make use of new cl65 option --print-target-path.
2016-06-03 15:13:08 +02:00
Simon Duquennoy 1afaae3fd7 nrf52dk: enable 32bit rtimer 2016-06-03 14:14:28 +02:00
Oliver Schmidt ae0c5f0dd0 Make use of new cl65 option --print-target-path.
The new cl65 option --print-target-path allows to get rid of CC65_HOME altogether.
2016-06-03 13:30:25 +02:00
Simon Duquennoy dca929cd07 Platform nrf52dk: use RTIMER_CLOCK_DIFF instead of RTIMER_CLOCK_LT 2016-06-03 13:26:08 +02:00
Simon Duquennoy 26bf33c762 Merge pull request #1550 from thomas-ha/tsch-cc2538-port
Port of TSCH for CC2538
2016-06-02 21:33:55 +02:00
Antonio Lignan 7dd2f1144b Disabled rtimer redefinition, removed outdated address print and timer-test from regression tests 2016-06-02 10:50:22 +02:00
Antonio Lignan 34af72c047 Merge pull request #1609 from simonduq/pr/net-debug
Added net-debug.[ch] to provide debug functions even in the non-IP case
2016-06-01 23:52:34 +02:00
Antonio Lignan 6fc4e2535c Merge pull request #1665 from g-oikonomou/contrib/cc26xx-bsl
Consolidate .upload for all CC26xx/CC13xx boards and add login make target
2016-06-01 23:37:29 +02:00
Antonio Lignan c742d07803 Merge pull request #1695 from alignan/pull/fix-remote-pinout
Fixed CC2538/PIC labels being swapped
2016-06-01 23:34:42 +02:00
Antonio Lignan acf13a4e0d Merge pull request #1606 from OpenMote/master
Adapted OpenMote-CC2538 sensor drivers to Contiki sensor API.
2016-06-01 23:15:27 +02:00
Antonio Lignan 9e1c378919 Merge pull request #1469 from wbober/nrf52dk-pr
Add support for nRF52 DK platform
2016-06-01 23:11:39 +02:00
Antonio Lignan f065971efc Merge pull request #1619 from simonduq/pr/tsch-rtimer16-fix
Fix bug in TSCH for platforms with 16-bit rtimer
2016-06-01 23:03:50 +02:00
Antonio Lignan 4334990e16 Merge pull request #1686 from bthebaudeau/unified-cfs-coffee-examples
Unified CFS/Coffee examples
2016-06-01 22:00:13 +02:00
Antonio Lignan 429699d421 Merge pull request #1666 from g-oikonomou/contrib/cc1310-lp
Add support for the CC1310 LaunchPad (LAUNCHXL-CC1310)
2016-06-01 15:41:44 +02:00
Antonio Lignan 10601b2e5c Fixed CC2538/PIC labels being swapped 2016-06-01 14:28:53 +02:00
Pere Tuset 2b3cab18f4 Run uncrustify through ADXL346 driver. 2016-06-01 11:11:21 +02:00
Benoît Thébaudeau 0079b78966 zoul: Make it possible to override COFFEE_CONF_SIZE
The projects need to be able to override it with project-conf.h.

Signed-off-by: Benoît Thébaudeau <benoit.thebaudeau.dev@gmail.com>
2016-05-30 23:05:14 +02:00
George Oikonomou 2ec9c8ccf0 Add ALS support for Srf06 + CC13xx/CC26xxEM
This provides an example on how to use the CC13xx / CC26xx ADC
2016-05-29 15:05:13 +01:00
Antonio Lignan de64ed3975 Fixed typo 2016-05-24 10:50:20 +02:00
George Oikonomou c5bea81bb6 Merge pull request #1530 from herjulf/avr-rss2
Adding AtMegaXXRFR2 support and avr-rss2 platform
2016-05-15 20:38:50 +01:00
Robert Olsson 958dcf06f7 Remove wsnbridge. Let's focus sniffing efforts on sensniff. 2016-05-15 17:43:09 +02:00
Robert Olsson a11cfa10b4 Removed unneeded file for avr-rss2 sniffer 2016-05-15 16:36:19 +02:00
Robert Olsson 868f100366 Fix compilation warning in co2_sa_kxx-sensor.c 2016-05-15 16:23:29 +02:00
George Oikonomou 80efd730ae Extend the flash driver to support the MX25R1635F
According to the CC1310LP design files, the flash on it is the same as the flash on the CC2650 LP (MX25R8035F 8Mbit). However, the flash on some CC1310 LPs reportedly identifies itself as the 16Mbit one (MX25R1635F). Instruction sets are identical, we simply need to tell the driver to recognise this part's Device ID.
2016-05-14 20:34:08 +01:00
George Oikonomou 06f4463996 Extend documentation to include the CC1310 LaunchPad 2016-05-14 20:32:17 +01:00
George Oikonomou 099a933c90 Add support for the CC1310 LaunchPad 2016-05-14 20:32:17 +01:00
George Oikonomou cd5a0ef291 Consolidate .upload for all CC26xx/CC13xx boards
The block that controls the `.upload` target is unnecessarily replicated in multiple sub-board Makefiles. This was originally done because the SmartRF and the Launchpad can be programmed with the c2538-bsl script, whereas the sensortag cannot.

This commit moves the `cc2538-bsl` / `.upload` target logic to the top level cpu Makefile (`cpu/cc26xx-cc13xx/Makefile.cc26xx-cc13xx`). Board makefiles simply set the make variable `BOARD_SUPPORTS_BSL` to 1 to signal that they can be programmed by the BSL script. If `BOARD_SUPPORTS_BSL` is not equal to 1, trying to use the `.upload` target will return an error message.

For example:

```
$ make BOARD=sensortag/cc2650 cc26xx-demo.upload
using saved target 'srf06-cc26xx'
This board cannot be programmed with the ROM bootloader and therefore does not support the .upload target.
```
2016-05-14 19:30:53 +01:00
Robert Olsson 3c19e870f1 Moving the avr-rss2 platform examples to the global examples
location as suggested by the maintainers.
2016-05-14 12:05:19 +02:00
Pablo Corbalán 5bc158fa75 Add upload script to Makefile.launchpad 2016-05-13 23:06:33 +01:00
Nicolas Tsiftes eeff8bf970 Merge pull request #1656 from STclab/pr/platform-readme-update
Update to stm32nucleo-spirit1 platform README file.
2016-05-12 16:49:16 +02:00
Thomas 4870f9e8f3 Fix for IPv6 compilation and linkage errors
Two errors have been spotted, when IPv6 is enabled in the ravenusb
Project-Makefile:
#CONTIKI_NO_NET=1
CONTIKI_WITH_IPV6=1

The compile error results from a variable name mismatch in cdc_task.c
The variable 'r' is undeclared and should be renamed to 'route'

The linker also fails with 'undefined references'
This has been mediated by adding 'core/net' to Modules in the
Project-Makefile.
2016-05-09 18:18:28 +02:00
Marco Grella d9fd19eb2f Update to stm32nucleo-spirit1 platform README file. 2016-05-05 16:44:07 +02:00
Jens Dede 43fb479c9d Fix broken include 2016-05-02 18:57:48 +02:00
Antonio Lignan bea58c15bd Merge pull request #1485 from g-oikonomou/contrib/cc2650/launchpad
Add support for the CC2650 LaunchPad (LAUNCHXL-CC2650)
2016-04-29 11:13:05 +02:00
Simon Duquennoy bb5e5d5c6b TSCH: use RTIMER_CLOCK_DIFF to compute estimated drift, fixing a bug that would occur on 16-bit rtimer platforms 2016-04-27 14:13:33 +02:00
Simon Duquennoy abf08a7167 Added net-debug.[ch] to provide debug functions even in the non-IP case 2016-04-26 16:08:10 +02:00
Simon Duquennoy 90b886aa71 Csma: comply with IEEE 802.15.4 2016-04-25 08:52:48 -06:00
Pere Tuset 70d94133ea Updated OpenMote example and platform. 2016-04-25 01:50:23 +02:00
Ralf Schlatterbeck 04bbba6c12 Multi-platform support, osd-merkur-{128,256}
Rename guhRF platform to osd-merkur-256, previous osd-merkur platform is
now osd-merkur-128. Also check that everything is consistent.
Add both platforms to the regression tests.
Move redundant files in platform dev directory of both platforms to
cpu/avr/dev. Note that this probably needs some rework. Already
discovered some inconsistency in io definitions of both devices in the
avr/io.h includes. Added a workaround in the obvious cases.
The platform makefiles now set correct parameters for bootloader and for
reading mac-address from flash memory.
Factor the flash programming into cpu/avr and platform/osd-merkur* and
rework *all* osd example makefiles to use the new settings. Also update
all the flash.sh and run.sh to use the new settings.
The suli ledstrip modules (and osd example) have also been removed.
2016-04-22 17:59:40 +02:00
Michael LeMay 73774def6b x86, galileo: Add sample non-driver protection domain
This patch adds a simple non-driver protection domain sample to serve
as an example for defining other non-driver protection domains.  It
simply performs a ping-pong test of protection domain switching
latency during boot, including optional accesses to a private metadata
region, and prints out the results.
2016-04-22 08:16:43 -07:00
Michael LeMay 4cdb7ba9b6 x86: Add TSS-based protection domain support
This patch extends the protection domain framework with an additional
plugin to use Task-State Segment (TSS) structures to offload much of
the work of switching protection domains to the CPU.  This can save
space compared to paging, since paging requires two 4KiB page tables
and one 32-byte page table plus one whole-system TSS and an additional
32-byte data structure for each protection domain, whereas the
approach implemented by this patch just requires a 128-byte data
structure for each protection domain.  Only a small number of
protection domains will typically be used, so
n * 128 < 8328 + (n * 32).

For additional information, please refer to cpu/x86/mm/README.md.

GCC 6 is introducing named address spaces for the FS and GS segments
[1].  LLVM Clang also provides address spaces for the FS and GS
segments [2].  This patch also adds support to the multi-segment X86
memory management subsystem for using these features instead of inline
assembly blocks, which enables type checking to detect some address
space mismatches.

[1] https://gcc.gnu.org/onlinedocs/gcc/Named-Address-Spaces.html
[2] http://llvm.org/releases/3.3/tools/clang/docs/LanguageExtensions.html#target-specific-extensions
2016-04-22 08:16:39 -07:00
Nicolas Tsiftes 6ae1b4ab66 Merge pull request #1463 from MichaelKlemm/FixUsingAtmega128RFA1
Fixed using target AVR ATmega128RFA1
2016-04-21 14:30:35 +02:00
Boernsman 79df347afa added guhRF; added atmega256rfr2 support 2016-04-21 08:41:48 +02:00
Pere Tuset d9f4d97a41 Adapted OpenMote-CC2538 sensor drivers to Contiki sensor API. 2016-04-19 22:41:40 +02:00
Simon Duquennoy de51dd5c30 Merge pull request #1598 from mguc/jn516x_llsecinit_ccm-star
JN516x NETSTACK_LLSEC.init and ccm-star fix
2016-04-19 17:27:15 +02:00
Simon Duquennoy ba72f0a131 Merge pull request #1422 from kkrentz/packetbuf-cleanup
packetbuf cleanup
2016-04-19 17:23:47 +02:00
George Oikonomou 040bada378 Merge pull request #1590 from OpenMote/master
Add OpenMote-CC2538 platform and examples.
2016-04-18 21:26:15 +01:00
Pere Tuset 3e00ea55d1 Updated the OpenMote-CC2538 platform and examples. 2016-04-18 16:48:48 +02:00
kkrentz 6fb6fd5bb9 packetbuf: No more splitting of header and data 2016-04-15 03:12:40 -07:00
Marko Gucanin d8db093eb2 renamed ccm-star.c to jn516x-ccm-star.c, adapted Makefile accordingly 2016-04-14 16:55:48 +02:00
Marko Gucanin f1110bf6df removed NETSTACK_LLSEC.init 2016-04-14 16:52:32 +02:00
Antonio Lignan 8f064511d3 Merge pull request #1213 from joakimeriksson/dao_ack_handling
End-to-End DAO and DAO ACK handling for Contiki RPL.
2016-04-11 18:53:43 +02:00
Pere Tuset 1d3c37d6da Add OpenMote-CC2538 platform and examples. 2016-04-11 12:35:02 +02:00
Toni Lozano a81b4007b0 Allow to use up to 6xADC channels (now hardcoded), disabling the user button
(PA3) if ADC6 is enabled
2016-04-04 10:48:43 +02:00
Marko Gucanin 1818700bde JN516x clock module sign error fix 2016-03-31 13:51:03 +02:00
thomas-ha bc2f1b5a2a update delay constants 2016-03-29 10:24:38 +02:00
Oliver Schmidt 7a5249b066 Added a Contiki version of the CBM exec() system file; it uses PFS instead of POSIX.
It reduces the webbrowsers' size by 735 bytes.
2016-03-28 20:03:47 +02:00
Oliver Schmidt 4f28289df2 Added a pfs_remove() function and a pfs_seek() stub to the Commodore platforms.
- "Normalized" some Assembly code.
- Implemented CFS_APPEND in pfs_open().
- Made CFS_WRITE work in VICE's virtual disk/file system.
2016-03-28 14:07:35 +02:00
Joakim Eriksson ee97dc4bcd tuned configuration for rpl-collect and micaz platform 2016-03-26 09:45:39 +01:00
Joakim Eriksson 37c5f741e9 removed viztool usage of learned-from routing state that was removed 2016-03-26 09:45:37 +01:00
Michael LeMay 3908253038 x86: Add support for (paging-based) protection domains
This patch implements a simple, lightweight form of protection domains
using a pluggable framework.  Currently, the following plugin is
available:

 - Flat memory model with paging.

The overall goal of a protection domain implementation within this
framework is to define a set of resources that should be accessible to
each protection domain and to prevent that protection domain from
accessing other resources.  The details of each implementation of
protection domains may differ substantially, but they should all be
guided by the principle of least privilege.  However, that idealized
principle is balanced against the practical objectives of limiting the
number of relatively time-consuming context switches and minimizing
changes to existing code.

For additional information, please refer to cpu/x86/mm/README.md.

This patch also causes the C compiler to be used as the default linker
and assembler.
2016-03-21 17:18:06 -07:00
George Oikonomou de2ecf8e3a Document that LaunchPads can be programmed with cc2538-bsl 2016-03-21 00:00:38 +00:00
Michael LeMay 93126b57bb x86, galileo: Use IMRs to restrict DMA
This patch configures Isolated Memory Regions (IMRs) to block DMA to
code and data regions that do not contain any data that needs to be
DMA-accessible.
2016-03-17 08:35:49 -07:00
Michael LeMay 58a00b7c23 x86, galileo: Add driver for Isolated Memory Regions (IMRs)
The Intel Quark X1000 SoC includes support for Isolated Memory Regions
(IMRs), which are specified using range registers and associated
control registers that are accessible via the message bus.  This patch
adds a driver for accessing those registers.
2016-03-17 08:35:49 -07:00
Michael LeMay 25c07613c2 x86: Add driver for message bus
The Intel Quark X1000 SoC includes a message bus that is accessible
via PCI configuration registers.  It communicates to various SoC
components such as the Isolated Memory Region (IMR) registers and the
Remote Management Unit.  This patch adds a driver for accessing the
message bus.
2016-03-17 08:35:48 -07:00
harald42 f2af0c7329 change default channel from 26 to 25 2016-03-16 15:00:46 +01:00
Nicolas Tsiftes 9ab327090c Merge pull request #1444 from mdlemay/galileo-always-init-gpio
galileo: Enable I2C and GPIO interrupt sharing and centralize their initialization
2016-03-14 20:09:40 +01:00
Nicolas Tsiftes 862e43d9b0 Merge pull request #1523 from Zolertia/pull/z1-apify-sensors
Adapt Z1 on-board sensors to Contiki's API
2016-03-14 17:10:46 +01:00
Simon Duquennoy 1ffbafeaa6 Merge pull request #1375 from myrfy001/myrfy001-patch-1
off_t changed to signed to stay the same as POSIX
2016-03-14 16:42:13 +01:00
thomas-ha 400a09e82c comment 2016-03-11 11:05:04 +01:00
Robert Olsson 39094e3c41 CO2 sensor bug fix 2016-03-08 20:04:01 +01:00
thomas-ha 0e0dba932f disable TSCH HW frame filtering 2016-03-08 15:52:40 +01:00
thomas-ha 9ac14d1c7b defines needed for TSCH 2016-03-07 18:39:13 +01:00
Simon Duquennoy dea04c67d7 Change the default IPv6 prefix from aaaa::/64 to fd00::/64 2016-03-07 17:47:44 +01:00
Robert Olsson 07ec06ad09 Setting node_id and RIME linkaddr from EUI64 chip. 2016-03-06 21:37:25 +01:00
Oliver Schmidt 8b3d220761 Merge pull request #1542 from oliverschmidt/master
Adjusted segment names to match recent cc65 change.
2016-03-06 21:29:50 +01:00
Oliver Schmidt 6876b97466 Adjusted segment names to match recent cc65 change. 2016-03-06 21:11:18 +01:00
Nicolas Tsiftes fbf3aba152 Merge pull request #1513 from mdlemay/check-newlib-conf
galileo: build_newlib.sh: Exit on configuration error
2016-03-03 13:39:27 +01:00
Nicolas Tsiftes da5044acb2 Merge pull request #1514 from mdlemay/newlib-filter-patches
galileo: build_newlib.sh: Only apply patch files with the extension ".patch"
2016-03-03 13:38:56 +01:00
Harald Pichler daf2191555 add arduino folder 2016-02-27 22:13:12 +01:00
harald42 7d8254bd81 use uint32 for clock time 2016-02-25 09:32:21 +01:00
harald42 b462052bf5 CRLF will be replaced by LF 2016-02-25 08:20:41 +01:00
harald42 98e4451518 Merge branch 'contiki' into osd 2016-02-25 08:18:55 +01:00
Atis Elsts 9f1fedfbc1 avr-rss2 platform examples: remove some binary files 2016-02-23 11:59:29 +02:00
Atis Elsts d8f2129b17 avr-rss2 platform: Update README.md 2016-02-23 11:59:09 +02:00
Robert Olsson ce8e87d60e Adding the avr-rss2 platform based on AtMega256RFR2 2016-02-22 20:46:07 +01:00
Aitor Mejias 56aeb7cd7e Added Zolertia Zonik sound sensor test and drivers 2016-02-22 16:49:35 +01:00
Antonio Lignan 934cdbacca Adapted the ADXL345 sensor to Contiki's sensor API 2016-02-22 12:08:56 +01:00
Antonio Lignan 1be30d52dc Removed unused blocks and made functions static 2016-02-22 12:08:56 +01:00
Antonio Lignan 151f532225 Adapted the TMP102 sensor to Contiki's sensor API 2016-02-22 12:08:56 +01:00
Ralf Schlatterbeck de6477efa8 Fix run.sh scripts to use jumptable of bootloader
Otherwise a crash results with a bootloader compiled with a newer AVR
toolchain (e.g. Debian Jessie). If you still have an ages-old bootloader
without a jump-table, as a short-term measure you can revert this change
in your run.sh. As a long-term fix we recommend you get your bootloader
updated!
2016-02-19 17:32:09 +01:00
Michael LeMay 58874ea25d x86, galileo: Refactor I2C and GPIO initialization
This patch revises the I2C and GPIO initialization code to always be
run during platform boot rather than within each process that requires
it.

This patch also revises the gpio-output example to use a pin that is
set as an output by the default pinmux configuration.  Previously, it
used a pin that was set as an output by the pinmux configuration that
is in effect when the OS does not change the pinmux configuration.
2016-02-16 21:19:44 -08:00
Michael LeMay c815fa4511 x86: Use shared ISR for I2C and GPIO
This patch permits interrupts to be generated by both the I2C and GPIO
controllers for simultaneously-executing applications. The controllers
share a single interrupt pin, INTC. Prior to this patch,
quarkX1000_gpio_init() routed INTA to PIRQC and IRQ 10 (due to an
incorrect assumption that INTA is connected to the GPIO controller),
and quarkX1000_i2c_init() routed INTC to PIRQC and IRQ 9. The I2C
controller initialization is a prerequisite for GPIO initialization,
so the final configuration was that INTA and INTC were both routed to
PIRQC and IRQ 10. Thus, only the GPIO ISR was being invoked, even if
the I2C controller was actually responsible for the interrupt.

This patch refactors the I2C and GPIO ISR setup and handler code so
that the shared portions are combined in
cpu/x86/drivers/legacy_pc/shared-isr.[ch].  The I2C and GPIO drivers
communicate their interrupt information to the shared component by
placing structures in a specific section of the binary.
2016-02-16 21:19:44 -08:00
Michael LeMay 66629ae58f galileo: build_newlib.sh: Exit on configuration error
This patch adds a check for the result of the newlib configure command
and immediately exits the build_newlib.sh script if configure fails.
2016-02-16 11:36:57 -08:00
Toni Lozano 2cbde75b02 Removed PM10 code lines from adc-sensors driver 2016-02-15 14:45:26 +01:00
Antonio Lignan 0dbed519a5 Merge pull request #1507 from Zolertia/remote-voc-test
Added VOC (iAQ-Core) drivers and test application
2016-02-15 12:21:32 +01:00
Aitor Mejias cb1e7c2c45 Added VOC (iAQ-Core) drivers and test application 2016-02-15 11:00:48 +01:00
Wojciech Bober d39ad95db5 nrf52dk: platform support 2016-02-15 09:37:38 +01:00
Antonio Lignan 25ff850a43 Weather meter: replaced rtimer by ctimer as it was breaking contikimac 2016-02-13 22:33:05 +01:00
Michael LeMay 16145f645a galileo: build_newlib.sh: Only apply patch files with the extension ".patch"
This avoids treating as patches other files that may happen to be
present in the newlib patch directory in a working tree.
2016-02-12 13:45:25 -08:00
Simon Duquennoy ebdc536d61 Merge pull request #1496 from simonduq/pr/jn516x-serial-input
jn516x enable serial input whenever there is no fallback interface
2016-02-04 10:02:15 +01:00
Simon Duquennoy f87f7e7edd jn516x enable serial input whenever there is no fallback interface 2016-02-03 17:53:29 +01:00
Simon Duquennoy 658cf0d2cc Reworking jn516x default configuration and examples 2016-02-03 10:35:48 +01:00
Nicolas Tsiftes eef96f3ba7 Merge pull request #1480 from mdlemay/revise-clang-flags
galileo: Revise include flags for LLVM Clang
2016-02-01 14:25:53 +01:00
Simon Duquennoy 7c3108bf3b jn516x: flush only uart Tx FIFO in main loop, leaving Rx FIFO intact 2016-02-01 13:36:18 +01:00
Antonio Lignan 35345cdb40 Fixed casts and calculations for the wind direction circular averaging 2016-01-31 22:51:08 +01:00
George Oikonomou deb633216c Document support for the CC2650 LaunchPad 2016-01-28 11:23:20 +00:00
George Oikonomou 387bb96ca4 Add support for the CC2650 LaunchPad 2016-01-28 11:23:20 +00:00
George Oikonomou 5eb0470ad4 Move the SPI and Ext Flash Driver to a common directory
This commit creates a `common` directory, aimed to host drivers supported by multiple boards of the CC13xx/CC26xx family.

We move the Sensortag SPI and External Flash drivers to this location and we change the Sensortag build system to pull the  respective files from therein.
2016-01-28 11:23:20 +00:00
George Oikonomou 24871b0702 Extend the Sensortag external flash Driver to support more parts
The driver currently supports two Winbond external flash parts with identical instruction sets. The instruction set of the Macronix MX25R8035F appears to be a superset. We therefore change the driver to add the MID/DID of the Macronix to the list of supported parts.

This will subsequently allow us to share the same driver for both the SensorTag and the CC2650 LauchPad.
2016-01-28 11:23:19 +00:00
George Oikonomou 7d6966b22c Merge pull request #1483 from Zolertia/pm10-sensor
Added PM10, VAC and AAC sensor drivers
2016-01-27 11:47:07 +00:00
Toni Lozano 1f6dafecb0 Modified ADC measurement of PM10 driver to include adc-zoul direct access 2016-01-26 17:55:48 +01:00
Antonio Lignan 8337843d69 Minor fixes 2016-01-26 09:45:43 +01:00
Michael LeMay 6557194fc5 galileo: Revise include flags for LLVM Clang
This patch revises the compiler flags when LLVM Clang is in use to
cause Clang to automatically use its built-in header files rather than
those for GCC.
2016-01-25 14:01:16 -08:00
Antonio Lignan 9f1376d37a Merge pull request #1453 from g-oikonomou/contrib/test-with-arm-gcc-5
Change travis arm tests to use gcc-arm-embedded v5
2016-01-25 21:32:28 +01:00
Toni Lozano 31e6cc48ca Solved doxygen comments information from VAC, AAC and PM10 sensor files 2016-01-25 18:13:00 +01:00
Toni Lozano 42e1beb931 Added PM10 GP2Y1010AU0F sensor driver and demo test 2016-01-25 10:06:17 +01:00
Toni Lozano 4907842821 Added parameters of aac-sensor on adc-sensors file and adapted AAC and VAC test files for correct results 2016-01-25 10:05:43 +01:00
Toni Lozano 1fca3e810a Added PM10 and VAC parameters to adc_sensors driver 2016-01-25 10:04:25 +01:00
Antonio Lignan d4251d7c3b Merge pull request #1470 from alignan/pull/grove-rgb-backlight-lcd
Ported Grove LCD with RGB backlight for the Zoul platforms
2016-01-25 09:54:25 +01:00
George Oikonomou 9e9e6d07b0 Adjust READMEs to point explicitly to the arm-gcc version used by travis 2016-01-24 13:59:19 +00:00
Antonio Lignan 9a5682b75b Merge pull request #1476 from alignan/pull/update-weather-meter
Updated to new adc-zoul renaming
2016-01-23 16:20:22 +01:00
Antonio Lignan 246b01095f Ported Grove LCD with RGB backlight for the Zoul platforms 2016-01-23 15:52:29 +01:00
Antonio Lignan 66ebca3ade Updated to new adc-zoul renaming 2016-01-23 15:42:13 +01:00
Antonio Lignan 9a80c0098f Added zero-calibration function and added offset values to the structure 2016-01-22 16:58:46 +01:00
Antonio Lignan 426fa24e50 Clear interrupt and trigger callback if new data is generated 2016-01-22 16:58:46 +01:00
Antonio Lignan f5b52e8094 Ported Grove's 3-axis gyroscope sensor (based on ITG-3200) 2016-01-22 16:58:46 +01:00
Antonio Lignan 6351462e89 Unified BMP180 and BMP085 drivers 2016-01-22 16:11:49 +01:00
Antonio Lignan ec45369d1b Merge pull request #1466 from alignan/pull/weather-meter
Add driver for the Sparkfun Weather meter station
2016-01-22 15:18:14 +01:00
Adam Dunkels 7128a6a178 Merge pull request #1258 from joakimeriksson/multiple-reassembly-fix
6LoWPAN - multiple reassembly fix and cleanup
2016-01-22 07:15:18 +01:00
Antonio Lignan 98ed8a29a0 Removed harsh restriction on mask values and disabled debug flags 2016-01-19 22:28:09 +01:00
Antonio Lignan a6c30b4e09 Fixed missing static keyword in both zoul-demo and weather meter driver 2016-01-19 22:24:53 +01:00
Antonio Lignan 366f11d5df Uncrustified weather meter driver and example 2016-01-19 18:03:16 +01:00
Antonio Lignan 81bec49a40 Changed fixed 2 minute integration period to allow overriding 2016-01-19 18:00:18 +01:00
Antonio Lignan 0902e0fc6d Added degree converted value for the wind vane sensor.
Also added a 2-minutes average wind direction value, replaced the 240 bytes buffer from the reference example, but probably there's room for efficiency improvement
2016-01-19 17:47:46 +01:00
Antonio Lignan 61f1516369 Reworked instant wind speed calculation and extended the available wind speed return values 2016-01-19 17:47:46 +01:00
Antonio Lignan 0cb80b0605 Prevent calculations if tick is zero 2016-01-19 17:47:46 +01:00
Antonio Lignan aacbcd904f Added interrupt configuration for the weather meter 2016-01-19 17:47:46 +01:00
Antonio Lignan 103911f619 Added driver for the Sparkfun's weather meter station 2016-01-19 17:47:46 +01:00
Joakim Eriksson d4dc45e096 updated sicslowpan documentation and platform configurations 2016-01-19 15:27:14 +01:00
Antonio Lignan 2295ecdbd9 Renamed adc-sensors/adc-wrapper to adc-zoul/adc-sensors, to have a better wording reflecting the intented use 2016-01-17 23:04:34 +01:00
Antonio Lignan 503abb4415 ADC wrapper for the Zoul-based platforms, allows to add analogue sensors over the existing adc interface 2016-01-17 22:40:06 +01:00
Antonio Lignan ac07e848b7 Minor fixes to file descriptions and disable DEBUG switches 2016-01-17 21:52:34 +01:00
Antonio Lignan 2bb7ac9cc0 Merge pull request #1451 from g-oikonomou/bugfix/sensortag/select
Rename select() in various sensortag sensor drivers
2016-01-17 00:08:37 +01:00
Michael Klemm a40e28a7c8 Fixed using target AVR ATmega128RFA1
Set operating speed to 16MHz and added missing dependency to llsec.
This fix was tested with sparkfun ATmega128RFA1 Dev Board.
2016-01-16 12:45:21 +01:00
Antonio Lignan 99f0c9f19b Merge pull request #1457 from alignan/pull/motion-sensor
Add support for digital motion/presence sensors
2016-01-11 20:30:09 +01:00
Antonio Lignan 57f4134c9e Merge pull request #1454 from alignan/pull/sht25-sensor
Fixes and enhancements for the SHT25 sensor
2016-01-11 20:29:14 +01:00
Antonio Lignan 94657b7a72 Merge pull request #1449 from alignan/pull/bmp085-sensor
BMP085 barometric sensor for the RE-Mote platform
2016-01-11 20:28:35 +01:00
Antonio Lignan c644a32dc7 Added support for digital presence/motion sensors 2016-01-11 18:36:31 +01:00
Antonio Lignan fefb84596e Fixed filter value preventing from initializing the ADC 2016-01-11 17:21:23 +01:00
George Oikonomou c394302c44 Merge pull request #1446 from alignan/pull/tsl2563-sensor
Enhanced TSL2563 driver for the Zoul module (RE-Mote/Firefly)
2016-01-11 11:21:51 +00:00
Antonio Lignan 48eb2a4fe2 Uncrustify changes 2016-01-10 23:36:00 +01:00
Antonio Lignan d53a62187d Added extra features of the SHT25 sensor 2016-01-10 23:33:33 +01:00
Antonio Lignan 97a7e98ac5 Fixed SHT25 sensor 2016-01-10 23:33:33 +01:00
Antonio Lignan 564c3a9d28 Fixed pressure calculation as previous temperature compensation was missing 2016-01-10 21:37:03 +01:00
George Oikonomou 6933b35bb5 Rename select() in various sensortag sensor drivers
This is to prevent a compile error caused by function prototype conflict between a function called `select()` (present in a number of sensortag peripheral drivers) and the one in `sys/select.h`. The error manifests itself with gcc-arm-embedded version 5.2.1 20151202 (2015-q4).

To fix the error we simply rename our function.

Fixes #1434
2016-01-10 15:47:34 +00:00
George Oikonomou fa40d2b1fc Remove documentation references to the Sensinode platform
This is part of a set of commits that will obsolete the Sensinode platform
2016-01-10 15:09:31 +00:00
George Oikonomou 707353f71b Remove Sensinode platform, cpu, example and tools files
This is part of a set of commits that will obsolete the Sensinode platform
2016-01-10 15:01:58 +00:00
Antonio Lignan 7b953091e5 Added BMP085 barometric sensor for the Zoul platform 2016-01-10 04:17:26 +01:00
Antonio Lignan 7abee394cb Initialized interrupt thresholds and added missing check 2016-01-10 04:09:07 +01:00
Antonio Lignan a8a1ebf8b5 Added interruption feature to the TSL2563 driver 2016-01-08 15:14:37 +01:00
Benoît Thébaudeau 0eab95ec4c Merge pull request #1443 from bthebaudeau/cc2538-new-aes-modes
cc2538: Complete support of hardware AES modes of operation
2016-01-07 23:27:06 +01:00
Simon Duquennoy edf85dc1f2 Merge pull request #1445 from TeVeDe/master
Changed NXP maintainers for JN516x platform
2016-01-07 14:45:24 +01:00
Antonio Lignan 881e78cb60 Rewamped TSL2563 light sensor 2016-01-07 12:53:31 +01:00
Theo van Daele 94143f93ff Changed NXP maintainers for JN516x platform 2016-01-07 09:47:29 +01:00
Benoît Thébaudeau ccceb63e88 cc2538: Add crypto driver and example for AES-GCM
Signed-off-by: Benoît Thébaudeau <benoit.thebaudeau.dev@gmail.com>
2016-01-06 23:22:54 +01:00
Benoît Thébaudeau e77e9861fe cc2538: Add crypto driver and example for AES-CBC-MAC
Signed-off-by: Benoît Thébaudeau <benoit.thebaudeau.dev@gmail.com>
2016-01-06 23:22:53 +01:00
Benoît Thébaudeau 47c24cab11 cc2538: Add crypto driver and example for AES-CTR
Signed-off-by: Benoît Thébaudeau <benoit.thebaudeau.dev@gmail.com>
2016-01-06 23:22:53 +01:00
Benoît Thébaudeau cf5e9557f8 cc2538: Add crypto driver and example for AES-CBC
Signed-off-by: Benoît Thébaudeau <benoit.thebaudeau.dev@gmail.com>
2016-01-06 22:01:41 +01:00
Harald Pichler 428131e8a8 use dynamic sleep for loop 2016-01-06 21:57:29 +01:00
Benoît Thébaudeau 69eacbddbe cc2538: Add AES-CCM* driver
Signed-off-by: Benoît Thébaudeau <benoit.thebaudeau.dev@gmail.com>
2016-01-04 00:28:27 +01:00
kkrentz 24cb05059a CC2538: Add AES-128 driver 2016-01-04 00:28:27 +01:00
Benoît Thébaudeau 3dbe4c9403 cc2538: Add crypto driver and example for AES-ECB
Signed-off-by: Benoît Thébaudeau <benoit.thebaudeau.dev@gmail.com>
2016-01-04 00:28:26 +01:00
Antonio Lignan ca919ab0b0 Merge pull request #1196 from otcshare/x86
New platform: Intel Galileo Board
2015-12-23 12:33:47 +01:00
Antonio Lignan d9546991df Merge pull request #1424 from alignan/pull/remote-power-mgmt
RE-Mote power management support
2015-12-23 12:27:16 +01:00
Michael LeMay b4523b9130 galileo: Fix broken link in README.md
This patch fixes a broken link in README.md to serial cable connection
instructions.
2015-12-21 08:06:14 -02:00
Michael LeMay 13be942d40 galileo: Fix code style violations 2015-12-21 08:06:14 -02:00
Michael LeMay e14761c26b galileo: Document prerequisites for building on Ubuntu Linux
This patch documents the prerequisites for building on Ubuntu Linux in
the Galileo platform README.
2015-12-21 08:06:14 -02:00
Michael LeMay 09d168da04 galileo: Add support for old versions of GNU Make
This patch revises a Makefile to avoid using a feature that is
incompatible with GNU Make v.3.81.
2015-12-21 08:06:14 -02:00
Michael LeMay c75e9466f6 galileo: Fix bug in newlib build script
This patch fixes a bug in the newlib build script that causes it to
not delete an old source directory as intended prior to rebuilding the
library.
2015-12-21 08:06:14 -02:00
Michael LeMay f85654a82f x86, galileo: Add UEFI support
This patch adds support for optionally building EFI binaries in
addition to Multiboot ELF binaries.  It includes a script,
build_uefi.sh, that downloads tool and library sources from the EDK II
project, builds the GenFw tool that is used to create UEFI binaries,
and creates a makefile that is included from the main x86 common
makefile and enables UEFI support in the Contiki build system.  If the
script is not run prior to building Contiki, then an informational
message will be displayed with instructions for running build_uefi.sh
if UEFI support is desired.  This patch also adds the path to the
auto-generated makefile to .gitignore.

This patch modifies the linker script for the Intel Quark X1000 to
account for the output file section offsets and alignment expectations
of the EDK II GenFw project.

This patch also adds a newlib patch to remove the weak symbol
attribute from floating point stdio support routines.  See
<newlib>/newlib/README for an explanation of how the newlib developers
intended for _printf_float and _scanf_float to be linked.  Newlib
declares them as weak symbols with the intention that developers would
force them to be linked only when needed using a linker command line
option.  However, some but not all Contiki programs require them, so
we cannot simply always include or exclude them.  Instead, we remove
the weak symbol attributes and rely on the linker to automatically
determine whether or not they should be linked.  This avoids an issue
in which weak symbols were undefined in the intermediate DLL generated
as part of the UEFI build process.  That resulted in the GenFw program
emitting "ERROR 3000" messages when it encountered relocations
referencing such an undefined symbol.

Finally, this patch updates README.md to both make some revisions to
account for the UART support introduced in previous patches as well as
to provide instructions for using the UEFI support.
2015-12-21 08:06:14 -02:00
Michael LeMay b915e7d5e3 galileo: Omit exception handling unwind tables
This patch modifies the newlib and Contiki C and C++ compiler flags to
omit exception handling unwind tables (see
http://wiki.dwarfstd.org/index.php?title=Exception_Handling).
Removing these tables saves space in debug builds and has not caused
any readily-apparent functional changes.

Here is the size listing for an example program built without this
patch:
   text	   data	    bss	    dec	    hex	filename
  76002	   1508	  21224	  98734	  181ae	all-timers.galileo

Here is the size listing for the same program with this patch:
   text	   data	    bss	    dec	    hex	filename
  72918	   1508	  21224	  95650	  175a2	all-timers.galileo

The primary motivation for this patch is to help enable UEFI support.
The .eh_frame and .eh_frame_hdr sections that are otherwise generated
are treated as code sections by the EDK2 GenFw program, since they are
read-only alloc sections.  They get grouped with the actual code
sections, ahead of the data sections.  This perturbs symbols and
complicates debugging.
2015-12-21 08:06:14 -02:00
Michael LeMay 38206e3980 galileo: Add Ethernet support
This patch adds support for Ethernet to the Intel Galileo port.  It
uses the Intel Quark X1000 Ethernet driver.  It initializes the first
Ethernet interface and starts some common network services.  By
default, it uses the following addresses:
 - Host: 192.0.2.2
 - Netmask: 255.255.255.0
 - Default gateway: 192.0.2.1
 - DNS server: (same as default gateway)
These settings can be changed by editing eth-conf.c.
2015-12-21 08:06:14 -02:00
Ricardo de Almeida Gonzaga 93c7988069 x86: Add Galileo pinmux support
This patch adds the galileo-pinmux.c and galileo-pinmux.h files,
which support access to pinmux configuration through a function
interface.

This is not 100% supported yet due to some pinmux paths
need Quark X1000 GPIO (legacy and non-legacy) configurations.

After we finish to implement Quark X1000 GPIO driver we'll add
support for this.
2015-12-21 08:06:14 -02:00
Ricardo de Almeida Gonzaga 781375f1d1 x86: Add PCA9685 support
This patch adds pwm-pca9685.c and pwm-pca9685.h files,
which support access to I2C-based PCA9685 PWM controller
configuration register through a function interface.

The PCA9685 is an I2C-bus controlled 16-channel LED controller
optimized for Red/Green/Blue/Amber (RGBA) color backlighting
applications. Each LED output has its own 12-bit resolution
(4096 steps) fixed frequency individual PWM controller that
operates at a programmable frequency from a typical of 24 Hz to
1526 Hz with a duty cycle that is adjustable from 0 % to 100 %
to allow the LED to be set to a specific brightness value.
More about PCA9685 can be found in its datasheet[1].

This driver is needed in order to configure Galileo pinmux.

[1] - http://www.nxp.com/documents/data_sheet/PCA9685.pdf
2015-12-21 08:06:14 -02:00
Ricardo de Almeida Gonzaga 495dcd659a x86: Add PCAL9535A support
This patch adds gpio-pcal9535a.c and gpio-pcal9535a.h files,
which support access to I2C-based PCAL9535A GPIO controller
configuration register through a function interface.

The PCAL9535A is a low-voltage 16-bit GPIO expander with interrupt
and reset for I2C-bus/SMBus applications. It contains the PCA9535
register set of four pairs of 8-bit Configuration, Input, Output,
and Polarity Inversion registers, and additionally, the PCAL9535A has
Agile I/O, which are additional features specifically designed to
enhance the I/O. More about PCAL9535A can be found in its datasheet[1].

This driver is needed in order to configure Galileo pinmux.

[1] - http://www.nxp.com/documents/data_sheet/PCAL9535A.pdf
2015-12-21 08:06:14 -02:00
Andre Guedes 6b433aede1 x86: Improve release binary size
This patch adds -ffunction-sections and -fdata-sections to the
'release' CFLAGS so each function and data is place into its
own section in the output file. It also adds --gc-section to
the 'release' LDFLAGS so the linker removes the sections which
are not referenced.

This patch also adds -ffunction-sections and -fdata-sections
options to CFLAGS from build_newlib.sh. This increases newlib
static libraries size, however, the Contiki image shrinks even
more since --gc-section removes "dead code" from newlib.

As a practical effect, all unused function and data (as well as
sections such as .eh_frame) are striped out from the final elf
binary. This shrinks our release binary drastically.

Finally, to prevent --gc-section from removing .multiboot section,
this patch adds KEEP(*(.multiboot)) to quarkX1000.ld.
2015-12-21 08:06:14 -02:00
Michael LeMay 0dcd5e9b5a x86: Revise CFLAGS and LDFLAGS for LLVM Clang compatibility
This patch slightly revises CFLAGS and LDFLAGS to specify the
optimization and debugging options and linker script in a way that is
compatible with using Clang as the C compiler and to invoke the linker
(i.e. CC = clang and LD = clang).
2015-12-21 08:06:14 -02:00
Michael LeMay 17b855aac9 galileo: Replace non-halting core implementation of assert with the halting one from newlib
This patch modifies the include order to include headers from newlib
ahead of those from the core of Contiki.  The only header file names
that are common between Contiki and newlib are assert.h and config.h,
but the config.h files in Contiki are only located in ports for other
CPUs so they are irrelevant to this patch.  The motivation for this
patch is to cause files that include assert.h to include the one from
newlib that halts when an assertion fails.  The assert implementation
in the core of Contiki does not halt when an assertion fails.

This patch also adds newlib syscall stubs that are required by the
newlib assert implementation and the _exit syscall function that halts
the system.

Finally, this patch updates some other newlib syscall stubs to
properly indicate their status as unsupported syscalls.
2015-12-21 08:06:14 -02:00
Michael LeMay 06e25c487a galileo: Correct README.md to explain how to verify boot with UART
This patch revises README.md to mention the UART support introduced by
earlier patches in the section about verifying that Contiki is
running.  It also revises the serial console setup instructions to
focus on the more thoroughly tested option.
2015-12-21 08:06:14 -02:00
Andre Guedes e41bed319f galileo: Revise stdlib static linking
This patch does some refactoring so we are able to statically link
against standard libraries in a more usual way.
2015-12-21 08:06:14 -02:00
Andre Guedes 7043aa41b3 galileo: Fix newlib-syscalls issue in Makefile
This patch removes 'newlib-syscalls.c' from CONTIKI_SOURCEFILES variable
and appends it to PROJECT_SOURCEFILES. This way the buildsystem will
automatically consider the newlib-syscalls object code during linking
time.
2015-12-21 08:06:14 -02:00
Andre Guedes c9020d95e7 x86: Build release image
This patch adds support for building release images. The main difference
between release images and default images is that the former is optimized
for size while the latter is "optimized" for debugging. To build a release
image, the BUILD_RELEASE variable should be set to 1. For instance, the
following command build a release image from the hello-world application:
$ cd examples/hello-world && make TARGET=galileo BUILD_RELEASE=1

To optimize for size we use the '-Os' option from gcc. This option also
enables the strict aliasing optimization. This generates lots of warning
messages since we use the '-Wall' option and lots of code in core/net/
break the strict-aliasing rules. Some test have shown that the strict
aliasing optimization it not taking effect in the final binary. For that
reasons, this patch manually disables the optimization. Also, the release
image is stripped.

For the sake of comparison, below follows the output from 'wc' and 'size'
for both debugging (default) and release images.

Default image:
$  wc -c hello-world.galileo
71112 hello-world.galileo
$ size hello-world.galileo
   text    data     bss     dec     hex filename
  20379    1188   12808   34375    8647 hello-world.galileo

Release image:
$ wc -c hello-world.galileo
26320 hello-world.galileo
$ size hello-world.galileo
   text    data     bss     dec     hex filename
  18146    1156   12808   32110    7d6e hello-world.galileo
2015-12-21 08:06:14 -02:00
Andre Guedes 6c9ab4eb6c galileo: Remove unneeded syscall stubs
This patch removes _kill_r and _getpid_r stubs since they are not
required by newlib at this moment. These stubs should not be in
the commit that introduced the initial newlib-syscalls.c file.
2015-12-21 08:06:14 -02:00
Andre Guedes d3d2b51fa2 galileo: Initial stdio support
This patch introduces the initial support for stdio library in Galileo
platform. For now, only standard output and error are supported. Both
streams use the UART1 device.

Newlib doesn't call open() for stdin, stdout, and stderr which means
that the _write_r call is the first activity the stub will see on
those streams. For that reason, we initialize the UART1 device in
Galileo's platform main() function instead of in open() system call.
2015-12-21 08:06:14 -02:00