Commit graph

243 commits

Author SHA1 Message Date
Robert Quattlebaum 9c17a542a7 avr/bootloader.c: Now compatible with bootloaders which always run first.
The boot loader now knows when to go into bootstrap mode by
looking for a specific EEPROM value. Also updated code style
to match Contiki code style guidelines.
2013-05-19 08:21:16 -07:00
Robert Quattlebaum 28a1e40ebd core/lib/settings: Generalized Settings Manager to work on any platform
This commit moves the Settings Manager from the AVR codebase
into the Contiki core library. Any platform that implements
the Contiki EEPROM API can now use the Settings Manager's
key-value store for storing their persistent configuration info.

The Settings Manager is a EEPROM-based key-value store. Keys
are 16-bit integers and values may be up to 16,383 bytes long.
It is intended to be used to store configuration-related information,
like network settings, radio channels, etc.

 * Robust data format which requires no initialization.
 * Supports multiple values with the same key.
 * Data can be appended without erasing EEPROM.
 * Max size of settings data can be easily increased in the future,
   as long as it doesn't overlap with application data.

The format was inspired by the [OLPC manufacturing data format][].

Since the beginning of EEPROM often contains application-specific
information, the best place to store settings is at the end of EEPROM
(the "top"). Because we are starting at the end of EEPROM, it makes
sense to grow the list of key-value pairs downward, toward the start of
EEPROM.

Each key-value pair is stored in memory in the following format:

Order    | Size     | Name         | Description
--------:|---------:|--------------|-------------------------------
       0 |        2 | `key`        | 16-bit key
      -2 |        1 | `size_check` | One's-complement of next byte
      -3 |   1 or 2 | `size`       | The size of `value`, in bytes
-4 or -5 | variable | `value`      | Value associated with `key`

The end of the key-value pairs is denoted by the first invalid entry.
An invalid entry has any of the following attributes:

 * The `size_check` byte doesn't match the one's compliment of the
   `size` byte (or `size_low` byte).
 * The key has a value of 0x0000.

[OLPC manufacturing data format]: http://wiki.laptop.org/go/Manufacturing_data
2013-03-20 11:57:13 -07:00
Robert Quattlebaum 67a39618eb cpu/avr: Make sure that GCC removes all unused symbols.
This magic comes from the `--gc-sections` linker flag, which turns on garbage collection for unused input sections. The compiler flags `-ffunction-sections` and `-fdata-sections` make sure that each function and each static data definition have their own section. The result is that GCC can prune away all unused symbols, reducing the size of the resulting executable.

