# -*- coding: utf-8 -*-
#
# Copyright (c) 2010-2011 Chris Liechti <cliechti@gmx.net>
# All Rights Reserved.
# Simplified BSD License (see LICENSE.txt for full text)
#
#
# This is a configuration file that is machine read. be careful when editing!
#
# The syntax is quite simple: it is parsed as white space delimited words.
# <-- this is a comment, it skips the rest of the line
#
# Supported commands are:
# - segment <name>    <memory_range>
# - memory-map-begin
# - memory-map-end
# - name <name>
# - based_on <name>
# - template-begin
# - template-variables
# - template-values
# - template-end
# - read-only
# - programmable
#
# Words in brackets ("<...>") mean that the words following the command
# are consumed as parameter to the command.


# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Logical Segmentation
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

memory-map-begin
    name        LOGICAL
    # declare a "DATA" segment at the beginning of RAM
    segment     .data           in:RAM
    segment     .bss            in:RAM
    segment     .noinit         in:RAM
    symbol      _stack          in:RAM,location:end

    # declare multiple segments that are located in FLASH
    programmable segment    .text           in:FLASH
    programmable segment    .const          in:FLASH
    programmable segment    .data_init      in:FLASH,mirror:.data
memory-map-end

# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Physical Memory Layout
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

memory-map-begin
    name         MSP430F0xx
    # Logical
    segment     .data           in:RAM
    segment     .bss            in:RAM
    segment     .noinit         in:RAM
    symbol      _stack          in:RAM,location:end
    # Physical
                 segment     RAM            0x2380-0x23ff
memory-map-end

memory-map-begin
    name         MSP430C091
    based-on     MSP430F0xx
    programmable segment     .vectors       0xffe0-0xffff
    read-only    segment    BC              0xf800-0xf87f
    programmable segment    ROM             0xfc80-0xffdf
    programmable segment    .text           in:ROM
    programmable segment    .const          in:ROM
    programmable segment    .data_init      in:ROM,mirror:.data
                 segment    CRAM            0x1c00-0x1c5f
memory-map-end

memory-map-begin
    name         MSP430C092
    based-on     MSP430F0xx
    programmable segment     .vectors       0xffe0-0xffff
    read-only    segment    BC              0xf800-0xf87f
    programmable segment    ROM             0xf880-0xffdf
    programmable segment    .text           in:ROM
    programmable segment    .const          in:ROM
    programmable segment    .data_init      in:ROM,mirror:.data
                 segment    CRAM            0x1c00-0x1c5f
memory-map-end

memory-map-begin
    name         MSP430L092
    based-on     MSP430F0xx
    programmable segment     .vectors       0x1c60-0x1c7f
    read-only    segment    .bootloader     0xf800-0xffdf
    programmable segment    LRAM            0x1c80-0x237f
    programmable segment    .text           in:LRAM
    programmable segment    .const          in:LRAM
    programmable segment    .data_init      in:LRAM,mirror:.data
                 segment    CRAM            0x1c00-0x1c5f
memory-map-end

memory-map-begin
    name         MSP430L092_EMU
    based-on     MSP430F0xx
    programmable segment     .vectors       0xffe0-0xffff
                 segment    BC              0xf800-0xf87f
    programmable segment    LRAM            0xf900-0xffdf
    programmable segment    .text           in:LRAM
    programmable segment    .const          in:LRAM
    programmable segment    .data_init      in:LRAM,mirror:.data
                 segment    CRAM            0xf880-0xf8ff
memory-map-end



# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

memory-map-begin
    name         MSP430F1xx
    based-on     LOGICAL
    read-only    segment     .bootloader    0x0c00-0x0fff
    programmable segment     .infomem       0x1000-0x10ff   # 256B Information memory (Flash)
    programmable segment     .infoB         0x1000-0x107f
    programmable segment     .infoA         0x1080-0x10ff
    programmable segment     .vectors       0xffe0-0xffff
memory-map-end

template-begin
    memory-map-begin
        based-on     MSP430F1xx
                     segment     RAM        <RAM>
        programmable segment     FLASH      <FLASH>
        name                                <MCU>
    memory-map-end
template-variables
    <MCU>               <RAM>           <FLASH>
template-values
    MSP430F110           0x0200-0x027f   0xfc00-0xffdf    # 128B  1kB
    MSP430F1101          0x0200-0x027f   0xfc00-0xffdf    # 128B  1kB
    MSP430F1101A         0x0200-0x027f   0xfc00-0xffdf    # 128B  1kB
    MSP430F1111          0x0200-0x027f   0xf800-0xffdf    # 128B  2kB
    MSP430F1111A         0x0200-0x027f   0xf800-0xffdf    # 128B  2kB
    MSP430F112           0x0200-0x02ff   0xf000-0xffdf    # 256B  4kB
    MSP430F1121          0x0200-0x02ff   0xf000-0xffdf    # 256B  4kB
    MSP430F1121A         0x0200-0x02ff   0xf000-0xffdf    # 256B  4kB
    MSP430F1122          0x0200-0x02ff   0xf000-0xffdf    # 256B  4kB
    MSP430F1132          0x0200-0x02ff   0xe000-0xffdf    # 256B  8kB
    MSP430F122           0x0200-0x02ff   0xf000-0xffdf    # 256B  4kB
    MSP430F1222          0x0200-0x02ff   0xf000-0xffdf    # 256B  4kB
    MSP430F123           0x0200-0x02ff   0xe000-0xffdf    # 256B  8kB
    MSP430F1232          0x0200-0x02ff   0xe000-0xffdf    # 256B  8kB
    MSP430F133           0x0200-0x02ff   0xe000-0xffdf    # 256B  8kB
    MSP430F135           0x0200-0x03ff   0xc000-0xffdf    # 512B 16kB
    MSP430F147           0x0200-0x05ff   0x8000-0xffdf    #  1kB 32kB
    MSP430F1471          0x0200-0x05ff   0x8000-0xffdf    #  1kB 32kB
    MSP430F148           0x0200-0x09ff   0x4000-0xffdf    #  2kB 48kB
    MSP430F1481          0x0200-0x09ff   0x4000-0xffdf    #  2kB 48kB
    MSP430F149           0x0200-0x09ff   0x1100-0xffdf    #  2kB 59kB
    MSP430F1491          0x0200-0x09ff   0x1100-0xffdf    #  2kB 59kB
    MSP430F155           0x0200-0x03ff   0xc000-0xffdf    # 512B 16kB
    MSP430F156           0x0200-0x05ff   0xa000-0xffdf    #  1kB 24kB
    MSP430F157           0x0200-0x05ff   0x8000-0xffdf    #  1kB 32kB
    MSP430F1610          0x1100-0x24ff   0x8000-0xffdf    # 512B 32kB
    MSP430F1611          0x1100-0x38ff   0x4000-0xffdf    #  1kB 48kB
    MSP430F1612          0x1100-0x24ff   0x2500-0xffdf    # 512B 54kB
    MSP430F167           0x0200-0x05ff   0x8000-0xffdf    #  1kB 32kB
    MSP430F168           0x0200-0x09ff   0x4000-0xffdf    #  2kB 48kB
    MSP430F169           0x0200-0x09ff   0x1100-0xffdf    #  2kB 59kB

    # special entry to link software into RAM instead of Flash
    MSP430F1xxRAM       0x0200-0x021f   0x0220-0x09ff    #    32B 2016B
template-end

# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

memory-map-begin
    name         MSP430F2xx
    based-on     LOGICAL
    read-only    segment     .bootloader    0x0c00-0x0fff
    programmable segment     .infomem       0x1000-0x10ff
    programmable segment     .infoD         0x1000-0x103f
    programmable segment     .infoC         0x1040-0x107f
    programmable segment     .infoB         0x1080-0x10bf
    programmable segment     .infoA         0x10c0-0x10ff
