2. У вас кабель -- это одни провода? Если так, то стоит попытаться
с адаптером (с шинными формирователями).
Так на плате "сириус" стоит буфер (микросхема U2, стр. 11 схемы).
Зачем тогда еще раз буферировать?
У меня LPT-кабель не длинный, частоту (jtag_khz 2000 ) в конфиге
пробовал снижать. Один буфер есть. Должно и так работать. Вы можете
сказать что-нибудь по цоколёвке? Всё же есть сомнения относительно
nReset,TRST.
>Попробуйте с более старой версией (у меня работает svn:1213)
Собрал 1213:
$ ./bootstrap
$ ./configure --enable-parport
$ make
# checkinstall make install
В результате - почти тоже самое (LPT порт по-умолчанию не просёк, но
это наверное надо было ещё опцию --enable-parport_ppdev добавить), но
процессор определился.
Из-за ошибки "Error: Translation from khz to jtag_speed not
implemented " есть подозрение, что конфиги со страницы
http://www.zao-zeo.ru/dokuwiki/doku.php/openocd для ARM-JTAG не совсем
рабочие. Собственно, эта ошибка появляется и при запуске openocd без
jtag-адаптера.
Вы можете привести что у вас выводится на команду openocd -f parport -
f tion-pro270 -f reflash?
Будет хорошо, если заработает. Я так не пробовал, но у того кто
пробовал напрямую -- не получилось.
> сказать что-нибудь по цоколёвке? Всё же есть сомнения относительно
> nReset,TRST.
Могу, полярность nReset LPT.2, на Wiggler этот сигнал через транзистор?
> Из-за ошибки "Error: Translation from khz to jtag_speed not
> implemented " есть подозрение, что конфиги со страницы
> http://www.zao-zeo.ru/dokuwiki/doku.php/openocd для ARM-JTAG не совсем
> рабочие. Собственно, эта ошибка появляется и при запуске openocd без
> jtag-адаптера.
Они работают для меня. Ваши предложения по их изменению?
> Вы можете привести что у вас выводится на команду openocd -f parport -
> f tion-pro270 -f reflash?
Для 0.2
# wiggler-lpt.cfg
# Wiggler LPT
interface parport
parport_port 0
parport_cable wiggler
jtag_speed 0
# tion-pro270.cfg
#
# Marvell/Intel PXA270 Script
set CHIPNAME pxa270
set ENDIAN little
set CPUTAPID 0x79265013
jtag_khz 2000
# set jtag_nsrst_delay to the delay introduced by your reset circuit
# the rest of the needed delays are built into the openocd program
jtag_nsrst_delay 10
# set the jtag_ntrst_delay to the delay introduced by a reset circuit
# the rest of the needed delays are built into the openocd program
jtag_ntrst_delay 10
# use combined on interfaces or targets that can't set TRST/SRST separately
reset_config trst_and_srst separate
# jtag scan chain
jtag newtap $CHIPNAME cpu -irlen 7 -ircapture 0x1 -irmask 0x7f
-expected-id $CPUTAPID
# target configuration
#debug_level 3
#soft_reset_halt
set TARGETNAME [format "%s.cpu" $CHIPNAME]
target create $TARGETNAME xscale -endian $ENDIAN -chain-position
$TARGETNAME -variant pxa27x
# Maps to PXA internal RAM. If you are using a PXA255
# Initialize SDRAM or leave this option off
$TARGETNAME configure -work-area-virt 0 -work-area-phys 0x5c000000
-work-area-size 0xFFFC -work-area-backup 0
# flash bank <driver> <base> <size> <chip_width> <bus_width>
flash bank cfi 0x00000000 0x02000000 2 4 0
init
reset halt
flash probe 0
# Log
openocd -f /home/min/data/linux/openocd/wiggler-lpt.cfg -f
/home/min/data/linux/openocd/tion-pro270.cfg -c flash write_image
erase "/home/min/data/linux/u-boot/u-boot_tion-pro270_416mhz_128m.bin"
Open On-Chip Debugger 0.2.0 (2009-09-15-11:35) Release
$URL: http://svn.berlios.de/svnroot/repos/openocd/tags/openocd-0.2.0/src/openocd.c
$
For bug reports, read http://svn.berlios.de/svnroot/repos/openocd/trunk/BUGS
parport port = 0
jtag_speed: 0
2000 kHz
jtag_nsrst_delay: 10
jtag_ntrst_delay: 10
Error: Translation from khz to jtag_speed not implemented
Info : JTAG tap: pxa270.cpu tap/device found: 0x79265013 (mfg: 0x009,
part: 0x9265, ver: 0x7)
Info : JTAG Tap/device matched
Info : JTAG tap: pxa270.cpu tap/device found: 0x79265013 (mfg: 0x009,
part: 0x9265, ver: 0x7)
Info : JTAG Tap/device matched
Warn : value captured during scan didn't pass the requested check:
Warn : captured: 0x00 check_value: 0x02 check_mask: 0x07
Error: JTAG error while writing DCSR
Warn : value captured during scan didn't pass the requested check:
Warn : captured: 0x00 check_value: 0x01 check_mask: 0x7F
Warn : value captured during scan didn't pass the requested check:
Warn : captured: 0x00 check_value: 0x01 check_mask: 0x7F
target state: halted
target halted in ARM state due to debug-request, current mode: Supervisor
cpsr: 0xf00000d3 pc: 0x00000000
MMU: disabled, D-Cache: disabled, I-Cache: disabled
(processor reset)
Info : Flash Manufacturer/Device: 0x0089 0x0000
Warn : CFI size is 0x1000000, but total sector size is 0x2000000
flash 'cfi' found at 0x00000000
auto erase enabled
Info : Using target buffer at 0x5c000038 and of size 0x8000
Info : Write 0x8000 bytes to flash at 0x00000000
Info : Write 0x8000 bytes to flash at 0x00008000
Info : Write 0x8000 bytes to flash at 0x00010000
Info : Write 0x8000 bytes to flash at 0x00018000
Info : Write 0x23ec bytes to flash at 0x00020000
wrote 140268 byte from file
/home/min/data/linux/u-boot/u-boot_tion-pro270_416mhz_128m.bin in
7.205519s (19.010493 kb/s)
Проблема была в этом. Решилась шунтированием Q1 на плате.
>Я так не пробовал, но у того кто
пробовал напрямую -- не получилось.
Однако же у меня получилось :)
Проблема была в этом. Решилась шунтированием Q1 на плате.
> Будет хорошо, если заработает. Я так не пробовал, но у того кто
> пробовал напрямую -- не получилось.
Однако же у меня получилось :)
Вот текст:
Если фирменного ARM-JTAG адаптера (wiggler) нет в наличии, его можно
попытаться изготовить самостоятельно.
Для этого потребуются разъём FC-26P и разъём DB25M, которые необходимо
соединить плоским шлейфом по схеме:
LPT J7 (на Сириус270)
2 26 (RES_OUT#)
3 7 (TMS)
4 5 (TCK)
5 3 (TDI)
6 1 (TRST#)
8-15
11 23 (TDO)
18 10 (GND)
19 12 (GND)
20 14 (GND)
21 16 (GND)
22 18 (GND)
23 20 (GND)
24 22 (GND)
25 24 (GND)
Сигнал RES_OUT# нужно дополнительно проинвертировать. Это можно
сделать одним из способов:
1. Установив логический инвертор с использованием транзистора в
коробке DB25M;
2. Проведя небольшую "операцию" на плате Сириус270:
a. Выпаять резистор R7;
b. Замкнуть выводы 1,3 транзистора Q1.
Поместите куда его считаете нужным. Я даже зарегистрировался в вики,
но честно не знаю куда этот текст добавить не нарушив стиля и
структуры уже имеющегося.
> Сигнал RES_OUT# нужно дополнительно проинвертировать. Это можно
> сделать одним из способов:
Ещё один способ выполнять инверсию d0 в OpenOCD. Через конфиг похоже
нельзя такое сделать, только править исх. код.
openocd/src/jtag/parport.c, строка 100, внимание на o_inv
/* name tdo trst tms tck tdi
srst o_inv i_inv init exit led */
{ "wiggler", 0x80, 0x10, 0x02, 0x04, 0x08, 0x01,
0x01, 0x80, 0x80, 0x80, 0x00 },
{ "wiggler_ntrst_inverted",
0x80, 0x10, 0x02, 0x04, 0x08,
0x01, 0x11, 0x80, 0x80, 0x80, 0x00 },
Вероятно, аналогично можно и srst инвертировать.
Добавлено в
http://www.zao-zeo.ru/dokuwiki/doku.php/tion270#jtag
Возможно и так. Судя по тому, что
led (d5) ~ 0x20,
TRST(d4) ~ 0x10,
0x01 ~ d0 (SRST) и нужно o_inv делать равным 0x00?
Я в исходники слазить не догадался (думал сложно там всё будет) :-\.
Пробовал через конфиг команды "jtag_reset x x" (x - 0 или 1) и
"reset_config trst_only", но ничего не получилось.
Видимо так