LINUX.ORG.RU

[Embedded] перепрошивка флеши

 


0

1

Необходимо перепрошить флеш на рутере.
Девайс: Sofaware Checkpoint edge utm-1 (SBXW-166LHGE-6)

  • CPU: MSP2006 Brecis (PMC-Sierra)
  • 2 x RJ45 10/100 port + 1 x 4-port LAN switch (IC Plus Corp - IP175C)
  • MiniPCI form-factor Gigabyte wireless NIC (Atheros chipset)
  • 64MB RAM
  • 1 x serial port
  • VIA VT6212L USB Controller
  • Flash: Spansion S29JL06H (8М)
  • EJTAG 2.6 14-pin interface

Софт: Embedded NGX. На самом деле это uclinux с кучей гнутого софта, но интерфейс сильно порезан вендором. Хочется поставить туда нормальный uclinux. JTAG распаял. Использовал стандартный Xilinx DLC5 кабель

LPT ----------- EJTAG
2 <- 100 Ohm-> 3 (TDI)
3 <- 100 Ohm -> 9 (TCK)
4 <- 100 Ohm -> 7 (TMS)
13 <- 100 Ohm -> 5 (TDO)
20,25,GND <------> 6 (GND)
on JTAG connect pins 1 <-100 Ohm-> 14
Софт для прошивки: urjtag

Пытаюсь перепрограммировать флеш:

jtag> cable DLC5 ppdev /dev/parport0 
Initializing ppdev port /dev/parport0 
jtag> detect 
IR length: 5 
Chain length: 1 
Device Id: 00010000001000000010001011100001 (0x00000000102022E1) 
  Manufacturer: Brecis (PMC-Sierra) 
  Part(0):         MSP2006 
  Stepping:     1 
  Filename:     /usr/local/share/urjtag/brecis/msp2006/msp2006 
ImpCode=01000001000000000100000000000000 41004000 
EJTAG version: 2.6 
EJTAG Implementation flags: R4k DINTsup NoDMA MIPS32 
Processor entered Debug Mode. 
detectflash 0x1fc00000 
Query identification string: 
	Primary Algorithm Command Set and Control Interface ID Code: 0x0002 (AMD/Fujitsu Standard Command Set) 
	Alternate Algorithm Command Set and Control Interface ID Code: 0x0000 (null) 
Query system interface information: 
	Vcc Logic Supply Minimum Write/Erase or Write voltage: 2700 mV 
	Vcc Logic Supply Maximum Write/Erase or Write voltage: 3600 mV 
	Vpp [Programming] Supply Minimum Write/Erase voltage: 0 mV 
	Vpp [Programming] Supply Maximum Write/Erase voltage: 0 mV 
	Typical timeout per single byte/word program: 8 us 
	Typical timeout for maximum-size multi-byte program: 0 us 
	Typical timeout per individual block erase: 512 ms 
	Typical timeout for full chip erase: 0 ms 
	Maximum timeout for byte/word program: 256 us 
	Maximum timeout for multi-byte program: 0 us 
	Maximum timeout per individual block erase: 8192 ms 
	Maximum timeout for chip erase: 0 ms 
Device geometry definition: 
	Device Size: 8388608 B (8192 KiB, 8 MiB) 
	Flash Device Interface Code description: 0x0002 (x8/x16) 
	Maximum number of bytes in multi-byte program: 1 
	Number of Erase Block RegioПроблема в том, что при прошивке любого из первых 8 блоков (размер  первых и последних 8 блоков -  8К, остальные болки 64К ).
Если прошиваю любой из первых 8 блоков сначала затираются все 8 блоков, затем записывается 1 блок

ns within device: 3 
	Erase Block Region Information: 
		Region 0: 
			Erase Block Size: 8192 B (8 KiB) 
			Number of Erase Blocks: 8 
		Region 1: 
			Erase Block Size: 65536 B (64 KiB) 
			Number of Erase Blocks: 126 
		Region 2: 
			Erase Block Size: 8192 B (8 KiB) 
			Number of Erase Blocks: 8 
Primary Vendor-Specific Extended Query: 
	Major version number: 1 
	Minor version number: 3 
	Address Sensitive Unlock: Required 
	Process Technology: Bad value 
	Erase Suspend: Read/write 
	Sector Protect: 1 sectors per group 
	Sector Temporary Unprotect: Not supported 
	Sector Protect/Unprotect Scheme: 29BDS640 mode (Software Command Locking) 
	Simultaneous Operation: 119 sectors 
	Burst Mode T ype: Supported 
	Page Mode Type: Not supported 
	ACC (Acceleration) Supply Minimum: 8500 mV 
	ACC (Acceleration) Supply Maximum: 9500 mV 
	Top/Bottom Sector Flag: 8x8kb sectors at top and bottom with WP control 
	Program Suspend: Not supported 
	Bank Organization: 
		Bank1: 23 sectors 
		Bank2: 48 sectors 
		Bank3: 48 sectors 
		Bank4: 23 sectors 

Непосредственно препрошивка:

jtag> flashmem 0x1fc0c000 block06.bin 
Chip: AMD Flash
	Manufacturer: AMD
	Chip: S92GLxxxN
	Protected: 0000
program:
flash_unlock_block 0x1FC0C000 IGNORE

block 6 unlocked
flash_erase_block 0x1FC0C000
flash_erase_block 0x1FC0C000 DONE
erasing block 6: 0
addr: 0x1FC0DFFF
verify:
addr: 0x1FC0DFFF
Done.
jtag> 

Проблема проявляется при прошивке любого из первых 8 блоков (размер первых и последних 8 блоков - 8К, остальные болки 64К ). Если прошиваю любой из первых 8 блоков сначала зачем-то затираются все 8 блоков, затем записывается 1 блок.


Если прошиваю любой из первых 8 блоков сначала зачем-то затираются все 8 блоков, затем записывается 1 блок.

Очевидно, у этой флешки размер блока - 64 Кб. Перед стиранием происходит обнуление. Ваш К.О.

router ★★★★★
()
Ответ на: комментарий от router

Очевидно - неочевидно :

detectflash видит правильный размер блоков

...
Erase Block Region Information: 
		Region 0: 
			Erase Block Size: 8192 B (8 KiB) 
			Number of Erase Blocks: 8 
		Region 1: 
			Erase Block Size: 65536 B (64 KiB) 
			Number of Erase Blocks: 126 
		Region 2: 
			Erase Block Size: 8192 B (8 KiB) 
			Number of Erase Blocks: 8 
...

Tasman
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.