memory-map-end

template-begin
    memory-map-begin
        based-on     MSP430F2xx
                     segment     RAM        <RAM>
        programmable segment     FLASH      <FLASH>
        name                                <MCU>
        programmable segment     .vectors   0xffe0-0xffff
        programmable segment     BSLKEY     0xffde-0xffdf
    memory-map-end
template-variables
    <MCU>               <RAM>           <FLASH>
template-values
    MSP430F2001          0x0200-0x027f   0xfc00-0xffdf    # 128B  1kB
    MSP430F2002          0x0200-0x027f   0xfc00-0xffdf    # 128B  1kB
    MSP430F2003          0x0200-0x027f   0xfc00-0xffdf    # 128B  1kB
    MSP430F2011          0x0200-0x027f   0xf800-0xffdf    # 128B  2kB
    MSP430F2012          0x0200-0x027f   0xf800-0xffdf    # 128B  2kB
    MSP430F2013          0x0200-0x027f   0xf800-0xffdf    # 128B  2kB
    MSP430F2101          0x0200-0x027f   0xfc00-0xffdf    # 128B  1kB
    MSP430F2111          0x0200-0x027f   0xf800-0xffdd    # 128B  1kB
    MSP430F2112          0x0200-0x02ff   0xf800-0xffdd    # 256B  1kB
    MSP430F2121          0x0200-0x02ff   0xf000-0xffdd    # 256B  3kB
    MSP430F2122          0x0200-0x03ff   0xf000-0xffdd    # 512B  3kB
    MSP430F2131          0x0200-0x02ff   0xe000-0xffdd    # 256B  7kB
    MSP430F2132          0x0200-0x03ff   0xe000-0xffdd    # 512B  7kB
    MSP430F2232          0x0200-0x03ff   0xe000-0xffdd    # 512B  7kB
    MSP430F2234          0x0200-0x03ff   0xe000-0xffdd    # 512B  7kB
    MSP430F2252          0x0200-0x03ff   0xc000-0xffdd    # 512B 15kB
    MSP430F2254          0x0200-0x03ff   0xc000-0xffdd    # 512B 15kB
    MSP430F2272          0x0200-0x05ff   0x8000-0xffdd    #  1kB 31kB
    MSP430F2274          0x0200-0x05ff   0x8000-0xffdd    #  1kB 31kB
    MSP430F233           0x0200-0x05ff   0xe000-0xffdd    #  1kB  7kB
    MSP430F2330          0x0200-0x05ff   0xe000-0xffdd    #  1kB  7kB
    MSP430F235           0x0200-0x09ff   0xc000-0xffdd    #  2kB 15kB
    MSP430F2350          0x0200-0x09ff   0xc000-0xffdd    #  2kB 15kB
    MSP430F2370          0x0200-0x09ff   0x8000-0xffdd    #  2kB 31kB
    MSP430F2410          0x1100-0x20ff   0x2100-0xffbd    #  4kB 55kB
    MSP430F247           0x1100-0x20ff   0x8000-0xffbd    #  4kB 31kB
    MSP430F2471          0x1100-0x20ff   0x8000-0xffbd    #  4kB 31kB
    MSP430F248           0x1100-0x20ff   0x4000-0xffbd    #  4kB 47kB
    MSP430F2481          0x1100-0x20ff   0x4000-0xffbd    #  4kB 47kB
    MSP430F249           0x0200-0x09ff   0x1100-0xffbd    #  2kB 59kB
    MSP430F2491          0x0200-0x09ff   0x1100-0xffbd    #  2kB 59kB

    # special entry to link software into RAM instead of Flash
    MSP430F2xxRAM       0x0200-0x021f   0x0220-0x09ff    #    32B 2016B
template-end

template-begin
    memory-map-begin
        based-on     MSP430F2xx
                     segment     RAM        <RAM>
        programmable segment     FLASH      <FLASH>
        programmable segment     FLASH2     <FLASH2>
        name                                <MCU>
        programmable segment     .vectors   0xffc0-0xffff
        programmable segment     BSLKEY     0xffde-0xffdf
    memory-map-end
template-variables
    <MCU>               <RAM>           <FLASH>         <FLASH2>
template-values
    MSP430F2416          0x1100-0x20ff   0x2100-0xffbd    0x00010000-0x00018fff    # 4kB 55kB + 36kB = 91kB
    MSP430F2417          0x1100-0x30ff   0x3100-0xffbd    0x00010000-0x00019fff    # 8kB 51kB + 40kB = 91kB
    MSP430F2418          0x1100-0x30ff   0x3100-0xffbd    0x00010000-0x0001ffff    # 8kB 51kB + 64kB = 115kB
    MSP430F2419          0x1100-0x20ff   0x2100-0xffbd    0x00010000-0x0001ffff    # 4kB 55kB + 64kB = 119kB
    MSP430F2616          0x1100-0x20ff   0x2100-0xffbd    0x00010000-0x00018fff    # 4kB 55kB + 36kB = 91kB
    MSP430F2617          0x1100-0x30ff   0x3100-0xffbd    0x00010000-0x00019fff    # 8kB 51kB + 40kB = 91kB
    MSP430F2618          0x1100-0x30ff   0x3100-0xffbd    0x00010000-0x0001ffff    # 8kB 51kB + 64kB = 115kB
    MSP430F2619          0x1100-0x20ff   0x2100-0xffbd    0x00010000-0x0001ffff    # 4kB 55kB + 64kB = 119kB
template-end

# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# value line
template-begin
    memory-map-begin
        based-on     MSP430F2xx
                     segment     RAM        <RAM>
        programmable segment     FLASH      <FLASH>
        name                                <MCU>
        programmable segment     .vectors   0xffe0-0xffff
    memory-map-end
template-variables
    <MCU>               <RAM>           <FLASH>
