Commit Graph

72 Commits

Author SHA1 Message Date
Karl Palsson b88196f807 ld: support ".ramtext" section hook to place functions in ram
We already had the hooks for ccmram and ram1 and ram2 and ram3 and xsram
for "other" ram sections, but there was no method, out of the box, for
placing a function in "normal" ram.  The "easy" method of labelling a
function as ".data.someramfunc" causes warnings because code isn't meant
to have a name like ".data*" so we must explicitly add a new code
section.

Signed-off-by: Karl Palsson <karlp@tweak.net.au>
2020-11-28 22:13:25 +00:00
Karl Palsson 54319107b0 ld: support ".noinit*" uninitialized ram section
Add support for a section(s) ".noinit*" that will be allocated in ram,
but not cleared or initialized.  This can be used for passing variables
between a bootloader and an app for instance, or even just between
restarts of your application.

Without any assigned usages of the section, there is zero change in ram
usage.  The align does nothing when the prior section was already
aligned.
2020-11-28 22:13:25 +00:00
Guillaume Revaillot e2299f14f2 devices.data: add stm32g030x6 and x8 chips 2020-04-24 10:25:33 +02:00
Karl Palsson 418b609230 devices.data: stm32g4: _actually_ finish adding
Missed the CCM, missed the chain heads for the family itself.
2020-04-10 13:44:04 +00:00
Karl Palsson 4e70d06d63 stm32g4: Add basic support
* memorymap
* vectors
* rcc
* gpios
* makefiles
* devices for linker script generation
* doc structure
2020-04-09 23:29:00 +00:00
sur5r d0d23cff07 ld: lpc17xx: Fix RAM2_OFF on LPC17[78]x
- RAM2_OFF is at 0x20004000 (see UM10470 page 15)
- 0x20040000 is not a valid address on LPC17[78]x
2020-01-31 20:52:12 +00:00
Brian Viele dd18b9fdbc Qorvo pac55xx: initial support
Qorvo (Nee Active Semi) PAC55xx "Intelligent Motor Control" parts,
cortex-m4 SoCs
2019-11-26 23:28:02 +00:00
Karl Palsson 6d9139934c devices.data: add some more l0 parts 2019-10-22 10:35:04 +00:00
Karl Palsson 88b32e3ac0 devices.data: stm32f4: add all missing parts 2019-10-22 10:23:18 +00:00
Eivind Alexander Bergem af0509826d devices.data: Added stm32f410 2019-10-22 09:04:53 +02:00
Caleb Szalacinski 3c4ee6f4c0 SWM050: Finishes GPIO, IAP flash, sysclock, sleep/stop, and the sysctl memory map.
Updates the main memory map and the makefile.
Adds the SWM050 to devices.data, so that a linker script can be automatically generated.

Reviewed-by: Karl Palsson <karlp@tweak.net.au>
2019-10-17 11:41:33 +00:00
Karl Palsson b5d66ee63f devices.data: add all missing stm32f3 parts
Filled missing variants, added missing families, corrected one or two
mistakes in ccm availability

Fixes: https://github.com/libopencm3/libopencm3/pull/1109
2019-10-03 11:37:47 +00:00
Matthew Lai 5fbe5c8c47 devices.data: Added STM32F7 value line devices with 64K flash 2019-09-23 22:45:36 +00:00
Karl Palsson b0c3de8d85 devices.data: add missing stm32f301 parts
Fixes: https://github.com/libopencm3/libopencm3/issues/1098
2019-09-03 22:23:26 +00:00
Karl Palsson 7ff54cb7f0 devices.data: add more stm32l1 parts
Fixes some eeprom sizes, and adds all the -a and -x suffix parts.
Note that the explicit endings must be listed _before_ the base parts,
otherwise the matcher will find the wild card first.

