• Visit https://www.embeddedcomputers.net/ for Hardware; Software and all other things related to FlashcatUSB

CG814CCR v2 Script BCM3349 JTAG

Status
Not open for further replies.

D3m0n

Administrator
Staff member
# Script file for Netgear CG814CCR (v2)

MyDevice = "Netgear CG814CCR v2" #Name of device

SetParam(1,150) #Sets the Intel flash delay
SetParam(2,150) #Sets the AMD flash delay
SetParam(3,100) #Sets the DMA read delay

JTAG.BigEndian #Sets the device endian

JTAG.MemoryAddress(0x0)
JTAG.MemoryType("RAM")
JTAG.MemorySize(0x800000)
CFGMEM = JTAG.MemoryInit()
JTAG.MemoryAddress(0x1f000000)
JTAG.MemoryType("CFI")
CFGFLASH = JTAG.MemoryInit()

FWBase = 0x420000
FWSize = 3932160
FW1Base = 0x0
FW1Size = 4063232
BootBase = 0x400000
BootSize = 131072
CfgBase = 0x7E0000
CfgSize = 131072
LogBase = 0x3E0000
LogSize = 131072


t1 = Tab.Create(MyDevice)
Tab(t1).AddGroup("Bootloader",10,10,95,100)
Tab(t1).AddGroup("Firmware",110,10,95,100)
Tab(t1).AddGroup("Firmware2",110,120,95,100)
Tab(t1).AddGroup("Cfg",210,10,95,100)
Tab(t1).AddGroup("Log",310,10,95,100)
Tab(t1).AddButton("ReadBoot","Read",15,30)
Tab(t1).AddButton("WriteBoot","Write",15,60)
Tab(t1).AddButton("ReadFirmware","Read",115,30)
Tab(t1).AddButton("WriteFirmware","Write",115,60)
Tab(t1).AddButton("ReadCfg","Read",215,30)
Tab(t1).AddButton("WriteCfg","Write",215,60)
Tab(t1).AddButton("ReadLog","Read",315,30)
Tab(t1).AddButton("WriteLog","Write",315,60)
Tab(t1).AddButton("ReadFirmware2","Read",115,140)
Tab(t1).AddButton("WriteFirmware2","Write",115,170)

CreateEvent(ReadBoot)
Status("Reading the Bootloader")
Tab(t1).ButtonDisable()
MyData = Memory(CFGFLASH).ReadVerify(BootBase,BootSize)
if (MyData = Nothing)
Status("Error: data read back failed")
Tab(t1).ButtonEnable()
Exit Event
endif
Prompt = "Choose filename to save the firmware"
SaveFile(MyData,Prompt,"Bootloader.bin")
Status("Successfully read Bootloader from Flash")
Tab(t1).ButtonEnable()
EndEvent


CreateEvent(WriteBoot)
Tab(t1).ButtonDisable()
Prompt = "Choose a Bootloader to write into Flash"
MyData = OpenFile(Prompt,"Bootloader files (*.bin)|*.bin")
if (MyData = Nothing)
goto WriteBootExit
endif
if not (Len(MyData) = BootSize)
Status("Error: File is not the size of the boot")
goto WriteBootExit
endif
Memory(CFGFLASH).Write(MyData,BootBase,BootSize)
Status("New Bootloader successfully written")
Tab(t1).ButtonEnable()
Exit
ExitWriteFwErr:
Status(WriteErr)
Tab(t1).ButtonEnable()
EndEvent

CreateEvent(ReadFirmware)
Status("Reading the Firmware")
Tab(t1).ButtonDisable()
MyData = Memory(CFGFLASH).ReadVerify(FwBase,FwSize)
if (MyData = Nothing)
Status("Error: data read back failed")
Tab(t1).ButtonEnable()
Exit Event
endif
Prompt = "Choose filename to save the firmware"
SaveFile(MyData,Prompt,"Firmware.bin")
Status("Successfully read Firmware from Flash")
Tab(t1).ButtonEnable()
EndEvent

CreateEvent(WriteFirmware)
Status("Programming the Firmware")
Tab(t1).ButtonDisable()
Prompt = "Choose a firmware to install"
MyData = OpenFile(Prompt,"Firmware files (*.bin,*.p7)|*.bin;*.p7")
if (MyData = Nothing)
WriteErr = "User cancelled opperation"
goto ExitWriteFwErr
endif
If (HWORD(MyData,0) = 12418) #Remove header if .p7 fw
Writeline("Removing .p7 firmware header")
HeadLen = HWORD(MyData,2) + 52 #increases Headlen by 7
NewLen = Len(MyData) - HeadLen
Resize(MyData,HeadLen,NewLen) #Removes the p7 header

