Skip to content

Commit

Permalink
masterkeys/prolwhite: ld: align vector section to 512 bytes
Browse files Browse the repository at this point in the history
Patch to modify rules_code.ld is no longer necessary with this change.
  • Loading branch information
hansemro committed Dec 14, 2022
1 parent f96ce95 commit afaff36
Show file tree
Hide file tree
Showing 3 changed files with 94 additions and 8 deletions.
13 changes: 11 additions & 2 deletions keyboards/masterkeys/prolwhite/ld/HT32F52352_PROLWHITE.ld
Original file line number Diff line number Diff line change
Expand Up @@ -102,5 +102,14 @@ REGION_ALIAS("BSS_RAM", ram0);
/* RAM region to be used for the default heap.*/
REGION_ALIAS("HEAP_RAM", ram0);

/* Generic rules inclusion.*/
INCLUDE rules.ld
/* Stack rules inclusion.*/
INCLUDE rules_stacks.ld

/* Code rules inclusion.*/
INCLUDE HT32F523xx_rules_code.ld

/* Data rules inclusion.*/
INCLUDE rules_data.ld

/* Memory rules inclusion.*/
INCLUDE rules_memory.ld
83 changes: 83 additions & 0 deletions keyboards/masterkeys/prolwhite/ld/HT32F523xx_rules_code.ld
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
/*
ChibiOS - Copyright (C) 2006..2018 Giovanni Di Sirio

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

ENTRY(Reset_Handler)

SECTIONS
{
.vectors : ALIGN(512)
{
__textvectors_base__ = LOADADDR(.vectors);
__vectors_base__ = .;
KEEP(*(.vectors))
__vectors_end__ = .;
} > VECTORS_FLASH AT > VECTORS_FLASH_LMA

.xtors : ALIGN(4)
{
__init_array_base__ = .;
KEEP(*(SORT(.init_array.*)))
KEEP(*(.init_array))
__init_array_end__ = .;
__fini_array_base__ = .;
KEEP(*(.fini_array))
KEEP(*(SORT(.fini_array.*)))
__fini_array_end__ = .;
} > XTORS_FLASH AT > XTORS_FLASH_LMA

.text : ALIGN_WITH_INPUT
{
__text_base__ = .;
*(.text)
*(.text.*)
*(.glue_7t)
*(.glue_7)
*(.gcc*)
__text_end__ = .;
} > TEXT_FLASH AT > TEXT_FLASH_LMA

.rodata : ALIGN(4)
{
__rodata_base__ = .;
*(.rodata)
*(.rodata.*)
. = ALIGN(4);
__rodata_end__ = .;
} > RODATA_FLASH AT > RODATA_FLASH_LMA

.ARM.extab :
{
*(.ARM.extab* .gnu.linkonce.armextab.*)
} > VARIOUS_FLASH AT > VARIOUS_FLASH_LMA

.ARM.exidx : {
__exidx_base__ = .;
__exidx_start = .;
*(.ARM.exidx* .gnu.linkonce.armexidx.*)
__exidx_end__ = .;
__exidx_end = .;
} > VARIOUS_FLASH AT > VARIOUS_FLASH_LMA

.eh_frame_hdr :
{
*(.eh_frame_hdr)
} > VARIOUS_FLASH AT > VARIOUS_FLASH_LMA

.eh_frame : ONLY_IF_RO
{
*(.eh_frame)
} > VARIOUS_FLASH AT > VARIOUS_FLASH_LMA
}
6 changes: 0 additions & 6 deletions keyboards/masterkeys/prolwhite/readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,12 +26,6 @@ From factory, the HT32 processor comes with flash protection and debug security

## How to compile

Patch Chibios to align vector table to 512 bytes:

```bash
sed -r "s/(.vectors : ALIGN)\(1024\)/\1(512)/" lib/chibios/os/common/startup/ARMCMx/compilers/GCC/ld/rules_code.ld
```

Make example for this keyboard (after setting up your build environment):

```bash
Expand Down

0 comments on commit afaff36

Please sign in to comment.