From 6a27b4ad6940d779c0cbba34f55cc6b6551551a1 Mon Sep 17 00:00:00 2001 From: V24473 Date: Fri, 18 Mar 2022 15:13:02 +0800 Subject: [PATCH] Added 425 to JLINK --- .../Devices/AT/AT32F4xx/AT32F421_16.FLM | Bin 0 -> 17484 bytes .../Devices/AT/AT32F4xx/AT32F421_32.FLM | Bin 0 -> 17484 bytes .../Devices/AT/AT32F4xx/AT32F421_64.FLM | Bin 0 -> 17484 bytes .../AT/AT32F4xx/AT32F421_BOOTMEM_AP.FLM | Bin 0 -> 17148 bytes .../Devices/AT/AT32F4xx/AT32F421_USD.FLM | Bin 0 -> 17120 bytes .../Devices/AT/AT32F4xx/AT32F423_128.FLM | Bin 0 -> 11944 bytes .../Devices/AT/AT32F4xx/AT32F423_256.FLM | Bin 0 -> 11944 bytes .../Devices/AT/AT32F4xx/AT32F423_64.FLM | Bin 0 -> 11940 bytes .../AT/AT32F4xx/AT32F423_BOOTMEM_AP.FLM | Bin 0 -> 11968 bytes .../Devices/AT/AT32F4xx/AT32F423_USD.FLM | Bin 0 -> 11976 bytes .../Devices/AT/AT32F4xx/AT32F425_16.FLM | Bin 0 -> 15448 bytes .../Devices/AT/AT32F4xx/AT32F425_32.FLM | Bin 0 -> 15448 bytes .../Devices/AT/AT32F4xx/AT32F425_64.FLM | Bin 0 -> 15448 bytes .../AT/AT32F4xx/AT32F425_BOOTMEM_AP.FLM | Bin 0 -> 12356 bytes .../Devices/AT/AT32F4xx/AT32F425_USD.FLM | Bin 0 -> 12316 bytes .../packages/tool-ldscripts-at32/.piopm | 1 - .../at32f40/AT32F403AAG_DEFAULT.ld | 175 ------------------ .../at32f40/AT32F403ACG_DEFAULT.ld | 175 ------------------ .../packages/tool-ldscripts-at32/package.json | 12 -- .../at32/ldscripts/AT32F403AxE_FLASH.ld | 154 --------------- .../at32/ldscripts/AT32F403AxG_FLASH.ld | 154 --------------- .../at32/ldscripts/AT32F435xG_FLASH.ld | 154 --------------- .../at32/ldscripts/AT32F435xM_FLASH.ld | 154 --------------- .../at32/ldscripts/AT32F437xG_FLASH.ld | 154 --------------- .../at32/ldscripts/AT32F437xM_FLASH.ld | 154 --------------- .../ldscripts}/at32f40/AT32F403AxC_FLASH.ld | 0 .../ldscripts}/at32f40/AT32F403AxE_FLASH.ld | 0 .../ldscripts}/at32f40/AT32F403AxG_FLASH.ld | 0 .../AT32F425x4_FLASH.ld} | 13 +- .../AT32F425x6_FLASH.ld} | 13 +- .../AT32F425x8_FLASH.ld} | 13 +- .../ldscripts}/at32f43/AT32F435xC_FLASH.ld | 0 .../ldscripts}/at32f43/AT32F435xG_FLASH.ld | 0 .../ldscripts}/at32f43/AT32F435xM_FLASH.ld | 0 .../ldscripts}/at32f43/AT32F437xC_FLASH.ld | 0 .../ldscripts}/at32f43/AT32F437xG_FLASH.ld | 0 .../ldscripts}/at32f43/AT32F437xM_FLASH.ld | 0 .../at32/ldscripts}/tpl/linker.tpl | 0 JLINK.md | 20 +- 39 files changed, 32 insertions(+), 1314 deletions(-) create mode 100644 .platformio/packages/tool-jlink/Devices/AT/AT32F4xx/AT32F421_16.FLM create mode 100644 .platformio/packages/tool-jlink/Devices/AT/AT32F4xx/AT32F421_32.FLM create mode 100644 .platformio/packages/tool-jlink/Devices/AT/AT32F4xx/AT32F421_64.FLM create mode 100644 .platformio/packages/tool-jlink/Devices/AT/AT32F4xx/AT32F421_BOOTMEM_AP.FLM create mode 100644 .platformio/packages/tool-jlink/Devices/AT/AT32F4xx/AT32F421_USD.FLM create mode 100644 .platformio/packages/tool-jlink/Devices/AT/AT32F4xx/AT32F423_128.FLM create mode 100644 .platformio/packages/tool-jlink/Devices/AT/AT32F4xx/AT32F423_256.FLM create mode 100644 .platformio/packages/tool-jlink/Devices/AT/AT32F4xx/AT32F423_64.FLM create mode 100644 .platformio/packages/tool-jlink/Devices/AT/AT32F4xx/AT32F423_BOOTMEM_AP.FLM create mode 100644 .platformio/packages/tool-jlink/Devices/AT/AT32F4xx/AT32F423_USD.FLM create mode 100644 .platformio/packages/tool-jlink/Devices/AT/AT32F4xx/AT32F425_16.FLM create mode 100644 .platformio/packages/tool-jlink/Devices/AT/AT32F4xx/AT32F425_32.FLM create mode 100644 .platformio/packages/tool-jlink/Devices/AT/AT32F4xx/AT32F425_64.FLM create mode 100644 .platformio/packages/tool-jlink/Devices/AT/AT32F4xx/AT32F425_BOOTMEM_AP.FLM create mode 100644 .platformio/packages/tool-jlink/Devices/AT/AT32F4xx/AT32F425_USD.FLM delete mode 100644 .platformio/packages/tool-ldscripts-at32/.piopm delete mode 100644 .platformio/packages/tool-ldscripts-at32/at32f40/AT32F403AAG_DEFAULT.ld delete mode 100644 .platformio/packages/tool-ldscripts-at32/at32f40/AT32F403ACG_DEFAULT.ld delete mode 100644 .platformio/packages/tool-ldscripts-at32/package.json delete mode 100644 .platformio/platforms/at32/ldscripts/AT32F403AxE_FLASH.ld delete mode 100644 .platformio/platforms/at32/ldscripts/AT32F403AxG_FLASH.ld delete mode 100644 .platformio/platforms/at32/ldscripts/AT32F435xG_FLASH.ld delete mode 100644 .platformio/platforms/at32/ldscripts/AT32F435xM_FLASH.ld delete mode 100644 .platformio/platforms/at32/ldscripts/AT32F437xG_FLASH.ld delete mode 100644 .platformio/platforms/at32/ldscripts/AT32F437xM_FLASH.ld rename .platformio/{packages/tool-ldscripts-at32 => platforms/at32/ldscripts}/at32f40/AT32F403AxC_FLASH.ld (100%) rename .platformio/{packages/tool-ldscripts-at32 => platforms/at32/ldscripts}/at32f40/AT32F403AxE_FLASH.ld (100%) rename .platformio/{packages/tool-ldscripts-at32 => platforms/at32/ldscripts}/at32f40/AT32F403AxG_FLASH.ld (100%) rename .platformio/platforms/at32/ldscripts/{AT32F403AxC_FLASH.ld => at32f42/AT32F425x4_FLASH.ld} (91%) rename .platformio/platforms/at32/ldscripts/{AT32F437xC_FLASH.ld => at32f42/AT32F425x6_FLASH.ld} (91%) rename .platformio/platforms/at32/ldscripts/{AT32F435xC_FLASH.ld => at32f42/AT32F425x8_FLASH.ld} (91%) rename .platformio/{packages/tool-ldscripts-at32 => platforms/at32/ldscripts}/at32f43/AT32F435xC_FLASH.ld (100%) rename .platformio/{packages/tool-ldscripts-at32 => platforms/at32/ldscripts}/at32f43/AT32F435xG_FLASH.ld (100%) rename .platformio/{packages/tool-ldscripts-at32 => platforms/at32/ldscripts}/at32f43/AT32F435xM_FLASH.ld (100%) rename .platformio/{packages/tool-ldscripts-at32 => platforms/at32/ldscripts}/at32f43/AT32F437xC_FLASH.ld (100%) rename .platformio/{packages/tool-ldscripts-at32 => platforms/at32/ldscripts}/at32f43/AT32F437xG_FLASH.ld (100%) rename .platformio/{packages/tool-ldscripts-at32 => platforms/at32/ldscripts}/at32f43/AT32F437xM_FLASH.ld (100%) rename .platformio/{packages/tool-ldscripts-at32 => platforms/at32/ldscripts}/tpl/linker.tpl (100%) diff --git a/.platformio/packages/tool-jlink/Devices/AT/AT32F4xx/AT32F421_16.FLM b/.platformio/packages/tool-jlink/Devices/AT/AT32F4xx/AT32F421_16.FLM new file mode 100644 index 0000000000000000000000000000000000000000..5adc69f709125780f82424ea89be3f9477a73d76 GIT binary patch literal 17484 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 X?-@#q?q1MVzdswo{6c0F!^Zyrxd*e7 literal 0 HcmV?d00001 diff --git a/.platformio/packages/tool-jlink/Devices/AT/AT32F4xx/AT32F421_32.FLM b/.platformio/packages/tool-jlink/Devices/AT/AT32F4xx/AT32F421_32.FLM new file mode 100644 index 0000000000000000000000000000000000000000..30d3275c64b6365e0a066f4bdd970b20051d763b GIT binary patch literal 17484 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%0Awp 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 wXydrN9RS|8-|qMHQ@ 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 JV5%q|e+RBYdwBo= literal 0 HcmV?d00001 diff --git a/.platformio/packages/tool-jlink/Devices/AT/AT32F4xx/AT32F423_256.FLM b/.platformio/packages/tool-jlink/Devices/AT/AT32F4xx/AT32F423_256.FLM new file mode 100644 index 0000000000000000000000000000000000000000..bc1b9b39b69e15a29aa90ca50916b5f87297855c GIT binary patch literal 11944 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 literal 0 HcmV?d00001 diff --git a/.platformio/packages/tool-jlink/Devices/AT/AT32F4xx/AT32F423_64.FLM b/.platformio/packages/tool-jlink/Devices/AT/AT32F4xx/AT32F423_64.FLM new file mode 100644 index 0000000000000000000000000000000000000000..0c2380591e8f72d09171971f404b7cbec1a979cc GIT binary patch literal 11940 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 P`%OH6`IQFhL;Ls()6a*1 literal 0 HcmV?d00001 diff --git a/.platformio/packages/tool-jlink/Devices/AT/AT32F4xx/AT32F423_USD.FLM b/.platformio/packages/tool-jlink/Devices/AT/AT32F4xx/AT32F423_USD.FLM new file mode 100644 index 0000000000000000000000000000000000000000..60e30c3ec17dd46e5d3fcf35a3ac2ca90055e465 GIT binary patch literal 11976 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 literal 0 HcmV?d00001 diff --git a/.platformio/packages/tool-jlink/Devices/AT/AT32F4xx/AT32F425_16.FLM b/.platformio/packages/tool-jlink/Devices/AT/AT32F4xx/AT32F425_16.FLM new file mode 100644 index 0000000000000000000000000000000000000000..0497ad272d5824c1d994461a1f7bd5383d6a0aa5 GIT binary patch literal 15448 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 CVCYr= literal 0 HcmV?d00001 diff --git a/.platformio/packages/tool-jlink/Devices/AT/AT32F4xx/AT32F425_32.FLM b/.platformio/packages/tool-jlink/Devices/AT/AT32F4xx/AT32F425_32.FLM new file mode 100644 index 0000000000000000000000000000000000000000..15cd09b74ec9ef30362248a7131b89fc4f04fbc1 GIT binary patch literal 15448 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 Fe*r=C=u-dy literal 0 HcmV?d00001 diff --git a/.platformio/packages/tool-jlink/Devices/AT/AT32F4xx/AT32F425_BOOTMEM_AP.FLM b/.platformio/packages/tool-jlink/Devices/AT/AT32F4xx/AT32F425_BOOTMEM_AP.FLM new file mode 100644 index 0000000000000000000000000000000000000000..bc1d4c80aa1726cc5040817c25948147054fe2a8 GIT binary patch literal 12356 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 literal 0 HcmV?d00001 diff --git a/.platformio/packages/tool-jlink/Devices/AT/AT32F4xx/AT32F425_USD.FLM b/.platformio/packages/tool-jlink/Devices/AT/AT32F4xx/AT32F425_USD.FLM new file mode 100644 index 0000000000000000000000000000000000000000..4ca4664fbada0cfe762c2e957cda47521c22542a GIT binary patch literal 12316 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
© Copyright (c) 2020 STMicroelectronics. - * All rights reserved.
- * - * This software component is licensed by ST under BSD 3-Clause license, - * the "License"; You may not use this file except in compliance with the - * License. You may obtain a copy of the License at: - * opensource.org/licenses/BSD-3-Clause - * - ****************************************************************************** - */ - -/* Entry Point */ -ENTRY(Reset_Handler) - -/* Highest address of the user mode stack */ -_estack = ORIGIN(RAM) + LENGTH(RAM); /* end of "RAM" Ram type memory */ - -_Min_Heap_Size = 0x200; /* required amount of heap */ -_Min_Stack_Size = 0x400; /* required amount of stack */ - -/* Memories definition */ -MEMORY -{ - RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 224K - FLASH (rx) : ORIGIN = 0x8000000, LENGTH = 256K -} - -/* Sections */ -SECTIONS -{ - /* The startup code into "FLASH" Rom type memory */ - .isr_vector : - { - . = ALIGN(4); - KEEP(*(.isr_vector)) /* Startup code */ - . = ALIGN(4); - } >FLASH - - /* The program code and other data into "FLASH" Rom type memory */ - .text : - { - . = ALIGN(4); - *(.text) /* .text sections (code) */ - *(.text*) /* .text* sections (code) */ - *(.glue_7) /* glue arm to thumb code */ - *(.glue_7t) /* glue thumb to arm code */ - *(.eh_frame) - - KEEP (*(.init)) - KEEP (*(.fini)) - - . = ALIGN(4); - _etext = .; /* define a global symbols at end of code */ - } >FLASH - - /* Constant data into "FLASH" Rom type memory */ - .rodata : - { - . = ALIGN(4); - *(.rodata) /* .rodata sections (constants, strings, etc.) */ - *(.rodata*) /* .rodata* sections (constants, strings, etc.) */ - . = ALIGN(4); - } >FLASH - - .ARM.extab : { - . = ALIGN(4); - *(.ARM.extab* .gnu.linkonce.armextab.*) - . = ALIGN(4); - } >FLASH - - .ARM : { - . = ALIGN(4); - __exidx_start = .; - *(.ARM.exidx*) - __exidx_end = .; - . = ALIGN(4); - } >FLASH - - .preinit_array : - { - . = ALIGN(4); - PROVIDE_HIDDEN (__preinit_array_start = .); - KEEP (*(.preinit_array*)) - PROVIDE_HIDDEN (__preinit_array_end = .); - . = ALIGN(4); - } >FLASH - - .init_array : - { - . = ALIGN(4); - PROVIDE_HIDDEN (__init_array_start = .); - KEEP (*(SORT(.init_array.*))) - KEEP (*(.init_array*)) - PROVIDE_HIDDEN (__init_array_end = .); - . = ALIGN(4); - } >FLASH - - .fini_array : - { - . = ALIGN(4); - PROVIDE_HIDDEN (__fini_array_start = .); - KEEP (*(SORT(.fini_array.*))) - KEEP (*(.fini_array*)) - PROVIDE_HIDDEN (__fini_array_end = .); - . = ALIGN(4); - } >FLASH - - /* Used by the startup to initialize data */ - _sidata = LOADADDR(.data); - - /* Initialized data sections into "RAM" Ram type memory */ - .data : - { - . = ALIGN(4); - _sdata = .; /* create a global symbol at data start */ - *(.data) /* .data sections */ - *(.data*) /* .data* sections */ - - . = ALIGN(4); - _edata = .; /* define a global symbol at data end */ - - } >RAM AT> FLASH - - /* Uninitialized data section into "RAM" Ram type memory */ - . = ALIGN(4); - .bss : - { - /* This is used by the startup in order to initialize the .bss section */ - _sbss = .; /* define a global symbol at bss start */ - __bss_start__ = _sbss; - *(.bss) - *(.bss*) - *(COMMON) - - . = ALIGN(4); - _ebss = .; /* define a global symbol at bss end */ - __bss_end__ = _ebss; - } >RAM - - /* User_heap_stack section, used to check that there is enough "RAM" Ram type memory left */ - ._user_heap_stack : - { - . = ALIGN(8); - PROVIDE ( end = . ); - PROVIDE ( _end = . ); - . = . + _Min_Heap_Size; - . = . + _Min_Stack_Size; - . = ALIGN(8); - } >RAM - - /* Remove information from the compiler libraries */ - /DISCARD/ : - { - libc.a ( * ) - libm.a ( * ) - libgcc.a ( * ) - } - - .ARM.attributes 0 : { *(.ARM.attributes) } -} \ No newline at end of file diff --git a/.platformio/packages/tool-ldscripts-at32/at32f40/AT32F403ACG_DEFAULT.ld b/.platformio/packages/tool-ldscripts-at32/at32f40/AT32F403ACG_DEFAULT.ld deleted file mode 100644 index 1fd0c47..0000000 --- a/.platformio/packages/tool-ldscripts-at32/at32f40/AT32F403ACG_DEFAULT.ld +++ /dev/null @@ -1,175 +0,0 @@ -/** - ****************************************************************************** - * @file LinkerScript.ld - * @author Auto-generated by STM32CubeIDE - * @brief Linker script for STM32F030C6Tx Device from STM32F0 series - * 32Kbytes FLASH - * 4Kbytes RAM - * - * Set heap size, stack size and stack location according - * to application requirements. - * - * Set memory bank area and size if external memory is used - ****************************************************************************** - * @attention - * - *

© Copyright (c) 2020 STMicroelectronics. - * All rights reserved.

- * - * This software component is licensed by ST under BSD 3-Clause license, - * the "License"; You may not use this file except in compliance with the - * License. You may obtain a copy of the License at: - * opensource.org/licenses/BSD-3-Clause - * - ****************************************************************************** - */ - -/* Entry Point */ -ENTRY(Reset_Handler) - -/* Highest address of the user mode stack */ -_estack = ORIGIN(RAM) + LENGTH(RAM); /* end of "RAM" Ram type memory */ - -_Min_Heap_Size = 0x200; /* required amount of heap */ -_Min_Stack_Size = 0x400; /* required amount of stack */ - -/* Memories definition */ -MEMORY -{ - RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 224K - FLASH (rx) : ORIGIN = 0x8000000, LENGTH = 256K -} - -/* Sections */ -SECTIONS -{ - /* The startup code into "FLASH" Rom type memory */ - .isr_vector : - { - . = ALIGN(4); - KEEP(*(.isr_vector)) /* Startup code */ - . = ALIGN(4); - } >FLASH - - /* The program code and other data into "FLASH" Rom type memory */ - .text : - { - . = ALIGN(4); - *(.text) /* .text sections (code) */ - *(.text*) /* .text* sections (code) */ - *(.glue_7) /* glue arm to thumb code */ - *(.glue_7t) /* glue thumb to arm code */ - *(.eh_frame) - - KEEP (*(.init)) - KEEP (*(.fini)) - - . = ALIGN(4); - _etext = .; /* define a global symbols at end of code */ - } >FLASH - - /* Constant data into "FLASH" Rom type memory */ - .rodata : - { - . = ALIGN(4); - *(.rodata) /* .rodata sections (constants, strings, etc.) */ - *(.rodata*) /* .rodata* sections (constants, strings, etc.) */ - . = ALIGN(4); - } >FLASH - - .ARM.extab : { - . = ALIGN(4); - *(.ARM.extab* .gnu.linkonce.armextab.*) - . = ALIGN(4); - } >FLASH - - .ARM : { - . = ALIGN(4); - __exidx_start = .; - *(.ARM.exidx*) - __exidx_end = .; - . = ALIGN(4); - } >FLASH - - .preinit_array : - { - . = ALIGN(4); - PROVIDE_HIDDEN (__preinit_array_start = .); - KEEP (*(.preinit_array*)) - PROVIDE_HIDDEN (__preinit_array_end = .); - . = ALIGN(4); - } >FLASH - - .init_array : - { - . = ALIGN(4); - PROVIDE_HIDDEN (__init_array_start = .); - KEEP (*(SORT(.init_array.*))) - KEEP (*(.init_array*)) - PROVIDE_HIDDEN (__init_array_end = .); - . = ALIGN(4); - } >FLASH - - .fini_array : - { - . = ALIGN(4); - PROVIDE_HIDDEN (__fini_array_start = .); - KEEP (*(SORT(.fini_array.*))) - KEEP (*(.fini_array*)) - PROVIDE_HIDDEN (__fini_array_end = .); - . = ALIGN(4); - } >FLASH - - /* Used by the startup to initialize data */ - _sidata = LOADADDR(.data); - - /* Initialized data sections into "RAM" Ram type memory */ - .data : - { - . = ALIGN(4); - _sdata = .; /* create a global symbol at data start */ - *(.data) /* .data sections */ - *(.data*) /* .data* sections */ - - . = ALIGN(4); - _edata = .; /* define a global symbol at data end */ - - } >RAM AT> FLASH - - /* Uninitialized data section into "RAM" Ram type memory */ - . = ALIGN(4); - .bss : - { - /* This is used by the startup in order to initialize the .bss section */ - _sbss = .; /* define a global symbol at bss start */ - __bss_start__ = _sbss; - *(.bss) - *(.bss*) - *(COMMON) - - . = ALIGN(4); - _ebss = .; /* define a global symbol at bss end */ - __bss_end__ = _ebss; - } >RAM - - /* User_heap_stack section, used to check that there is enough "RAM" Ram type memory left */ - ._user_heap_stack : - { - . = ALIGN(8); - PROVIDE ( end = . ); - PROVIDE ( _end = . ); - . = . + _Min_Heap_Size; - . = . + _Min_Stack_Size; - . = ALIGN(8); - } >RAM - - /* Remove information from the compiler libraries */ - /DISCARD/ : - { - libc.a ( * ) - libm.a ( * ) - libgcc.a ( * ) - } - - .ARM.attributes 0 : { *(.ARM.attributes) } -} \ No newline at end of file diff --git a/.platformio/packages/tool-ldscripts-at32/package.json b/.platformio/packages/tool-ldscripts-at32/package.json deleted file mode 100644 index e93ffc7..0000000 --- a/.platformio/packages/tool-ldscripts-at32/package.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "name": "tool-ldscripts-at32", - "version": "0.1.1", - "description": "Linker scripts pack for Artery AT32 platform", - "keywords": [ - "linker scripts", - "artery", - "at32" - ], - "homepage": "https://www.arterychip.com/en/product/AT32F403A.jsp", - "license": "Apache-2.0" -} \ No newline at end of file diff --git a/.platformio/platforms/at32/ldscripts/AT32F403AxE_FLASH.ld b/.platformio/platforms/at32/ldscripts/AT32F403AxE_FLASH.ld deleted file mode 100644 index c68b2bd..0000000 --- a/.platformio/platforms/at32/ldscripts/AT32F403AxE_FLASH.ld +++ /dev/null @@ -1,154 +0,0 @@ -/* -***************************************************************************** -** -** File : AT32F403AxE_FLASH.ld -** -** Abstract : Linker script for AT32F403AxE Device with -** 512KByte FLASH, 96KByte RAM -** -** Set heap size, stack size and stack location according -** to application requirements. -** -** Set memory bank area and size if external memory is used. -** -** Target : Artery Tek AT32 -** -** Environment : Arm gcc toolchain -** -***************************************************************************** -*/ - -/* Entry Point */ -ENTRY(Reset_Handler) - -/* Highest address of the user mode stack */ -_estack = 0x20017FFF; /* end of RAM */ - -/* Generate a link error if heap and stack don't fit into RAM */ -_Min_Heap_Size = 0x200; /* required amount of heap */ -_Min_Stack_Size = 0x400; /* required amount of stack */ - -/* Specify the memory areas */ -MEMORY -{ -FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 512K -RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 224K -} - -/* Define output sections */ -SECTIONS -{ - /* The startup code goes first into FLASH */ - .isr_vector : - { - . = ALIGN(4); - KEEP(*(.isr_vector)) /* Startup code */ - . = ALIGN(4); - } >FLASH - - /* The program code and other data goes into FLASH */ - .text : - { - . = ALIGN(4); - *(.text) /* .text sections (code) */ - *(.text*) /* .text* sections (code) */ - *(.glue_7) /* glue arm to thumb code */ - *(.glue_7t) /* glue thumb to arm code */ - *(.eh_frame) - - KEEP (*(.init)) - KEEP (*(.fini)) - - . = ALIGN(4); - _etext = .; /* define a global symbols at end of code */ - } >FLASH - - /* Constant data goes into FLASH */ - .rodata : - { - . = ALIGN(4); - *(.rodata) /* .rodata sections (constants, strings, etc.) */ - *(.rodata*) /* .rodata* sections (constants, strings, etc.) */ - . = ALIGN(4); - } >FLASH - - .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH - .ARM : { - __exidx_start = .; - *(.ARM.exidx*) - __exidx_end = .; - } >FLASH - - .preinit_array : - { - PROVIDE_HIDDEN (__preinit_array_start = .); - KEEP (*(.preinit_array*)) - PROVIDE_HIDDEN (__preinit_array_end = .); - } >FLASH - .init_array : - { - PROVIDE_HIDDEN (__init_array_start = .); - KEEP (*(SORT(.init_array.*))) - KEEP (*(.init_array*)) - PROVIDE_HIDDEN (__init_array_end = .); - } >FLASH - .fini_array : - { - PROVIDE_HIDDEN (__fini_array_start = .); - KEEP (*(SORT(.fini_array.*))) - KEEP (*(.fini_array*)) - PROVIDE_HIDDEN (__fini_array_end = .); - } >FLASH - - /* used by the startup to initialize data */ - _sidata = LOADADDR(.data); - - /* Initialized data sections goes into RAM, load LMA copy after code */ - .data : - { - . = ALIGN(4); - _sdata = .; /* create a global symbol at data start */ - *(.data) /* .data sections */ - *(.data*) /* .data* sections */ - - . = ALIGN(4); - _edata = .; /* define a global symbol at data end */ - } >RAM AT> FLASH - - /* Uninitialized data section */ - . = ALIGN(4); - .bss : - { - /* This is used by the startup in order to initialize the .bss secion */ - _sbss = .; /* define a global symbol at bss start */ - __bss_start__ = _sbss; - *(.bss) - *(.bss*) - *(COMMON) - - . = ALIGN(4); - _ebss = .; /* define a global symbol at bss end */ - __bss_end__ = _ebss; - } >RAM - - /* User_heap_stack section, used to check that there is enough RAM left */ - ._user_heap_stack : - { - . = ALIGN(4); - PROVIDE ( end = . ); - PROVIDE ( _end = . ); - . = . + _Min_Heap_Size; - . = . + _Min_Stack_Size; - . = ALIGN(4); - } >RAM - - /* Remove information from the standard libraries */ - /DISCARD/ : - { - libc.a ( * ) - libm.a ( * ) - libgcc.a ( * ) - } - - .ARM.attributes 0 : { *(.ARM.attributes) } -} diff --git a/.platformio/platforms/at32/ldscripts/AT32F403AxG_FLASH.ld b/.platformio/platforms/at32/ldscripts/AT32F403AxG_FLASH.ld deleted file mode 100644 index 9640684..0000000 --- a/.platformio/platforms/at32/ldscripts/AT32F403AxG_FLASH.ld +++ /dev/null @@ -1,154 +0,0 @@ -/* -***************************************************************************** -** -** File : AT32F403AxG_FLASH.ld -** -** Abstract : Linker script for AT32F403xG Device with -** 1000KByte FLASH, 96KByte RAM -** -** Set heap size, stack size and stack location according -** to application requirements. -** -** Set memory bank area and size if external memory is used. -** -** Target : Artery Tek AT32 -** -** Environment : Arm gcc toolchain -** -***************************************************************************** -*/ - -/* Entry Point */ -ENTRY(Reset_Handler) - -/* Highest address of the user mode stack */ -_estack = 0x20017FFF; /* end of RAM */ - -/* Generate a link error if heap and stack don't fit into RAM */ -_Min_Heap_Size = 0x200; /* required amount of heap */ -_Min_Stack_Size = 0x400; /* required amount of stack */ - -/* Specify the memory areas */ -MEMORY -{ -FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 1000K -RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 224K -} - -/* Define output sections */ -SECTIONS -{ - /* The startup code goes first into FLASH */ - .isr_vector : - { - . = ALIGN(4); - KEEP(*(.isr_vector)) /* Startup code */ - . = ALIGN(4); - } >FLASH - - /* The program code and other data goes into FLASH */ - .text : - { - . = ALIGN(4); - *(.text) /* .text sections (code) */ - *(.text*) /* .text* sections (code) */ - *(.glue_7) /* glue arm to thumb code */ - *(.glue_7t) /* glue thumb to arm code */ - *(.eh_frame) - - KEEP (*(.init)) - KEEP (*(.fini)) - - . = ALIGN(4); - _etext = .; /* define a global symbols at end of code */ - } >FLASH - - /* Constant data goes into FLASH */ - .rodata : - { - . = ALIGN(4); - *(.rodata) /* .rodata sections (constants, strings, etc.) */ - *(.rodata*) /* .rodata* sections (constants, strings, etc.) */ - . = ALIGN(4); - } >FLASH - - .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH - .ARM : { - __exidx_start = .; - *(.ARM.exidx*) - __exidx_end = .; - } >FLASH - - .preinit_array : - { - PROVIDE_HIDDEN (__preinit_array_start = .); - KEEP (*(.preinit_array*)) - PROVIDE_HIDDEN (__preinit_array_end = .); - } >FLASH - .init_array : - { - PROVIDE_HIDDEN (__init_array_start = .); - KEEP (*(SORT(.init_array.*))) - KEEP (*(.init_array*)) - PROVIDE_HIDDEN (__init_array_end = .); - } >FLASH - .fini_array : - { - PROVIDE_HIDDEN (__fini_array_start = .); - KEEP (*(SORT(.fini_array.*))) - KEEP (*(.fini_array*)) - PROVIDE_HIDDEN (__fini_array_end = .); - } >FLASH - - /* used by the startup to initialize data */ - _sidata = LOADADDR(.data); - - /* Initialized data sections goes into RAM, load LMA copy after code */ - .data : - { - . = ALIGN(4); - _sdata = .; /* create a global symbol at data start */ - *(.data) /* .data sections */ - *(.data*) /* .data* sections */ - - . = ALIGN(4); - _edata = .; /* define a global symbol at data end */ - } >RAM AT> FLASH - - /* Uninitialized data section */ - . = ALIGN(4); - .bss : - { - /* This is used by the startup in order to initialize the .bss secion */ - _sbss = .; /* define a global symbol at bss start */ - __bss_start__ = _sbss; - *(.bss) - *(.bss*) - *(COMMON) - - . = ALIGN(4); - _ebss = .; /* define a global symbol at bss end */ - __bss_end__ = _ebss; - } >RAM - - /* User_heap_stack section, used to check that there is enough RAM left */ - ._user_heap_stack : - { - . = ALIGN(4); - PROVIDE ( end = . ); - PROVIDE ( _end = . ); - . = . + _Min_Heap_Size; - . = . + _Min_Stack_Size; - . = ALIGN(4); - } >RAM - - /* Remove information from the standard libraries */ - /DISCARD/ : - { - libc.a ( * ) - libm.a ( * ) - libgcc.a ( * ) - } - - .ARM.attributes 0 : { *(.ARM.attributes) } -} diff --git a/.platformio/platforms/at32/ldscripts/AT32F435xG_FLASH.ld b/.platformio/platforms/at32/ldscripts/AT32F435xG_FLASH.ld deleted file mode 100644 index 1ecd8f0..0000000 --- a/.platformio/platforms/at32/ldscripts/AT32F435xG_FLASH.ld +++ /dev/null @@ -1,154 +0,0 @@ -/* -***************************************************************************** -** -** File : AT32F435xG_FLASH.ld -** -** Abstract : Linker script for AT32F435xG Device with -** 1000KByte FLASH, 384KByte RAM -** -** Set heap size, stack size and stack location according -** to application requirements. -** -** Set memory bank area and size if external memory is used. -** -** Target : Artery Tek AT32 -** -** Environment : Arm gcc toolchain -** -***************************************************************************** -*/ - -/* Entry Point */ -ENTRY(Reset_Handler) - -/* Highest address of the user mode stack */ -_estack = 0x20017FFF; /* end of RAM */ - -/* Generate a link error if heap and stack don't fit into RAM */ -_Min_Heap_Size = 0x200; /* required amount of heap */ -_Min_Stack_Size = 0x400; /* required amount of stack */ - -/* Specify the memory areas */ -MEMORY -{ -FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 1000K -RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 512K -} - -/* Define output sections */ -SECTIONS -{ - /* The startup code goes first into FLASH */ - .isr_vector : - { - . = ALIGN(4); - KEEP(*(.isr_vector)) /* Startup code */ - . = ALIGN(4); - } >FLASH - - /* The program code and other data goes into FLASH */ - .text : - { - . = ALIGN(4); - *(.text) /* .text sections (code) */ - *(.text*) /* .text* sections (code) */ - *(.glue_7) /* glue arm to thumb code */ - *(.glue_7t) /* glue thumb to arm code */ - *(.eh_frame) - - KEEP (*(.init)) - KEEP (*(.fini)) - - . = ALIGN(4); - _etext = .; /* define a global symbols at end of code */ - } >FLASH - - /* Constant data goes into FLASH */ - .rodata : - { - . = ALIGN(4); - *(.rodata) /* .rodata sections (constants, strings, etc.) */ - *(.rodata*) /* .rodata* sections (constants, strings, etc.) */ - . = ALIGN(4); - } >FLASH - - .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH - .ARM : { - __exidx_start = .; - *(.ARM.exidx*) - __exidx_end = .; - } >FLASH - - .preinit_array : - { - PROVIDE_HIDDEN (__preinit_array_start = .); - KEEP (*(.preinit_array*)) - PROVIDE_HIDDEN (__preinit_array_end = .); - } >FLASH - .init_array : - { - PROVIDE_HIDDEN (__init_array_start = .); - KEEP (*(SORT(.init_array.*))) - KEEP (*(.init_array*)) - PROVIDE_HIDDEN (__init_array_end = .); - } >FLASH - .fini_array : - { - PROVIDE_HIDDEN (__fini_array_start = .); - KEEP (*(SORT(.fini_array.*))) - KEEP (*(.fini_array*)) - PROVIDE_HIDDEN (__fini_array_end = .); - } >FLASH - - /* used by the startup to initialize data */ - _sidata = LOADADDR(.data); - - /* Initialized data sections goes into RAM, load LMA copy after code */ - .data : - { - . = ALIGN(4); - _sdata = .; /* create a global symbol at data start */ - *(.data) /* .data sections */ - *(.data*) /* .data* sections */ - - . = ALIGN(4); - _edata = .; /* define a global symbol at data end */ - } >RAM AT> FLASH - - /* Uninitialized data section */ - . = ALIGN(4); - .bss : - { - /* This is used by the startup in order to initialize the .bss secion */ - _sbss = .; /* define a global symbol at bss start */ - __bss_start__ = _sbss; - *(.bss) - *(.bss*) - *(COMMON) - - . = ALIGN(4); - _ebss = .; /* define a global symbol at bss end */ - __bss_end__ = _ebss; - } >RAM - - /* User_heap_stack section, used to check that there is enough RAM left */ - ._user_heap_stack : - { - . = ALIGN(4); - PROVIDE ( end = . ); - PROVIDE ( _end = . ); - . = . + _Min_Heap_Size; - . = . + _Min_Stack_Size; - . = ALIGN(4); - } >RAM - - /* Remove information from the standard libraries */ - /DISCARD/ : - { - libc.a ( * ) - libm.a ( * ) - libgcc.a ( * ) - } - - .ARM.attributes 0 : { *(.ARM.attributes) } -} diff --git a/.platformio/platforms/at32/ldscripts/AT32F435xM_FLASH.ld b/.platformio/platforms/at32/ldscripts/AT32F435xM_FLASH.ld deleted file mode 100644 index 53bcdca..0000000 --- a/.platformio/platforms/at32/ldscripts/AT32F435xM_FLASH.ld +++ /dev/null @@ -1,154 +0,0 @@ -/* -***************************************************************************** -** -** File : AT32F435xM_FLASH.ld -** -** Abstract : Linker script for AT32F435xM Device with -** 4096KByte FLASH, 384KByte RAM -** -** Set heap size, stack size and stack location according -** to application requirements. -** -** Set memory bank area and size if external memory is used. -** -** Target : Artery Tek AT32 -** -** Environment : Arm gcc toolchain -** -***************************************************************************** -*/ - -/* Entry Point */ -ENTRY(Reset_Handler) - -/* Highest address of the user mode stack */ -_estack = 0x20017FFF; /* end of RAM */ - -/* Generate a link error if heap and stack don't fit into RAM */ -_Min_Heap_Size = 0x200; /* required amount of heap */ -_Min_Stack_Size = 0x400; /* required amount of stack */ - -/* Specify the memory areas */ -MEMORY -{ -FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 4032K -RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 512K -} - -/* Define output sections */ -SECTIONS -{ - /* The startup code goes first into FLASH */ - .isr_vector : - { - . = ALIGN(4); - KEEP(*(.isr_vector)) /* Startup code */ - . = ALIGN(4); - } >FLASH - - /* The program code and other data goes into FLASH */ - .text : - { - . = ALIGN(4); - *(.text) /* .text sections (code) */ - *(.text*) /* .text* sections (code) */ - *(.glue_7) /* glue arm to thumb code */ - *(.glue_7t) /* glue thumb to arm code */ - *(.eh_frame) - - KEEP (*(.init)) - KEEP (*(.fini)) - - . = ALIGN(4); - _etext = .; /* define a global symbols at end of code */ - } >FLASH - - /* Constant data goes into FLASH */ - .rodata : - { - . = ALIGN(4); - *(.rodata) /* .rodata sections (constants, strings, etc.) */ - *(.rodata*) /* .rodata* sections (constants, strings, etc.) */ - . = ALIGN(4); - } >FLASH - - .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH - .ARM : { - __exidx_start = .; - *(.ARM.exidx*) - __exidx_end = .; - } >FLASH - - .preinit_array : - { - PROVIDE_HIDDEN (__preinit_array_start = .); - KEEP (*(.preinit_array*)) - PROVIDE_HIDDEN (__preinit_array_end = .); - } >FLASH - .init_array : - { - PROVIDE_HIDDEN (__init_array_start = .); - KEEP (*(SORT(.init_array.*))) - KEEP (*(.init_array*)) - PROVIDE_HIDDEN (__init_array_end = .); - } >FLASH - .fini_array : - { - PROVIDE_HIDDEN (__fini_array_start = .); - KEEP (*(SORT(.fini_array.*))) - KEEP (*(.fini_array*)) - PROVIDE_HIDDEN (__fini_array_end = .); - } >FLASH - - /* used by the startup to initialize data */ - _sidata = LOADADDR(.data); - - /* Initialized data sections goes into RAM, load LMA copy after code */ - .data : - { - . = ALIGN(4); - _sdata = .; /* create a global symbol at data start */ - *(.data) /* .data sections */ - *(.data*) /* .data* sections */ - - . = ALIGN(4); - _edata = .; /* define a global symbol at data end */ - } >RAM AT> FLASH - - /* Uninitialized data section */ - . = ALIGN(4); - .bss : - { - /* This is used by the startup in order to initialize the .bss secion */ - _sbss = .; /* define a global symbol at bss start */ - __bss_start__ = _sbss; - *(.bss) - *(.bss*) - *(COMMON) - - . = ALIGN(4); - _ebss = .; /* define a global symbol at bss end */ - __bss_end__ = _ebss; - } >RAM - - /* User_heap_stack section, used to check that there is enough RAM left */ - ._user_heap_stack : - { - . = ALIGN(4); - PROVIDE ( end = . ); - PROVIDE ( _end = . ); - . = . + _Min_Heap_Size; - . = . + _Min_Stack_Size; - . = ALIGN(4); - } >RAM - - /* Remove information from the standard libraries */ - /DISCARD/ : - { - libc.a ( * ) - libm.a ( * ) - libgcc.a ( * ) - } - - .ARM.attributes 0 : { *(.ARM.attributes) } -} diff --git a/.platformio/platforms/at32/ldscripts/AT32F437xG_FLASH.ld b/.platformio/platforms/at32/ldscripts/AT32F437xG_FLASH.ld deleted file mode 100644 index c0984f3..0000000 --- a/.platformio/platforms/at32/ldscripts/AT32F437xG_FLASH.ld +++ /dev/null @@ -1,154 +0,0 @@ -/* -***************************************************************************** -** -** File : AT32F437xG_FLASH.ld -** -** Abstract : Linker script for AT32F437xG Device with -** 1000KByte FLASH, 384KByte RAM -** -** Set heap size, stack size and stack location according -** to application requirements. -** -** Set memory bank area and size if external memory is used. -** -** Target : Artery Tek AT32 -** -** Environment : Arm gcc toolchain -** -***************************************************************************** -*/ - -/* Entry Point */ -ENTRY(Reset_Handler) - -/* Highest address of the user mode stack */ -_estack = 0x20017FFF; /* end of RAM */ - -/* Generate a link error if heap and stack don't fit into RAM */ -_Min_Heap_Size = 0x200; /* required amount of heap */ -_Min_Stack_Size = 0x400; /* required amount of stack */ - -/* Specify the memory areas */ -MEMORY -{ -FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 1000K -RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 512K -} - -/* Define output sections */ -SECTIONS -{ - /* The startup code goes first into FLASH */ - .isr_vector : - { - . = ALIGN(4); - KEEP(*(.isr_vector)) /* Startup code */ - . = ALIGN(4); - } >FLASH - - /* The program code and other data goes into FLASH */ - .text : - { - . = ALIGN(4); - *(.text) /* .text sections (code) */ - *(.text*) /* .text* sections (code) */ - *(.glue_7) /* glue arm to thumb code */ - *(.glue_7t) /* glue thumb to arm code */ - *(.eh_frame) - - KEEP (*(.init)) - KEEP (*(.fini)) - - . = ALIGN(4); - _etext = .; /* define a global symbols at end of code */ - } >FLASH - - /* Constant data goes into FLASH */ - .rodata : - { - . = ALIGN(4); - *(.rodata) /* .rodata sections (constants, strings, etc.) */ - *(.rodata*) /* .rodata* sections (constants, strings, etc.) */ - . = ALIGN(4); - } >FLASH - - .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH - .ARM : { - __exidx_start = .; - *(.ARM.exidx*) - __exidx_end = .; - } >FLASH - - .preinit_array : - { - PROVIDE_HIDDEN (__preinit_array_start = .); - KEEP (*(.preinit_array*)) - PROVIDE_HIDDEN (__preinit_array_end = .); - } >FLASH - .init_array : - { - PROVIDE_HIDDEN (__init_array_start = .); - KEEP (*(SORT(.init_array.*))) - KEEP (*(.init_array*)) - PROVIDE_HIDDEN (__init_array_end = .); - } >FLASH - .fini_array : - { - PROVIDE_HIDDEN (__fini_array_start = .); - KEEP (*(SORT(.fini_array.*))) - KEEP (*(.fini_array*)) - PROVIDE_HIDDEN (__fini_array_end = .); - } >FLASH - - /* used by the startup to initialize data */ - _sidata = LOADADDR(.data); - - /* Initialized data sections goes into RAM, load LMA copy after code */ - .data : - { - . = ALIGN(4); - _sdata = .; /* create a global symbol at data start */ - *(.data) /* .data sections */ - *(.data*) /* .data* sections */ - - . = ALIGN(4); - _edata = .; /* define a global symbol at data end */ - } >RAM AT> FLASH - - /* Uninitialized data section */ - . = ALIGN(4); - .bss : - { - /* This is used by the startup in order to initialize the .bss secion */ - _sbss = .; /* define a global symbol at bss start */ - __bss_start__ = _sbss; - *(.bss) - *(.bss*) - *(COMMON) - - . = ALIGN(4); - _ebss = .; /* define a global symbol at bss end */ - __bss_end__ = _ebss; - } >RAM - - /* User_heap_stack section, used to check that there is enough RAM left */ - ._user_heap_stack : - { - . = ALIGN(4); - PROVIDE ( end = . ); - PROVIDE ( _end = . ); - . = . + _Min_Heap_Size; - . = . + _Min_Stack_Size; - . = ALIGN(4); - } >RAM - - /* Remove information from the standard libraries */ - /DISCARD/ : - { - libc.a ( * ) - libm.a ( * ) - libgcc.a ( * ) - } - - .ARM.attributes 0 : { *(.ARM.attributes) } -} diff --git a/.platformio/platforms/at32/ldscripts/AT32F437xM_FLASH.ld b/.platformio/platforms/at32/ldscripts/AT32F437xM_FLASH.ld deleted file mode 100644 index 850480c..0000000 --- a/.platformio/platforms/at32/ldscripts/AT32F437xM_FLASH.ld +++ /dev/null @@ -1,154 +0,0 @@ -/* -***************************************************************************** -** -** File : AT32F437xM_FLASH.ld -** -** Abstract : Linker script for AT32F437xM Device with -** 4096KByte FLASH, 384KByte RAM -** -** Set heap size, stack size and stack location according -** to application requirements. -** -** Set memory bank area and size if external memory is used. -** -** Target : Artery Tek AT32 -** -** Environment : Arm gcc toolchain -** -***************************************************************************** -*/ - -/* Entry Point */ -ENTRY(Reset_Handler) - -/* Highest address of the user mode stack */ -_estack = 0x20017FFF; /* end of RAM */ - -/* Generate a link error if heap and stack don't fit into RAM */ -_Min_Heap_Size = 0x200; /* required amount of heap */ -_Min_Stack_Size = 0x400; /* required amount of stack */ - -/* Specify the memory areas */ -MEMORY -{ -FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 4032K -RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 512K -} - -/* Define output sections */ -SECTIONS -{ - /* The startup code goes first into FLASH */ - .isr_vector : - { - . = ALIGN(4); - KEEP(*(.isr_vector)) /* Startup code */ - . = ALIGN(4); - } >FLASH - - /* The program code and other data goes into FLASH */ - .text : - { - . = ALIGN(4); - *(.text) /* .text sections (code) */ - *(.text*) /* .text* sections (code) */ - *(.glue_7) /* glue arm to thumb code */ - *(.glue_7t) /* glue thumb to arm code */ - *(.eh_frame) - - KEEP (*(.init)) - KEEP (*(.fini)) - - . = ALIGN(4); - _etext = .; /* define a global symbols at end of code */ - } >FLASH - - /* Constant data goes into FLASH */ - .rodata : - { - . = ALIGN(4); - *(.rodata) /* .rodata sections (constants, strings, etc.) */ - *(.rodata*) /* .rodata* sections (constants, strings, etc.) */ - . = ALIGN(4); - } >FLASH - - .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH - .ARM : { - __exidx_start = .; - *(.ARM.exidx*) - __exidx_end = .; - } >FLASH - - .preinit_array : - { - PROVIDE_HIDDEN (__preinit_array_start = .); - KEEP (*(.preinit_array*)) - PROVIDE_HIDDEN (__preinit_array_end = .); - } >FLASH - .init_array : - { - PROVIDE_HIDDEN (__init_array_start = .); - KEEP (*(SORT(.init_array.*))) - KEEP (*(.init_array*)) - PROVIDE_HIDDEN (__init_array_end = .); - } >FLASH - .fini_array : - { - PROVIDE_HIDDEN (__fini_array_start = .); - KEEP (*(SORT(.fini_array.*))) - KEEP (*(.fini_array*)) - PROVIDE_HIDDEN (__fini_array_end = .); - } >FLASH - - /* used by the startup to initialize data */ - _sidata = LOADADDR(.data); - - /* Initialized data sections goes into RAM, load LMA copy after code */ - .data : - { - . = ALIGN(4); - _sdata = .; /* create a global symbol at data start */ - *(.data) /* .data sections */ - *(.data*) /* .data* sections */ - - . = ALIGN(4); - _edata = .; /* define a global symbol at data end */ - } >RAM AT> FLASH - - /* Uninitialized data section */ - . = ALIGN(4); - .bss : - { - /* This is used by the startup in order to initialize the .bss secion */ - _sbss = .; /* define a global symbol at bss start */ - __bss_start__ = _sbss; - *(.bss) - *(.bss*) - *(COMMON) - - . = ALIGN(4); - _ebss = .; /* define a global symbol at bss end */ - __bss_end__ = _ebss; - } >RAM - - /* User_heap_stack section, used to check that there is enough RAM left */ - ._user_heap_stack : - { - . = ALIGN(4); - PROVIDE ( end = . ); - PROVIDE ( _end = . ); - . = . + _Min_Heap_Size; - . = . + _Min_Stack_Size; - . = ALIGN(4); - } >RAM - - /* Remove information from the standard libraries */ - /DISCARD/ : - { - libc.a ( * ) - libm.a ( * ) - libgcc.a ( * ) - } - - .ARM.attributes 0 : { *(.ARM.attributes) } -} diff --git a/.platformio/packages/tool-ldscripts-at32/at32f40/AT32F403AxC_FLASH.ld b/.platformio/platforms/at32/ldscripts/at32f40/AT32F403AxC_FLASH.ld similarity index 100% rename from .platformio/packages/tool-ldscripts-at32/at32f40/AT32F403AxC_FLASH.ld rename to .platformio/platforms/at32/ldscripts/at32f40/AT32F403AxC_FLASH.ld diff --git a/.platformio/packages/tool-ldscripts-at32/at32f40/AT32F403AxE_FLASH.ld b/.platformio/platforms/at32/ldscripts/at32f40/AT32F403AxE_FLASH.ld similarity index 100% rename from .platformio/packages/tool-ldscripts-at32/at32f40/AT32F403AxE_FLASH.ld rename to .platformio/platforms/at32/ldscripts/at32f40/AT32F403AxE_FLASH.ld diff --git a/.platformio/packages/tool-ldscripts-at32/at32f40/AT32F403AxG_FLASH.ld b/.platformio/platforms/at32/ldscripts/at32f40/AT32F403AxG_FLASH.ld similarity index 100% rename from .platformio/packages/tool-ldscripts-at32/at32f40/AT32F403AxG_FLASH.ld rename to .platformio/platforms/at32/ldscripts/at32f40/AT32F403AxG_FLASH.ld diff --git a/.platformio/platforms/at32/ldscripts/AT32F403AxC_FLASH.ld b/.platformio/platforms/at32/ldscripts/at32f42/AT32F425x4_FLASH.ld similarity index 91% rename from .platformio/platforms/at32/ldscripts/AT32F403AxC_FLASH.ld rename to .platformio/platforms/at32/ldscripts/at32f42/AT32F425x4_FLASH.ld index f409fe5..5897ff9 100644 --- a/.platformio/platforms/at32/ldscripts/AT32F403AxC_FLASH.ld +++ b/.platformio/platforms/at32/ldscripts/at32f42/AT32F425x4_FLASH.ld @@ -1,17 +1,16 @@ /* ***************************************************************************** ** -** File : AT32F403AxC_FLASH.ld +** File : AT32F425x4_FLASH.ld ** -** Abstract : Linker script for AT32F403xC Device with -** 256KByte FLASH, 96KByte RAM +** Abstract : Linker script for AT32F425x4 Device with +** 16KByte FLASH, 8KByte RAM ** ** Set heap size, stack size and stack location according ** to application requirements. ** ** Set memory bank area and size if external memory is used. ** -** Target : Artery Tek AT32 ** ** Environment : Arm gcc toolchain ** @@ -22,7 +21,7 @@ ENTRY(Reset_Handler) /* Highest address of the user mode stack */ -_estack = 0x20017FFF; /* end of RAM */ +_estack = 0x20001FFF; /* end of RAM */ /* Generate a link error if heap and stack don't fit into RAM */ _Min_Heap_Size = 0x200; /* required amount of heap */ @@ -31,8 +30,8 @@ _Min_Stack_Size = 0x400; /* required amount of stack */ /* Specify the memory areas */ MEMORY { -FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 256K -RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 224K +FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 16K +RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 8K } /* Define output sections */ diff --git a/.platformio/platforms/at32/ldscripts/AT32F437xC_FLASH.ld b/.platformio/platforms/at32/ldscripts/at32f42/AT32F425x6_FLASH.ld similarity index 91% rename from .platformio/platforms/at32/ldscripts/AT32F437xC_FLASH.ld rename to .platformio/platforms/at32/ldscripts/at32f42/AT32F425x6_FLASH.ld index d9d0ecf..84c60cc 100644 --- a/.platformio/platforms/at32/ldscripts/AT32F437xC_FLASH.ld +++ b/.platformio/platforms/at32/ldscripts/at32f42/AT32F425x6_FLASH.ld @@ -1,17 +1,16 @@ /* ***************************************************************************** ** -** File : AT32F437xC_FLASH.ld +** File : AT32F425x6_FLASH.ld ** -** Abstract : Linker script for AT32F437xC Device with -** 256KByte FLASH, 384KByte RAM +** Abstract : Linker script for AT32F425x6 Device with +** 32KByte FLASH, 20KByte RAM ** ** Set heap size, stack size and stack location according ** to application requirements. ** ** Set memory bank area and size if external memory is used. ** -** Target : Artery Tek AT32 ** ** Environment : Arm gcc toolchain ** @@ -22,7 +21,7 @@ ENTRY(Reset_Handler) /* Highest address of the user mode stack */ -_estack = 0x20017FFF; /* end of RAM */ +_estack = 0x20004FFF; /* end of RAM */ /* Generate a link error if heap and stack don't fit into RAM */ _Min_Heap_Size = 0x200; /* required amount of heap */ @@ -31,8 +30,8 @@ _Min_Stack_Size = 0x400; /* required amount of stack */ /* Specify the memory areas */ MEMORY { -FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 256K -RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 512K +FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 32K +RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 20K } /* Define output sections */ diff --git a/.platformio/platforms/at32/ldscripts/AT32F435xC_FLASH.ld b/.platformio/platforms/at32/ldscripts/at32f42/AT32F425x8_FLASH.ld similarity index 91% rename from .platformio/platforms/at32/ldscripts/AT32F435xC_FLASH.ld rename to .platformio/platforms/at32/ldscripts/at32f42/AT32F425x8_FLASH.ld index d5c2b4b..62e51e2 100644 --- a/.platformio/platforms/at32/ldscripts/AT32F435xC_FLASH.ld +++ b/.platformio/platforms/at32/ldscripts/at32f42/AT32F425x8_FLASH.ld @@ -1,17 +1,16 @@ /* ***************************************************************************** ** -** File : AT32F435xC_FLASH.ld +** File : AT32F425x8_FLASH.ld ** -** Abstract : Linker script for AT32F435xC Device with -** 256KByte FLASH, 384KByte RAM +** Abstract : Linker script for AT32F425x8 Device with +** 64KByte FLASH, 16KByte RAM ** ** Set heap size, stack size and stack location according ** to application requirements. ** ** Set memory bank area and size if external memory is used. ** -** Target : Artery Tek AT32 ** ** Environment : Arm gcc toolchain ** @@ -22,7 +21,7 @@ ENTRY(Reset_Handler) /* Highest address of the user mode stack */ -_estack = 0x20017FFF; /* end of RAM */ +_estack = 0x20004FFF; /* end of RAM */ /* Generate a link error if heap and stack don't fit into RAM */ _Min_Heap_Size = 0x200; /* required amount of heap */ @@ -31,8 +30,8 @@ _Min_Stack_Size = 0x400; /* required amount of stack */ /* Specify the memory areas */ MEMORY { -FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 256K -RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 512K +FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 64K +RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 20K } /* Define output sections */ diff --git a/.platformio/packages/tool-ldscripts-at32/at32f43/AT32F435xC_FLASH.ld b/.platformio/platforms/at32/ldscripts/at32f43/AT32F435xC_FLASH.ld similarity index 100% rename from .platformio/packages/tool-ldscripts-at32/at32f43/AT32F435xC_FLASH.ld rename to .platformio/platforms/at32/ldscripts/at32f43/AT32F435xC_FLASH.ld diff --git a/.platformio/packages/tool-ldscripts-at32/at32f43/AT32F435xG_FLASH.ld b/.platformio/platforms/at32/ldscripts/at32f43/AT32F435xG_FLASH.ld similarity index 100% rename from .platformio/packages/tool-ldscripts-at32/at32f43/AT32F435xG_FLASH.ld rename to .platformio/platforms/at32/ldscripts/at32f43/AT32F435xG_FLASH.ld diff --git a/.platformio/packages/tool-ldscripts-at32/at32f43/AT32F435xM_FLASH.ld b/.platformio/platforms/at32/ldscripts/at32f43/AT32F435xM_FLASH.ld similarity index 100% rename from .platformio/packages/tool-ldscripts-at32/at32f43/AT32F435xM_FLASH.ld rename to .platformio/platforms/at32/ldscripts/at32f43/AT32F435xM_FLASH.ld diff --git a/.platformio/packages/tool-ldscripts-at32/at32f43/AT32F437xC_FLASH.ld b/.platformio/platforms/at32/ldscripts/at32f43/AT32F437xC_FLASH.ld similarity index 100% rename from .platformio/packages/tool-ldscripts-at32/at32f43/AT32F437xC_FLASH.ld rename to .platformio/platforms/at32/ldscripts/at32f43/AT32F437xC_FLASH.ld diff --git a/.platformio/packages/tool-ldscripts-at32/at32f43/AT32F437xG_FLASH.ld b/.platformio/platforms/at32/ldscripts/at32f43/AT32F437xG_FLASH.ld similarity index 100% rename from .platformio/packages/tool-ldscripts-at32/at32f43/AT32F437xG_FLASH.ld rename to .platformio/platforms/at32/ldscripts/at32f43/AT32F437xG_FLASH.ld diff --git a/.platformio/packages/tool-ldscripts-at32/at32f43/AT32F437xM_FLASH.ld b/.platformio/platforms/at32/ldscripts/at32f43/AT32F437xM_FLASH.ld similarity index 100% rename from .platformio/packages/tool-ldscripts-at32/at32f43/AT32F437xM_FLASH.ld rename to .platformio/platforms/at32/ldscripts/at32f43/AT32F437xM_FLASH.ld diff --git a/.platformio/packages/tool-ldscripts-at32/tpl/linker.tpl b/.platformio/platforms/at32/ldscripts/tpl/linker.tpl similarity index 100% rename from .platformio/packages/tool-ldscripts-at32/tpl/linker.tpl rename to .platformio/platforms/at32/ldscripts/tpl/linker.tpl diff --git a/JLINK.md b/JLINK.md index 00b2b0d..c80cdf4 100644 --- a/JLINK.md +++ b/JLINK.md @@ -7,12 +7,10 @@ Copy the `.platformio\packages\tool-jlink\Devices\AT\AT32F4xx` folder from Githu Add the following lines to the `JLinkDevices.xml` file under `.platformio/packages/tool-jlink/` ``` + + - - - - - + @@ -25,6 +23,7 @@ Add the following lines to the `JLinkDevices.xml` file under `.platformio/packag + @@ -36,7 +35,16 @@ Add the following lines to the `JLinkDevices.xml` file under `.platformio/packag - + + + + + + + + + + ``` ## 3. Use JLINK upload in the Project