template-values

    MSP430G2001          0x0200-0x027f   0xfe00-0xffdf    # 128B  512B
    MSP430G2101          0x0200-0x027f   0xfc00-0xffdf    # 128B  1kB
    MSP430G2102          0x0200-0x02ff   0xfc00-0xffdf    # 256B  1kB
    MSP430G2111          0x0200-0x027f   0xfc00-0xffdf    # 128B  1kB
    MSP430G2112          0x0200-0x02ff   0xfc00-0xffdf    # 256B  1kB
    MSP430G2113          0x0200-0x02ff   0xfc00-0xffdf    # 256B  1kB
    MSP430G2121          0x0200-0x027f   0xfc00-0xffdf    # 128B  1kB
    MSP430G2131          0x0200-0x027f   0xfc00-0xffdf    # 128B  1kB
    MSP430G2132          0x0200-0x02ff   0xfc00-0xffdf    # 256B  1kB
    MSP430G2152          0x0200-0x02ff   0xfc00-0xffdf    # 256B  1kB
    MSP430G2153          0x0200-0x02ff   0xfc00-0xffdf    # 256B  1kB
    MSP430G2201          0x0200-0x027f   0xf800-0xffdf    # 128B  2kB
    MSP430G2202          0x0200-0x02ff   0xf800-0xffdf    # 256B  2kB
    MSP430G2203          0x0200-0x02ff   0xf800-0xffdf    # 256B  2kB
    MSP430G2210          0x0200-0x027f   0xf800-0xffdf    # 128B  2kB
    MSP430G2211          0x0200-0x027f   0xf800-0xffdf    # 128B  2kB
    MSP430G2212          0x0200-0x02ff   0xf800-0xffdf    # 256B  2kB
    MSP430G2213          0x0200-0x02ff   0xf800-0xffdf    # 256B  2kB
    MSP430G2221          0x0200-0x027f   0xf800-0xffdf    # 128B  2kB
    MSP430G2230          0x0200-0x027f   0xf800-0xffdf    # 128B  2kB
    MSP430G2231          0x0200-0x027f   0xf800-0xffdf    # 128B  2kB
    MSP430G2232          0x0200-0x02ff   0xf800-0xffdf    # 256B  2kB
    MSP430G2233          0x0200-0x02ff   0xf800-0xffdf    # 256B  2kB
    MSP430G2252          0x0200-0x02ff   0xf800-0xffdf    # 256B  2kB
    MSP430G2253          0x0200-0x02ff   0xf800-0xffdf    # 256B  2kB
    MSP430G2302          0x0200-0x02ff   0xf000-0xffdf    # 256B  4kB
    MSP430G2303          0x0200-0x02ff   0xf000-0xffdf    # 256B  4kB
    MSP430G2312          0x0200-0x02ff   0xf000-0xffdf    # 256B  4kB
    MSP430G2313          0x0200-0x02ff   0xf000-0xffdf    # 256B  4kB
    MSP430G2332          0x0200-0x02ff   0xf000-0xffdf    # 256B  4kB
    MSP430G2333          0x0200-0x02ff   0xf000-0xffdf    # 256B  4kB
    MSP430G2352          0x0200-0x02ff   0xf000-0xffdf    # 256B  4kB
    MSP430G2353          0x0200-0x02ff   0xf000-0xffdf    # 256B  4kB
    MSP430G2402          0x0200-0x02ff   0xe000-0xffdf    # 256B  8kB
    MSP430G2403          0x0200-0x03ff   0xe000-0xffdf    # 512B  8kB
    MSP430G2412          0x0200-0x02ff   0xe000-0xffdf    # 256B  8kB
    MSP430G2413          0x0200-0x03ff   0xe000-0xffdf    # 512B  8kB
    MSP430G2432          0x0200-0x02ff   0xe000-0xffdf    # 256B  8kB
    MSP430G2433          0x0200-0x03ff   0xe000-0xffdf    # 512B  8kB
    MSP430G2444          0x0200-0x03ff   0xe000-0xffdd    # 512B  7kB
    MSP430G2452          0x0200-0x02ff   0xe000-0xffdf    # 256B  8kB
    MSP430G2453          0x0200-0x03ff   0xe000-0xffdf    # 512B  8kB
    MSP430G2513          0x0200-0x03ff   0xc000-0xffdf    # 512B 16kB
    MSP430G2533          0x0200-0x03ff   0xc000-0xffdf    # 512B 16kB
    MSP430G2544          0x0200-0x03ff   0xc000-0xffdd    # 512B 15kB
    MSP430G2553          0x0200-0x03ff   0xc000-0xffdf    # 512B 16kB
    MSP430G2744          0x0200-0x05ff   0x8000-0xffdd    #  1kB 31kB
    MSP430G2755          0x1100-0x20ff   0x8000-0xffdf    #  4kB 32kB
    MSP430G2855          0x1100-0x20ff   0x4000-0xffdf    #  4kB 48kB
    MSP430G2955          0x1100-0x20ff   0x2100-0xffdf    #  4kB 55kB

# special entry to link software into RAM instead of Flash
    MSP430GxxRAM        0x0200-0x021f   0x0220-0x03ff    #    32B 256B
template-end

# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

memory-map-begin
    name         MSP430F4xx
    based-on     LOGICAL
    read-only    segment     .bootloader    0x0c00-0x0fff
    programmable segment     .infomem       0x1000-0x10ff   # 256B Information memory (Flash)
    programmable segment     .infoB         0x1000-0x107f
    programmable segment     .infoA         0x1080-0x10ff
memory-map-end

template-begin
    memory-map-begin
        based-on     MSP430F4xx
                     segment     RAM        <RAM>
        programmable segment     FLASH      <FLASH>
        name                                <MCU>
        programmable segment     .vectors   0xffe0-0xffff
    memory-map-end
template-variables
    <MCU>               <RAM>           <FLASH>
template-values
    MSP430F412           0x0200-0x02ff   0xf000-0xffbd    # 256B  3kB
    MSP430F413           0x0200-0x02ff   0xe000-0xffdf    # 256B  8kB
    MSP430F4132          0x0200-0x03ff   0xe000-0xffdf    # 512B  8kB
    MSP430F415           0x0200-0x03ff   0xc000-0xffdf    # 512B 16kB
    MSP430F4152          0x0200-0x03ff   0xc000-0xffdf    # 512B 16kB
    MSP430F417           0x0200-0x05ff   0x8000-0xffdf    #  1kB 32kB
    MSP430F423           0x0200-0x02ff   0xe000-0xffdf    # 256B  8kB
    MSP430F423A          0x0200-0x02ff   0xe000-0xffdf    # 256B  8kB
    MSP430F425           0x0200-0x03ff   0xc000-0xffdf    # 512B 16kB
    MSP430F4250          0x0200-0x02ff   0xc000-0xffdf    # 256B 16kB
    MSP430F425A          0x0200-0x03ff   0xc000-0xffdf    # 512B 16kB
    MSP430F4260          0x0200-0x02ff   0xa000-0xffdf    # 256B 24kB
    MSP430F427           0x0200-0x05ff   0x8000-0xffdf    #  1kB 32kB
    MSP430F4270          0x0200-0x02ff   0x8000-0xffdf    # 256B 32kB
    MSP430F427A          0x0200-0x05ff   0x8000-0xffdf    #  1kB 32kB
    MSP430F435           0x0200-0x03ff   0xc000-0xffdf    # 512B 16kB
    MSP430F4351          0x0200-0x03ff   0xc000-0xffdf    # 512B 16kB
    MSP430F436           0x0200-0x05ff   0xa000-0xffdf    #  1kB 24kB
    MSP430F4361          0x0200-0x05ff   0xa000-0xffdf    #  1kB 24kB
    MSP430F437           0x0200-0x05ff   0x8000-0xffdf    #  1kB 32kB
    MSP430F4371          0x0200-0x05ff   0x8000-0xffdf    #  1kB 32kB
    MSP430F438           0x0200-0x09ff   0x4000-0xffdf    #  2kB 48kB
    MSP430F439           0x0200-0x09ff   0x1100-0xffdf    #  2kB 59kB
    MSP430F447           0x0200-0x05ff   0x8000-0xffdf    #  1kB 32kB
    MSP430F448           0x0200-0x09ff   0x4000-0xffdf    #  2kB 48kB
    MSP430F4481          0x0200-0x09ff   0x4000-0xffdf    #  2kB 48kB
    MSP430F449           0x0200-0x09ff   0x1100-0xffdf    #  2kB 59kB
    MSP430F4491          0x0200-0x09ff   0x1100-0xffdf    #  2kB 59kB
    MSP430F477           0x0200-0x09ff   0x8000-0xffdf    #  2kB 32kB
    MSP430F478           0x0200-0x09ff   0x4000-0xffdf    #  2kB 48kB
    MSP430F4783          0x0200-0x09ff   0x4000-0xffdf    #  2kB 48kB
    MSP430F4784          0x0200-0x09ff   0x4000-0xffdf    #  2kB 48kB
    MSP430F479           0x0200-0x09ff   0x1100-0xffdf    #  2kB 59kB
    MSP430F4793          0x0200-0x0bff   0x1100-0xffdf    # 2560B 59kB
    MSP430F4794          0x0200-0x0bff   0x1100-0xffdf    # 2560B 59kB
    MSP430F47126         0x1100-0x20ff   0x2100-0xffbf    # 4kB 55kB
    MSP430F47127         0x1100-0x20ff   0x2100-0xffbf    # 4kB 55kB
    MSP430FE423          0x0200-0x02ff   0xe000-0xffdf    # 256B  8kB
    MSP430FE4232         0x0200-0x02ff   0xe000-0xffdf    # 256B  8kB
    MSP430FE423A         0x0200-0x02ff   0xe000-0xffdf    # 256B  8kB
    MSP430FE4242         0x0200-0x03ff   0xd000-0xffdf    # 512B 12kB
    MSP430FE425          0x0200-0x03ff   0xc000-0xffdf    # 512B 16kB
    MSP430FE4252         0x0200-0x03ff   0xc000-0xffdf    # 512B 16kB
    MSP430FE425A         0x0200-0x03ff   0xc000-0xffdf    # 512B 16kB
    MSP430FE427          0x0200-0x05ff   0x8000-0xffdf    #  1kB 32kB
    MSP430FE4272         0x0200-0x05ff   0x8000-0xffdf    #  1kB 32kB
    MSP430FE427A         0x0200-0x05ff   0x8000-0xffdf    #  1kB 32kB
    MSP430FG4250         0x0200-0x02ff   0xc000-0xffdf    # 256B 16kB
    MSP430FG4260         0x0200-0x02ff   0xa000-0xffdf    # 256B 24kB
    MSP430FG4270         0x0200-0x02ff   0x8000-0xffdf    # 256B 32kB
    MSP430FG437          0x0200-0x05ff   0x8000-0xffdf    #  1kB 32kB
    MSP430FG438          0x0200-0x09ff   0x4000-0xffdf    #  2kB 48kB
    MSP430FG439          0x0200-0x09ff   0x1100-0xffdf    #  2kB 59kB
    MSP430FG477          0x0200-0x09ff   0x8000-0xffdf    #  2kB 32kB
    MSP430FG478          0x0200-0x09ff   0x4000-0xffdf    #  2kB 48kB
    MSP430FG479          0x0200-0x09ff   0x1100-0xffdf    #  2kB 59kB
    MSP430FW423          0x0200-0x02ff   0xe000-0xffdf    # 256B  8kB
    MSP430FW425          0x0200-0x03ff   0xc000-0xffdf    # 512B 16kB
    MSP430FW427          0x0200-0x05ff   0x8000-0xffdf    #  1kB 32kB
    MSP430FW428          0x0200-0x09ff   0x4000-0xffdf    #  2kB 48kB
    MSP430FW429          0x0200-0x09ff   0x1100-0xffdf    #  2kB 59kB

    # special entry to link software into RAM instead of Flash
    MSP430F4xxRAM       0x0200-0x021f   0x0220-0x09ff    #    32B 2016B