Signed-off-by: Karl Palsson <karlp@etactica.com>
2019-08-22 10:01:11 +00:00
Sergey Shcherbakov e75a3614a4 stm32f3: ld: Added stm32f303x6/8
Signed-off-by: Sergey Shcherbakov <shchers@gmail.com>
2019-06-18 23:33:46 +03:00
Guillaume Revaillot b8d4b03722 stm32g0: add base, irqs, memorymap and current devices. 2019-05-20 23:43:41 +00:00
Karl Palsson 9551da6b6b devices.data: add stm32l15xx E series
Bigger brother parts, such as the l152re nucleo64 board.
2019-01-16 22:25:01 +00:00
Chuck McManis 63e0b6df3a Device Data: Add Specs for STM32F4[67]9 variant
The reference manual is incorrect, the data sheet is correct.
There is 320K of ram (up to address 0x20050000). This has been
tested on the STM32F469I-disco board.
2018-07-13 20:18:44 +00:00
Chuck McManis 564e485989 devices.data: Add STM32F446xC/E data 2018-06-23 22:21:53 +00:00
Maxim Sloyko 2b1ddc8490 sam/4l: monster commit
The original submitter of this squished everything into one series, and
has not returned. The code mostly appears good, and review comments were
followed for the most part.  The project doesn't really maintain any
testing or board farm for sam3/sam4 parts, so we're going to just trust
our users.

Reviewed-by: Karl Palsson <karlp@tweak.net.au>

sam/4l: IRQ Configuration file (irq.json)

sam/4l: Basic Memory Map.

sam/4l: GPIO Defines.

sam/4l: GPIO Functions

Added everything that needed to compile the library: Makefile, Linker
Script and common includes.

sam/4l: SCIF function to start OSC.

sam/4l: GPIO Enable/Disable and Multiplexing configuration functions.

sam/4l: PLL Clock configuration.

sam/4l: Peripheral clock configuration and basic USART support.

sam: USART Character length configuration.

sam/4l: Generic Clock configuration functions.

sam/4l: Analog to Digital Converter Interface (ADCIFE) basic support.
2018-04-14 18:40:54 +00:00
George Jiglau b4f195b488 genlink: Remove old genlink makefiles 2018-04-14 18:40:54 +00:00
George Jiglau 974ca8a652 genlink: Update genlink tests 2018-04-14 18:40:54 +00:00
George Jiglau 396701808d genlink: Rewrite genlink script from awk to python
This removes the dependency on awk and should fix #732
python was already a dependency, for the irq generation
2018-04-14 18:40:54 +00:00
Guillaume Revaillot f63090d9b6 devices.data: add stm32f071?8 2018-03-28 11:53:10 +02:00
Guillaume Revaillot 613ecc9046 devices.data: add stm32f091?[bc] 2018-03-28 11:53:05 +02:00
Guillaume Revaillot 0c578fe11b devices.data: add stm32f070?[6b] 2018-03-28 11:52:59 +02:00
Guillaume Revaillot ca35b89c32 devices.data: add stm32f030?c 2018-03-28 11:36:58 +02:00
Karl Palsson c93c8676e6 ld: devices.data: simply l4 a little
Join some of the paired devices that differ only by encryption periphs
2018-03-24 21:11:23 +00:00
Tom Verbeure dba2430c89 Add full STM32L4 family memory sizes 2018-03-24 18:06:41 +00:00
Karl Palsson fcd06c6cae devices.data: add more efm32hg variants
Some of the F32 devices only have 4k RAM
2018-03-02 22:42:04 +00:00
Sebastian Holzapfel a86948ec6e efm32hg: add basic makefile, interrupts, device information 2018-03-02 22:42:04 +00:00
Christian Tacke 914521de90 Add RAM3 support for L4-Plus to linker generation
This only adds basic support.
Specific settings still need to be added.
2018-02-22 23:51:17 +00:00
Karl Palsson 953bf531ea awk->gawk: Make the gawk dependency explicit
Until https://github.com/libopencm3/libopencm3/issues/732 has been
fixed, it's not enough to just have it in the README that you need GNU
awk.  Explicitly use the "gawk" command name.  This exists on (sane)
systems that have gawk as awk, and for systems that use mawk as default,
the gawk name should also exist.

This should make it significantly easier to diagnost the cause of build
problems.
2017-11-19 20:52:05 +00:00
Karl Palsson b4c4b4c3f9 devices.data: add stm32f105x8
Reported-by: Karl Hammar <karl@aspodata.se>
2017-06-17 21:58:46 +00:00
Garret Kelly ce615ad7c8 devices.data: stm32f0: add stm32f042x[46] devices 2017-04-30 19:55:24 -04:00
Karl Palsson d260f5c539 stm32l476: split sram sections for ld generator
The 128K of SRAM on the l476 devices is 96K of "normal" sram, and 32K of
parity SRAM at a different offset.

