Commit Graph

62 Commits

Author SHA1 Message Date
Benoît Thébaudeau
19fd7a3551 Use additive offsets
OR-ing an offset to a base address instead of adding it is dangerous
because it can only work if the base address is aligned enough for the
offset.

Moreover, if the base address or the offset has a value unknown at
compile time, then the assembly instructions dedicated to 'base +
offset' addressing on most CPUs can't be emitted by the compiler because
this would require the alignment of the base address against the offset
to be known in order to optimize 'base | offset' into 'base + offset'.
In that case, the compiler has to emit more instructions in order to
compute 'base | offset' on most CPUs, e.g. on ARM, which means larger
binary size and slower execution.

Hence, replace all occurrences of 'base | offset' with 'base + offset'.
This must become a coding rule.

Here are the results for the cc2538-demo example:
 - Compilation of uart_init():
    * before:
        REG(regs->base | UART_CC) = 0;
        200b78:	f446 637c 	orr.w	r3, r6, #4032	; 0xfc0
        200b7c:	f043 0308 	orr.w	r3, r3, #8
        200b80:	2200      	movs	r2, #0
        200b82:	601a      	str	r2, [r3, #0]

    * now:
        REG(regs->base + UART_CC) = 0;
        200b7a:	2300      	movs	r3, #0
        200b7c:	f8c4 3fc8 	str.w	r3, [r4, #4040]	; 0xfc8

 - Size of the .text section:
    * before:	0x4c7c
    * now:	0x4c28
    * saved:	84 bytes

Signed-off-by: Benoît Thébaudeau <benoit.thebaudeau.dev@gmail.com>
2015-03-28 17:28:15 +01:00
George Oikonomou
b6bd556805 Fix clock.h warnings caused by multiple, conflicting documentation blocks of clock functions 2015-02-15 21:48:30 +01:00
Simon Duquennoy
a9cc909794 Network layer configuration: replace UIP_CONF_* with NETSTACK_CONF_WITH_* 2014-12-01 21:02:57 +01:00
Simon Duquennoy
722b3258d1 Cleanup of the Contiki network layer configuration. Now using CONTIKI_WITH_IPV6, CONTIKI_WITH_IPV4, and CONTIKI_WITH_RIME in makefiles, and UIP_CONF_IPV6, UIP_CONF_IPV4, UIP_CONF_RIME in c code. Now only the stacks that are used are compiled (via makefile MODULES). Make IPv6 the default network stack. 2014-12-01 20:13:09 +01:00
Enrico Joerns
cfbd4d49bf [cpu/stm32w108] Doxygen grouping and group name fixes 2014-11-10 23:53:33 +01:00
Enrico Joerns
0b8769e576 [doc] Various fixes for doxygen grouping etc. 2014-11-10 23:53:32 +01:00
Rémy Léone
8c3fa17ec0 Correct several doxygen tags (\file) 2014-07-28 11:11:45 +02:00
Rémy Léone
f111058472 Removing trailing whitespaces 2014-06-30 20:01:05 +02:00
Adam Dunkels
64f65b4e45 Merge pull request #617 from nfi/extended-radio-api
Extended radio API with support for setting channel, pan id, addressing modes, etc
2014-06-03 21:32:53 +02:00
Niclas Finne
f0c48c55ca Fixed STM32W radio to return RADIO_RESULT_INVALID_VALUE if trying to
set a transmission power outside the valid range instead of using
closest valid value.
2014-04-13 21:36:45 +02:00
Niclas Finne
757950f87f Set the RAM and flash size based on the CPU configuration for STM32W 2014-04-11 17:41:09 +02:00
Niclas Finne
0122373fdc OBJECTDIR is defined by Makefile.include 2014-04-11 17:41:08 +02:00
Niclas Finne
4e7abb09c2 Support verbosity control when building for STM32W-based platforms 2014-04-11 17:41:06 +02:00
Niclas Finne
207f1987ee Implemented radio rx mode parameter for STM32W, changed the byte order
of the 64 bit address to big-endian.
2014-04-11 14:46:48 +02:00
Niclas Finne
4834816306 Added radio parameter RADIO_PARAM_CCA_THRESHOLD for STM32W 2014-04-08 16:42:18 +02:00
Niclas Finne
fa908dcaff Added extended radio API implementation for STM32W 2014-04-03 13:38:09 +02:00
Adam Dunkels
45265249fc Changed the name of the rimeaddr module to linkaddr 2014-01-29 20:12:24 +01:00
Adam Dunkels
5f3fe7f7c7 Updated include paths for the moved files under net/ 2014-01-26 23:20:23 +01:00
Adam Dunkels
bb2dcaa057 A massive all-tree automated update of all double inclusion guard #defines that changes from using two underscores as a prefix, which are reserved, to not using two underscores as a prefix 2013-11-24 20:20:11 +01:00
Gianfranco Costamagna
ddd6b900cd Better error message in case of wrong CPUREV value 2013-10-17 12:33:36 +02:00
stefano pascali
36e7db42de Some little refactor 2013-07-19 16:15:55 +02:00
stefano pascali
b43ce0f677 Travis-ci tweaks, added CPUREV to 01 regression test, needed by mbxxx platform 2013-07-12 17:07:04 +02:00
stefano pascali
fcb09d5d30 Fixed mbxxx platform 2013-07-11 17:56:17 +02:00
Peter A. Bigot
5fc0575e99 Makefile.include: support make clean all
Historically $(OBJECTDIR) was created when Makefile.include is read.  A
consequence is that combining "clean" with "all" (or any other build
target) results in an error because the clean removes the object
directory that is required to exist when building dependencies.
Creating $(OBJECTDIR) on-demand ensures it is present when needed.

Removed creation of $(OBJECTDIR) on initial read, and added an order-only
dependency forcing its creation all Makefile* rules where the target is
explicitly or implicitly in $(OBJECTDIR).
2013-06-20 17:45:41 -05:00
Adam Dunkels
a5046e83c7 Cleanup and refactoring of the STM32w port
This is a general cleanup of things like code style issues and code structure of the STM32w port to make it more like the rest of Contiki is structured.
2013-03-18 13:31:26 +01:00
Etienne Duble
7905316c54 Fix: stm32w flasher for Ubuntu 12.04 and later 2012-11-09 14:14:57 +01:00
Etienne Duble
ecdbbaec9a Fix: handle stm32f-based serial interfaces (/dev/ttyACMx) 2012-11-09 14:00:16 +01:00
George Oikonomou
713c2e5974 DOS EOL and indentation fixes (core/ apps/ cpu/)
- Removed some DOS EOLs
- Changed some tabs to spaces
- Removed some trailing whitespaces

Part of Pull Request #6
2012-10-30 13:43:51 +00: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
Adam Dunkels
b85bc3379c Bugfix in clock_wait() declaration. Various style fixes. 2012-04-22 20:54:29 +02: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
simonduq
930c7c25bc fixes in mb851 and stm32w108: erroneous linking with mpu.o, conf file,
more printouts in main when ipv6 is used, and a target for memory
profiling taking stm's gnu.ld static stack size into account
2012-04-03 11:47:30 +02:00
simonduq
946f00bf7b stm32w: added ability to upload and reset all connected boards, and login using MOTE=x 2012-03-26 23:00:44 +02:00
simonduq
95ae5c5d51 avoid unnecessary symbols.c/h copying 2012-03-26 23:00:43 +02:00
simonduq
e4fb360262 stm32w platforms: contikimac support in the Rime case, with EUI-64 2012-03-20 17:30:59 +01:00
simonduq
5da4463236 adding ducy cycling support to the stm32w-based platforms (patch by Chi-Anh La) 2012-03-20 17:29:58 +01:00
Ilya Dmitrichenko
9c99d46e24 Simplified host OS platform detection in Makefiles 2012-02-25 10:09:33 -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
Salvatore Pitrulli
7a48110067 STM32W flasher utilities for Linux and Windows merged into a single folder. 2011-05-10 19:26:33 +02:00
Salvatore Pitrulli
5eabf33211 Added functions for deep sleep to mbxxx platform. 2011-04-27 18:12:23 +02:00
Salvatore Pitrulli
01a7a78a94 Fixed temperature ADC conversion bug on mbxxx.
The conversion was made from an incorrect source when
the GPIO pin was not PB7.
Added functions and macros used to select the correct
ADC channel.
2011-04-20 18:06:20 +02:00
Salvatore Pitrulli
4ff82b76e5 Removed -fsigned-char GCC compiler options. 2011-04-14 08:12:11 +02:00
Salvatore Pitrulli
0105057c44 Removed unwanted file. 2011-04-14 08:10:58 +02:00
Salvatore Pitrulli
0a0ad39c9b Added weak symbols for STM32W exception handlers and other minor updates for the HAL. 2011-04-14 08:06:13 +02:00
Salvatore Pitrulli
57163c616d Removed some warnings. 2011-04-14 08:05:21 +02:00
Salvatore Pitrulli
af8e58e063 Set LED pins to output when MB851 is in sleep mode.
This reduces power consumption.
2011-04-13 18:14:12 +02:00
Salvatore Pitrulli
6655c876f2 Added functions and example for deep sleep on mb851.
The added function let a process to make the system go
into deep sleep for maximum power saving.
The udp-ipv6-example shows how to use these new functions.
2011-04-08 11:53:48 +00: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
Salvatore Pitrulli
eb588f1aec New HAL and SimpleMAC for STM32W108. 2011-03-22 19:35:49 +01:00
salvopitru
5fcae86be3 Now it is putchar that has to be redefined (instead of __io_putchar), like other platforms. 2011-01-19 09:13:06 +00:00