Implement version information storage and retrieval for the bootrom and the osimage.

Use perl to create the version information (thereby re-creating the perl dependency and adding an svn dependency) but fall back in case of missing perl or svn
This commit is contained in:
henryk@ploetzli.ch 2009-08-28 06:40:44 +00:00
commit 8a6aec16d8
13 changed files with 171 additions and 13 deletions

View file

@ -2,7 +2,7 @@
# DO NOT use thumb mode in the phase 1 bootloader since that generates a section with glue code
ARMSRC = fromflash.c
THUMBSRC = usb.c bootrom.c
THUMBSRC = usb.c version.c bootrom.c
ASMSRC = ram-reset.s flash-reset.s
# Do not move this inclusion before the definition of {THUMB,ASM,ARM}SRC
@ -19,8 +19,9 @@ clean:
$(DELETE) $(OBJDIR)$(PATHSEP)*.s19
$(DELETE) $(OBJDIR)$(PATHSEP)*.map
$(DELETE) $(OBJDIR)$(PATHSEP)*.d
$(DELETE) version.c
.PHONY: all clean help
.PHONY: all clean help
help:
@echo Multi-OS Makefile, you are running on $(DETECTED_OS)
@echo Possible targets:

View file

@ -1,6 +1,6 @@
#include <proxmark3.h>
void __attribute__((section("bootphase1"))) CopyBootToRAM(void)
void __attribute__((section(".bootphase1"))) CopyBootToRAM(void)
{
int i;

View file

@ -8,6 +8,18 @@ SECTIONS
bootphase1 : {
*(.startup)
*(.bootphase1)
/* It seems to be impossible to flush align a section at the
end of a memory segment. Instead, we'll put the version_information
wherever the linker wants it, and then put a pointer to the start
of the version information at the end of the section.
-- Henryk Plötz <henryk@ploetzli.ch> 2009-08-28 */
_version_information_start = .;
*(.version_information);
. = LENGTH(bootphase1) - 0x4; /* Skip ahead to the end */
LONG(_version_information_start)
} >bootphase1
bootphase2 : {