Fixes: https://github.com/libopencm3/libopencm3/issues/754
2017-03-30 21:48:07 +00:00
Matthew Lai 4a378a729a devices.data: stm32f7: added all STM32F7 chips (as Feb, 2017) 2017-02-28 16:57:28 +00:00
Karl Palsson cd9ae5e6d7 eeprom: drop support from linker scripts.
While the NOLOAD variant sometimes worked with some toolchains, the
version in the generator scripts could never work, as neither the
startup code, nor gdb know how to load those sections properly.

Originally added in: eb18cc19cb

The original scripts allowed you to place variables in eeprom space for
reading only.  However, the last toolchain that generated working code
with this linker script was the gcc-arm-none-eabi-4_9-2014q4 release.
Subsequent releases treat the directives differently, and can lose track
of where variables are.  One known symptom is constants getting bad
addresses, so for instance, "printf("asdfad")" will end up passing the
wrong address of the string constant into the eventual _write() call.

This commit removes the problematic directives until a more fully
correct system can be found that more properly follows the linker
script rules.
2016-12-19 11:40:39 +00:00
Karl Palsson 571a4cff17 devices.data: stm32l0: add new devices 2016-09-09 21:22:02 +00:00
Karl Palsson 53de290fda atmel samd: Basic framework.
Thoughts: should this be a "sam0" family rather than samd?  (Much like Atmel's
own software package lumps all the cortex-m0+ devices in one family)

This was enough to get a basic blinky working at least.
2016-08-18 22:08:58 +00:00
Karl Palsson f20d433e0d devices.data: add lm3s6965 2016-08-18 22:08:58 +00:00
Karl Palsson 374796c1fd devices.data: fix case on stm32f072xb
this is the part on the f072 discovery board.  The devices.data file is
expected to be already lowercased, while the user provided DEVICE= variable is
then lowercased.
2016-08-18 22:07:36 +00:00
Jonas Meyer 06aa6f1b16 devices.data: Add several chips
Added lpc43xx to devices.data

For now all lpc43 chips resolve to their cortex-m4 variant. How m0 should
be handled is to be determined later.

devices.data: add some vf6xx and lm4f support. fix typos

devices.data: added missing lpc13 family group

devices.data: fix lm4f with info from examples

devices.data: add some vf610 info

devices.data: add some entries for examples
2016-08-18 22:07:36 +00:00
Jonas Meyer c025dc0327 mk/genlink: change devices.data format to remove gcc specific options
As discussed with karlp on irc the devices.data file should not contain
gcc specific command line options.

For that reason the command line options for gcc are now generated from
the variables CPU and FPU by the rules in the mk directory.

This breaks the genlink tests.

genlink: simplified devices.data

devices.data already had the information about the family name.
By using the first field (by the pattern used to match it) as family name information that data doesn't
have to be provided explicitly. The same data is used to generate the
CPPFLAGS, such as -DSTM32F1

The architectures block of the devices.data file was redundant.

genlink-config.mk uses family and subfamily to figure out which libopencm3
variant actually exists.
2016-08-18 22:07:36 +00:00
Karl Palsson 6d4a7d1d0c devices.data: fix f7 and l0 tech details
f7 has -mfpu=fpv5-sp-d16 in the lib makefile, devices.data should have
the same setting.
l0 is a cortex m0+, not a cortex m0, and uses cortex-m0plus in the
library makefile, and should have the same setting in the devices.data
file.
2016-02-05 12:30:24 +00:00
Constantine Verutin 2eade079a9 Fix flash size for stm32f401x(D|E) in devices.data. According to
datasheet(http://www.st.com/st-web-ui/static/active/en/resource/technical/document/datasheet/DM00102166.pdf,
page 11) stm32f401xD has 384 Kb of flash and stm32f401xE has 512.
2015-12-02 10:15:09 +00:00
Karl Palsson d0ac7feb3b stm32l4: Add linker generation support 2015-11-11 00:51:50 +00:00
Frantisek Burian 3ef2c38120 [stm32f7] Add initial support of the family, GPIO support.
Most changes are noise from doxygen.
Readme udpated to explain newer FP_FLAGS for m7
stm32f7 library is skipped if the toolchain doesn't support it yet.
2015-10-15 10:34:28 +00:00
Hunz 9217a5f888 ld generator: add STM32F302x8 2015-10-11 18:46:25 +00:00