Browse Source

xmc4xxx: Integrate build of erase check code

Instead of pointing to the assembler sources in a comment and
inline-commenting the THUMB bytecode, place the hex array alongside the
assembler sources and include it via preprocessor.

Originally inspired by a typo in the file path during driver development,
but it also facilitates making changes to the assembler sources.

A Makefile is provided to help automate updating the bytecode. It is not
integrated with the automake system to avoid forcing an ARM cross-compiler
onto every user, i.e. after modifying the sources they need to be rebuilt
in that directory before building the usual way. ARM_CROSS_COMPILE= can
be passed on the make command line to deal with native ARM toolchains
or with varying prefixes of cross-toolchains.

Change-Id: I00ceb980a68c8554a180dd13719ac77b677a8bcd
Signed-off-by: Andreas Färber <afaerber@suse.de>
Reviewed-on: http://openocd.zylin.com/3133
Tested-by: jenkins
Reviewed-by: Andreas Fritiofson <andreas.fritiofson@gmail.com>
Reviewed-by: Paul Fertser <fercerpav@gmail.com>
tags/v0.10.0-rc1
Andreas Färber 6 years ago
committed by Andreas Fritiofson
parent
commit
7cf68a0f16
3 changed files with 22 additions and 9 deletions
  1. +19
    -0
      contrib/loaders/erase_check/Makefile
  2. +2
    -0
      contrib/loaders/erase_check/armv7m_0_erase_check.inc
  3. +1
    -9
      src/flash/nor/xmc4xxx.c

+ 19
- 0
contrib/loaders/erase_check/Makefile View File

@@ -0,0 +1,19 @@
BIN2C = ../../../src/helper/bin2char.sh

ARM_CROSS_COMPILE ?= arm-none-eabi-
ARM_AS ?= $(ARM_CROSS_COMPILE)as
ARM_OBJCOPY ?= $(ARM_CROSS_COMPILE)objcopy

arm: armv7m_erase_check.inc armv7m_0_erase_check.inc

armv7m_%.elf: armv7m_%.s
$(ARM_AS) $< -o $@

armv7m_%.bin: armv7m_%.elf
$(ARM_OBJCOPY) -Obinary $< $@

armv7m_%.inc: armv7m_%.bin
$(BIN2C) < $< > $@

clean:
-rm -f *.elf *.bin *.inc

+ 2
- 0
contrib/loaders/erase_check/armv7m_0_erase_check.inc View File

@@ -0,0 +1,2 @@
/* Autogenerated with ../../../src/helper/bin2char.sh */
0x03,0x78,0x01,0x30,0x1a,0x43,0x01,0x39,0xfa,0xd1,0x00,0xbe,

+ 1
- 9
src/flash/nor/xmc4xxx.c View File

@@ -628,16 +628,8 @@ int xmc4xxx_blank_check_memory(struct target *target,
struct armv7m_algorithm armv7m_info;
int retval;

/* see contrib/loaders/erase_check/armv7m_0_erase_check.s for src */

static const uint8_t erase_check_code[] = {
/* loop: */
0x03, 0x78, /* ldrb r3, [r0] */
0x01, 0x30, /* adds r0, #1 */
0x1A, 0x43, /* orrs r2, r2, r3 */
0x01, 0x39, /* subs r1, r1, #1 */
0xFA, 0xD1, /* bne loop */
0x00, 0xBE /* bkpt #0 */
#include "../../../contrib/loaders/erase_check/armv7m_0_erase_check.inc"
};

/* make sure we have a working area */


Loading…
Cancel
Save