[[FrontPage]]
*試したCFGファイル [#s33146f7]
reset_config srst_only srst_pulls_trst

if { [info exists CHIPNAME] } {   
   set  _CHIPNAME $CHIPNAME   
} else {   
   set  _CHIPNAME AT91SAM7L128
}

if { [info exists ENDIAN] } {   
   set  _ENDIAN $ENDIAN   
} else {   
   set  _ENDIAN little
}

if { [info exists CPUTAPID ] } {
   set _CPUTAPID $CPUTAPID
} else {
#   set _CPUTAPID 0x3f0f0f0f
#   set _CPUTAPID 0x27330740
#   set _CPUTAPID 0x05B1E03F
   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 -work-area-virt 0 -work-area-phys 0x00200000 -work-area-size 0x4000 -work-area-backup 0

#flash bank <driver> <base> <size> <chip_width> <bus_width>
flash bank at91sam7 0 0 0 0 0

init
*Windowsでチェック [#tcaa5792]
http://homepage3.nifty.com/zus/OpenOCD_Build_win32_Flame.html
*動作した場合 [#fb35b4c5]
**サーバ側 [#i0af4ad7]
 USER@9OPBKJD8G1TGD79 /home/openocd
 $ openocd -f arm-usb-ocd.cfg  -f at91sam7lx.cfg
 Open On-Chip Debugger 0.3.0-in-development (2009-09-25-18:14) svn:unknown
 $URL: svn://svn.berlios.de/openocd/trunk/src/openocd.c $
 For bug reports, read http://svn.berlios.de/svnroot/repos/openocd/trunk/BUGS
 Warn : use 'at91sam7s.cpu' as target identifier, not '0'
 Info : device: 4 "2232C"
 Info : deviceID: 364511235
 Info : SerialNumber: FTS5MVKAA
 Info : Description: Olimex OpenOCD JTAG A
 Info : clock speed 6000 kHz
 Info : JTAG tap: at91sam7s.cpu tap/device found: 0x3f0f0f0f (mfg: 0x787, part: 0
 xf0f0, ver: 0x3)
 Error: invalid mode value encountered 0
 Error: cpsr contains invalid mode value - communication failure
 target state: halted
 target halted in Thumb state due to watchpoint, current mode: System
 cpsr: 0xffffffff pc: 0xffffffef
 Info : accepting 'telnet' connection from 0
 Runtime error, file "command.c", line 473:
     Unknown command: scan_chaim
      TapName            | Enabled |   IdCode      Expected    IrLen IrCap  IrMas
 k Instr
  ---|--------------------|---------|------------|------------|------|------|-----
 -|---------
  0 | at91sam7s.cpu      |    Y    | 0x3f0f0f0f | 0x3f0f0f0f | 0x04 | 0x01 |  0x0f
  | 0x0c
 Error: invalid mode value encountered 0
 Error: cpsr contains invalid mode value - communication failure (ここで接続を外している)
      TapName            | Enabled |   IdCode      Expected    IrLen IrCap  IrMas
 k Instr
 ---|--------------------|---------|------------|------------|------|------|-----
 -|---------
  0 | at91sam7s.cpu      |    Y    | 0x3f0f0f0f | 0x3f0f0f0f | 0x04 | 0x01 |  0x0f
  | 0x0c

**クライアント側 [#x139a8a5]
> scan_chain
     TapName            | Enabled |   IdCode      Expected    IrLen IrCap  IrMas
k Instr
---|--------------------|---------|------------|------------|------|------|-----
-|---------
 0 | at91sam7s.cpu      |    Y    | 0x3f0f0f0f | 0x3f0f0f0f | 0x04 | 0x01 | 0x0f
 | 0x0c
invalid mode value encountered 0
cpsr contains invalid mode value - communication failure  (ここで接続を外している)
> scan_chain
     TapName            | Enabled |   IdCode      Expected    IrLen IrCap  IrMas
k Instr
---|--------------------|---------|------------|------------|------|------|-----
-|---------
 0 | at91sam7s.cpu      |    Y    | 0x3f0f0f0f | 0x3f0f0f0f | 0x04 | 0x01 | 0x0f
 | 0x0c
>
*HP20b.cfg [#l7055e11]
#interface
interface ft2232
ft2232_device_desc "Olimex OpenOCD JTAG A"
ft2232_layout "olimex-jtag"
ft2232_vid_pid 0x15BA 0x0003
#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 at91sam7s
}

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 $_CHIPNAME.cpu

target create $_TARGETNAME arm7tdmi -endian $_ENDIAN -chain-position $_TARGETNAME -variant arm7tdmi
$_TARGETNAME configure -event reset-init {
        soft_reset_halt
        # RSTC_CR : Reset peripherals
        mww 0xfffffd00 0xa5000004
        # disable watchdog
	mww 0xfffffd44 0x00008000
	# enable user reset
	mww 0xfffffd08 0xa5000001
	# CKGR_MOR : enable the main oscillator
	mww 0xfffffc20 0x00000601
	sleep 10
	# CKGR_PLLR: 96.1097 MHz
	mww 0xfffffc2c 0x00481c0e
	sleep 10
	# PMC_MCKR : MCK = PLL / 2 ~= 48 MHz
	mww 0xfffffc30 0x00000007
	sleep 10
	# MC_FMR: flash mode (FWS=1,FMCN=73)
	mww 0xffffff60 0x00490100
	sleep 100
}

$_TARGETNAME configure -work-area-virt 0 -work-area-phys 0x00200000 -work-area-size 0x4000 -work-area-backup 0

#flash bank <driver> <base_addr> <size> <chip_width> <bus_width> <target_number> [<target_name> <banks> <sectors_per_bank> <pages_per_sector> <page_size> <num_nvmbits> <ext_freq_khz>]
flash bank at91sam7 0 0 0 0 0 0 0 0 0 0 0 0 18432

# For more information about the configuration files, take a look at:
# openocd.texi

*20091008 [#e80a95ae]
**jtag_speed [#id6206cf]
jtag_speed 0を入れると安定した
jtag_speedは Deprecated/Removed Commands だそうだが、使える。
 cf, http://openocd.berlios.de/doc/html/Upgrading.html#Upgrading


また、jtag_speed 0 は max speedとなるのだが、速度を遅くした方が動作が不安定になるのが不思議。
また、jtag_speedを指定しないと6000khzになる。jtag_speed 0を指定した時と同じ条件のはずだがどうして動作が違うのかという点も謎。
**cfgファイル [#n9ca6ef5]
at91sam7sx.cfgをat91sam7lxとしてコピーして使ったが当然ながらうまくいかない。
データシートを見比べるとリセット関係のレジスタが微妙にずれている。
修正して対応。しかし、at91sam7sxのデータシートが変に誤植していてわけがわからない。
*ねむいさんより [#h74b04db]
#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 sam7x256
}

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 $_CHIPNAME.cpu

target create $_TARGETNAME arm7tdmi -endian $_ENDIAN -chain-position $_TARGETNAME -variant arm7tdmi
$_TARGETNAME configure -event reset-init { 
	# disable watchdog
	mww 0xfffffd44 0x00008000	
	# enable user reset
	mww 0xfffffd08 0xa5000001	
	# CKGR_MOR : enable the main oscillator
	mww 0xfffffc20 0x00000601	
	sleep 10
	# CKGR_PLLR: 96.1097 MHz
	mww 0xfffffc2c 0x00481c0e 	
	sleep 10
	# PMC_MCKR : MCK = PLL / 2 ~= 48 MHz
	mww 0xfffffc30 0x00000007	
	sleep 10
	# MC_FMR: flash mode (FWS=1,FMCN=60)
	mww 0xffffff60 0x003c0100	
	sleep 100
	jtag_khz 1500
:}

$_TARGETNAME configure -work-area-virt 0 -work-area-phys 0x00200000 -work-area-size 0x4000 -work-area-backup 0



#
# scipts/macros/user commands - this is TCL (variant JIM):
#
proc mt_internal_rc {} {
	jtag_khz 5
	halt
	sleep 10

	# Init - taken form 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

	jtag_khz 2000
}


proc mt_flash_bin {IMGFILE OFFSET} {
	mt_internal_rc
	sleep 10
	poll
	flash probe 0
	flash protect 0 0 15 off
	flash write_image erase $IMGFILE $OFFSET
	sleep 10 
	verify_image $IMGFILE $OFFSET
	sleep 10
}

proc mt_flash {IMGFILE} {
	mt_internal_rc
	sleep 10
	poll
	flash probe 0
	flash protect 0 0 15 off
	flash write_image erase $IMGFILE」

	sleep 10
	verify_image $IMGFILE
	sleep 10
}

#verbose check routine for the test
proc flasher {IMGFILE} {
	mt_internal_rc
	sleep 10
	poll
	flash probe 0
	flash erase_check 0
	flash protect 0 0 15 off
	at91sam7 gpnvm 0 2 set
	sleep 10
	flash erase_sector 0 0 15
	sleep 10
	flash erase_check 0
	sleep 10
	flash write_image erase $IMGFILE
	sleep 10
	verify_image $IMGFILE
	sleep 10
}

#verbose check routine for the test
proc eraser {} {
	mt_internal_rc
	sleep 10
	poll
	flash probe 0
	flash erase_check 0
	flash protect 0 0 15 off
	at91sam7 gpnvm 0 2 set
	sleep 10
	flash erase_sector 0 0 15
	sleep 10
	flash erase_check 0
	sleep 10
}

#flash bank <driver> <base_addr> <size> <chip_width> <bus_width> <target_number> [<target_name> <banks> <sectors_per_bank> <pages_per_sector> <page_size> <num_nvmbits> <ext_freq_khz>]
flash bank at91sam7 0 0 0 0 0 0 0 0 0 0 0 0 18432

gdb_memory_map enable
gdb_flash_program enable
arm7_9_dcc downloads enable
arm7_9 fast_memory_access enable
init
#debug_level 3

# For more information about the configuration files, take a look at:
# openocd.texi


*HP20b [#va74db84]
リセット [ON/CE]+[N]+[Amort]
テストスクリーンモード [ON/CE]+[N]+[PMT](上下キーで機能切替)

プログラミングする時はキーを押しっぱなしにするかテストスクリーンモードなどにしておく
さもなければCPUは停止状態になっている(画面表示している状態であってもCPUは停止している)



*OpenOCD operations [#d36b0c5a]
**調査 [#q9436fdb]
> scan_chain
     TapName            | Enabled |   IdCode      Expected    IrLen IrCap  IrMask Instr     
---|--------------------|---------|------------|------------|------|------|------|---------
 0 | at91sam7l128.cpu   |    Y    | 0x3f0f0f0f | 0x3f0f0f0f | 0x04 | 0x01 | 0x0f | 0x0c
> halt  
timed out while waiting for target halted
Runtime error, file "command.c", line 473:
    
> poll
background polling: on
TAP: at91sam7l128.cpu (enabled)
target state: running
> flash probe 0
Target not halted
unknown error when probing flash bank '#0' at 0x00000000
> reset
JTAG scan chain interrogation failed: all zeroes
Check JTAG interface, timings, target power, etc.
Trying to use configured scan chain anyway...

**RAMに書くとき [#mdbb657a]
 > soft_reset_halt
 requesting target halt and executing a soft reset
 target state: halted
 target halted in ARM state due to watchpoint, current mode: Supervisor
 cpsr: 0x000000d3 pc: 0x00000000
 > load_image /home/nanbuwks/downloads/wiki4hp/battery_level/battery_level.hex
 812 bytes written at address 0x002ff000
 downloaded 812 byte in 0.055096s
 > resume 0x2ff000
**ROMに書くとき [#u0043afa]
> halt 
timed out while waiting for target halted
Runtime error, file "command.c", line 473:
    
> reset halt
JTAG tap: sam7l128nemui.cpu tap/device found: 0x3f0f0f0f (mfg: 0x787, part: 0xf0f0, ver: 0x3)
srst pulls trst - can not reset into halted mode. Issuing halt after reset.
target state: halted
target halted in ARM state due to debug-request, current mode: IRQ
cpsr: 0x800000d2 pc: 0x00000018
> flash erase_address 0x00000000 0x80000
Target autodetection failed! Please specify target parameters in configuration file
auto_probe failed -902


called at file "command.c", line 473
called at file "embedded:startup.tcl", line 89
called at file "embedded:startup.tcl", line 91
called at file "embedded:startup.tcl", line 93
> flash write_image erase /home/nanbuwks/downloads/wiki4hp/flash_4_banger/flash_4_banger.bin
auto erase enabled
Target autodetection failed! Please specify target parameters in configuration file
auto_probe failed -902

wrote 0 byte from file /home/nanbuwks/downloads/wiki4hp/flash_4_banger/flash_4_banger.bin in 0.038133s (0.000000 kb/s)
> monitor reset
Unknown command: monitor reset
called at file "command.c", line 473
> target reni\\mote
Runtime error, file "command.c", line 473:
    bad option "reni\mote": must be one of count, create, current, names, number, or types

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS