Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: ALTERA USB BLASTER use as JTAG programmer
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
Genadi Zawidowski
Кто-нибудь знает, как научить ALTERA USB BLASTER зашивать по JTAG AT91SAM7S*

Никаких функций отладки не требуется, просто залить HEX или BIN во флэш.
KRS
Посмотрите OpenOCD
Genadi Zawidowski
Цитата(KRS @ Nov 29 2009, 20:42) *
Посмотрите OpenOCD

Скачал, поставил. В хелпе на 128 страницах слов ALTERA или BLASTER не нашлось. Куда примерно смотреть?
KRS
Цитата(Genadi Zawidowski @ Nov 29 2009, 21:20) *
Скачал, поставил. В хелпе на 128 страницах слов ALTERA или BLASTER не нашлось. Куда примерно смотреть?

надо настроить примерно так
вот только decs и layout vid pid надо в инете поискать
interface ft2232
ft2232_device_desc "..."
ft2232_layout "..."
ft2232_vid_pid ...
Genadi Zawidowski
Спасибо, со всеми параметрами кроме ft2232_layout я разберусь.
Кто-нибудь знает, как выглядит ft2232_layout для ALTERA USB BLASTER? Не найти.
msalov
 На сайте http://www.ixo.de/info/usb_jtag/ есть патч для openocd что б он умел общаться с altera usb blaster. Если будете пробовать - напишите о результатах, пожалуйста. Ещё проект UrJTAG поддерживает usb-blaster из коробки, но можно ли при помощи него зашивать SAMы не в курсе.
Terminator
В ALTERA USB BLASTER нет ft2232. С openocd ничего не получится.
KRS
Цитата(Terminator @ Nov 30 2009, 10:26) *
В ALTERA USB BLASTER нет ft2232. С openocd ничего не получится.

там стоит ftdi только vid pid другие!
и с openocd работать будет!
SM
там ft245 а не 2232, и еще сердес на CPLD.
Genadi Zawidowski
UrJTAG с ALTERA USB BLASTER сконнектился - светодиод на адапетере загорелся.
Пока к плате не подключал, посему команды диагностики пока возвращают ошибку.
Осталось только разобраться, куда там hex/bin "засовывать".
KRS
Цитата(Genadi Zawidowski @ Dec 1 2009, 07:48) *
UrJTAG

IMHO это немного не тот тулз - он же вроде для работы с BSDL.
Что бы SAM7S прошить надо именно отладчик - загружается код в ОЗУ потом ему данные передаются он пишет их во флеш. OpenOCD имеет таку программу и умеет писать флеш сам - через телнет ему задается команда и имя файла.
Genadi Zawidowski
Вот, при попытке сказать discover выдаёт вот это:

Код
jtag> cable usbblaster
Connected to libftd2xx driver.
jtag> detect
IR length: 4
Chain length: 1
Device Id: 00111111000011110000111100001111 (0x000000003F0F0F0F)
  Manufacturer: ARM
Cannot open c:\u\data/arm/PARTS
  Unknown part!
chain.c(149) Part 0 without active instruction
chain.c(200) Part 0 without active instruction
chain.c(149) Part 0 without active instruction
jtag> discover
Detecting IR length ... 4
Detecting DR length for IR 1111 ... 1
Detecting DR length for IR 0000 ... Warning: TDO seems to be stuck at 0
-1
Detecting DR length for IR 0001 ... 1
Detecting DR length for IR 0010 ... 4
Detecting DR length for IR 0011 ... Warning: TDO seems to be stuck at 0
-1
Detecting DR length for IR 0100 ... 1
Detecting DR length for IR 0101 ... 1
Detecting DR length for IR 0110 ... 1
Detecting DR length for IR 0111 ... 1
Detecting DR length for IR 1000 ... 1
Detecting DR length for IR 1001 ... 1
Detecting DR length for IR 1010 ... 1
Detecting DR length for IR 1011 ... 1
Detecting DR length for IR 1100 ... Warning: TDO seems to be stuck at 0
-1
Detecting DR length for IR 1101 ... 1
Detecting DR length for IR 1110 ... 32
jtag>


Соответственно, все файлы и каталоги на месте. Может, cygwin что-то не нравится?
Я об пропущеном
Цитата
ioperm package (a part of the standard Cygwin net installation)

