Разбираясь с прошивкой NAND flash на плате SMDK6410 (содержащей процессор S3C6410 c ядром ARM1176), похерел NOR флэш. Теперь вот не фига не могу прошить загрузчик в NOR флэш. NOR AM29LV800BB. Загружаю свой скрипт в OpenOCD. Вот его код
Код:
|
#************************************************* ************************************************** ***************
#*******************OPENOCD.CFG******************* ***************************************
#************************************************* ************************************************** ***************
#Вешаем и настраиваем JTAG на параллельный порт LPT1
interface parport
parport_port 0x378
parport_cable arm-jtag
#Настраиваем плату
source samsung_s3c6410.cfg
set _CHIPNAME s3c6410
set _ENDIAN little
set _ETBTAPID 0x2b900f0f
set _CPUTAPID 0x07b76f0f
jtag newtap $_CHIPNAME etb -irlen 4 -expected-id $_ETBTAPID
jtag newtap $_CHIPNAME cpu -irlen 5 -ircapture 0x1 -irmask 0x1f -expected-id $_CPUTAPID
set _TARGETNAME $_CHIPNAME.cpu
target create $_TARGETNAME arm11 -endian $_ENDIAN -chain-position $_TARGETNAME -variant arm1176
jtag_nsrst_delay 500
jtag_ntrst_delay 500
arm11 memwrite burst disable
reset_config trst_and_srst
etm config $_TARGETNAME 16 normal full etb
etb config $_TARGETNAME $_CHIPNAME.etb
$_TARGETNAME configure -work-area-phys 0x00000000 -work-area-size 0x00100000
#Настраиваем NOR FLASH
set _FLASHNAME $_CHIPNAME.flash
flash bank $_FLASHNAME cfi 0x00000000 0x00100000 2 2 $_TARGETNAME
#Делаем настройки памяти SDRAM через проц
$_TARGETNAME configure -event reset-init {
puts "Halting target"
poll
sleep 1
halt
wait_halt
puts "Clock/Timer settings"
reg cpsr 0x600001D3
arm mcr 15 0 15 2 4 0x70000003
mww 0x7e004000 0x00000000
mww 0x7e00f120 0x00000003
puts "Operating Mode Change to Sync Mode"
mww 0x7e00f900 0x0000805E
sleep 1000
mww 0x7e00f900 0x000080DE
sleep 1000
mww 0x7e00f000 0x0000ffff
mww 0x7e00f004 0x0000ffff
mww 0x7e00f020 0x01047310
mww 0x7e00f00c 0x81900302
mww 0x7e00f010 0x81900303
mww 0x7e00f01c 0x00000003
puts "DRAM Initialization"
mww 0x7e001004 0x00000004
mww 0x7e001010 0x0000030c
mww 0x7e001014 0x00000006
mww 0x7e001018 0x00000001
mww 0x7e00101c 0x00000002
mww 0x7e001020 0x00000007
mww 0x7e001024 0x0000000A
mww 0x7e001028 0x0000000C
mww 0x7e00102C 0x0000010B
mww 0x7e001030 0x0000000C
mww 0x7e001034 0x00000003
mww 0x7e001038 0x00000003
mww 0x7e00103C 0x00000002
mww 0x7e001040 0x00000002
mww 0x7e001044 0x00000011
mww 0x7e001048 0x00000011
puts "Memory Configuration Register"
mww 0x7e00100C 0x00010012
puts "Memory Configuration Register 2"
mww 0x7e00104C 0x00000B41
puts "Chip 0 Configuration"
mww 0x7e001200 0x000150F8
puts "Memory Direct Command"
mww 0x7e001008 0xc0000000
mww 0x7e001008 0x00000000
mww 0x7e001008 0x40000000
mww 0x7e001008 0x40000000
mww 0x7e001008 0x000A0000
mww 0x7e001008 0x00080032
mww 0x7e001004 0x00000000
}
#************************************************* ************************************************** ***************
#************************************************* ************************************************** ***************
#************************************************* ************************************************** *************** |
Запускаю в терминале openocd.exe
получаю рис.1
Далее набираю в другом терминале telnet localhost 4444
В нём набираю reset init
получаю рис.2
Затем последовательно набираю команды flash banks, flash probe 0, flash protect 0 0 18 off, flash protect_check 0, flash info
рис.3 (Причём когда выполняется команда flash protect там пишется что команда не поддерживается. Т.е. не получится не установить не снять защиту так???)
Далее я сделал следующие вещи. Набрал команду dump_image NOR.bin 0x00000000 65536 т.е. якобы считал область где лежит загрузчик. Получил файл NOR.bin
рис.4 (Приведён фрагмент загрузчика. С помощью него программа DNW подключалась к плате и выдавала сообщения в COM порт с возможностью настройки разных параметров... Теперь эта возможнасть исчезла))))
После этого на радостях я решил проверить прошивку в NOR (эксперементировать на NOR из платы не хотел, но начальник настаял))
и так набрал команды flash erase_sector 0 0 18, а потом что бы убедиться что я с стёр память опять набираю команду dump_image NOR.bin 0x00000000 65536 и получаю следующую картину
рис.5 (вроде как всё получилось, всё стёрлось, причём команда flash erase_adress тоже имела такой же эффект).
А вот команды прошивки не сработали!!!!!!!!!! все до единой выдают ошибки. Вот пример команды flash write_bank 0 NOR.BIN 0 (причём сначала вроде она как пытается грузить, потому что ошибка вылетает не сразу). При этом если потом попробывать повторить команду (я взял уже flash write_image NOR.bin), то типо пишет что проц не остановлен и приходиться набирать halt, что бы дальше работать.
рис.6
что я делаю не так??? Где ошибка. Почему не прошивается NOR. На защиту и адресацию я думаю не имеет смысла валить? Ведь нор то потёрся, значит уже защита там наверное отключена, а насчёт адресации, параметры то теже что и при считывании. Но не фига не прошивается...( Да кстати при прошивке прога ругалась что типо нужно указать -work-area-phys. Без этого команды прошивки вообще не запускались (А вот на чтение работали!). Я добавил вот эту строчку, правдо не знаю всё ли я правильно сделал...
$_TARGETNAME configure -work-area-phys 0x00000000 -work-area-size 0x01000000