template-end

template-begin
    memory-map-begin
        based-on     MSP430F4xx
                     segment     RAM        <RAM>
        programmable segment     FLASH      <FLASH>
        programmable segment     FLASH2     <FLASH2>
        name                                <MCU>
        programmable segment     .vectors   0xffc0-0xffff
    memory-map-end
template-variables
    <MCU>               <RAM>           <FLASH>         <FLASH2>
template-values
    MSP430F4616          0x1100-0x20ff   0x2100-0xffbf    0x00010000-0x00018fff    # 4kB 55kB + 36kB = 91kB
    MSP430F46161         0x1100-0x20ff   0x2100-0xffbf    0x00010000-0x00018fff    # 4kB 55kB + 36kB = 91kB
    MSP430F4617          0x1100-0x30ff   0x3100-0xffbf    0x00010000-0x00019fff    # 8kB 51kB + 40kB = 91kB
    MSP430F46171         0x1100-0x30ff   0x3100-0xffbf    0x00010000-0x00019fff    # 8kB 51kB + 40kB = 91kB
    MSP430F4618          0x1100-0x30ff   0x3100-0xffbf    0x00010000-0x0001ffff    # 8kB 51kB + 64kB = 115kB
    MSP430F46181         0x1100-0x30ff   0x3100-0xffbf    0x00010000-0x0001ffff    # 8kB 51kB + 64kB = 115kB
    MSP430F4619          0x1100-0x20ff   0x2100-0xffbf    0x00010000-0x0001ffff    # 4kB 55kB + 64kB = 119kB
    MSP430F46191         0x1100-0x20ff   0x2100-0xffbf    0x00010000-0x0001ffff    # 4kB 55kB + 64kB = 119kB
    MSP430F47163         0x1100-0x20ff   0x2100-0xffbf    0x00010000-0x00018fff    # 4kB 55kB + 36kB = 91kB
    MSP430F47166         0x1100-0x20ff   0x2100-0xffbf    0x00010000-0x00018fff    # 4kB 55kB + 36kB = 91kB
    MSP430F47167         0x1100-0x20ff   0x2100-0xffbf    0x00010000-0x00018fff    # 4kB 55kB + 36kB = 91kB
    MSP430F47173         0x1100-0x30ff   0x3100-0xffbf    0x00010000-0x00019fff    # 8kB 51kB + 40kB = 91kB
    MSP430F47176         0x1100-0x30ff   0x3100-0xffbf    0x00010000-0x00019fff    # 8kB 51kB + 40kB = 91kB
    MSP430F47177         0x1100-0x30ff   0x3100-0xffbf    0x00010000-0x00019fff    # 8kB 51kB + 40kB = 91kB
    MSP430F47183         0x1100-0x30ff   0x3100-0xffbf    0x00010000-0x0001ffff    # 8kB 51kB + 64kB = 115kB
    MSP430F47186         0x1100-0x30ff   0x3100-0xffbf    0x00010000-0x0001ffff    # 8kB 51kB + 64kB = 115kB
    MSP430F47187         0x1100-0x30ff   0x3100-0xffbf    0x00010000-0x0001ffff    # 8kB 51kB + 64kB = 115kB
    MSP430F47193         0x1100-0x20ff   0x2100-0xffbf    0x00010000-0x0001ffff    # 4kB 55kB + 64kB = 119kB
    MSP430F47196         0x1100-0x20ff   0x2100-0xffbf    0x00010000-0x0001ffff    # 4kB 55kB + 64kB = 119kB
    MSP430F47197         0x1100-0x20ff   0x2100-0xffbf    0x00010000-0x0001ffff    # 4kB 55kB + 64kB = 119kB
    MSP430FG4616         0x1100-0x20ff   0x2100-0xffbf    0x00010000-0x00018fff    # 4kB 55kB + 36kB = 91kB
    MSP430FG4617         0x1100-0x30ff   0x3100-0xffbf    0x00010000-0x00019fff    # 8kB 51kB + 40kB = 91kB
    MSP430FG4618         0x1100-0x30ff   0x3100-0xffbf    0x00010000-0x0001ffff    # 8kB 51kB + 64kB = 115kB
    MSP430FG4619         0x1100-0x20ff   0x2100-0xffbf    0x00010000-0x0001ffff    # 4kB 55kB + 64kB = 119kB
template-end

# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
memory-map-begin
    name         MSP430FR5xx
    based-on     LOGICAL
    read-only    segment     .bootloader    0x1000-0x17ff  # 2kB boot loader (Flash)
    read-only    segment     .bootloaderD   0x1000-0x11ff
    read-only    segment     .bootloaderC   0x1200-0x13ff
    read-only    segment     .bootloaderB   0x1400-0x15ff
    read-only    segment     .bootloaderA   0x1600-0x17ff
    programmable segment     .infomem       0x1800-0x19ff   # 512B Information memory (Flash)
    programmable segment     .infoD         0x1800-0x187f
    programmable segment     .infoC         0x1880-0x18ff
    programmable segment     .infoB         0x1900-0x197f
    programmable segment     .infoA         0x1980-0x19ff
    programmable segment     .vectors       0xffd0-0xffff   # 48 vectors
memory-map-end

template-begin
    memory-map-begin
        based-on     MSP430FR5xx
                     segment     RAM        <RAM>
        programmable segment     FLASH      <FLASH>
        name                                <MCU>
    memory-map-end
template-variables
    <MCU>               <RAM>           <FLASH>