It may be necessary to run the command "ioperm -i" to install the IOPERM.SYS driver in the system.


add: не помогло, перестановка urjtag при инсталированном cygwin & ioperm не помогло тоже...
Genadi Zawidowski
add2: с таким же выводом уже сталкивался писавший тут http://www.koka-in.org/~kensyu/handicraft/...y/20081110.html человек. Прочёл через гугль.
Что делать?
ps: с невозможностью прямой пршивки флеш через jtag согласен... Но как-то h-jtag это делает? Хотя, кажется, от помещает в память инструкции для прошивки... Наверное, скриптом придётся делать то же самое?
KRS
Цитата(Genadi Zawidowski @ Dec 2 2009, 01:12) *
ps: с невозможностью прямой пршивки флеш через jtag согласен... Но как-то h-jtag это делает?

H-JTAG грузит в RAM программку и передает ей данные и комнады через DCC.
IAR - гурзит в рам программку и она с помощью специального API считывает данные с компа ( IAR записывает их в память обычным образом по брекпоинту) и пишет флеш
как шьет OpenOCD не смотрел, но думаю что грузит кусками флеш в ОЗУ и выполняет код записи..

В любом случае нужены функции именно отладчика! И программа записи флеша!
Genadi Zawidowski
Спаибо... кстати, никто не делал этих загрузчиков самостоятельно? попробовал бы через скрипты urjtag запрограммировать.

в даташите на процессор упоминается о двух режимах работы jtag - ICE и "стандартный" режим. hjtag только в режиме ICE работает (и у меня JTAGMODE наглухо на земле).
Как я понял, программирование "как микросхемы памяти" внутреннего flash процессора возможно во втором режиме.
Небольшая "непонятка" с тем, что после reset при единице на JTAGMODE - написано, что в режим serialprogramming через jtag процессор входит только при определённых состояниях ножек pgm modexxx. Никто не программировал процессор как "просто память"?
Genadi Zawidowski
Кажется, начало находиться... Это оно? (кусочек инициализации от openocd):

Код
        soft_reset_halt
        # RSTC_CR : Reset peripherals
        mww 0xfffffd00 0xa5000004
        # disable watchdog
        mww 0xfffffd44 0x00008000
        # enable user reset
        mww 0xfffffd08 0xa5000001
        # CKGR_MOR : enable the main oscillator
        mww 0xfffffc20 0x00000601
        sleep 10
        # CKGR_PLLR: 96.1097 MHz
        mww 0xfffffc2c 0x00481c0e
        sleep 10
        # PMC_MCKR : MCK = PLL / 2 ~= 48 MHz
        mww 0xfffffc30 0x00000007
        sleep 10
        # MC_FMR: flash mode (FWS=1,FMCN=73)
        mww 0xffffff60 0x00490100
        sleep 100


То есть, мне надо писать в регистры так, как это делал бы процессор?
KRS
Цитата(Genadi Zawidowski @ Dec 4 2009, 00:29) *
То есть, мне надо писать в регистры так, как это делал бы процессор?

Это список команд которые дают на выполнение процессору.
Да насколько я помню у ARM7 можно прямо через JTAG заставить выполнить команду не записывая ее в память и результат так же считать ( т.е. шина ARM ядра просто в scan chain выведена) - так что можно и скрипт написать для urjtag на основе этого от openocd. Только Вам тогда надо на сайте ARM документацию на ARM Embeddedice, например ARM7TDMI Debug Architecture
http://infocenter.arm.com/help/topic/com.a...ug_appsnote.pdf
Но это такая - серьезная работа!
Genadi Zawidowski
Кажется, скоро появится возможность исользовать Altera USB Blaster.
Сконфигурировать UrJtag для записи в мне так и не удалось...
Но новый openocd 0.4.0 теперь имеет поддержку адаптера Altera USB Blaster.
Пока тренируюсь на плате с at91sam7s32 и Raisonance USB JTAG.
Конфигурирование проходит, но для любой операции с flash требуется процессор приостановить... а в ответ получаю:

