mirror of
https://github.com/linux-msm/openocd.git
synced 2026-02-25 13:15:07 -08:00
flash/nor: Add PSoC 5LP flash driver
Always probe for ECC mode and display ECC sectors if disabled. Non-ECC write is implemented as zeroing the ECC/config bytes. Erasing ECC sectors is ignored, erase-checking takes them into account. Tested with CY8CKIT-059 (CY8C5888), except ECC mode. Change-Id: If63b9ffca7ad8de038be3c086c49712b629ec554 Signed-off-by: Andreas Färber <afaerber@suse.de> Signed-off-by: Tomas Vanek <vanekt@fbl.cz> Signed-off-by: Forest Crossman <cyrozap@gmail.com> Reviewed-on: http://openocd.zylin.com/3432 Tested-by: jenkins
This commit is contained in:
committed by
Tomas Vanek
parent
d02de3a8a9
commit
2d5f2ede55
4
README
4
README
@@ -125,8 +125,8 @@ Flash drivers
|
||||
|
||||
ADUC702x, AT91SAM, ATH79, AVR, CFI, DSP5680xx, EFM32, EM357, FM3, FM4, Kinetis,
|
||||
LPC8xx/LPC1xxx/LPC2xxx/LPC541xx, LPC2900, LPCSPIFI, Marvell QSPI,
|
||||
Milandr, NIIET, NuMicro, PIC32mx, PSoC4, SiM3x, Stellaris, STM32, STMSMI,
|
||||
STR7x, STR9x, nRF51; NAND controllers of AT91SAM9, LPC3180, LPC32xx,
|
||||
Milandr, NIIET, NuMicro, PIC32mx, PSoC4, PSoC5LP, SiM3x, Stellaris, STM32,
|
||||
STMSMI, STR7x, STR9x, nRF51; NAND controllers of AT91SAM9, LPC3180, LPC32xx,
|
||||
i.MX31, MXC, NUC910, Orion/Kirkwood, S3C24xx, S3C6400, XMC1xxx, XMC4xxx.
|
||||
|
||||
|
||||
|
||||
@@ -6142,6 +6142,32 @@ The @var{num} parameter is a value shown by @command{flash banks}.
|
||||
@end deffn
|
||||
@end deffn
|
||||
|
||||
@deffn {Flash Driver} psoc5lp
|
||||
All members of the PSoC 5LP microcontroller family from Cypress
|
||||
include internal program flash and use ARM Cortex-M3 cores.
|
||||
The driver probes for a number of these chips and autoconfigures itself,
|
||||
apart from the base address.
|
||||
|
||||
@example
|
||||
flash bank $_FLASHNAME psoc5lp 0x00000000 0 0 0 $_TARGETNAME
|
||||
@end example
|
||||
|
||||
@b{Note:} PSoC 5LP chips can be configured to have ECC enabled or disabled.
|
||||
@quotation Attention
|
||||
If flash operations are performed in ECC-disabled mode, they will also affect
|
||||
the ECC flash region. Erasing a 16k flash sector in the 0x00000000 area will
|
||||
then also erase the corresponding 2k data bytes in the 0x48000000 area.
|
||||
Writing to the ECC data bytes in ECC-disabled mode is not implemented.
|
||||
@end quotation
|
||||
|
||||
Commands defined in the @var{psoc5lp} driver:
|
||||
|
||||
@deffn Command {psoc5lp mass_erase}
|
||||
Erases all flash data and ECC/configuration bytes, all flash protection rows,
|
||||
and all row latches in all flash arrays on the device.
|
||||
@end deffn
|
||||
@end deffn
|
||||
|
||||
@deffn {Flash Driver} psoc6
|
||||
Supports PSoC6 (CY8C6xxx) family of Cypress microcontrollers.
|
||||
PSoC6 is a dual-core device with CM0+ and CM4 cores. Both cores share
|
||||
|
||||
@@ -43,6 +43,7 @@ NOR_DRIVERS = \
|
||||
%D%/ocl.c \
|
||||
%D%/pic32mx.c \
|
||||
%D%/psoc4.c \
|
||||
%D%/psoc5lp.c \
|
||||
%D%/psoc6.c \
|
||||
%D%/sim3x.c \
|
||||
%D%/spi.c \
|
||||
|
||||
@@ -56,6 +56,7 @@ extern struct flash_driver numicro_flash;
|
||||
extern struct flash_driver ocl_flash;
|
||||
extern struct flash_driver pic32mx_flash;
|
||||
extern struct flash_driver psoc4_flash;
|
||||
extern struct flash_driver psoc5lp_flash;
|
||||
extern struct flash_driver psoc6_flash;
|
||||
extern struct flash_driver sim3x_flash;
|
||||
extern struct flash_driver stellaris_flash;
|
||||
@@ -115,6 +116,7 @@ static struct flash_driver *flash_drivers[] = {
|
||||
&ocl_flash,
|
||||
&pic32mx_flash,
|
||||
&psoc4_flash,
|
||||
&psoc5lp_flash,
|
||||
&psoc6_flash,
|
||||
&sim3x_flash,
|
||||
&stellaris_flash,
|
||||
|
||||
975
src/flash/nor/psoc5lp.c
Normal file
975
src/flash/nor/psoc5lp.c
Normal file
File diff suppressed because it is too large
Load Diff
@@ -28,6 +28,36 @@ dap create $_CHIPNAME.dap -chain-position $_CHIPNAME.cpu
|
||||
set _TARGETNAME $_CHIPNAME.cpu
|
||||
target create $_TARGETNAME cortex_m -dap $_CHIPNAME.dap
|
||||
|
||||
if { [info exists WORKAREASIZE] } {
|
||||
set _WORKAREASIZE $WORKAREASIZE
|
||||
} else {
|
||||
set _WORKAREASIZE 0x2000
|
||||
}
|
||||
|
||||
$_TARGETNAME configure -work-area-phys [expr 0x20000000 - $_WORKAREASIZE / 2] \
|
||||
-work-area-size $_WORKAREASIZE -work-area-backup 0
|
||||
|
||||
source [find mem_helper.tcl]
|
||||
|
||||
$_TARGETNAME configure -event reset-init {
|
||||
# Configure Target Device (PSoC 5LP Device Programming Specification 5.2)
|
||||
|
||||
set PANTHER_DBG_CFG 0x4008000C
|
||||
set PANTHER_DBG_CFG_BYPASS [expr 1 << 1]
|
||||
mmw $PANTHER_DBG_CFG $PANTHER_DBG_CFG_BYPASS 0
|
||||
|
||||
set PM_ACT_CFG0 0x400043A0
|
||||
mww $PM_ACT_CFG0 0xBF
|
||||
|
||||
set FASTCLK_IMO_CR 0x40004200
|
||||
set FASTCLK_IMO_CR_F_RANGE_2 [expr 2 << 0]
|
||||
set FASTCLK_IMO_CR_F_RANGE_MASK [expr 7 << 0]
|
||||
mmw $FASTCLK_IMO_CR $FASTCLK_IMO_CR_F_RANGE_2 $FASTCLK_IMO_CR_F_RANGE_MASK
|
||||
}
|
||||
|
||||
set _FLASHNAME $_CHIPNAME.flash
|
||||
flash bank $_FLASHNAME psoc5lp 0x00000000 0 0 0 $_TARGETNAME
|
||||
|
||||
if {![using_hla]} {
|
||||
cortex_m reset_config sysresetreq
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user