mirror of
https://github.com/linux-msm/openocd.git
synced 2026-02-25 13:15:07 -08:00
flash/stm32f1x: fix maximum flash size for some devices
For STM32F0xxx, according to RM0360 Rev 4 and RM0091 Rev 9,
the accurate flash sizes are in RM0360, Table 4 and 5
DEV_ID=0x440 => F030x8 => 64K (64 * 1K)
F05xxx => idem
DEV_ID=0x442 => F030xC => 256K (128 * 2K)
F09xxx => idem
DEV_ID=0x444 => F030x4 => 16K (16 * 1K)
F030x6 => 32K (32 * 1K)
DEV_ID=0x445 => F070x6 => 32K (32 * 1K)
F04xxx => idem
DEV_ID=0x448 => F070xB => 128K (64 * 2K)
For STM32 F100xx HD VL (0x428), max_flash_size_kb is 512 (was 128)
refer to RM0041 Rev5: Table 5. Flash module organization (high-density
value line devices) => (256 page of 2 Kbytes each)
Change-Id: I4ead13093f8f4b8ec900482ee049a6fc83dcc664
Signed-off-by: Tarek BOCHKATI <tarek.bouchkati@gmail.com>
Reviewed-on: http://openocd.zylin.com/5444
Tested-by: jenkins
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
This commit is contained in:
committed by
Antonio Borneo
parent
fa329f2852
commit
1c16d76c00
@@ -714,8 +714,6 @@ static int stm32x_probe(struct flash_bank *bank)
|
||||
/* set page size, protection granularity and max flash size depending on family */
|
||||
switch (device_id & 0xfff) {
|
||||
case 0x440: /* stm32f05x */
|
||||
case 0x444: /* stm32f03x */
|
||||
case 0x445: /* stm32f04x */
|
||||
page_size = 1024;
|
||||
stm32x_info->ppage_size = 4;
|
||||
max_flash_size_in_kb = 64;
|
||||
@@ -724,7 +722,25 @@ static int stm32x_probe(struct flash_bank *bank)
|
||||
stm32x_info->default_rdp = 0xAA;
|
||||
stm32x_info->can_load_options = true;
|
||||
break;
|
||||
case 0x444: /* stm32f03x */
|
||||
case 0x445: /* stm32f04x */
|
||||
page_size = 1024;
|
||||
stm32x_info->ppage_size = 4;
|
||||
max_flash_size_in_kb = 32;
|
||||
stm32x_info->user_data_offset = 16;
|
||||
stm32x_info->option_offset = 6;
|
||||
stm32x_info->default_rdp = 0xAA;
|
||||
stm32x_info->can_load_options = true;
|
||||
break;
|
||||
case 0x448: /* stm32f07x */
|
||||
page_size = 2048;
|
||||
stm32x_info->ppage_size = 4;
|
||||
max_flash_size_in_kb = 128;
|
||||
stm32x_info->user_data_offset = 16;
|
||||
stm32x_info->option_offset = 6;
|
||||
stm32x_info->default_rdp = 0xAA;
|
||||
stm32x_info->can_load_options = true;
|
||||
break;
|
||||
case 0x442: /* stm32f09x */
|
||||
page_size = 2048;
|
||||
stm32x_info->ppage_size = 4;
|
||||
@@ -768,7 +784,7 @@ static int stm32x_probe(struct flash_bank *bank)
|
||||
case 0x428: /* stm32f100xx high-density value line */
|
||||
page_size = 2048;
|
||||
stm32x_info->ppage_size = 4;
|
||||
max_flash_size_in_kb = 128;
|
||||
max_flash_size_in_kb = 512;
|
||||
break;
|
||||
case 0x422: /* stm32f302/3xb/c */
|
||||
page_size = 2048;
|
||||
|
||||
Reference in New Issue
Block a user