Цитата
Open On-Chip Debugger 0.3.1 (2009-11-13-16:13)
$URL$
For bug reports, read
http://openocd.berlios.de/doc/doxygen/bugs.html
30 kHz
srst_only srst_pulls_trst srst_gates_jtag srst_open_drain
Warn : use 'sam7s32.cpu' as target identifier, not '0'
Warn : The lowest supported JTAG speed is 375 KHz
Warn : The lowest supported JTAG speed is 375 KHz
Info : clock speed 375 kHz
Info : JTAG tap: sam7s32.cpu tap/device found: 0x3f0f0f0f (mfg: 0x787, part: 0xf0f0, ver: 0x3)
Info : Embedded ICE version 1
Warn : The lowest supported JTAG speed is 375 KHz
Warn : The lowest supported JTAG speed is 375 KHz
375 kHz
Info : JTAG tap: sam7s32.cpu tap/device found: 0x3f0f0f0f (mfg: 0x787, part: 0xf0f0, ver: 0x3)
Warn : srst pulls trst - can not reset into halted mode. Issuing halt after reset.
Error: invalid mode value encountered 1
Error: cpsr contains invalid mode value - communication failureexpected return code but got 'TARGET: sam7s32.cpu - Not halted'
Runtime error, file "openocd.cfg", line 78:


Может кто-нибудь поделиться скриптом для openocd, который бы просто записывал во внутренний flash процессора файл? Отладка через jtag не интересует.
AHTOXA
Цитата(Genadi Zawidowski @ Feb 23 2010, 23:44) *
Может кто-нибудь поделиться скриптом для openocd, который бы просто записывал во внутренний flash процессора файл?

prog-elf.bat:
Код
@echo off
set PATH=C:\tools\OpenOcd\bin;%PATH%
set INTERFACE=jlink.cfg
set TARGET=stm32f10x_128k_eval.cfg
@openocd -d0 -f interface/%INTERFACE% -f target/%TARGET% -c init -c targets -c "halt" -c "flash write_image erase %1" -c "verify_image %1" -c "reset run" -c shutdown


INTERFACE и TARGET подправьте под себя.
Genadi Zawidowski
Сообщение об ошибке не изменилось... Как и в ручном режиме (через telnet) - после выдачи halt получаю сообщение о том, что с cpsr не то значение и так далее...

Код
C:\user\dds2\TC1>openocd -d0 -f interface/rlink.cfg -f target/at91sam7sx.cfg -c init -c targets -c "halt" -c "flash write_image erase " -c "verify_image .\at91sam7s\tc1.elf" -c "reset run" -c shutdown
Open On-Chip Debugger 0.3.1 (2009-11-13-16:13)
$URL$
For bug reports, read
        http://openocd.berlios.de/doc/doxygen/bugs.html
debug_level: 0
30 kHz
srst_only srst_pulls_trst srst_gates_jtag srst_open_drain
Error: invalid mode value encountered 1
Error: cpsr contains invalid mode value - communication failure
    TargetName         Type       Endian TapName            State
--  ------------------ ---------- ------ ------------------ ------------
0* at91sam7s.cpu      arm7tdmi   little at91sam7s.cpu      unknown
Error: invalid mode value encountered 1
Error: cpsr contains invalid mode value - communication failure
Error: invalid mode value encountered 1
Error: cpsr contains invalid mode value - communication failure
Runtime error, file "command.c", line 473:


Да, эта же плата через тот же 20-пин разъём шъётся wiggler-ом через h-jtag без проблем.
AHTOXA
Цитата(Genadi Zawidowski @ Feb 24 2010, 00:20) *
Сообщение об ошибке не изменилось...

Значит не работаетsmile.gif Насколько я в курсе, поддержка rlink там в зачаточном состоянии. У меня есть плата с rlink, но там stm32, и прицеплен он по SWD (альтенратива JTAG), а его (SWD) openocd точно не поддерживает. Откуда вы взяли, что оно вообще заработает?
Genadi Zawidowski
Цитата(AHTOXA @ Feb 23 2010, 22:34) *
Откуда вы взяли, что оно вообще заработает?

Исходя из того, что reset из j-tag адаптера выходит (тестовая плата перезапускается) и остальные команды выполняются - о чём сообщает всякая диагностика подключёного к j-tag процессора. То есть, нижний уровень работает.

