git subrepo clone https://github.com/libopencm3/libopencm3
subrepo: subdir: "libopencm3" merged: "f5813a54" upstream: origin: "https://github.com/libopencm3/libopencm3" branch: "master" commit: "f5813a54" git-subrepo: version: "0.4.3" origin: "???" commit: "???"
This commit is contained in:
144
libopencm3/ld/README
Normal file
144
libopencm3/ld/README
Normal file
@@ -0,0 +1,144 @@
|
||||
------------------------------------------------------------------------------
|
||||
README
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
LIBOPENCM3 LINKER SCRIPT GENERATOR
|
||||
----------------------------------
|
||||
|
||||
This folder contains files needed for the automatic linker script generation
|
||||
mechanism developed for libopencm3 library.
|
||||
|
||||
File contents
|
||||
-------------
|
||||
|
||||
* {ROOT}/ld/tests/* - Prepared tests for the testing of the script
|
||||
* {ROOT}/ld/devices.data - Device database file
|
||||
* {ROOT}/ld/linker.ld.S - Linker script template
|
||||
* {ROOT}/scripts/genlink.py - Device database file search script
|
||||
* {ROOT}/scripts/genlinktest.sh - Device database file search test script
|
||||
|
||||
Principle of operation
|
||||
----------------------
|
||||
|
||||
The user specifies in the project Makefile the device part name the project is
|
||||
using, in the variable DEVICE. Note that full device part name must be
|
||||
specified, because the device specific features is usually dependent on the
|
||||
last characters of device name string. Note that the device name string search
|
||||
is case insensitive.
|
||||
|
||||
DEVICE=stm32f407vgt6
|
||||
|
||||
Device database contains definitions of common sections and its origins for
|
||||
the linker preprocessor. Every definition is interpreted in the linker script
|
||||
template as a macro, and it can be used for conditional insertion of the device
|
||||
dependent stuff.
|
||||
|
||||
The search in the device database is pattern-based, and using python script
|
||||
genlink.py. The python script traverses the file as a tree, joining the options
|
||||
for the preprocessor together by single space. The python script adds -D to
|
||||
each parameter for you.
|
||||
|
||||
Testing
|
||||
-------
|
||||
|
||||
The testing of feature is done by executing in the root of libopencm3 library.
|
||||
|
||||
make genlinktests
|
||||
|
||||
The test cases are defined in subdirectory {ROOT}/ld/tests/. Each test contains
|
||||
two files, the database file *.data and the expected result *.result file. If
|
||||
the particular test fails, the file *.out containing output of the script is
|
||||
not deleted to help resolving problem with the script.
|
||||
|
||||
The search pattern for the test is the base filename of particular test.
|
||||
|
||||
The testing stops after all test cases are valid, or at first error found.
|
||||
|
||||
Example of use
|
||||
--------------
|
||||
|
||||
* Check the documentation for the genlink module in /mk/README.
|
||||
|
||||
Device database file structure
|
||||
------------------------------
|
||||
|
||||
Line description:
|
||||
<pattern> <parent> (<data> ...)
|
||||
|
||||
<pattern>: is the pattern for the chip description to be searched for.
|
||||
The case of the pattern string is ignored.
|
||||
Pattern match symbols:
|
||||
? - matches exactly one character
|
||||
* - matches none or more characters
|
||||
+ - matches single or more characters
|
||||
|
||||
<parent>: is the parent group name, where the search will continue.
|
||||
There are special parents names that controls traversing:
|
||||
"END" - Exit traversal.
|
||||
"+" - Don't change the parent. Use for split long line to two.
|
||||
|
||||
<data>: space-separated list of preprocessor symbols supplied to the linker.
|
||||
-D option name with single underscore is automatically prepended to each
|
||||
symbol definition
|
||||
if the symbol starts with dash "-", it is interpreted as parameter to
|
||||
linker, and no -D or underscore is generated.
|
||||
|
||||
All lines starting with # symbol are treated as Comments
|
||||
|
||||
Recommended tree hierarchy:
|
||||
|
||||
<device name> <family group> <device specific params>
|
||||
+- <family group> <family> <family group specific params>
|
||||
+- <family> <architecture> <device family specific params>
|
||||
+- <architecture> END <architecture specific params>
|
||||
|
||||
You can split the long line into two or more by using "+" in the parent field,
|
||||
and defining same regex with appropriate parent on the next line. Example:
|
||||
|
||||
device + PARAM1=aaa PARAM2=bbbb PARAM3=ccc PARAM4=dddd PARAM5=eeee
|
||||
device parent PARAM6=ffff PARAM7=gggg PARAM8=hhhh
|
||||
parent END
|
||||
|
||||
The order of the lines is important. After the regex match, its parent will
|
||||
be used for match on the next line. If two regexp lines matches input, only
|
||||
the first will be evaluated, except special group definition "+"
|
||||
|
||||
The regex matches entire sym
|
||||
|
||||
Example:
|
||||
|
||||
--- devices.data file ---
|
||||
stm32f05[01]?4* stm32f0 ROM=16K RAM=4K
|
||||
stm32f0 stm32 ROM_OFF=0x08000000 RAM_OFF=0x20000000 -mcpu=cortex-m0 -mthumb
|
||||
stm32 END
|
||||
|
||||
--- queried chip name ---
|
||||
stm32f051c4t6
|
||||
|
||||
--- output of the python script ---
|
||||
-D_ROM=16K -D_RAM=4K -D_ROM_OFF=0x08000000 -D_RAM_OFF=0x20000000
|
||||
|
||||
The generated linker script file will contain sections rom and ram with
|
||||
appropriate initialization code, specified in linker file source linker.ld.S
|
||||
|
||||
|
||||
Copyright
|
||||
---------
|
||||
|
||||
This file is part of the libopencm3 project.
|
||||
|
||||
Copyright (C) 2013 Frantisek Burian <Bufran@seznam.cz>
|
||||
Copyright (C) 2013 Werner Almesberger <wpwrak>
|
||||
|
||||
This library is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this library. If not, see <http://www.gnu.org/licenses/>.
|
||||
593
libopencm3/ld/devices.data
Normal file
593
libopencm3/ld/devices.data
Normal file
@@ -0,0 +1,593 @@
|
||||
################################################################################
|
||||
#
|
||||
# Device chip tree definition file.
|
||||
#
|
||||
# Copyright (c) 2013 Frantisek Burian <Bufran@seznam.cz>
|
||||
# Copyright (C) 2013 Werner Almesberger <wpwrak>
|
||||
#
|
||||
# Line description:
|
||||
# <pattern> <parent> (<data> ...)
|
||||
#
|
||||
# <pattern>: is the pattern for the chip description to be searched for.
|
||||
# The case of the pattern string is ignored.
|
||||
# Pattern match symbols:
|
||||
# ? - matches exactly one character
|
||||
# * - matches none or more characters
|
||||
# + - matches single or more characters
|
||||
#
|
||||
# <parent>: is the parent group name, where the search will continue.
|
||||
# There are special parents names that controls traversing:
|
||||
# "END" - Exit traversal.
|
||||
# "+" - Don't change the parent. Use for split long line to two.
|
||||
#
|
||||
# <data>: space-separated list of preprocessor symbols supplied to the linker.
|
||||
# -D option name is automatically prepended to each symbol definition
|
||||
#
|
||||
# All lines starting with # symbol are treated as Comments
|
||||
#
|
||||
# Recommended tree hierarchy:
|
||||
#
|
||||
# <device name> <family group> <device specific params>
|
||||
# +- <family group> <family> <family group specific params>
|
||||
# +- <family> <architecture> <device family specific params>
|
||||
# +- <architecture> END <architecture specific params>
|
||||
#
|
||||
# You can split the long line into two or more by using "+" in the parent field,
|
||||
# and defining same regex with appropriate parent on the next line. Example:
|
||||
#
|
||||
# device + PARAM1=aaa PARAM2=bbbb PARAM3=ccc PARAM4=dddd PARAM5=eeee
|
||||
# device parent PARAM6=ffff PARAM7=gggg PARAM8=hhhh
|
||||
# parent END
|
||||
#
|
||||
# The order of the lines is important. After the regex match, its parent will
|
||||
# be used for match on the next line. If two regexp lines matches input, only
|
||||
# the first will be evaluated, except special group definition "+"
|
||||
#
|
||||
# The regex matches entire sym
|
||||
#
|
||||
# Example:
|
||||
#
|
||||
# --- devices.data file ---
|
||||
# stm32f05[01]?4* stm32f0 ROM=16K RAM=4K
|
||||
# stm32f0 stm32 ROM_OFF=0x08000000 RAM_OFF=0x20000000
|
||||
# stm32 END
|
||||
#
|
||||
# --- queried chip name ---
|
||||
# stm32f051c8t6
|
||||
#
|
||||
# --- output of the python script ---
|
||||
# -DROM=16K -DRAM=4K -DROM_OFF=0x08000000 -DRAM_OFF=0x20000000
|
||||
#
|
||||
# The generated linker script file will contain sections rom and ram with
|
||||
# appropriate initialization code, specified in linker file source linker.ld.S
|
||||
#
|
||||
|
||||
################################################################################
|
||||
# the STM32 chips
|
||||
|
||||
stm32f03[01]?4* stm32f0 ROM=16K RAM=4K
|
||||
stm32f03[01]?6* stm32f0 ROM=32K RAM=4K
|
||||
stm32f030?8* stm32f0 ROM=64K RAM=8K
|
||||
stm32f030?c* stm32f0 ROM=256K RAM=32K
|
||||
stm32f042?4* stm32f0 ROM=16K RAM=6K
|
||||
stm32f042?6* stm32f0 ROM=32K RAM=6K
|
||||
stm32f050?4* stm32f0 ROM=16K RAM=4K
|
||||
stm32f050?6* stm32f0 ROM=32K RAM=4K
|
||||
stm32f051?4* stm32f0 ROM=16K RAM=8K
|
||||
stm32f051?6* stm32f0 ROM=32K RAM=8K
|
||||
stm32f051?8* stm32f0 ROM=64K RAM=8K
|
||||
stm32f070?6* stm32f0 ROM=32K RAM=6K
|
||||
stm32f07[12]?8* stm32f0 ROM=64K RAM=16K
|
||||
stm32f07[012]?b* stm32f0 ROM=128K RAM=16K
|
||||
stm32f091?b* stm32f0 ROM=128K RAM=32K
|
||||
stm32f091?c* stm32f0 ROM=256K RAM=32K
|
||||
|
||||
stm32f10[012]?4* stm32f1 ROM=16K RAM=4K
|
||||
stm32f103?4* stm32f1 ROM=16K RAM=6K
|
||||
stm32f100?6* stm32f1 ROM=32K RAM=4K
|
||||
stm32f103?6* stm32f1 ROM=32K RAM=10K
|
||||
stm32f10[12]?6* stm32f1 ROM=32K RAM=6K
|
||||
stm32f100?8* stm32f1 ROM=64K RAM=8K
|
||||
stm32f10[12]?8* stm32f1 ROM=64K RAM=10K
|
||||
stm32f103?8* stm32f1 ROM=64K RAM=20K
|
||||
stm32f105?8* stm32f1 ROM=64K RAM=64K
|
||||
stm32f100?b* stm32f1 ROM=128K RAM=8K
|
||||
stm32f10[12]?b* stm32f1 ROM=128K RAM=16K
|
||||
stm32f103?b* stm32f1 ROM=128K RAM=20K
|
||||
stm32f10[57]?b* stm32f1 ROM=128K RAM=64K
|
||||
stm32f100?c* stm32f1 ROM=256K RAM=24K
|
||||
stm32f101?c* stm32f1 ROM=256K RAM=32K
|
||||
stm32f103?c* stm32f1 ROM=256K RAM=48K
|
||||
stm32f10[57]?c* stm32f1 ROM=256K RAM=64K
|
||||
stm32f100?d* stm32f1 ROM=384K RAM=32K
|
||||
stm32f101?d* stm32f1 ROM=384K RAM=48K
|
||||
stm32f103?d* stm32f1 ROM=384K RAM=64K
|
||||
stm32f100?e* stm32f1 ROM=512K RAM=32K
|
||||
stm32f101?e* stm32f1 ROM=512K RAM=48K
|
||||
stm32f103?e* stm32f1 ROM=512K RAM=64K
|
||||
stm32f100?f* stm32f1 ROM=768K RAM=80K
|
||||
stm32f103?f* stm32f1 ROM=768K RAM=96K
|
||||
stm32f100?g* stm32f1 ROM=1024K RAM=80K
|
||||
stm32f103?g* stm32f1 ROM=1024K RAM=96K
|
||||
|
||||
stm32f205?b* stm32f2 ROM=128K RAM=64K
|
||||
stm32f205?c* stm32f2 ROM=256K RAM=96K
|
||||
stm32f207?c* stm32f2 ROM=256K RAM=128K
|
||||
stm32f2[01][57]?e* stm32f2 ROM=512K RAM=128K
|
||||
stm32f20[57]?f* stm32f2 ROM=768K RAM=128K
|
||||
stm32f2[01][57]?g* stm32f2 ROM=1024K RAM=128K
|
||||
|
||||
stm32f30[12]?6* stm32f3 ROM=32K RAM=16K
|
||||
stm32f30[12]?8* stm32f3 ROM=64K RAM=16K
|
||||
stm32f302?b* stm32f3 ROM=128K RAM=32K
|
||||
stm32f302?c* stm32f3 ROM=256K RAM=40K
|
||||
stm32f302?d* stm32f3 ROM=384K RAM=64K
|
||||
stm32f302?e* stm32f3 ROM=512K RAM=64K
|
||||
stm32f303?6* stm32f3ccm ROM=32K RAM=12K CCM=4K
|
||||
stm32f303?8* stm32f3ccm ROM=64K RAM=12K CCM=4K
|
||||
stm32f303?b* stm32f3ccm ROM=128K RAM=32K CCM=8K
|
||||
stm32f3[01]3?c* stm32f3ccm ROM=256K RAM=40K CCM=8K
|
||||
stm32f3[01]3?d* stm32f3ccm ROM=384K RAM=64K CCM=16K
|
||||
stm32f3[01]3?e* stm32f3ccm ROM=512K RAM=64K CCM=16K
|
||||
|
||||
stm32f334?3* stm32f3ccm ROM=16K RAM=12K CCM=4K
|
||||
stm32f334?6* stm32f3ccm ROM=32K RAM=12K CCM=4K
|
||||
stm32f334?8* stm32f3ccm ROM=64K RAM=12K CCM=4K
|
||||
|
||||
stm32f318?8* stm32f3 ROM=64K RAM=16K
|
||||
stm32f328?8* stm32f3ccm ROM=64K RAM=12K CCM=4K
|
||||
stm32f358?c* stm32f3ccm ROM=256K RAM=40K CCM=8K
|
||||
stm32f378?c* stm32f3 ROM=256K RAM=32K
|
||||
stm32f398?e* stm32f3ccm ROM=512K RAM=64K CCM=16K
|
||||
|
||||
stm32f373?8* stm32f3 ROM=64K RAM=16K
|
||||
stm32f373?b* stm32f3 ROM=128K RAM=24K
|
||||
stm32f373?c* stm32f3 ROM=256K RAM=32K
|
||||
stm32f3[78]3?8* stm32f3 ROM=64K RAM=16K
|
||||
stm32f3[78]3?b* stm32f3 ROM=128K RAM=24K
|
||||
stm32f3[78]3?c* stm32f3 ROM=256K RAM=32K
|
||||
|
||||
stm32f401?b* stm32f4 ROM=128K RAM=64K
|
||||
stm32f401?c* stm32f4 ROM=256K RAM=64K
|
||||
stm32f401?d* stm32f4 ROM=384K RAM=96K
|
||||
stm32f401?e* stm32f4 ROM=512K RAM=96K
|
||||
stm32f4[01][57]?e* stm32f4ccm ROM=512K RAM=128K CCM=64K
|
||||
stm32f4[01][57]?g* stm32f4ccm ROM=1024K RAM=128K CCM=64K
|
||||
stm32f410?8* stm32f4 ROM=64K RAM=32K
|
||||
stm32f410?b* stm32f4 ROM=128K RAM=32K
|
||||
stm32f411?c* stm32f4 ROM=256K RAM=128K
|
||||
stm32f411?e* stm32f4 ROM=512K RAM=128K
|
||||
stm32f412?e* stm32f4 ROM=512K RAM=256K
|
||||
stm32f412?g* stm32f4 ROM=1024K RAM=256K
|
||||
stm32f4[12]3?g* stm32f4ccm ROM=1024K RAM=256K CCM=64K
|
||||
stm32f4[12]3?h* stm32f4ccm ROM=1536K RAM=256K CCM=64K
|
||||
stm32f4[23][79]?e* stm32f4ccm ROM=512K RAM=192K CCM=64K
|
||||
stm32f4[23][79]?g* stm32f4ccm ROM=1024K RAM=192K CCM=64K
|
||||
stm32f4[23][79]?i* stm32f4ccm ROM=2048K RAM=192K CCM=64K
|
||||
stm32f446?c* stm32f4 ROM=256K RAM=128K
|
||||
stm32f446?e* stm32f4 ROM=512K RAM=128K
|
||||
stm32f4[67]9?e* stm32f4ccm ROM=512K RAM=320K CCM=64K
|
||||
stm32f4[67]9?g* stm32f4ccm ROM=1024K RAM=320K CCM=64K
|
||||
stm32f4[67]9?i* stm32f4ccm ROM=2048K RAM=320K CCM=64K
|
||||
|
||||
# on F7 CCM is in some datasheets named as DTCM
|
||||
stm32f7[23][23]?c* stm32f7ccm ROM=256K RAM=192K CCM=64K
|
||||
stm32f7[23][23]?e* stm32f7ccm ROM=512K RAM=192K CCM=64K
|
||||
stm32f745?e* stm32f7ccm ROM=512K RAM=256K CCM=64K
|
||||
stm32f745?g* stm32f7ccm ROM=1024K RAM=256K CCM=64K
|
||||
stm32f765?g* stm32f7ccm ROM=512K RAM=384K CCM=128K
|
||||
stm32f765?i* stm32f7ccm ROM=2048K RAM=384K CCM=128K
|
||||
stm32f7[45]6?e* stm32f7ccm ROM=512K RAM=256K CCM=64K
|
||||
stm32f7[45]6?g* stm32f7ccm ROM=1024K RAM=256K CCM=64K
|
||||
stm32f7[67]7?g* stm32f7ccm ROM=1024K RAM=384K CCM=128K
|
||||
stm32f7[67]7?i* stm32f7ccm ROM=2048K RAM=384K CCM=128K
|
||||
stm32f769?g* stm32f7ccm ROM=1024K RAM=384K CCM=128K
|
||||
stm32f7[67][89]?i* stm32f7ccm ROM=2048K RAM=384K CCM=128K
|
||||
stm32f750* stm32f7ccm ROM=64K RAM=256K CCM=64K
|
||||
stm32f730* stm32f7ccm ROM=64K RAM=192K CCM=64K
|
||||
|
||||
stm32l01??3* stm32l0 ROM=8K RAM=2K
|
||||
stm32l0[12]??4* stm32l0 ROM=16K RAM=2K
|
||||
stm32l03??4* stm32l0 ROM=16K RAM=8K
|
||||
stm32l0???6* stm32l0 ROM=32K RAM=8K
|
||||
stm32l0[78]??8* stm32l0 ROM=64K RAM=20K
|
||||
stm32l0???8* stm32l0 ROM=64K RAM=8K
|
||||
stm32l0???b* stm32l0 ROM=128K RAM=20K
|
||||
stm32l0???z* stm32l0 ROM=192K RAM=20K
|
||||
|
||||
stm32l100?6* stm32l1eep ROM=32K RAM=4K EEP=2K
|
||||
stm32l100?8* stm32l1eep ROM=64K RAM=8K EEP=2K
|
||||
stm32l100?b*_a stm32l1eep ROM=128K RAM=16K EEP=2K
|
||||
stm32l100?b* stm32l1eep ROM=128K RAM=10K EEP=2K
|
||||
stm32l100?c* stm32l1eep ROM=256K RAM=16K EEP=4K
|
||||
stm32l15[12]?6*_a stm32l1eep ROM=32K RAM=16K EEP=4K
|
||||
stm32l15[12]?6* stm32l1eep ROM=32K RAM=10K EEP=4K
|
||||
stm32l15[12]?8*_a stm32l1eep ROM=64K RAM=32K EEP=4K
|
||||
stm32l15[12]?8* stm32l1eep ROM=64K RAM=10K EEP=4K
|
||||
stm32l15[12]?b*_a stm32l1eep ROM=128K RAM=32K EEP=4K
|
||||
stm32l15[12]?b* stm32l1eep ROM=128K RAM=16K EEP=4K
|
||||
stm32l15[12]?c* stm32l1eep ROM=256K RAM=32K EEP=8K
|
||||
stm32l15[12]?d*_x stm32l1eep ROM=384K RAM=80K EEP=16K
|
||||
stm32l15[12]?d* stm32l1eep ROM=384K RAM=48K EEP=12K
|
||||
stm32l15[12]?e* stm32l1eep ROM=512K RAM=80K EEP=16K
|
||||
stm32l162?c* stm32l1eep ROM=256K RAM=32K EEP=8K
|
||||
stm32l162?d*_x stm32l1eep ROM=384K RAM=80K EEP=16K
|
||||
stm32l162?d* stm32l1eep ROM=384K RAM=48K EEP=12K
|
||||
|
||||
stm32l43??b* stm32l4 ROM=128K RAM=48K RAM2=16K
|
||||
stm32l4[34]??c* stm32l4 ROM=256K RAM=48K RAM2=16K
|
||||
stm32l451?c* stm32l4 ROM=256K RAM=128K RAM2=32K
|
||||
stm32l451?e* stm32l4 ROM=512K RAM=128K RAM2=32K
|
||||
stm32l471?e* stm32l4 ROM=512K RAM=96K RAM2=32K
|
||||
stm32l471?g* stm32l4 ROM=1024K RAM=96K RAM2=32K
|
||||
|
||||
stm32l452?c* stm32l4 ROM=256K RAM=128K RAM2=32K
|
||||
stm32l4[56]2?e* stm32l4 ROM=512K RAM=128K RAM2=32K
|
||||
|
||||
stm32l47[56]?c* stm32l4 ROM=256K RAM=96K RAM2=32K
|
||||
stm32l47[56]?e* stm32l4 ROM=512K RAM=96K RAM2=32K
|
||||
stm32l47[56]?g* stm32l4 ROM=1024K RAM=96K RAM2=32K
|
||||
|
||||
stm32l486?g* stm32l4 ROM=1024K RAM=96K RAM2=32K
|
||||
stm32l496?e* stm32l4 ROM=512K RAM=256K RAM2=64K
|
||||
stm32l496?g* stm32l4 ROM=1024K RAM=256K RAM2=64K
|
||||
stm32l4a6?g* stm32l4 ROM=1024K RAM=256K RAM2=64K
|
||||
|
||||
stm32ts60 stm32t ROM=32K RAM=10K
|
||||
|
||||
stm32w108c8 stm32w ROM=64K RAM=8K
|
||||
stm32w108?b stm32w ROM=128K RAM=8K
|
||||
stm32w108cz stm32w ROM=192K RAM=12K
|
||||
stm32w108cc stm32w ROM=256K RAM=16K
|
||||
|
||||
stm32g0[43]1?4* stm32g0 ROM=16K RAM=8K
|
||||
stm32g0[43][01]?6* stm32g0 ROM=32K RAM=8K
|
||||
stm32g0[43][01]?8* stm32g0 ROM=64K RAM=8K
|
||||
stm32g0[56][01]?6* stm32g0 ROM=32K RAM=18K
|
||||
stm32g0[56][01]?8* stm32g0 ROM=64K RAM=18K
|
||||
stm32g0[78]1?8* stm32g0 ROM=64K RAM=36K
|
||||
stm32g0[78][01]?b* stm32g0 ROM=128K RAM=36K
|
||||
stm32g0[BC]1?c* stm32g0 ROM=256K RAM=128K
|
||||
stm32g0[BC]1?e* stm32g0 ROM=512K RAM=128K
|
||||
|
||||
stm32g4?1?6* stm32g4ccm ROM=32K RAM=22K CCM=10K
|
||||
stm32g4?1?8* stm32g4ccm ROM=64K RAM=22K CCM=10K
|
||||
stm32g4?1?b* stm32g4ccm ROM=128K RAM=22K CCM=10K
|
||||
stm32g4?1?c* stm32g4ccm ROM=256K RAM=96K CCM=16K
|
||||
stm32g4?1?e* stm32g4ccm ROM=512K RAM=96K CCM=16K
|
||||
stm32g4?[34]?b* stm32g4ccm ROM=128K RAM=96K CCM=32K
|
||||
stm32g4?[34]?c* stm32g4ccm ROM=256K RAM=96K CCM=32K
|
||||
stm32g4?[34]?e* stm32g4ccm ROM=512K RAM=96K CCM=32K
|
||||
|
||||
################################################################################
|
||||
# the SAM3 chips
|
||||
|
||||
sam3a4* sam3a ROM=256K RAM=32K RAM1=32K
|
||||
sam3a8* sam3a ROM=512K RAM=64K RAM1=32K
|
||||
|
||||
sam3n00* sam3n ROM=16K RAM=4K
|
||||
sam3n0* sam3n ROM=32K RAM=8K
|
||||
sam3n1* sam3n ROM=64K RAM=8K
|
||||
sam3n2* sam3n ROM=128K RAM=16K
|
||||
sam3n4* sam3n ROM=256K RAM=24K
|
||||
|
||||
sam3s1* sam3s ROM=64K RAM=16K
|
||||
sam3s2* sam3s ROM=128K RAM=32K
|
||||
sam3s4* sam3s ROM=256K RAM=48K
|
||||
sam3s8* sam3s ROM=512K RAM=64K
|
||||
sam3sd8* sam3s ROM=512K RAM=64K
|
||||
|
||||
sam3u1* sam3u ROM=64K RAM=8K RAM1=8K
|
||||
sam3u2* sam3u ROM=128K RAM=16K RAM1=16K
|
||||
sam3u4* sam3u ROM=265K RAM=32K RAM1=16K
|
||||
|
||||
sam3x4c* sam3x ROM=256K RAM=32K RAM1=32K
|
||||
sam3x4e* sam3xnfc ROM=256K RAM=32K RAM1=32K
|
||||
sam3x8c* sam3x ROM=512K RAM=64K RAM1=32K
|
||||
sam3x8e* sam3xnfc ROM=512K RAM=64K RAM1=32K
|
||||
|
||||
samd10?13* samd ROM=8K RAM=4K
|
||||
samd10?14* samd ROM=16K RAM=4K
|
||||
|
||||
################################################################################
|
||||
# the SAM4 chips
|
||||
|
||||
sam4l?8* sam4l ROM=512K RAM=64K RAM1=4K
|
||||
sam4l?4* sam4l ROM=256K RAM=32K RAM1=4K
|
||||
sam4l?2* sam4l ROM=128K RAM=32K RAM1=4K
|
||||
|
||||
################################################################################
|
||||
# the lpc chips
|
||||
|
||||
lpc1311* lpc13 ROM=8K RAM=4K
|
||||
lpc1313* lpc13 ROM=32K RAM=8K
|
||||
lpc1342* lpc13 ROM=16K RAM=4K
|
||||
lpc1343* lpc13 ROM=32K RAM=8K
|
||||
lpc1315* lpc13u ROM=32K RAM=8K
|
||||
lpc1316* lpc13u ROM=48K RAM=8K
|
||||
lpc1317* lpc13u ROM=64K RAM=8K RAM1=2K
|
||||
lpc1345* lpc13u ROM=32K RAM=8K USBRAM=2K
|
||||
lpc1346* lpc13u ROM=48K RAM=8K USBRAM=2K
|
||||
lpc1346* lpc13u ROM=64K RAM=8K USBRAM=2K RAM1=2K
|
||||
|
||||
lpc1751* lpc175x ROM=32K RAM=8K
|
||||
lpc1752* lpc175x ROM=64K RAM=16K
|
||||
lpc1754* lpc175x ROM=128K RAM=16K RAM1=16K
|
||||
lpc1756* lpc175x ROM=256K RAM=16K RAM1=16K
|
||||
lpc1758* lpc175x ROM=512K RAM=32K RAM1=16K RAM2=16K
|
||||
lpc1759* lpc175x ROM=512K RAM=32K RAM1=16K RAM2=16K
|
||||
lpc1763* lpc176x ROM=256K RAM=32K RAM1=16K RAM2=16K
|
||||
lpc1764* lpc176x ROM=128K RAM=16K RAM1=16K
|
||||
lpc1765* lpc176x ROM=256K RAM=32K RAM1=16K RAM2=16K
|
||||
lpc1766* lpc176x ROM=256K RAM=32K RAM1=16K RAM2=16K
|
||||
lpc1767* lpc176x ROM=512K RAM=32K RAM1=16K RAM2=16K
|
||||
lpc1768* lpc176x ROM=512K RAM=32K RAM1=16K RAM2=16K
|
||||
lpc1769* lpc176x ROM=512K RAM=32K RAM1=16K RAM2=16K
|
||||
lpc1774* lpc177x ROM=128K RAM=32K RAM1=8K
|
||||
lpc1776* lpc177x ROM=256K RAM=64K RAM1=16K
|
||||
lpc1777* lpc177x ROM=512K RAM=64K RAM1=16K RAM2=16K
|
||||
lpc1778* lpc177x ROM=512K RAM=64K RAM1=16K RAM2=16K
|
||||
lpc1785* lpc178x ROM=256K RAM=64K RAM1=16K
|
||||
lpc1786* lpc178x ROM=256K RAM=64K RAM1=16K
|
||||
lpc1787* lpc178x ROM=512K RAM=64K RAM1=16K RAM2=16K
|
||||
lpc1788* lpc178x ROM=512K RAM=64K RAM1=16K RAM2=16K
|
||||
|
||||
lpc4370* lpc43xx RAM=128K RAM1=72K RAM2=32K RAM3=16K
|
||||
lpc4350* lpc43xx RAM=128K RAM1=72K RAM2=32K RAM3=16K
|
||||
lpc4330* lpc43xx RAM=128K RAM1=72K RAM2=32K RAM3=16K
|
||||
lpc4320* lpc43xx RAM=96K RAM1=40K RAM2=32K RAM3=16K
|
||||
lpc4310* lpc43xx RAM=96K RAM1=40K RAM2=16K
|
||||
lpc43S70* lpc43xx RAM=128K RAM1=72K RAM2=32K RAM3=16K
|
||||
lpc43S50* lpc43xx RAM=128K RAM1=72K RAM2=32K RAM3=16K
|
||||
lpc43S30* lpc43xx RAM=128K RAM1=72K RAM2=32K RAM3=16K
|
||||
lpc43S20* lpc43xx RAM=96K RAM1=40K RAM2=32K RAM3=16K
|
||||
lpc43S10* lpc43xx RAM=96K RAM1=40K RAM2=16K
|
||||
lpc4367* lpc43xx ROM=512K ROM1=512K RAM=32K RAM1=40K RAM2=32K RAM3=16K
|
||||
lpc4357* lpc43xx ROM=512K ROM1=512K RAM=32K RAM1=40K RAM2=32K RAM3=16K
|
||||
lpc4355* lpc43xx ROM=384K ROM1=384K RAM=32K RAM1=40K RAM2=32K RAM3=16K
|
||||
lpc4353* lpc43xx ROM=256K ROM1=256K RAM=32K RAM1=40K RAM2=32K RAM3=16K
|
||||
lpc4352* lpc43xx ROM=512K RAM=32K RAM1=40K RAM2=32K RAM3=16K
|
||||
lpc4350* lpc43xx RAM=32K RAM1=40K RAM2=32K RAM3=16K
|
||||
lpc4337* lpc43xx ROM=512K ROM1=512K RAM=32K RAM1=40K RAM2=32K RAM3=16K
|
||||
lpc4335* lpc43xx ROM=384K ROM1=384K RAM=32K RAM1=40K RAM2=32K RAM3=16K
|
||||
lpc4333* lpc43xx ROM=256K ROM1=256K RAM=32K RAM1=40K RAM2=32K RAM3=16K
|
||||
lpc4332* lpc43xx ROM=512K RAM=32K RAM1=40K RAM2=32K RAM3=16K
|
||||
lpc4330* lpc43xx RAM=32K RAM1=40K RAM2=32K RAM3=16K
|
||||
lpc4327* lpc43xx ROM=512K ROM1=512K RAM=32K RAM1=40K RAM2=32K RAM3=16K
|
||||
lpc4325* lpc43xx ROM=384K ROM1=384K RAM=32K RAM1=40K RAM2=32K RAM3=16K
|
||||
lpc4323* lpc43xx ROM=256K ROM1=256K RAM=32K RAM1=40K RAM2=16K
|
||||
lpc4322* lpc43xx ROM=512K RAM=32K RAM1=40K RAM2=16K
|
||||
lpc4317* lpc43xx ROM=512K ROM1=512K RAM=32K RAM1=40K RAM2=32K RAM3=16K
|
||||
lpc4315* lpc43xx ROM=384K ROM1=384K RAM=32K RAM1=40K RAM2=32K RAM3=16K
|
||||
lpc4313* lpc43xx ROM=256K ROM1=256K RAM=32K RAM1=40K RAM2=16K
|
||||
lpc4312* lpc43xx ROM=512K RAM=32K RAM1=40K RAM2=16K
|
||||
lpc43S67* lpc43xx ROM=512K ROM1=512K RAM=32K RAM1=40K RAM2=32K RAM3=16K
|
||||
lpc43S57* lpc43xx RAM=32K RAM1=40K RAM2=32K RAM3=16K
|
||||
lpc43S37* lpc43xx RAM=32K RAM1=40K RAM2=32K RAM3=16K
|
||||
|
||||
################################################################################
|
||||
# the efm32 chips
|
||||
|
||||
# Zero Gecko
|
||||
efm32zg???f4 efm32zg ROM=4K RAM=2K
|
||||
efm32zg???f8 efm32zg ROM=8K RAM=2K
|
||||
efm32zg???f16 efm32zg ROM=16K RAM=4K
|
||||
efm32zg???f32 efm32zg ROM=32K RAM=4K
|
||||
|
||||
# Happy Gecko
|
||||
efm32hg[12]??f32 efm32hg ROM=32K RAM=4K
|
||||
efm32hg3??f32 efm32hg ROM=32K RAM=8K
|
||||
efm32hg???f64 efm32hg ROM=64K RAM=8K
|
||||
|
||||
# Tiny Gecko
|
||||
efm32tg108f4 efm32tg ROM=4K RAM=1K
|
||||
efm32tg110f4 efm32tg ROM=4K RAM=2K
|
||||
efm32tg???f8 efm32tg ROM=8K RAM=2K
|
||||
efm32tg???f16 efm32tg ROM=16K RAM=4K
|
||||
efm32tg???f32 efm32tg ROM=32K RAM=4K
|
||||
|
||||
# Gecko
|
||||
efm32g200f16 efm32g ROM=16K RAM=8K
|
||||
efm32g???f32 efm32g ROM=32K RAM=8K
|
||||
efm32g???f64 efm32g ROM=64K RAM=16K
|
||||
efm32g???f128 efm32g ROM=128K RAM=16K
|
||||
|
||||
# Large Gecko
|
||||
efm32lg???f64 efm32lg ROM=64K RAM=32K
|
||||
efm32lg???f128 efm32lg ROM=128K RAM=32K
|
||||
efm32lg???f256 efm32lg ROM=256K RAM=32K
|
||||
|
||||
# Giant Gecko
|
||||
efm32gg???f512 efm32gg ROM=512K RAM=128K
|
||||
efm32gg???f1024 efm32gg ROM=1024K RAM=128K
|
||||
|
||||
# Wonder Gecko
|
||||
efm32wg???f64 efm32gg ROM=64K RAM=32K
|
||||
efm32wg???f128 efm32gg ROM=128K RAM=32K
|
||||
efm32wg???f256 efm32gg ROM=256K RAM=32K
|
||||
|
||||
################################################################################
|
||||
# the TI cortex M3 chips
|
||||
|
||||
lm3s101 lm3sandstorm ROM=8K RAM=2K
|
||||
lm3s102 lm3sandstorm ROM=8K RAM=2K
|
||||
|
||||
lm3s300 lm3sandstorm ROM=16K RAM=4K
|
||||
lm3s301 lm3sandstorm ROM=16K RAM=2K
|
||||
lm3s308 lm3sandstorm ROM=16K RAM=4K
|
||||
lm3s310 lm3sandstorm ROM=16K RAM=4K
|
||||
lm3s315 lm3sandstorm ROM=16K RAM=4K
|
||||
lm3s316 lm3sandstorm ROM=16K RAM=4K
|
||||
lm3s317 lm3sandstorm ROM=16K RAM=4K
|
||||
lm3s328 lm3sandstorm ROM=16K RAM=4K
|
||||
lm3s600 lm3sandstorm ROM=32K RAM=8K
|
||||
lm3s601 lm3sandstorm ROM=32K RAM=8K
|
||||
lm3s608 lm3sandstorm ROM=32K RAM=8K
|
||||
lm3s610 lm3sandstorm ROM=32K RAM=8K
|
||||
lm3s611 lm3sandstorm ROM=32K RAM=8K
|
||||
lm3s612 lm3sandstorm ROM=32K RAM=8K
|
||||
lm3s613 lm3sandstorm ROM=32K RAM=8K
|
||||
lm3s615 lm3sandstorm ROM=32K RAM=8K
|
||||
lm3s617 lm3sandstorm ROM=32K RAM=8K
|
||||
lm3s618 lm3sandstorm ROM=32K RAM=8K
|
||||
lm3s628 lm3sandstorm ROM=32K RAM=8K
|
||||
lm3s800 lm3sandstorm ROM=64K RAM=8K
|
||||
lm3s801 lm3sandstorm ROM=64K RAM=8K
|
||||
lm3s808 lm3sandstorm ROM=64K RAM=8K
|
||||
lm3s811 lm3sandstorm ROM=64K RAM=8K
|
||||
lm3s812 lm3sandstorm ROM=64K RAM=8K
|
||||
lm3s815 lm3sandstorm ROM=64K RAM=8K
|
||||
lm3s817 lm3sandstorm ROM=64K RAM=8K
|
||||
lm3s818 lm3sandstorm ROM=64K RAM=8K
|
||||
lm3s828 lm3sandstorm ROM=64K RAM=8K
|
||||
|
||||
lm3s1110 lm3fury ROM=64K RAM=16K
|
||||
lm3s1133 lm3fury ROM=64K RAM=16K
|
||||
lm3s1138 lm3fury ROM=64K RAM=16K
|
||||
lm3s1150 lm3fury ROM=64K RAM=16K
|
||||
lm3s1162 lm3fury ROM=64K RAM=16K
|
||||
lm3s1165 lm3fury ROM=64K RAM=16K
|
||||
lm3s1332 lm3fury ROM=96K RAM=16K
|
||||
lm3s1435 lm3fury ROM=96K RAM=32K
|
||||
lm3s1439 lm3fury ROM=96K RAM=32K
|
||||
lm3s1512 lm3fury ROM=96K RAM=64K
|
||||
lm3s1538 lm3fury ROM=96K RAM=64K
|
||||
lm3s1601 lm3fury ROM=128K RAM=32K
|
||||
lm3s1607 lm3fury ROM=128K RAM=32K
|
||||
lm3s1608 lm3fury ROM=128K RAM=32K
|
||||
lm3s1620 lm3fury ROM=128K RAM=32K
|
||||
lm3s3748 lm3fury ROM=128K RAM=64K
|
||||
lm3s6965 lm3fury ROM=256K RAM=64K
|
||||
lm3s8962 lm3fury ROM=256K RAM=64K
|
||||
|
||||
lm4f120xl lm4f ROM=128K RAM=32K
|
||||
|
||||
|
||||
################################################################################
|
||||
# the TI cortex R4F chips
|
||||
|
||||
rm46l852* rm46l ROM=1280K RAM=192K
|
||||
|
||||
################################################################################
|
||||
# NXP/Freescale Vybrid VF6xx parts. (Cortex A5+M4 pair)
|
||||
|
||||
vf610 vf6xx RAM=256K RAM1=256K RAM_OFF=0x1f000000 RAM1_OFF=0x3f040000
|
||||
|
||||
################################################################################
|
||||
# SWM050 chips
|
||||
|
||||
swm050* END ROM=8K RAM=1K ROM_OFF=0x00000000 RAM_OFF=0x20000000 CPU=cortex-m0 FPU=soft
|
||||
|
||||
################################################################################
|
||||
# Qorvo PAC55xx Cortex-M4 based chips
|
||||
|
||||
pac5523 pac55xx ROM=128K RAM=32K
|
||||
pac5524 pac55xx ROM=128K RAM=32K
|
||||
pac5527 pac55xx ROM=128K RAM=32K
|
||||
pac5532 pac55xx ROM=128K RAM=32K
|
||||
pac5556 pac55xx ROM=128K RAM=32K
|
||||
|
||||
################################################################################
|
||||
################################################################################
|
||||
################################################################################
|
||||
# the STM32 family groups
|
||||
|
||||
stm32f3ccm stm32f3 CCM_OFF=0x10000000
|
||||
stm32f4ccm stm32f4 CCM_OFF=0x10000000
|
||||
stm32f7ccm stm32f7 CCM_OFF=0x20000000
|
||||
stm32g4ccm stm32g4 CCM_OFF=0x10000000
|
||||
stm32l1eep stm32l1 EEP_OFF=0x08080000
|
||||
|
||||
################################################################################
|
||||
# the SAM3 family groups
|
||||
sam3xnfc sam3x NFCRAM=4K NFCRAM_OFF=0x20100000
|
||||
|
||||
################################################################################
|
||||
# the lpc family groups
|
||||
|
||||
lpc13 lpc13xx
|
||||
lpc13u lpc13xx USBRAM_OFF=0x20004000
|
||||
|
||||
lpc17[56]x lpc17xx RAM1_OFF=0x2007C000 RAM2_OFF=0x20080000
|
||||
lpc17[78]x lpc17xx RAM1_OFF=0x20000000 RAM2_OFF=0x20004000
|
||||
|
||||
lpc43xx_m0 lpc43xx CPU=cortex-m0 FPU=soft
|
||||
lpc43xx_m4 lpc43xx CPU=cortex-m4 FPU=hard-fp4-sp-d16
|
||||
|
||||
################################################################################
|
||||
################################################################################
|
||||
################################################################################
|
||||
# the STM32 families
|
||||
|
||||
stm32f0 END ROM_OFF=0x08000000 RAM_OFF=0x20000000 CPU=cortex-m0 FPU=soft
|
||||
stm32f1 END ROM_OFF=0x08000000 RAM_OFF=0x20000000 CPU=cortex-m3 FPU=soft
|
||||
stm32f2 END ROM_OFF=0x08000000 RAM_OFF=0x20000000 CPU=cortex-m3 FPU=soft
|
||||
stm32f3 END ROM_OFF=0x08000000 RAM_OFF=0x20000000 CPU=cortex-m4 FPU=hard-fpv4-sp-d16
|
||||
stm32f4 END ROM_OFF=0x08000000 RAM_OFF=0x20000000 CPU=cortex-m4 FPU=hard-fpv4-sp-d16
|
||||
#stm32f7 is supported on GCC-arm-embedded 4.8 2014q4
|
||||
stm32f7 END ROM_OFF=0x08000000 RAM_OFF=0x20010000 CPU=cortex-m7 FPU=hard-fpv5-sp-d16
|
||||
stm32l0 END ROM_OFF=0x08000000 RAM_OFF=0x20000000 CPU=cortex-m0plus FPU=soft
|
||||
stm32l1 END ROM_OFF=0x08000000 RAM_OFF=0x20000000 CPU=cortex-m3 FPU=soft
|
||||
stm32l4 END ROM_OFF=0x08000000 RAM_OFF=0x20000000 RAM2_OFF=0x10000000 RAM3_OFF=0x20040000 CPU=cortex-m4 FPU=hard-fpv4-sp-d16
|
||||
stm32g0 END ROM_OFF=0x08000000 RAM_OFF=0x20000000 CPU=cortex-m0plus FPU=soft
|
||||
stm32g4 END ROM_OFF=0x08000000 RAM_OFF=0x20000000 CPU=cortex-m4 FPU=hard-fpv4-sp-d16
|
||||
stm32w END ROM_OFF=0x08000000 RAM_OFF=0x20000000 CPU=cortex-m3 FPU=soft
|
||||
stm32t END ROM_OFF=0x08000000 RAM_OFF=0x20000000 CPU=cortex-m3 FPU=soft
|
||||
|
||||
################################################################################
|
||||
# the SAM3 families
|
||||
|
||||
sam3a END ROM_OFF=0x00080000 RAM_OFF=0x20000000 RAM1_OFF=0x20080000 CPU=cortex-m3 FPU=soft
|
||||
sam3n END ROM_OFF=0x00400000 RAM_OFF=0x20000000 CPU=cortex-m3 FPU=soft
|
||||
sam3s END ROM_OFF=0x00400000 RAM_OFF=0x20000000 CPU=cortex-m3 FPU=soft
|
||||
sam3u END ROM_OFF=0x00080000 RAM_OFF=0x20000000 RAM1_OFF=0x20080000 NFCRAM=4K NFCRAM_OFF=0x20100000 CPU=cortex-m3 FPU=soft
|
||||
sam3x END ROM_OFF=0x00080000 RAM_OFF=0x20000000 RAM1_OFF=0x20080000 CPU=cortex-m3 FPU=soft
|
||||
samd END ROM_OFF=0x00000000 RAM_OFF=0x20000000 CPU=cortex-m0plus FPU=soft
|
||||
|
||||
################################################################################
|
||||
# the SAM4 families
|
||||
sam4l END ROM_OFF=0x00000000 RAM_OFF=0x20000000 RAM1_OFF=0x21000000
|
||||
|
||||
################################################################################
|
||||
# the lpc families
|
||||
|
||||
lpc13xx END ROM_OFF=0x00000000 RAM_OFF=0x10000000 RAM1_OFF=0x20000000 CPU=cortex-m3 FPU=soft
|
||||
lpc17xx END ROM_OFF=0x00000000 RAM_OFF=0x10000000 CPU=cortex-m3 FPU=soft
|
||||
lpc43xx + ROM_OFF=0x1A000000 ROM1_OFF=0x1B000000 RAM_OFF=0x10000000 RAM1_OFF=0x10080000
|
||||
lpc43xx + RAM2_OFF=0x20000000 RAM3_OFF=0x20008000
|
||||
lpc43xx END CPU=cortex-m4 FPU=hard-fpv4-sp-d16
|
||||
|
||||
################################################################################
|
||||
# the efm32 Gecko families
|
||||
|
||||
efm32zg END ROM_OFF=0x00000000 RAM_OFF=0x20000000 RAM1_OFF=0x10000000 CPU=cortex-m0plus FPU=soft
|
||||
efm32hg END ROM_OFF=0x00000000 RAM_OFF=0x20000000 RAM1_OFF=0x10000000 CPU=cortex-m0plus FPU=soft
|
||||
efm32tg END ROM_OFF=0x00000000 RAM_OFF=0x20000000 RAM1_OFF=0x10000000 CPU=cortex-m3 FPU=soft
|
||||
efm32g END ROM_OFF=0x00000000 RAM_OFF=0x20000000 RAM1_OFF=0x10000000 CPU=cortex-m3 FPU=soft
|
||||
efm32lg END ROM_OFF=0x00000000 RAM_OFF=0x20000000 RAM1_OFF=0x10000000 CPU=cortex-m3 FPU=soft
|
||||
efm32gg END ROM_OFF=0x00000000 RAM_OFF=0x20000000 RAM1_OFF=0x10000000 CPU=cortex-m3 FPU=soft
|
||||
efm32wg END ROM_OFF=0x00000000 RAM_OFF=0x20000000 RAM1_OFF=0x10000000 CPU=cortex-m4 FPU=hard-fpv4-sp-d16
|
||||
|
||||
################################################################################
|
||||
# Cortex LM3 and LM4 families
|
||||
|
||||
lm3fury lm3s
|
||||
lm3sandstorm lm3s
|
||||
lm3s END ROM_OFF=0x00000000 RAM_OFF=0x20000000 CPU=cortex-m3 FPU=soft
|
||||
lm4f END ROM_OFF=0x00000000 RAM_OFF=0x20000000 CPU=cortex-m4 FPU=hard-fpv4-sp-d16
|
||||
|
||||
|
||||
################################################################################
|
||||
# Cortex R4F families
|
||||
|
||||
rm46l END ROM_OFF=0x00000000 RAM_OFF=0x08000000 RAM1_OFF=0x08400000
|
||||
|
||||
################################################################################
|
||||
# VF6xx families
|
||||
|
||||
vf6xx END CPU=cortex-m4 FPU=hard-fpv4-sp-d16
|
||||
|
||||
################################################################################
|
||||
# PAC55xx families
|
||||
|
||||
pac55xx END ROM_OFF=0x00000000 RAM_OFF=0x20000000 CPU=cortex-m4 FPU=hard-fpv4-sp-d16
|
||||
203
libopencm3/ld/linker.ld.S
Normal file
203
libopencm3/ld/linker.ld.S
Normal file
@@ -0,0 +1,203 @@
|
||||
/*
|
||||
* This file is part of the libopencm3 project.
|
||||
*
|
||||
* Copyright (C) 2009 Uwe Hermann <uwe@hermann-uwe.de>
|
||||
* Copyright (C) 2013 Frantisek Burian <BuFran@seznam.cz>
|
||||
*
|
||||
* This library is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this library. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/* Generic linker script for all targets using libopencm3. */
|
||||
|
||||
/* Enforce emmition of the vector table. */
|
||||
EXTERN(vector_table)
|
||||
|
||||
/* Define the entry point of the output file. */
|
||||
ENTRY(reset_handler)
|
||||
|
||||
/* Define memory regions. */
|
||||
MEMORY
|
||||
{
|
||||
/* RAM is always used */
|
||||
ram (rwx) : ORIGIN = _RAM_OFF, LENGTH = _RAM
|
||||
|
||||
#if defined(_ROM)
|
||||
rom (rx) : ORIGIN = _ROM_OFF, LENGTH = _ROM
|
||||
#endif
|
||||
#if defined(_ROM1)
|
||||
rom1 (rx) : ORIGIN = _ROM1_OFF, LENGTH = _ROM1
|
||||
#endif
|
||||
#if defined(_ROM2)
|
||||
rom2 (rx) : ORIGIN = _ROM2_OFF, LENGTH = _ROM2
|
||||
#endif
|
||||
#if defined(_RAM1)
|
||||
ram1 (rwx) : ORIGIN = _RAM1_OFF, LENGTH = _RAM1
|
||||
#endif
|
||||
#if defined(_RAM2)
|
||||
ram2 (rwx) : ORIGIN = _RAM2_OFF, LENGTH = _RAM2
|
||||
#endif
|
||||
#if defined(_RAM3)
|
||||
ram3 (rwx) : ORIGIN = _RAM3_OFF, LENGTH = _RAM3
|
||||
#endif
|
||||
#if defined(_CCM)
|
||||
ccm (rwx) : ORIGIN = _CCM_OFF, LENGTH = _CCM
|
||||
#endif
|
||||
#if defined(_EEP)
|
||||
eep (r) : ORIGIN = _EEP_OFF, LENGTH = _EEP
|
||||
#endif
|
||||
#if defined(_XSRAM)
|
||||
xsram (rw) : ORIGIN = _XSRAM_OFF, LENGTH = _XSRAM
|
||||
#endif
|
||||
#if defined(_XDRAM)
|
||||
xdram (rw) : ORIGIN = _XDRAM_OFF, LENGTH = _XDRAM
|
||||
#endif
|
||||
#if defined(_NFCRAM)
|
||||
nfcram (rw) : ORIGIN _NFCRAM_OFF, LENGTH = _NFCRAM
|
||||
#endif
|
||||
}
|
||||
|
||||
/* Define sections. */
|
||||
SECTIONS
|
||||
{
|
||||
.text : {
|
||||
*(.vectors) /* Vector table */
|
||||
*(.text*) /* Program code */
|
||||
. = ALIGN(4);
|
||||
*(.rodata*) /* Read-only data */
|
||||
. = ALIGN(4);
|
||||
} >rom
|
||||
|
||||
/* C++ Static constructors/destructors, also used for
|
||||
* __attribute__((constructor)) and the likes.
|
||||
*/
|
||||
.preinit_array : {
|
||||
. = ALIGN(4);
|
||||
__preinit_array_start = .;
|
||||
KEEP (*(.preinit_array))
|
||||
__preinit_array_end = .;
|
||||
} >rom
|
||||
.init_array : {
|
||||
. = ALIGN(4);
|
||||
__init_array_start = .;
|
||||
KEEP (*(SORT(.init_array.*)))
|
||||
KEEP (*(.init_array))
|
||||
__init_array_end = .;
|
||||
} >rom
|
||||
.fini_array : {
|
||||
. = ALIGN(4);
|
||||
__fini_array_start = .;
|
||||
KEEP (*(.fini_array))
|
||||
KEEP (*(SORT(.fini_array.*)))
|
||||
__fini_array_end = .;
|
||||
} >rom
|
||||
|
||||
/*
|
||||
* Another section used by C++ stuff, appears when using newlib with
|
||||
* 64bit (long long) printf support
|
||||
*/
|
||||
.ARM.extab : {
|
||||
*(.ARM.extab*)
|
||||
} >rom
|
||||
.ARM.exidx : {
|
||||
__exidx_start = .;
|
||||
*(.ARM.exidx*)
|
||||
__exidx_end = .;
|
||||
} >rom
|
||||
|
||||
. = ALIGN(4);
|
||||
_etext = .;
|
||||
|
||||
/* ram, but not cleared on reset, eg boot/app comms */
|
||||
.noinit (NOLOAD) : {
|
||||
*(.noinit*)
|
||||
} >ram
|
||||
. = ALIGN(4);
|
||||
|
||||
.data : {
|
||||
_data = .;
|
||||
*(.data*) /* Read-write initialized data */
|
||||
*(.ramtext*) /* "text" functions to run in ram */
|
||||
. = ALIGN(4);
|
||||
_edata = .;
|
||||
} >ram AT >rom
|
||||
_data_loadaddr = LOADADDR(.data);
|
||||
|
||||
.bss : {
|
||||
*(.bss*) /* Read-write zero initialized data */
|
||||
*(COMMON)
|
||||
. = ALIGN(4);
|
||||
_ebss = .;
|
||||
} >ram
|
||||
|
||||
#if defined(_CCM)
|
||||
.ccm : {
|
||||
*(.ccmram*)
|
||||
. = ALIGN(4);
|
||||
} >ccm
|
||||
#endif
|
||||
|
||||
#if defined(_RAM1)
|
||||
.ram1 : {
|
||||
*(.ram1*)
|
||||
. = ALIGN(4);
|
||||
} >ram1
|
||||
#endif
|
||||
|
||||
#if defined(_RAM2)
|
||||
.ram2 : {
|
||||
*(.ram2*)
|
||||
. = ALIGN(4);
|
||||
} >ram2
|
||||
#endif
|
||||
|
||||
#if defined(_RAM3)
|
||||
.ram3 : {
|
||||
*(.ram3*)
|
||||
. = ALIGN(4);
|
||||
} >ram3
|
||||
#endif
|
||||
|
||||
#if defined(_XSRAM)
|
||||
.xsram : {
|
||||
*(.xsram*)
|
||||
. = ALIGN(4);
|
||||
} >xsram
|
||||
#endif
|
||||
|
||||
#if defined(_XDRAM)
|
||||
.xdram : {
|
||||
*(.xdram*)
|
||||
. = ALIGN(4);
|
||||
} >xdram
|
||||
#endif
|
||||
|
||||
#if defined(_NFCRAM)
|
||||
.nfcram : {
|
||||
*(.nfcram*)
|
||||
. = ALIGN(4);
|
||||
} >nfcram
|
||||
#endif
|
||||
|
||||
/*
|
||||
* The .eh_frame section appears to be used for C++ exception handling.
|
||||
* You may need to fix this if you're using C++.
|
||||
*/
|
||||
/DISCARD/ : { *(.eh_frame) }
|
||||
|
||||
. = ALIGN(4);
|
||||
end = .;
|
||||
}
|
||||
|
||||
PROVIDE(_stack = ORIGIN(ram) + LENGTH(ram));
|
||||
|
||||
2
libopencm3/ld/tests/device.data
Normal file
2
libopencm3/ld/tests/device.data
Normal file
@@ -0,0 +1,2 @@
|
||||
device family A=val B=val
|
||||
family END CPU=cpu FPU=fpu
|
||||
6
libopencm3/ld/tests/device.result
Normal file
6
libopencm3/ld/tests/device.result
Normal file
@@ -0,0 +1,6 @@
|
||||
-DFAMILY -DDEVICE
|
||||
-DFAMILY -DDEVICE -D_A=val -D_B=val
|
||||
family
|
||||
device
|
||||
cpu
|
||||
fpu
|
||||
1
libopencm3/ld/tests/ignore.data
Normal file
1
libopencm3/ld/tests/ignore.data
Normal file
@@ -0,0 +1 @@
|
||||
ignore END A B C D -E=val f=val
|
||||
6
libopencm3/ld/tests/ignore.result
Normal file
6
libopencm3/ld/tests/ignore.result
Normal file
@@ -0,0 +1,6 @@
|
||||
-DIGNORE
|
||||
-DIGNORE
|
||||
ignore
|
||||
|
||||
|
||||
|
||||
2
libopencm3/ld/tests/multiline.data
Normal file
2
libopencm3/ld/tests/multiline.data
Normal file
@@ -0,0 +1,2 @@
|
||||
multiline + A=val B=val
|
||||
multiline END C=val D=val
|
||||
6
libopencm3/ld/tests/multiline.result
Normal file
6
libopencm3/ld/tests/multiline.result
Normal file
@@ -0,0 +1,6 @@
|
||||
-DMULTILINE
|
||||
-DMULTILINE -D_A=val -D_B=val -D_C=val -D_D=val
|
||||
multiline
|
||||
|
||||
|
||||
|
||||
2
libopencm3/ld/tests/pattern.data
Normal file
2
libopencm3/ld/tests/pattern.data
Normal file
@@ -0,0 +1,2 @@
|
||||
p?tte* parent A=val B=val
|
||||
parent END C=val D=val
|
||||
6
libopencm3/ld/tests/pattern.result
Normal file
6
libopencm3/ld/tests/pattern.result
Normal file
@@ -0,0 +1,6 @@
|
||||
-DPARENT -DPATTERN
|
||||
-DPARENT -DPATTERN -D_A=val -D_B=val -D_C=val -D_D=val
|
||||
parent
|
||||
pattern
|
||||
|
||||
|
||||
1
libopencm3/ld/tests/single.data
Normal file
1
libopencm3/ld/tests/single.data
Normal file
@@ -0,0 +1 @@
|
||||
single END A=val B=val
|
||||
6
libopencm3/ld/tests/single.result
Normal file
6
libopencm3/ld/tests/single.result
Normal file
@@ -0,0 +1,6 @@
|
||||
-DSINGLE
|
||||
-DSINGLE -D_A=val -D_B=val
|
||||
single
|
||||
|
||||
|
||||
|
||||
2
libopencm3/ld/tests/tree1.data
Normal file
2
libopencm3/ld/tests/tree1.data
Normal file
@@ -0,0 +1,2 @@
|
||||
tree1 parent A=val B=val
|
||||
parent END C=val D=val
|
||||
6
libopencm3/ld/tests/tree1.result
Normal file
6
libopencm3/ld/tests/tree1.result
Normal file
@@ -0,0 +1,6 @@
|
||||
-DPARENT -DTREE1
|
||||
-DPARENT -DTREE1 -D_A=val -D_B=val -D_C=val -D_D=val
|
||||
parent
|
||||
tree1
|
||||
|
||||
|
||||
5
libopencm3/ld/tests/tree5.data
Normal file
5
libopencm3/ld/tests/tree5.data
Normal file
@@ -0,0 +1,5 @@
|
||||
tree5 tree4 A=val
|
||||
tree4 tree3 B=val
|
||||
tree3 tree2 C=val
|
||||
tree2 tree1 D=val
|
||||
tree1 END E=VAL F=val
|
||||
6
libopencm3/ld/tests/tree5.result
Normal file
6
libopencm3/ld/tests/tree5.result
Normal file
@@ -0,0 +1,6 @@
|
||||
-DTREE1 -DTREE2 -DTREE3 -DTREE4 -DTREE5
|
||||
-DTREE1 -DTREE2 -DTREE3 -DTREE4 -DTREE5 -D_A=val -D_B=val -D_C=val -D_D=val -D_E=VAL -D_F=val
|
||||
tree1
|
||||
tree2
|
||||
|
||||
|
||||
4
libopencm3/ld/tests/twomatch.data
Normal file
4
libopencm3/ld/tests/twomatch.data
Normal file
@@ -0,0 +1,4 @@
|
||||
twomatch treeparent A=val B=val C=val D=val
|
||||
# the next line will be ignored because previous matches before and no + there
|
||||
twomatch treeparent P=val Q=val R=val S=val
|
||||
treeparent END E F
|
||||
6
libopencm3/ld/tests/twomatch.result
Normal file
6
libopencm3/ld/tests/twomatch.result
Normal file
@@ -0,0 +1,6 @@
|
||||
-DTREEPARENT -DTWOMATCH
|
||||
-DTREEPARENT -DTWOMATCH -D_A=val -D_B=val -D_C=val -D_D=val
|
||||
treeparent
|
||||
twomatch
|
||||
|
||||
|
||||
Reference in New Issue
Block a user