template-values
    MSP430FR5720         0x1c00-0x1fff   0xf000-0xff7f    # 1kB  3kB
    MSP430FR5721         0x1c00-0x1fff   0xf000-0xff7f    # 1kB  3kB
    MSP430FR5722         0x1c00-0x1fff   0xe000-0xff7f    # 1kB  7kB
    MSP430FR5723         0x1c00-0x1fff   0xe000-0xff7f    # 1kB  7kB
    MSP430FR5724         0x1c00-0x1fff   0xe000-0xff7f    # 1kB  7kB
    MSP430FR5725         0x1c00-0x1fff   0xe000-0xff7f    # 1kB  7kB
    MSP430FR5726         0x1c00-0x1fff   0xc200-0xff7f    # 1kB 15kB
    MSP430FR5727         0x1c00-0x1fff   0xc200-0xff7f    # 1kB 15kB
    MSP430FR5728         0x1c00-0x1fff   0xc200-0xff7f    # 1kB 15kB
    MSP430FR5729         0x1c00-0x1fff   0xc200-0xff7f    # 1kB 15kB
    MSP430FR5730         0x1c00-0x1fff   0xf000-0xff7f    # 1kB  3kB
    MSP430FR5731         0x1c00-0x1fff   0xf000-0xff7f    # 1kB  3kB
    MSP430FR5732         0x1c00-0x1fff   0xe000-0xff7f    # 1kB  7kB
    MSP430FR5733         0x1c00-0x1fff   0xe000-0xff7f    # 1kB  7kB
    MSP430FR5734         0x1c00-0x1fff   0xe000-0xff7f    # 1kB  7kB
    MSP430FR5735         0x1c00-0x1fff   0xe000-0xff7f    # 1kB  7kB
    MSP430FR5736         0x1c00-0x1fff   0xc200-0xff7f    # 1kB 15kB
    MSP430FR5737         0x1c00-0x1fff   0xc200-0xff7f    # 1kB 15kB
    MSP430FR5738         0x1c00-0x1fff   0xc200-0xff7f    # 1kB 15kB
    MSP430FR5739         0x1c00-0x1fff   0xc200-0xff7f    # 1kB 15kB
#    MSP430FR5949         0x1c00-0x23ff   0x4400-0xff7f    0x00010000-0x00013fff    # 2kB 46kB + 16kB = 62kB
#    MSP430FR5969         0x1c00-0x23ff   0x4400-0xff7f    0x00010000-0x00013fff    # 2kB 46kB + 16kB = 62kB

    # special entry to link software into RAM instead of Flash
    MSP430FR5xxRAM       0x1c00-0x1c1f   0x1c20-0x1cff   #    32B    4kB
template-end

# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

memory-map-begin
    name         MSP430F5xx
    based-on     LOGICAL
    read-only    segment     .bootloader    0x1000-0x17ff  # 2kB boot loader (Flash)
    read-only    segment     .bootloaderD   0x1000-0x11ff
    read-only    segment     .bootloaderC   0x1200-0x13ff
    read-only    segment     .bootloaderB   0x1400-0x15ff
    read-only    segment     .bootloaderA   0x1600-0x17ff
    programmable segment     .infomem       0x1800-0x19ff   # 512B Information memory (Flash)
    programmable segment     .infoD         0x1800-0x187f
    programmable segment     .infoC         0x1880-0x18ff
    programmable segment     .infoB         0x1900-0x197f
    programmable segment     .infoA         0x1980-0x19ff
    programmable segment     .vectors       0xff80-0xffff
memory-map-end

template-begin
    memory-map-begin
        based-on     MSP430F5xx
                     segment     RAM        <RAM>
        programmable segment     FLASH      <FLASH>
        name                                <MCU>
    memory-map-end
template-variables
    <MCU>               <RAM>           <FLASH>
template-values
    MSP430F5131          0x1c00-0x1fff   0xe000-0xff7f    # 1kB  8kB
    MSP430F5132          0x1c00-0x1fff   0xe000-0xff7f    # 1kB  8kB
    MSP430F5151          0x1c00-0x23ff   0xc000-0xff7f    # 2kB 16kB
    MSP430F5152          0x1c00-0x23ff   0xc000-0xff7f    # 2kB 16kB
    MSP430F5171          0x1c00-0x23ff   0x8000-0xff7f    # 2kB 32kB
    MSP430F5172          0x1c00-0x23ff   0x8000-0xff7f    # 2kB 32kB
    MSP430F5304          0x1c00-0x33ff   0xe000-0xff7f    # 6144B 8kB
    MSP430F5308          0x1c00-0x33ff   0xc000-0xff7f    # 6144B 16kB
    MSP430F5309          0x1c00-0x33ff   0xa000-0xff7f    # 6144B 24kB
    MSP430F5310          0x1c00-0x33ff   0x8000-0xff7f    # 6144B 32kB
    MSP430F5500          0x2400-0x33ff   0xe000-0xff7f    # 4kB  8kB
    MSP430F5501          0x2400-0x33ff   0xc000-0xff7f    # 4kB 16kB
    MSP430F5502          0x2400-0x33ff   0xa000-0xff7f    # 4kB 24kB
    MSP430F5503          0x2400-0x33ff   0x8000-0xff7f    # 4kB 32kB
    MSP430F5504          0x2400-0x33ff   0xe000-0xff7f    # 4kB 8kB
    MSP430F5505          0x2400-0x33ff   0xc000-0xff7f    # 4kB 16kB
    MSP430F5506          0x2400-0x33ff   0xa000-0xff7f    # 4kB 24kB
    MSP430F5507          0x2400-0x33ff   0x8000-0xff7f    # 4kB 32kB
    MSP430F5508          0x2400-0x33ff   0xc000-0xff7f    # 4kB 16kB
    MSP430F5509          0x2400-0x33ff   0xa000-0xff7f    # 4kB 24kB
    MSP430F5510          0x2400-0x33ff   0x8000-0xff7f    # 4kB 32kB
    MSP430F5513          0x2400-0x33ff   0x8000-0xff7f    # 4kB 32kB
    MSP430F5521          0x2400-0x3bff   0x8000-0xff7f    # 6144B 32kB
    MSP430F5522          0x2400-0x43ff   0x8000-0xff7f    # 8kB 32kB
    MSP430F6720          0x1c00-0x1fff   0xc000-0xff7f    # 1kB 16kB
    MSP430F6721          0x1c00-0x23ff   0x8000-0xff7f    # 2kB 32kB
    MSP430F6730          0x1c00-0x1fff   0xc000-0xff7f    # 1kB 16kB
    MSP430F6731          0x1c00-0x23ff   0x8000-0xff7f    # 2kB 32kB

    # special entry to link software into RAM instead of Flash
    MSP430F5xxRAM       0x2400-0x241f   0x2420-0x33ff   #    32B    4kB
template-end


template-begin
    memory-map-begin
        based-on     MSP430F5xx
                     segment     RAM        <RAM>
        programmable segment     FLASH      <FLASH>
        programmable segment     FLASH2     <FLASH2>
        name                                <MCU>
    memory-map-end
template-variables
    <MCU>               <RAM>           <FLASH>         <FLASH2>
