This is an automated email from Gerrit.

Jonathan ([email protected]) just uploaded a new patch set to Gerrit, 
which you can find at http://openocd.zylin.com/5606

-- gerrit

commit 57bb3de16c6cb03306899a7cbf668cd53c0e30a8
Author: Jonathan Ibarra <[email protected]>
Date:   Fri Apr 24 22:55:13 2020 -0500

    flash/nor/efm32: add support for bootload, devinfo access
    
    Allow programming bootloader region and reading devinfo region
    
    Change-Id: I8b6e90b73928dc10aac0d9eb72e0b9974302028c
    Signed-off-by: Jonathan Ibarra <[email protected]>

diff --git a/src/flash/nor/efm32.c b/src/flash/nor/efm32.c
index 9cdc325..9820449 100644
--- a/src/flash/nor/efm32.c
+++ b/src/flash/nor/efm32.c
@@ -53,7 +53,7 @@
 #define EFM32_MSC_USER_DATA             EFM32_MSC_INFO_BASE
 #define EFM32_MSC_LOCK_BITS             (EFM32_MSC_INFO_BASE+0x4000)
 #define EFM32_MSC_DEV_INFO              (EFM32_MSC_INFO_BASE+0x8000)
-
+#define EFM32_MSC_BOOTLOADER           (EFM32_MSC_INFO_BASE+0x10000)
 /* PAGE_SIZE is not present in Zero, Happy and the original Gecko MCU */
 #define EFM32_MSC_DI_PAGE_SIZE          (EFM32_MSC_DEV_INFO+0x1e7)
 #define EFM32_MSC_DI_FLASH_SZ           (EFM32_MSC_DEV_INFO+0x1f8)
@@ -964,7 +964,6 @@ static int efm32x_probe(struct flash_bank *bank)
        struct efm32_info efm32_mcu_info;
        int ret;
        int i;
-       uint32_t base_address = 0x00000000;
        char buf[256];
 
        efm32x_info->probed = 0;
@@ -978,6 +977,20 @@ static int efm32x_probe(struct flash_bank *bank)
        if (ERROR_OK != ret)
                return ret;
 
+       if ((bank->base == EFM32_MSC_USER_DATA) ||
+               bank->base == EFM32_MSC_LOCK_BITS) {
+               efm32_mcu_info.flash_sz_kib = 2;
+               efm32_mcu_info.page_size = 2048;
+       }
+       else if (bank->base == EFM32_MSC_DEV_INFO) {
+               /* FIXME? not true base address */
+               efm32_mcu_info.flash_sz_kib = 2;
+               efm32_mcu_info.page_size = 2048;
+       }
+       else if (bank->base == EFM32_MSC_BOOTLOADER) {
+                efm32_mcu_info.flash_sz_kib = 32;
+               efm32_mcu_info.page_size = 2048;
+       }
        LOG_INFO("detected part: %s", buf);
        LOG_INFO("flash size = %dkbytes", efm32_mcu_info.flash_sz_kib);
        LOG_INFO("flash page size = %dbytes", efm32_mcu_info.page_size);
@@ -994,7 +1007,6 @@ static int efm32x_probe(struct flash_bank *bank)
                bank->sectors = NULL;
        }
 
-       bank->base = base_address;
        bank->size = (num_pages * efm32_mcu_info.page_size);
        bank->num_sectors = num_pages;
 
@@ -1012,7 +1024,6 @@ static int efm32x_probe(struct flash_bank *bank)
                bank->sectors[i].is_erased = -1;
                bank->sectors[i].is_protected = 1;
        }
-
        efm32x_info->probed = 1;
 
        return ERROR_OK;
diff --git a/tcl/target/efm32.cfg b/tcl/target/efm32.cfg
index c789efc..b74ad70 100644
--- a/tcl/target/efm32.cfg
+++ b/tcl/target/efm32.cfg
@@ -43,6 +43,10 @@ $_TARGETNAME configure -work-area-phys 0x10000000 
-work-area-size $_WORKAREASIZE
 
 set _FLASHNAME $_CHIPNAME.flash
 flash bank $_FLASHNAME efm32 0 0 0 0 $_TARGETNAME
+flash bank userdata.flash efm32 0x0FE00000 0x800 0 0 $_TARGETNAME
+flash bank lockbits.flash efm32 0x0FE04000 0x800 0 0 $_TARGETNAME
+flash bank devinfo.flash efm32 0x0FE08000 0x400 0 0 $_TARGETNAME
+flash bank bootloader.flash efm32 0x0FE10000 0x8000 0 0 $_TARGETNAME
 
 if {![using_hla]} {
    # if srst is not fitted use SYSRESETREQ to

-- 


_______________________________________________
OpenOCD-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openocd-devel

Reply via email to