This is an automated email from Gerrit.

"Doug Brunner <[email protected]>" just uploaded a new patch set to 
Gerrit, which you can find at https://review.openocd.org/c/openocd/+/6665

-- gerrit

commit 0673aab8796d30cfbd73431af9152a37db8f1fd0
Author: Doug Brunner <[email protected]>
Date:   Mon Oct 25 10:15:07 2021 -0700

    flash/nor/efr32: fixed lockbits and user data
    
    Changed flash driver so that nonzero base addresses and sizes for flash 
blocks defined in tcl are respected.
    Added user data and lockbits pages to the tcl configuration.
    This addresses ticket #185.
    
    Signed-off-by: Doug Brunner <[email protected]>
    Change-Id: Ifb22e6149939d893f386706e99b928691ec1d41b

diff --git a/src/flash/nor/efm32.c b/src/flash/nor/efm32.c
index ab0186d7d..f7154aeff 100644
--- a/src/flash/nor/efm32.c
+++ b/src/flash/nor/efm32.c
@@ -944,7 +944,6 @@ static int efm32x_probe(struct flash_bank *bank)
        struct efm32x_flash_bank *efm32x_info = bank->driver_priv;
        struct efm32_info efm32_mcu_info;
        int ret;
-       uint32_t base_address = 0x00000000;
 
        efm32x_info->probed = false;
        memset(efm32x_info->lb_page, 0xff, LOCKBITS_PAGE_SZ);
@@ -963,12 +962,20 @@ static int efm32x_probe(struct flash_bank *bank)
        int num_pages = efm32_mcu_info.flash_sz_kib * 1024 /
                efm32_mcu_info.page_size;
 
+       if (bank->size > 0) {
+               if (bank->size % efm32_mcu_info.page_size != 0) {
+                       LOG_ERROR("Flash banks must be a multiple of %d bytes",
+                               efm32_mcu_info.page_size);
+                       return ERROR_FAIL;
+               }
+               num_pages = bank->size / efm32_mcu_info.page_size;
+       }
+
        assert(num_pages > 0);
 
        free(bank->sectors);
        bank->sectors = NULL;
 
-       bank->base = base_address;
        bank->size = (num_pages * efm32_mcu_info.page_size);
        bank->num_sectors = num_pages;
 
diff --git a/tcl/target/efm32.cfg b/tcl/target/efm32.cfg
index c789efc72..e43bde120 100644
--- a/tcl/target/efm32.cfg
+++ b/tcl/target/efm32.cfg
@@ -43,6 +43,8 @@ $_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 2048 0 0 $_TARGETNAME
+flash bank lockbits.flash efm32 0x0FE04000 2048 0 0 $_TARGETNAME
 
 if {![using_hla]} {
    # if srst is not fitted use SYSRESETREQ to

-- 

Reply via email to