endif
FwLen = Len(MyData)
Memory(CFGFLASH).Write(MyData,FwBase,FwLen)
FwSize = FwLen
Status("New Firmware successfully installed")
Tab(t1).ButtonEnable()
Exit
ExitWriteFwErr:
Status(WriteErr)
Tab(t1).ButtonEnable()
EndEvent

CreateEvent(ReadFirmware2)
Status("Reading the Firmware")
Tab(t1).ButtonDisable()
MyData = Memory(CFGFLASH).ReadVerify(Fw1Base,Fw1Size)
if (MyData = Nothing)
Status("Error: data read back failed")
Tab(t1).ButtonEnable()
Exit Event
endif
Prompt = "Choose filename to save the firmware"
SaveFile(MyData,Prompt,"Firmware2.bin")
Status("Successfully read Firmware from Flash")
Tab(t1).ButtonEnable()
EndEvent

CreateEvent(WriteFirmware2)
Status("Programming the Firmware")
Tab(t1).ButtonDisable()
Prompt = "Choose a firmware to install"
MyData = OpenFile(Prompt,"Firmware files (*.bin,*.p7)|*.bin;*.p7")
if (MyData = Nothing)
WriteErr = "User cancelled opperation"
goto ExitWriteFwErr
endif
If (HWORD(MyData,0) = 12418) #Remove header if .p7 fw
Writeline("Removing .p7 firmware header")
HeadLen = HWORD(MyData,2) + 52 #increases Headlen by 7
NewLen = Len(MyData) - HeadLen
Resize(MyData,HeadLen,NewLen) #Removes the p7 header

endif
FwLen = Len(MyData)
Memory(CFGFLASH).Write(MyData,Fw1Base,FwLen)
Fw1Size = FwLen
Status("New Firmware successfully installed")
Tab(t1).ButtonEnable()
Exit
ExitWriteFwErr:
Status(WriteErr)
Tab(t1).ButtonEnable()
EndEvent

CreateEvent(ReadCfg)
Status("Reading the Config")
Tab(t1).ButtonDisable()
MyData = Memory(CFGFLASH).ReadVerify(CfgBase,CfgSize)
if (MyData = Nothing)
Status("Error: data read back failed")
Tab(t1).ButtonEnable()
Exit Event
endif
Prompt = "Choose filename to save the firmware"
SaveFile(MyData,Prompt,"Config.bin")
Status("Successfully read Config from Flash")
Tab(t1).ButtonEnable()
EndEvent


CreateEvent(WriteCfg)
Tab(t1).ButtonDisable()
Prompt = "Choose a Config to write into Flash"
MyData = OpenFile(Prompt,"Config files (*.bin)|*.bin")
if (MyData = Nothing)
goto WriteCfgExit
endif
if not (Len(MyData) = CfgSize)
Status("Error: File is not the size of the Cfg")
goto WriteCfgExit
endif
Memory(CFGFLASH).Write(MyData,CfgBase,CfgSize)
Status("New Config successfully written")
Tab(t1).ButtonEnable()
Exit
ExitWriteFwErr:
Status(WriteErr)
Tab(t1).ButtonEnable()
EndEvent

CreateEvent(ReadLog)
Status("Reading the Log")
Tab(t1).ButtonDisable()
MyData = Memory(CFGFLASH).ReadVerify(LogBase,LogSize)
if (MyData = Nothing)
Status("Error: data read back failed")
Tab(t1).ButtonEnable()
Exit Event
endif
Prompt = "Choose filename to save the firmware"
SaveFile(MyData,Prompt,"Log.bin")
Status("Successfully read Log from Flash")
Tab(t1).ButtonEnable()
EndEvent


CreateEvent(WriteLog)
Tab(t1).ButtonDisable()
Prompt = "Choose a Log to write into Flash"
MyData = OpenFile(Prompt,"Log files (*.bin)|*.bin")
if (MyData = Nothing)
goto WriteLogExit
endif
if not (Len(MyData) = LogSize)
Status("Error: File is not the size of the Log")
goto WriteLogExit
endif
Memory(CFGFLASH).Write(MyData,LogBase,LogSize)
Status("New Log successfully written")
Tab(t1).ButtonEnable()
Exit
ExitWriteFwErr:
Status(WriteErr)
Tab(t1).ButtonEnable()
EndEvent
 

Attachments

  • CG814CCRv2_JTAG.bcs
    6.8 KB · Views: 34
Status
Not open for further replies.
Back
Top