template-values
    MSP430BT5190         0x1c00-0x5bff   0x5c00-0xff7f    0x00010000-0x00045bff    # 16kB 41kB + 215kB = 256kB
    MSP430F5212          0x2400-0x43ff   0x4400-0xff7f    0x00010000-0x000143ff    # 8kB 47kB + 17kB = 64kB
    MSP430F5213          0x2400-0x43ff   0x4400-0xff7f    0x00010000-0x0001c3ff    # 8kB 47kB + 49kB = 96kB
    MSP430F5214          0x2400-0x43ff   0x4400-0xff7f    0x00010000-0x000243ff    # 8kB 47kB + 81kB = 128kB
    MSP430F5217          0x2400-0x43ff   0x4400-0xff7f    0x00010000-0x000143ff    # 8kB 47kB + 17kB = 64kB
    MSP430F5218          0x2400-0x43ff   0x4400-0xff7f    0x00010000-0x0001c3ff    # 8kB 47kB + 49kB = 96kB
    MSP430F5219          0x2400-0x43ff   0x4400-0xff7f    0x00010000-0x000243ff    # 8kB 47kB + 81kB = 128kB
    MSP430F5222          0x2400-0x43ff   0x4400-0xff7f    0x00010000-0x000143ff    # 8kB 47kB + 17kB = 64kB
    MSP430F5223          0x2400-0x43ff   0x4400-0xff7f    0x00010000-0x0001c3ff    # 8kB 47kB + 49kB = 96kB
    MSP430F5224          0x2400-0x43ff   0x4400-0xff7f    0x00010000-0x000243ff    # 8kB 47kB + 81kB = 128kB
    MSP430F5227          0x2400-0x43ff   0x4400-0xff7f    0x00010000-0x000143ff    # 8kB 47kB + 17kB = 64kB
    MSP430F5228          0x2400-0x43ff   0x4400-0xff7f    0x00010000-0x0001c3ff    # 8kB 47kB + 49kB = 96kB
    MSP430F5229          0x2400-0x43ff   0x4400-0xff7f    0x00010000-0x000243ff    # 8kB 47kB + 81kB = 128kB
    MSP430F5324          0x1c00-0x33ff   0x4400-0xff7f    0x00010000-0x000143ff    # 6kB 47kB + 17kB = 64kB
    MSP430F5325          0x1c00-0x33ff   0x4400-0xff7f    0x00010000-0x000143ff    # 6kB 47kB + 17kB = 64kB
    MSP430F5326          0x1c00-0x3bff   0x4400-0xff7f    0x00010000-0x0001c3ff    # 8kB 47kB + 49kB = 96kB
    MSP430F5327          0x1c00-0x3bff   0x4400-0xff7f    0x00010000-0x0001c3ff    # 8kB 47kB + 49kB = 96kB
    MSP430F5328          0x1c00-0x43ff   0x4400-0xff7f    0x00010000-0x000243ff    # 10kB 47kB + 81kB = 128kB
    MSP430F5329          0x1c00-0x43ff   0x4400-0xff7f    0x00010000-0x000243ff    # 10kB 47kB + 81kB = 128kB
    MSP430F5333          0x2400-0x43ff   0x8000-0xff7f    0x00010000-0x00027fff    # 8kB 32kB + 96kB = 128kB
    MSP430F5335          0x2400-0x63ff   0x8000-0xff7f    0x00010000-0x00047fff    # 16kB 32kB + 224kB = 256kB
    MSP430F5336          0x2400-0x63ff   0x8000-0xff7f    0x00010000-0x00027fff    # 16kB 32kB + 96kB = 128kB
    MSP430F5338          0x2400-0x63ff   0x8000-0xff7f    0x00010000-0x00047fff    # 16kB 32kB + 224kB = 256kB
    MSP430F5340          0x1c00-0x33ff   0x4400-0xff7f    0x00010000-0x000143ff    # 6kB 47kB + 17kB = 64kB
    MSP430F5341          0x1c00-0x3bff   0x4400-0xff7f    0x00010000-0x0001c3ff    # 8kB 47kB + 49kB = 96kB
    MSP430F5342          0x1c00-0x43ff   0x4400-0xff7f    0x00010000-0x000243ff    # 10kB 47kB + 81kB = 128kB
    MSP430F5358          0x2400-0x63ff   0x8000-0xff7f    0x00010000-0x00067fff    # 16kB 32kB + 352kB = 384kB
    MSP430F5359          0x2400-0x63ff   0x8000-0xff7f    0x00010000-0x00087fff    # 16kB 32kB + 480kB = 512kB
    MSP430F5418          0x1c00-0x5bff   0x5c00-0xff7f    0x00010000-0x00025bff    # 16kB 41kB + 87kB = 128kB
    MSP430F5418A         0x1c00-0x5bff   0x5c00-0xff7f    0x00010000-0x00025bff    # 16kB 41kB + 87kB = 128kB
    MSP430F5419          0x1c00-0x5bff   0x5c00-0xff7f    0x00010000-0x00025bff    # 16kB 41kB + 87kB = 128kB
    MSP430F5419A         0x1c00-0x5bff   0x5c00-0xff7f    0x00010000-0x00025bff    # 16kB 41kB + 87kB = 128kB
    MSP430F5435          0x1c00-0x5bff   0x5c00-0xff7f    0x00010000-0x00035bff    # 16kB 41kB + 151kB = 192kB
    MSP430F5435A         0x1c00-0x5bff   0x5c00-0xff7f    0x00010000-0x00035bff    # 16kB 41kB + 151kB = 192kB
    MSP430F5436          0x1c00-0x5bff   0x5c00-0xff7f    0x00010000-0x00035bff    # 16kB 41kB + 151kB = 192kB
    MSP430F5436A         0x1c00-0x5bff   0x5c00-0xff7f    0x00010000-0x00035bff    # 16kB 41kB + 151kB = 192kB
    MSP430F5437          0x1c00-0x5bff   0x5c00-0xff7f    0x00010000-0x00045bff    # 16kB 41kB + 215kB = 256kB
    MSP430F5437A         0x1c00-0x5bff   0x5c00-0xff7f    0x00010000-0x00045bff    # 16kB 41kB + 215kB = 256kB
    MSP430F5438          0x1c00-0x5bff   0x5c00-0xff7f    0x00010000-0x00045bff    # 16kB 41kB + 215kB = 256kB
    MSP430F5438A         0x1c00-0x5bff   0x5c00-0xff7f    0x00010000-0x00045bff    # 16kB 41kB + 215kB = 256kB
    MSP430F5514          0x2400-0x33ff   0x4400-0xff7f    0x00010000-0x000143ff    # 4kB 47kB + 17kB = 64kB
    MSP430F5515          0x2400-0x33ff   0x4400-0xff7f    0x00010000-0x000143ff    # 4kB 47kB + 17kB = 64kB
    MSP430F5517          0x2400-0x3bff   0x4400-0xff7f    0x00010000-0x0001c3ff    # 6kB 47kB + 49kB = 96kB
    MSP430F5519          0x2400-0x43ff   0x4400-0xff7f    0x00010000-0x000243ff    # 8kB 47kB + 81kB = 128kB
    MSP430F5524          0x2400-0x33ff   0x4400-0xff7f    0x00010000-0x000143ff    # 4kB 47kB + 17kB = 64kB
    MSP430F5525          0x2400-0x33ff   0x4400-0xff7f    0x00010000-0x000143ff    # 4kB 47kB + 17kB = 64kB
    MSP430F5526          0x2400-0x3bff   0x4400-0xff7f    0x00010000-0x0001c3ff    # 6kB 47kB + 49kB = 96kB
    MSP430F5527          0x2400-0x3bff   0x4400-0xff7f    0x00010000-0x0001c3ff    # 6kB 47kB + 49kB = 96kB
    MSP430F5528          0x2400-0x43ff   0x4400-0xff7f    0x00010000-0x000243ff    # 8kB 47kB + 81kB = 128kB
    MSP430F5529          0x2400-0x43ff   0x4400-0xff7f    0x00010000-0x000243ff    # 8kB 47kB + 81kB = 128kB
    MSP430F5630          0x2400-0x63ff   0x8000-0xff7f    0x00010000-0x00027fff    # 16kB 32kB + 96kB = 128kB
    MSP430F5631          0x2400-0x63ff   0x8000-0xff7f    0x00010000-0x00037fff    # 16kB 32kB + 160kB = 192kB
    MSP430F5632          0x2400-0x63ff   0x8000-0xff7f    0x00010000-0x00047fff    # 16kB 32kB + 224kB = 256kB
    MSP430F5633          0x2400-0x63ff   0x8000-0xff7f    0x00010000-0x00027fff    # 16kB 32kB + 96kB = 128kB
    MSP430F5634          0x2400-0x63ff   0x8000-0xff7f    0x00010000-0x00037fff    # 16kB 32kB + 160kB = 192kB
    MSP430F5635          0x2400-0x63ff   0x8000-0xff7f    0x00010000-0x00047fff    # 16kB 32kB + 224kB = 256kB
    MSP430F5636          0x2400-0x63ff   0x8000-0xff7f    0x00010000-0x00027fff    # 16kB 32kB + 96kB = 128kB
    MSP430F5637          0x2400-0x63ff   0x8000-0xff7f    0x00010000-0x00037fff    # 16kB 32kB + 160kB = 192kB
    MSP430F5638          0x2400-0x63ff   0x8000-0xff7f    0x00010000-0x00047fff    # 16kB 32kB + 224kB = 256kB
    MSP430F5658          0x2400-0x63ff   0x8000-0xff7f    0x00010000-0x00067fff    # 16kB 32kB + 352kB = 384kB
    MSP430F5659          0x2400-0x63ff   0x8000-0xff7f    0x00010000-0x00087fff    # 16kB 32kB + 480kB = 512kB
    MSP430F6433          0x2400-0x43ff   0x8000-0xff7f    0x00010000-0x00027fff    # 8kB 32kB + 96kB = 128kB
    MSP430F6435          0x2400-0x63ff   0x8000-0xff7f    0x00010000-0x00047fff    # 16kB 32kB + 224kB = 256kB
    MSP430F6436          0x2400-0x63ff   0x8000-0xff7f    0x00010000-0x00027fff    # 16kB 32kB + 96kB = 128kB
    MSP430F6438          0x2400-0x63ff   0x8000-0xff7f    0x00010000-0x00047fff    # 16kB 32kB + 224kB = 256kB
    MSP430F6458          0x2400-0x63ff   0x8000-0xff7f    0x00010000-0x00067fff    # 16kB 32kB + 352kB = 384kB
    MSP430F6459          0x2400-0x63ff   0x8000-0xff7f    0x00010000-0x00087fff    # 16kB 32kB + 480kB = 512kB
    MSP430F6630          0x2400-0x63ff   0x8000-0xff7f    0x00010000-0x00027fff    # 16kB 32kB + 96kB = 128kB
    MSP430F6631          0x2400-0x63ff   0x8000-0xff7f    0x00010000-0x00037fff    # 16kB 32kB + 160kB = 192kB
    MSP430F6632          0x2400-0x63ff   0x8000-0xff7f    0x00010000-0x00047fff    # 16kB 32kB + 224kB = 256kB
    MSP430F6633          0x2400-0x63ff   0x8000-0xff7f    0x00010000-0x00027fff    # 16kB 32kB + 96kB = 128kB
    MSP430F6634          0x2400-0x63ff   0x8000-0xff7f    0x00010000-0x00037fff    # 16kB 32kB + 160kB = 192kB
    MSP430F6635          0x2400-0x63ff   0x8000-0xff7f    0x00010000-0x00047fff    # 16kB 32kB + 224kB = 256kB
    MSP430F6636          0x2400-0x63ff   0x8000-0xff7f    0x00010000-0x00027fff    # 16kB 32kB + 96kB = 128kB
    MSP430F6637          0x2400-0x63ff   0x8000-0xff7f    0x00010000-0x00037fff    # 16kB 32kB + 160kB = 192kB
    MSP430F6638          0x2400-0x63ff   0x8000-0xff7f    0x00010000-0x00047fff    # 16kB 32kB + 224kB = 256kB
    MSP430F6658          0x2400-0x63ff   0x8000-0xff7f    0x00010000-0x00067fff    # 16kB 32kB + 352kB = 384kB
    MSP430F6659          0x2400-0x63ff   0x8000-0xff7f    0x00010000-0x00087fff    # 16kB 32kB + 480kB = 512kB
    MSP430F6723          0x1c00-0x2bff   0x4000-0xff7f    0x00010000-0x00013fff    # 4kB 48kB + 16kB = 64kB
    MSP430F6724          0x1c00-0x2bff   0x4000-0xff7f    0x00010000-0x0001bfff    # 4kB 48kB + 48kB = 96kB
    MSP430F6725          0x1c00-0x2bff   0x4000-0xff7f    0x00010000-0x00023fff    # 4kB 48kB + 80kB = 128kB
    MSP430F6726          0x1c00-0x3bff   0x4000-0xff7f    0x00010000-0x00023fff    # 8kB 48kB + 80kB = 128kB
    MSP430F6733          0x1c00-0x2bff   0x4000-0xff7f    0x00010000-0x00013fff    # 4kB 48kB + 16kB = 64kB
    MSP430F6734          0x1c00-0x2bff   0x4000-0xff7f    0x00010000-0x0001bfff    # 4kB 48kB + 48kB = 96kB
    MSP430F6735          0x1c00-0x2bff   0x4000-0xff7f    0x00010000-0x00023fff    # 4kB 48kB + 80kB = 128kB
    MSP430F6736          0x1c00-0x3bff   0x4000-0xff7f    0x00010000-0x00023fff    # 8kB 48kB + 80kB = 128kB
    MSP430F6745          0x1c00-0x5bff   0xc000-0xff7f    0x00010000-0x0002bfff    # 16kB 16kB + 112kB = 128kB
    MSP430F67451         0x1c00-0x5bff   0xc000-0xff7f    0x00010000-0x0002bfff    # 16kB 16kB + 112kB = 128kB
    MSP430F6746          0x1c00-0x5bff   0xc000-0xff7f    0x00010000-0x0004bfff    # 16kB 16kB + 240kB = 256kB
    MSP430F67461         0x1c00-0x5bff   0xc000-0xff7f    0x00010000-0x0004bfff    # 16kB 16kB + 240kB = 256kB
    MSP430F6747          0x1c00-0x9bff   0xc000-0xff7f    0x00010000-0x0004bfff    # 32kB 16kB + 240kB = 256kB
    MSP430F67471         0x1c00-0x9bff   0xc000-0xff7f    0x00010000-0x0004bfff    # 32kB 16kB + 240kB = 256kB
    MSP430F6748          0x1c00-0x5bff   0xc000-0xff7f    0x00010000-0x0008bfff    # 16kB 16kB + 496kB = 512kB
    MSP430F67481         0x1c00-0x5bff   0xc000-0xff7f    0x00010000-0x0008bfff    # 16kB 16kB + 496kB = 512kB
    MSP430F6749          0x1c00-0x9bff   0xc000-0xff7f    0x00010000-0x0008bfff    # 32kB 16kB + 496kB = 512kB
    MSP430F67491         0x1c00-0x9bff   0xc000-0xff7f    0x00010000-0x0008bfff    # 32kB 16kB + 496kB = 512kB
    MSP430F6765          0x1c00-0x5bff   0xc000-0xff7f    0x00010000-0x0002bfff    # 16kB 16kB + 112kB = 128kB
    MSP430F67651         0x1c00-0x5bff   0xc000-0xff7f    0x00010000-0x0002bfff    # 16kB 16kB + 112kB = 128kB
    MSP430F6766          0x1c00-0x5bff   0xc000-0xff7f    0x00010000-0x0004bfff    # 16kB 16kB + 240kB = 256kB
    MSP430F67661         0x1c00-0x5bff   0xc000-0xff7f    0x00010000-0x0004bfff    # 16kB 16kB + 240kB = 256kB
    MSP430F6767          0x1c00-0x9bff   0xc000-0xff7f    0x00010000-0x0004bfff    # 32kB 16kB + 240kB = 256kB
    MSP430F67671         0x1c00-0x9bff   0xc000-0xff7f    0x00010000-0x0004bfff    # 32kB 16kB + 240kB = 256kB
    MSP430F6768          0x1c00-0x5bff   0xc000-0xff7f    0x00010000-0x0008bfff    # 16kB 16kB + 496kB = 512kB
    MSP430F67681         0x1c00-0x5bff   0xc000-0xff7f    0x00010000-0x0008bfff    # 16kB 16kB + 496kB = 512kB
    MSP430F6769          0x1c00-0x9bff   0xc000-0xff7f    0x00010000-0x0008bfff    # 32kB 16kB + 496kB = 512kB
    MSP430F67691         0x1c00-0x9bff   0xc000-0xff7f    0x00010000-0x0008bfff    # 32kB 16kB + 496kB = 512kB
    MSP430F6775          0x1c00-0x5bff   0xc000-0xff7f    0x00010000-0x0002bfff    # 16kB 16kB + 112kB = 128kB
    MSP430F67751         0x1c00-0x5bff   0xc000-0xff7f    0x00010000-0x0002bfff    # 16kB 16kB + 112kB = 128kB
    MSP430F6776          0x1c00-0x5bff   0xc000-0xff7f    0x00010000-0x0004bfff    # 16kB 16kB + 240kB = 256kB
    MSP430F67761         0x1c00-0x5bff   0xc000-0xff7f    0x00010000-0x0004bfff    # 16kB 16kB + 240kB = 256kB
    MSP430F6777          0x1c00-0x9bff   0xc000-0xff7f    0x00010000-0x0004bfff    # 32kB 16kB + 240kB = 256kB
    MSP430F67771         0x1c00-0x9bff   0xc000-0xff7f    0x00010000-0x0004bfff    # 32kB 16kB + 240kB = 256kB
    MSP430F6778          0x1c00-0x5bff   0xc000-0xff7f    0x00010000-0x0008bfff    # 16kB 16kB + 496kB = 512kB
    MSP430F67781         0x1c00-0x5bff   0xc000-0xff7f    0x00010000-0x0008bfff    # 16kB 16kB + 496kB = 512kB
    MSP430F6779          0x1c00-0x9bff   0xc000-0xff7f    0x00010000-0x0008bfff    # 32kB 16kB + 496kB = 512kB
    MSP430F67791         0x1c00-0x9bff   0xc000-0xff7f    0x00010000-0x0008bfff    # 32kB 16kB + 496kB = 512kB
    MSP430SL5438A        0x1c00-0x5bff   0x5c00-0xff7f    0x00010000-0x00045bff    # 16kB 41kB + 215kB = 256kB
    MSP430XGENERIC       0x1c00-0x5bff   0x6400-0xff7f    0x00010000-0x000463ff    # 16kB 39kB + 217kB = 256kB