These optimizations may be disabled by setting the Makefile variable
`SMALL` to zero.
2013-02-28 21:59:19 -08:00
Nicolas Tsiftes 42e4b2b02a Merge pull request #143 from idelamer/master
Bug fix for Issue #88
2013-02-24 15:26:38 -08:00
Ivan Delamer c22838b9d3 Enable Timer1 on Raven so that interrupts coming from radio, which are
connected to input capture, fire again.
2013-02-15 16:08:37 -07:00
Adam Dunkels 1af22fa4fe Removed old unused RTL8019 code that had license issues 2012-10-29 16:08:09 +01:00
Adam Dunkels 944537fccf Removed all old RCS tags in the Contiki source tree. Those RCS tags are not used any more, as we are now using git to manage the Contiki source tree 2012-10-26 15:54:49 +02:00
Ivan Delamer b43dad00b0 Cleaned up RF230BB, and refactored FRAME_RETRIES and CSMA_RETRIES
#defines.
2012-09-04 11:12:18 -06:00
Ivan Delamer 2e72ec3594 Place ATmega1281 define in correct section (it does have compare C
unit, avoid duplicate define and compiler warning).
2012-09-01 15:22:13 -06:00
Ivan Delamer 5636357243 Fix RF230 transition: RX_AACK_ON -> TX_ARET_ON (go through PLL_ON,
as per datasheet). Tested on RF230 and 128RFA1 (RF231).
2012-09-01 15:20:00 -06:00
Ivan Delamer 17a62a649c ATmega128RFA1 bug fix: no interrupt pin used (embedded radio).
Enabling interrupt caused MCU reset if using pin as GPIO.
2012-07-10 14:36:47 -06:00
David Kopf e9a55cc222 Enable check on received length to prevent buffer overflow. Thank you Cooja! 2012-05-28 13:02:23 -04:00
David Kopf d6dc216e02 Reorder includes to prefer platform routines. Remove redundant RPL define. 2012-04-27 16:54:09 -04:00
David Kopf cac4e9a222 Add clock_delay_us and clock_set_seconds to clock.h. Modify clock_wait to use clock_time_t.
Remove the troublesome avr/dev/delay.* files.
Add PLATFORM_NAME and combine the confusing *_REVISION defines into a single PLATFORM_TYPE
2012-04-09 15:49:53 -04:00
David Kopf 40bd020394 Fix wrong register addresses. 2012-04-09 09:58:12 -04:00
David Kopf 2b7ecefce7 Remove unused SPI initializer flag from AVR. Comment out in the msp-430 template. 2012-02-27 17:05:22 -05:00
Ilya Dmitrichenko 9c99d46e24 Simplified host OS platform detection in Makefiles 2012-02-25 10:09:33 -05:00
David Kopf deb75d3d97 Several bugfixes 2012-02-21 11:14:52 -05:00
David Kopf 59e459e0e9 Add missing mtarch_stop function 2012-02-21 11:11:53 -05:00
David Kopf 6e45dfe5ff PROGMEM changes needed for newer avr-gcc compiler 2012-02-21 11:10:57 -05:00
Nicholas J Humfrey 1cda3da17e Converted u8_t to uint8_t and u16_t to uint16_t in the cpu directory. 2012-02-21 08:33:24 -05:00
David Kopf 987906be97 rf230bb updates: involves setting the 801.15.4 pending bit,
0x800000 cpu clock, and a jtag reset bugfix
2012-02-01 14:16:39 -07:00
Ivan Delamer 57e686179c Improved rf230bb.c synchronization/locking. Removed unnecessary locks
during Tx (single-threaded environment). Added protection to Rx thread
from buffer access by ISR.
2012-02-01 13:37:45 -07:00
David Kopf 7ca141b457 Access uart registers directly instead of through intermediate addresses in a RAM struct.
Add a platform define to reduce the number of ports supported by the cpu.
2012-01-21 13:49:58 -05:00
David Kopf 58298f59db Add F_CPU=0x800000 option with phase lock to external 32768 Hz crystal
Add MCU_CONF_LOW_WEAR option to avoid eeprom writes during development.
2012-01-10 12:42:27 -05:00
David Kopf 81af871db9 Bugfix: use 16 bit tick count to adjust clock after sleep 2011-12-01 09:58:55 -05:00
David Kopf fb977cb9ef Better fix for hardware FCS error on JTAG reset
Correct silly error introduced by trying to save two bytes.
2011-11-15 13:24:58 -05:00
David Kopf 31ba84eb75 Improve rf23x cca procesing
Fix delay_loop timing bug by using long long calculation.
128rfa1 and rf230 both working with contikimac RDC
2011-11-14 11:49:58 -05:00
David Kopf d1cd3f213c Add general unsupported interrupt vector suggested by Daniel Willmann 2011-11-14 11:36:18 -05:00
David Kopf 6eba721af1 Add rtimer_arch_sleep function, enabled with RDC_CONF_MCU_SLEEP 2011-11-14 11:10:35 -05:00
David Kopf c2364897f8 atmega128rfa1 cca fixes, energest and rimestat macros.
Add option to return ACK to RDC layer when in extended mode, based on Georg von Zengen code.
2011-11-08 12:20:22 -05:00
David Kopf f721f646fa Adjust sleep time by ticks instead of seconds, proposed by Ivan Delamer 2011-09-10 12:44:49 -04:00
David Kopf dfdae5b02b This fixes commit 9a1ce7 for spaces instead of .... 2011-08-31 12:08:01 -04:00
David Kopf 470887eddd Print elf size if ELF_SIZE is defined 2011-08-31 11:50:14 -04:00
David Kopf 9a1ce7cf75 Use enumerated tx return values 2011-08-31 11:40:23 -04:00
David Kopf 5f2b2074f0 Implement WITH_RPL option in makefile 2011-08-28 16:11:48 -04:00
David Kopf bdec65b889 Fix typos and file endings 2011-08-28 16:04:36 -04:00
David Kopf 94fc40f736 Move LEDONPORTE1 define to contiki-conf.h, fixing typo. 2011-08-24 11:35:58 -04:00
David Kopf 09db159876 128rfa1 cca fix, NETSTACK_RADIO.off now returns 0/1 if radio off/on 2011-08-18 14:36:04 -04:00
David Kopf 53737d9a38 Use correct prescale factor 2011-08-18 13:58:20 -04:00
David Kopf 3ea102050b Apply patch of Ivan Delamer for atmega1281 @ 4 MHz 2011-08-17 13:16:46 -04:00
David Kopf 36fa735323 Calculate best prescaler based on F_CPU and CLOCK_CONF_SECONDS. Inspired by patch from Ivan Delamer. 2011-08-17 13:15:26 -04:00
maniacbug 0990896f54 Added an .eu target to upload only the eeprom for AVR cpu. 2011-08-16 14:10:48 -04:00
maniacbug 8f0bb86c02 No strict aliasing for AVR
AVR build generates numerous aliasing errors.  This -f switch silences them.
2011-08-16 14:07:06 -04:00
David Kopf 577215deca Use 128rfa1 interrupts instead of timing.
Generalize DEBUGFLOW macro for use in multiple routines.
2011-08-15 15:06:38 -04:00
David Kopf 50d1086553 Add changes needed for contikimac 2011-08-13 11:38:38 -04:00
David Kopf 03ab525652 Option for nested rtimer interrupts 2011-08-13 11:35:03 -04:00
David Kopf cdcb2c4744 CCA measurement was always returning busy 2011-08-06 13:48:52 -04:00
David Kopf b70d2b3163 Remove duplicate code block 2011-08-05 17:34:38 -04:00
David Kopf c9b19ce655 Change timer setups for arbitrary CLOCK_CONF_SECOND
Change raven to 128 ticks and enable 32KHz crystal as default.
2011-08-05 15:14:35 -04:00
David Kopf e2ad2acde4 Add stk500 platform and changes suggested by Daniel Willmann 2011-08-03 11:18:55 -04:00
David Kopf 6ec85fe079 Add Iris port of Shinta Hatatani 2011-08-03 10:17:59 -04:00
David Kopf 0bb585fd60 Replace WEBSERVER by AVR_WEBSERVER 2011-07-24 11:43:17 -04:00
HATATANI Shinta f4740a062a IRIS port is working with uIPv6 2011-07-15 16:36:25 +09:00
David Kopf 6b434a553f Implement SRAM routine of Georg von Zengen 2011-06-21 13:03:58 -04:00
dak664 581d081ffe Don't use RF230_CONF_CCA_THRES if it is not defined. 2011-04-07 17:44:10 -04:00
Oliver Schmidt f83fb3704b Replaced make-empty-symbols with empty-symbols.[c|h]
The symbol generation shell scripts cause CRLF issues on Windows/Cygwin again and again. Instead of fixing this yet again I opted to remove the symbol generation script at least for the "no symbols" scenario with two C source files to be copied.
2011-04-03 13:24:58 +02:00
dak664 a9cbbb4570 Add sneezer mode and tx power change 2011-03-23 18:08:07 -04:00
dak664 5dd7500d0b Add configurable auto cca threshold and implement driver cca call.
Show smallest rssi in jackdaw menu.
2011-03-21 11:10:30 -04:00
dak664 d9b5bac953 Refactor with WATCHDOG_CONF_TIMEOUT 2011-03-14 16:14:47 -04:00
dak664 59109b9893 Fix type, diagnostic interrupt code on conditional 2011-03-13 14:08:02 -04:00
dak664 a210e14d78 Add defines for watchdog configuration. 2011-03-13 13:45:12 -04:00
dak664 0b2d3d1615 Refactor clock code with optional interrupt optimizing.
Put periodic radio calibration on conditional.
2011-03-13 13:07:32 -04:00
dak664 6a5c8ff1c4 Include file needed for slip rpl-border-router build 2011-03-11 14:10:30 -05:00
dak664 de7bcda99f avrdude and makefile changes suggested by Georg von Zengen 2011-03-08 13:07:00 -05:00
dak664 46297de770 Allocate variable only when mass storage is enabled 2011-02-23 14:06:06 -05:00
dak664 5c098993df Add initial file 2011-02-07 20:30:47 -05:00
dak664 b41e8f384e Add initial atmega128rfa1 file 2011-02-07 20:28:17 -05:00
dak664 f1f32c8e6a Add combined MCU and radio ATmega128rfa1 2011-02-07 13:46:34 -05:00
dak664 90a6d768ea Keep track of sleeptime and display on status web page. 2010-12-23 19:41:07 +00:00
dak664 662b0e064c Revert Larsson patch, setting this to 0x3f truncated jackdaw Tx packets to 64 bytes. 2010-12-22 22:49:16 +00:00
dak664 95982b40ba $make will show avr-size once and only once whether or not a build needs to occur. 2010-12-22 21:13:09 +00:00
dak664 5b8e62ef4f Patches from R Larsson 2010-12-22 20:10:00 +00:00
dak664 013c3ac2f8 Remove contitional on clock updating, it should always be done after a sleep! 2010-12-22 17:09:03 +00:00
dak664 44a2e34005 Resolve TIMER2 conflict between sleep and possible clock usage. 2010-12-22 16:50:30 +00:00
dak664 e3e1e04948 Add FCS comments and text2pcap dump routines of Roger Larsson.
Don't send last two byte to xmit buffer since they will be overwritten by the checksum anyway.
2010-12-21 04:25:15 +00:00
dak664 e4b0b3dc8c Disable watchdog software counter. Nested watchdog stop/starts will not work, but the low power protocols will. 2010-12-18 20:51:11 +00:00
dak664 5623ad827b Enable radio off and sleep modes. 2010-12-18 20:49:00 +00:00
dak664 570f6e705f Move conditional needed by previous commit. 2010-12-15 19:32:49 +00:00
dak664 aa7ad8c807 Add rf230_listen_channel routine to force RX_ON state for sniffing and to read rssi for energy scan. 2010-12-15 16:50:44 +00:00
dak664 1cc336f188 Conditional code to use hardware multiply by default. 2010-12-15 14:11:06 +00:00
dak664 c784e8bc46 Enable RX_START interrupt and read rssi at end of preamble when not using energy detect register 2010-12-14 22:34:18 +00:00
dak664 9c9d7ec5e9 Return TRAC_STATUS register when tx autoretry is enabled. 2010-12-05 17:28:29 +00:00
dak664 35b2ce0cdb Add status page link, show correct rssi, fix indexing off array in ipv4 builds 2010-12-04 21:32:35 +00:00
dak664 58b7a19803 Hardware/software radio HAL patch from Roger Larsson.
Use CHANNEL_802_15_4 define for RF channel on all AVR platforms, default 26.
Remove hopefully unnecessary interrupt disable wrapper on eeprom reads and writes.
2010-12-03 20:42:01 +00:00
dak664 21b10e8021 Convert obsolete MCU_MHZ to F_CPU and add 14745600MHz case using patch from Tobias Schäfer 2010-12-03 18:16:56 +00:00
dak664 0ba9846abd Add macros by Roger Larsson to select between hardware or software SPI transactions.
Minor speed optimizations.
2010-11-30 19:47:40 +00:00
dak664 dc028b3f85 Get rssi correctly in either rx mode, clean up radio driver debugging 2010-11-26 20:39:15 +00:00
dak664 880233a451 RSSI read fix (use ED register in AACK mode), add reduced power configuration for miniature mesh testing. 2010-11-24 18:46:57 +00:00
dak664 69ef9d57eb sizeof(*) is sizeof first array element 2010-11-12 17:24:36 +00:00
dak664 9e94ba9803 Allow non-ipv6 build, e.g. Hello World 2010-11-12 17:15:00 +00:00
dak664 eb0d5c7f45 Add missing includes 2010-11-03 16:55:40 +00:00
dak664 9194b3ac69 Fix error when RS232 not enabled 2010-10-28 19:31:28 +00:00
dak664 ad6712736b Fix Windows XP RNDIS+CDC serial port enumeration 2010-10-28 19:30:14 +00:00
dak664 258e3cc93a Allow simultaneous use of RS232 and USB serial ports 2010-10-27 14:51:20 +00:00
dak664 123e3cae41 Fix compiler warnings 2010-10-23 15:26:46 +00:00
dak664 7be7a34bbb Fix windows COM port enumeration 2010-10-22 19:15:43 +00:00
dak664 774474b7aa Fix compiler warning 2010-10-20 18:57:33 +00:00
adamdunkels 5585d72c86 A simple but substantial change: uIP used the htons()/HTONS() macro
functions for converting between host and network byte order. These
names are the de facto standard names for this functionality because
of the original BSD TCP/IP implementation. But they cause problems for
uIP/Contiki: some platforms define these names themselves (Mac OS,
most notably), causing compilation problems for Contiki on those
platforms.

This commit changes all htons to uip_htons instead. Same goes for
htonl, ntohs, and ntohl. All-caps versions as well.
2010-10-19 18:29:03 +00:00
dak664 110bc0242e Merge CDC-ECM, RNG, DFU bootloader, watchdog, settings manager, energy scan routines of Robert Quattlebaum 2010-09-17 21:59:09 +00:00