Change in osmo-asf4-dfu[sysmoOCTSIM]: fix DFU magic address and linker script

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.

tsaitgaist gerrit-no-reply at lists.osmocom.org
Tue Jan 14 13:14:57 UTC 2020


tsaitgaist has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-asf4-dfu/+/16855 )


Change subject: fix DFU magic address and linker script
......................................................................

fix DFU magic address and linker script

using the address specified in the linker script leads to a large
output binary (as large as the address specified.
instead the address is now specified in the source file.

Change-Id: I69ad101593e903b74084f179cfc97fccccdfa5a3
---
M gcc/gcc/same54p20a_flash.ld
M usb_dfu_main.c
2 files changed, 3 insertions(+), 9 deletions(-)



  git pull ssh://gerrit.osmocom.org:29418/osmo-asf4-dfu refs/changes/55/16855/1

diff --git a/gcc/gcc/same54p20a_flash.ld b/gcc/gcc/same54p20a_flash.ld
index 32ded77..6aa3fb1 100644
--- a/gcc/gcc/same54p20a_flash.ld
+++ b/gcc/gcc/same54p20a_flash.ld
@@ -48,12 +48,6 @@
 /* Section Definitions */
 SECTIONS
 {
-    /* Location of the DFU magic. The application must set the magic value "DFU!" (e.g. 0x44465521) at this address to force the DFU bootloader to start (e.g. to perform a DFU detach) */
-    .dfu_magic 0x20000000 :
-    {
-        KEEP(*(.dfu_magic)) ;
-    }
-
     .text :
     {
         . = ALIGN(4);
diff --git a/usb_dfu_main.c b/usb_dfu_main.c
index 7fd54d3..f431d29 100644
--- a/usb_dfu_main.c
+++ b/usb_dfu_main.c
@@ -28,7 +28,7 @@
 static uint32_t* application_start_address;
 
 /** Location of the DFU magic value to force starting DFU */
-static uint32_t dfu_magic __attribute__ ((section (".dfu_magic"))) __attribute__ ((__used__));
+static volatile uint32_t* dfu_magic = (uint32_t*)HSRAM_ADDR; // magic value should be written at start of RAM
 
 /** Check if the bootloader is valid
  *  \return true if the bootloader is valid and can be run
@@ -51,8 +51,8 @@
  */
 static bool check_force_dfu(void)
 {
-	if (0x44465521 == dfu_magic) { // check for the magic value which can be set by the main application
-		dfu_magic = 0; // erase value so we don't stay in the DFU bootloader upon reset
+	if (0x44465521 == *dfu_magic) { // check for the magic value which can be set by the main application
+		*dfu_magic = 0; // erase value so we don't stay in the DFU bootloader upon reset
 		return true;
 	}
 	if (0 == gpio_get_pin_level(BUTTON_FORCE_DFU)) { // signal is low when button is pressed

-- 
To view, visit https://gerrit.osmocom.org/c/osmo-asf4-dfu/+/16855
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-asf4-dfu
Gerrit-Branch: sysmoOCTSIM
Gerrit-Change-Id: I69ad101593e903b74084f179cfc97fccccdfa5a3
Gerrit-Change-Number: 16855
Gerrit-PatchSet: 1
Gerrit-Owner: tsaitgaist <kredon at sysmocom.de>
Gerrit-MessageType: newchange
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20200114/e8432d50/attachment.htm>


More information about the gerrit-log mailing list