; -------------------------------------------------------------------------------- ; @Title: Script for flashing Motorola MAC71x6 internal flash ; ; @Description: ; mac71x6 [unsecure | unlock] ; ; Motorola MAC71x6 internal flash. Core is ARM7TDMI-S. ; - MAC7106 ; - MAC7116 ; - MAC7126 ; - MAC7136 ; ; 1 MByte Program Flash address is depending on Operation mode. ; Expanded: 0x20000000--0x200fffff ; Single Chip: 0x00000000--0x000fffff ; Program interface: 0xfc100000--0xfc1fffff ; 32 kByte Data Flash at 0xfe000000--0xfe007fff ; 48 kByte RAM at 0x40000000--0x4000bfff ; ; Optional argument unsecure is used to a unsecure a secured chip. ; ; Optional argument unlock is used to a reset LOCK bit of CFMMCR register. ; ; HINTS: ; Security word only can be written by a explicit data set to that ; location, for example "Data.Set 0xfc100414 %Long 0x80000000". ; All other operations do not allow securing the device. The two security ; bits are forced to unsecure value. ; ; Program and data flash have same unit number in flash declaration because ; mass erase does erase program and data flash. ; ; @Author: WRD ; @Copyright: (C) 1989-2022 Lauterbach GmbH, licensed for use with TRACE32(R) only ; @Chip: MAC71?6 ; -------------------------------------------------------------------------------- ; $Id: mac71x6.cmm 12049 2023-04-20 12:32:16Z bschroefel $ ; wrd - 21.12.2004 ; ENTRY &arg LOCAL &arg ; Select program flash base address for programming, one of above. &progflashbase=0xfc100000 ; Set RAM address to internal or external RAM &rambase=0x40000000 ; -------------------------------------------------------------------------------- ; Setup CPU SYStem.JtagClock 1.25MHz SYStem.CPU mac71xx SYStem.Option BigEndian ON ; Ensure enabling runtime measurement to adjust flash programming timing. IF hardware.POWERNEXUS() ( SYStem.Option BTM ON ) ; -------------------------------------------------------------------------------- ; Flash declaration ; FLASH.RESet ; Program Flash declaration FLASH.Create 1. &progflashbase++0xfffff 0x1000 TARGET Long 0x00008002 ; Data Flash declaration FLASH.Create 1. 0xfe000000--0xfe007fff 0x400 TARGET Word 0x00008002 FLASH.TARGET &rambase &rambase+0x2000 0x1000 ~~/demo/arm/flash/long_be/cfm.bin ; -------------------------------------------------------------------------------- ; Unsecure chip by erasing flash and programming security word to ; unsecure value. ; IF "&arg"=="unsecure" ( ; Setup PC fetch location to internal RAM for the case flash is not ; secured but first flash page is accidental set to data access only. SYStem.Option PC &rambase ; Erase flash and unsecure device by JTAG sequence ; The argument to diag 3500 command is decimal value of fSYS clock ; frequency at time of reset. The default value of 8000000. (8MHz) can ; be omitted. SYStem.Down DIAG 0x3500 8000000. SYStem.Up ; Watchdog off Data.Set SD:0xFC040016 %BE %Word 0x0 ; Program security word to unsecure value FLASH.Program ALL Data.Set &progflashbase+0x414 %Long Data.Long(ASD:&progflashbase+0x414)&0xfffffffe FLASH.Program off SYStem.Down ) ; -------------------------------------------------------------------------------- ; Start debugging SYStem.Up ; Watchdog off Data.Set SD:0xFC040016 %BE %Word 0x0 ENDDO