template-end


# special memory map for the BSL of F5xx/6xx devices.
# could be used to develop a replacement BSL
memory-map-begin
    name         MSP430F5xxBSL
    based-on     LOGICAL
                 segment     RAM            0x2400-0x33ff
    programmable segment     FLASH          0x1000-0x17ff  # 2kB boot loader (Flash)
    programmable segment     .bootloaderD   0x1000-0x11ff
    programmable segment     .bootloaderC   0x1200-0x13ff
    programmable segment     .bootloaderB   0x1400-0x15ff
    programmable segment     .bootloaderA   0x1600-0x17ff
memory-map-end

# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

memory-map-begin
    name         CC430x
    based-on     LOGICAL
    read-only    segment     .bootloader    0x1000-0x17ff  # 2kB boot loader (Flash)
    read-only    segment     .bootloaderD   0x1000-0x11ff
    read-only    segment     .bootloaderC   0x1200-0x13ff
    read-only    segment     .bootloaderB   0x1400-0x15ff
    read-only    segment     .bootloaderA   0x1600-0x17ff
    programmable segment     .infomem       0x1800-0x10ff   # 512B Information memory (Flash)
    programmable segment     .infoD         0x1800-0x187f
    programmable segment     .infoC         0x1880-0x18ff
    programmable segment     .infoB         0x1900-0x197f
    programmable segment     .infoA         0x1980-0x19ff
    programmable segment     .vectors       0xff80-0xffff
memory-map-end

template-begin
    memory-map-begin
        based-on     CC430x
                     segment     RAM        <RAM>
        programmable segment     FLASH      <FLASH>
        name                                <MCU>
    memory-map-end
template-variables
    <MCU>               <RAM>           <FLASH>
template-values
    CC430F5123           0x1c00-0x23fd   0xe000-0xff7f    # 2046B  8kB
    CC430F5125           0x1c00-0x23fd   0xc000-0xff7f    # 2046B 16kB
    CC430F5133           0x1c00-0x23fd   0xe000-0xff7f    # 2046B  8kB
    CC430F5135           0x1c00-0x23fd   0xc000-0xff7f    # 2046B 16kB
    CC430F5137           0x1c00-0x2bfd   0x8000-0xff7f    # 4094B 32kB
    CC430F5143           0x1c00-0x23fd   0xe000-0xff7f    # 2046B  8kB
    CC430F5145           0x1c00-0x23fd   0xc000-0xff7f    # 2046B 16kB
    CC430F5147           0x1c00-0x2bfd   0x8000-0xff7f    # 4094B 32kB
    CC430F6125           0x1c00-0x23fd   0xc000-0xff7f    # 2046B 16kB
    CC430F6126           0x1c00-0x23fd   0x8000-0xff7f    # 2046B 32kB
    CC430F6127           0x1c00-0x2bfd   0x8000-0xff7f    # 4094B 32kB
    CC430F6135           0x1c00-0x23fd   0xc000-0xff7f    # 2046B 16kB
    CC430F6137           0x1c00-0x2bfd   0x8000-0xff7f    # 4094B 32kB
    CC430F6143           0x1c00-0x23fd   0xe000-0xff7f    # 2046B  8kB
    CC430F6145           0x1c00-0x23fd   0xc000-0xff7f    # 2046B 16kB
    CC430F6147           0x1c00-0x2bfd   0x8000-0xff7f    # 4094B 32kB
template-end

# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

memory-map-begin
    name         MSP430x3xx
    based-on     LOGICAL
    programmable segment     .infomem       0x1000-0x10ff   # 256B Information memory (Flash)
    programmable segment     .infoB         0x1000-0x107f
    programmable segment     .infoA         0x1080-0x10ff
    programmable segment     .vectors       0xffe0-0xffff
memory-map-end

template-begin
    memory-map-begin
        based-on     MSP430x3xx
                     segment     RAM        <RAM>
        programmable segment     FLASH      <FLASH>
        name                                <MCU>
    memory-map-end
template-variables
    <MCU>               <RAM>           <FLASH>
template-values
    MSP430C311S          0x0200-0x027f   0xf800-0xffdf    # 128B  2kB
    MSP430C312           0x0200-0x02ff   0xf000-0xffdf    # 256B  4kB
    MSP430C313           0x0200-0x02ff   0xe000-0xffdf    # 256B  8kB
    MSP430C314           0x0200-0x03ff   0xd000-0xffdf    # 512B 12kB
    MSP430C315           0x0200-0x03ff   0xc000-0xffdf    # 512B 16kB
    MSP430C323           0x0200-0x02ff   0xe000-0xffdf    # 256B  8kB
    MSP430C325           0x0200-0x03ff   0xc000-0xffdf    # 512B 16kB
    MSP430C336           0x0200-0x05ff   0xa000-0xffdf    #  1kB 24kB
    MSP430C337           0x0200-0x05ff   0x8000-0xffdf    #  1kB 32kB
template-end

# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