Да, openocd + wiggler тоже не грузят программу. Только hjtag + wiggler.

Вывод - я как-то не так обращаюсь с openocd. Но что ещё, кроме конфигурационных файлов, может влиять?
Genadi Zawidowski
Коллеги, ничего не сдвинулось с места...
Инсталирован openocd 0.3.1 _без каких_либо_изменений_в _конфигах (кроме адреса порта в parport.cfg).

Запуск командной строки приведённой ниже что с rlink, что с parport с классическим wiggler выдяёт практически одинаковые сообщения:
Код
C:\user\dds2\TC1>openocd -d1 -f interface/rlink.cfg -f target/at91sam7sx.cfg -c init -c targets -c "halt" -c "flash write_image erase " -c "verify_image .\at91sam7s\tc1.elf" -c "reset run" -c shutdown
Open On-Chip Debugger 0.3.1 (2009-11-13-16:13)
$URL$
For bug reports, read
        http://openocd.berlios.de/doc/doxygen/bugs.html
debug_level: 1
srst_only srst_pulls_trst srst_gates_jtag srst_open_drain
Warn : use 'at91sam7s.cpu' as target identifier, not '0'
Error: 0 is not a supported speed
    TargetName         Type       Endian TapName            State
--  ------------------ ---------- ------ ------------------ ------------
0* at91sam7s.cpu      arm7tdmi   little at91sam7s.cpu      running
Error: invalid mode value encountered 1
Error: cpsr contains invalid mode value - communication failure
Runtime error, file "command.c", line 473:

jtag_speed или jtag_khz ставил разные... При других debug level видно, что всё начинается после init.
Тот же wiggler при работе из-под hjtag без проблем делает всё что надо и плата программируется. (не аппаратура виновата, похоже).
Кто-нибудь может прислать работающий вариант конфигов и командного файла, прошивающего flash контроллера at91sam7s-какогоугодно или at91sam9xe512 ? Кроме того, будет интересно узнать с какой версией openocd идёт успешное программирование.
A.P.
Три года прошло - сдвиги какие-нибудь есть?
Genadi Zawidowski
Цитата(A.P. @ Oct 7 2012, 20:06) *
Три года прошло - сдвиги какие-нибудь есть?

На следующий день я научил работать STK-200 с h-jtag (http://electronix.ru/forum/index.php?showtopic=60978), потом купил sam-ice (http://electronix.ru/forum/index.php?showtopic=77054) (потому, что это сразу пошёл и купил), потом купил стартеркитовский девайс в чёрной котробочке (пара недель почтой). С тех пор и по сей день прошиваю флэши процессоров через j-flash arm, хотелось бы конечно командную строку, но как-то интерес к openocd и альтеровскому байтбластеру поутих. К стати, работающего скрипта для прошивки внутреннего флэша через тот же segger j-tag тоже не попалось.
АНТОХА, Ваш скрипт у меня и с сеггером не работает.
ReAl
Странно.
Вот таким J-Link в вот такую плату SK-MLPC1768 для проверки иногда зашиваю исходное содержимое флеша такой командой.
Код
openocd -f interface/jlink.cfg -f ./lpc1766.cfg -c init -c targets -c "reset_config srst_only" -c "reset init"\
-c halt -c "flash write_image erase original.bin" -c "reset run" -c shutdown

При работе шьётся из редактора через Makefile, но там то же самое набирается из настроек проекта.
Собственно, из Makefile от AHTOXA для scmRTOS/Cortex-M3 и было ©тырено, только управление сбросом добавил.

p.s. Это всё в линуксе (убунты 10.04/64 и 12.04/32) самосборным OpenOCD (время от времени git pull и пересобираю).
A.P.
Я таки заставил работать связку altera usb_blaster + openocd + stm32
Если кому интересно вот мой конфиг:
Код
telnet_port 4444
interface usb_blaster
usb_blaster_vid_pid 0x09fb 0x6001
usb_blaster_device_desc "USB-JTAG-IF"
source [find target/stm32f1x.cfg]
adapter_khz 3000

А вот команды для gdb
Код
target remote :3333
monitor reset init
load Debug/test.elf

Все отлично работает без сбоев. Только скорость удручает. Зато решение универсальное. 08.gif

P.S. openocd 0.6.1
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.