From: lottaviano Date: Thu, 27 Aug 2009 09:17:49 +0000 (+0000) Subject: Update 'make flash' support for ARM chips. X-Git-Tag: 2.2.0~180 X-Git-Url: https://codewiz.org/gitweb?a=commitdiff_plain;h=4b94981fcfe9e893527ed913fe903902be1d2c4a;p=bertos.git Update 'make flash' support for ARM chips. git-svn-id: https://src.develer.com/svnoss/bertos/trunk@2788 38d2e660-2303-0410-9eaa-f027e97ec537 --- diff --git a/bertos/cpu/arm/scripts/flash.sh b/bertos/cpu/arm/scripts/flash.sh index 998cf4be..a1eb3a3a 100755 --- a/bertos/cpu/arm/scripts/flash.sh +++ b/bertos/cpu/arm/scripts/flash.sh @@ -2,8 +2,9 @@ set -x BASE_DIR=`dirname $0` -INT_FILE=${BASE_DIR}/openocd/${PROGRAMMER_TYPE}.tcl -CPU_FILE=${BASE_DIR}/openocd/${PROGRAMMER_CPU}.tcl +INT_FILE=${BASE_DIR}/openocd/${PROGRAMMER_TYPE}.cfg +CPU_FILE=${BASE_DIR}/openocd/${PROGRAMMER_CPU}.cfg +OUT_FILE="openocd.tmp" if [ ! -f ${INT_FILE} ]; then printf "Interface ${PROGRAMMER_TYPE} not supported\n"; @@ -15,4 +16,10 @@ if [ ! -f ${CPU_FILE} ]; then exit 1; fi -sed -e "s#PROGRAMMER_TYPE#${INT_FILE}#" ${BASE_DIR}/openocd/flash.cfg | sed -e "s#PROGRAMMER_CPU#${CPU_FILE}#" > openocd.tmp +sed -e "s#PROGRAMMER_TYPE#${INT_FILE}#" ${BASE_DIR}/openocd/flash.cfg | sed -e "s#PROGRAMMER_CPU#${CPU_FILE}#" \ + | sed -e "s#IMAGE_FILE#${IMAGE_FILE}#" > ${OUT_FILE} + +openocd -f ${OUT_FILE} +OCD_RET=$? +rm -f ${OUT_FILE} +exit $OCD_RET diff --git a/bertos/cpu/arm/scripts/openocd/at91sam7.cfg b/bertos/cpu/arm/scripts/openocd/at91sam7.cfg new file mode 100644 index 00000000..a20eafa3 --- /dev/null +++ b/bertos/cpu/arm/scripts/openocd/at91sam7.cfg @@ -0,0 +1,53 @@ +#use combined on interfaces or targets that can't set TRST/SRST separately +reset_config srst_only srst_pulls_trst + +if { [info exists CHIPNAME] } { + set _CHIPNAME $CHIPNAME +} else { + set _CHIPNAME sam7 +} + +if { [info exists ENDIAN] } { + set _ENDIAN $ENDIAN +} else { + set _ENDIAN little +} + +if { [info exists CPUTAPID ] } { + set _CPUTAPID $CPUTAPID +} else { + set _CPUTAPID 0x3f0f0f0f +} + +jtag newtap $_CHIPNAME cpu -irlen 4 -ircapture 0x1 -irmask 0xf -expected-id $_CPUTAPID + +set _TARGETNAME [format "%s.cpu" $_CHIPNAME] +target create $_TARGETNAME arm7tdmi -endian $_ENDIAN -chain-position $_TARGETNAME -variant arm7tdmi + +proc cpu_setup {} { + soft_reset_halt + sleep 10 + + arm7_9 dcc_downloads enable + + armv4_5 core_state arm + arm7_9 fast_memory_access enable + + # Init - taken from the script openocd_at91sam7_ecr.script + mww 0xfffffd44 0x00008000 # disable watchdog + mww 0xfffffd08 0xa5000001 # enable user reset + mww 0xfffffc20 0x00000601 # CKGR_MOR : enable the main oscillator + sleep 10 + mww 0xfffffc2c 0x00481c0e # CKGR_PLLR: 96.1097 MHz + sleep 10 + mww 0xfffffc30 0x00000007 # PMC_MCKR : MCK = PLL / 2 ~= 48 MHz + sleep 10 + mww 0xffffff60 0x003c0100 # MC_FMR: flash mode (FWS=1,FMCN=60) + # arm7_9 force_hw_bkpts enable # program resides in flash + sleep 10 +} + +$_TARGETNAME configure -work-area-virt 0 -work-area-phys 0x00200000 -work-area-size 0x4000 -work-area-backup 0 + +#flash bank +flash bank at91sam7 0 0 0 0 0 diff --git a/bertos/cpu/arm/scripts/openocd/cpu.tcl b/bertos/cpu/arm/scripts/openocd/cpu.tcl deleted file mode 100644 index 5d5dad63..00000000 --- a/bertos/cpu/arm/scripts/openocd/cpu.tcl +++ /dev/null @@ -1,61 +0,0 @@ -#use combined on interfaces or targets that can't set TRST/SRST separately -reset_config srst_only srst_pulls_trst - -if { [info exists CHIPNAME] } { - set _CHIPNAME $CHIPNAME -} else { - set _CHIPNAME sam7 -} - -if { [info exists ENDIAN] } { - set _ENDIAN $ENDIAN -} else { - set _ENDIAN little -} - -if { [info exists CPUTAPID ] } { - set _CPUTAPID $CPUTAPID -} else { - set _CPUTAPID 0x3f0f0f0f -} - -jtag newtap $_CHIPNAME cpu -irlen 4 -ircapture 0x1 -irmask 0xf -expected-id $_CPUTAPID - -set _TARGETNAME [format "%s.cpu" $_CHIPNAME] -target create $_TARGETNAME arm7tdmi -endian $_ENDIAN -chain-position $_TARGETNAME -variant arm7tdmi - -$_TARGETNAME configure -event reset-start [ - halt - sleep 10 - - arm7_9 dcc_downloads enable - - armv4_5 core_state arm - arm7_9 fast_memory_access enable - - # Init - taken from the script openocd_at91sam7_ecr.script - mww 0xfffffd44 0x00008000 # disable watchdog - mww 0xfffffd08 0xa5000001 # enable user reset - mww 0xfffffc20 0x00000601 # CKGR_MOR : enable the main oscillator - sleep 10 - mww 0xfffffc2c 0x00481c0e # CKGR_PLLR: 96.1097 MHz - sleep 10 - mww 0xfffffc30 0x00000007 # PMC_MCKR : MCK = PLL / 2 ~= 48 MHz - sleep 10 - mww 0xffffff60 0x003c0100 # MC_FMR: flash mode (FWS=1,FMCN=60) - # arm7_9 force_hw_bkpts enable # program resides in flash - sleep 10 - - poll - flash probe 0 - flash write_image IMAGE_FILE 0x0100000 bin -] - -#"script at91sam7_write_to_flash.script" - -$_TARGETNAME configure -event reset-end "shutdown" - -$_TARGETNAME configure -work-area-virt 0 -work-area-phys 0x00200000 -work-area-size 0x4000 -work-area-backup 0 - -#flash bank -flash bank at91sam7 0 0 0 0 0 diff --git a/bertos/cpu/arm/scripts/openocd/flash.cfg b/bertos/cpu/arm/scripts/openocd/flash.cfg index f0e625a1..ad672e95 100644 --- a/bertos/cpu/arm/scripts/openocd/flash.cfg +++ b/bertos/cpu/arm/scripts/openocd/flash.cfg @@ -11,5 +11,13 @@ source [find PROGRAMMER_TYPE] source [find PROGRAMMER_CPU] +$_TARGETNAME configure -event reset-start { + cpu_setup + # this will work only with (intel) hex files, which have ROM address information + flash write_image IMAGE_FILE +} + +$_TARGETNAME configure -event reset-end "shutdown" + init reset run diff --git a/bertos/cpu/arm/scripts/openocd/interface.tcl b/bertos/cpu/arm/scripts/openocd/interface.tcl deleted file mode 100644 index e557ca3c..00000000 --- a/bertos/cpu/arm/scripts/openocd/interface.tcl +++ /dev/null @@ -1,4 +0,0 @@ -interface ft2232 -ft2232_device_desc "Amontec JTAGkey" -ft2232_layout jtagkey -ft2232_vid_pid 0x0403 0xcff8 diff --git a/bertos/cpu/arm/scripts/openocd/jtag-tiny.cfg b/bertos/cpu/arm/scripts/openocd/jtag-tiny.cfg new file mode 100644 index 00000000..e557ca3c --- /dev/null +++ b/bertos/cpu/arm/scripts/openocd/jtag-tiny.cfg @@ -0,0 +1,4 @@ +interface ft2232 +ft2232_device_desc "Amontec JTAGkey" +ft2232_layout jtagkey +ft2232_vid_pid 0x0403 0xcff8