Jump to content

    

C6713B, SAU510 и испорченный телефон

Всем доброго времени суток.

 

Столкнулись со следующей проблемой: имеется кит DSK6713 и плата-самоделка с TI C6713B (версия 2.0) в конфигурации, аналогичной DSK6713 - к самому С6713В подключены на EMIF ПЛИС и флэшка с CFI-интерфейсом на правах программного РОМа).

С китом использовался SAU510-USB и CCS 3.1, никаких затруднений не возникало. При подключении эмулятора к самодельной плате соединение CCS с процесором устанавливается, есть возможнсоть без сбоев закачать программу и запустить ее на выполнение. В некоторых ситуациях процессор после этого нормально функционирует (например, пашет тестовый обмен с ПЛИСом по GPIO и последовательным интерфейсам).

А вот при попытке остановить выполнение программы, запущенной без точек останова, или на остановленной программе включить/выключить точку останова - после непродолжительного раздумья CCS выбрасывает табличку:

--

Trouble Halting Target CPU:

Error 0x80000020/- 1070

Fatal Error Execution.

An unknown error prevented the emulator from accessing the processor in a timely fashion.It is recommended to RESET EMULATOR. This will disconnect each target from the emulator. The targets should then be power

cycled or hard reset followed by an emureset and reconnect to each target.

--

То же самое происходит при некоторых операциях ввода/вывода. Например, при попытке самодельным FBTC стереть флэшку процессор подает на шину памяти ровно четыре слова (а для стирания их, как на зло, надо шесть :) ), после чего - отсоединение от JTAG-а.

 

Все перечисленные операции на DSK проходят на ура. По этой причине под подозрение попала электрика самоделки, отличающаяся от "доски" следующими моментами:

- сигнал TRST# из-за косяка в проектировании в итоге был подпаян к RST# (последний на внешней подтяжке).

- CLKMODE0 оставлен висеть в воздух в уповании на внутренний пуллап (на DSK сделана внешняя подтяжка через 1кОм).

- нет буферизации сигналов JTAG-интерфейса, т.е. процессор подключается непосредственно к колодке (проводники около 3см). Возвратный TCK_RET в том числе.

При этом, воткнувшись осциллографом в сигналы JTAG-интерфейса, криминала в форме сигналов не заметил, за исключением изредка встречающегося в линии TDO длинного пологого фронта, несколько напоминающего переходы напряжения в линиях с абонентами с третьим состоянием (к сожалению, осциллограф упорно не хотел слать скрин на флэшку :(). Такие же переходы обнаружил и просматривая TDO при подключении эмулятора к DSK.

- напряжение ядра из-за кривоватой схемы питания с периодом около 30КГц поднимается короткими треугольными импульсами с 1.2 до 1.4В. Однако никаких других колебаний напряжений питания ни по 1.2В, ни по 3.3В не обнаружили, в т.ч. при попытке записать больше четырех слов в EMIF.

 

В остальной плата-самоделка идентична DSK по связям.

Встречался ли кто-нибудь с такой проблемой? Поискав, нашел несколько людей с похожей ситуацией на западных форумах, но где корень зла - в линии JTAG-проц (интуитивно вроде бы оно, кривая линия мешает обмену), или еще где-то - установить не могут.

Edited by PCaban

Share this post


Link to post
Share on other sites
- нет буферизации сигналов JTAG-интерфейса, т.е. процессор подключается непосредственно к колодке (проводники около 3см). Возвратный TCK_RET в том числе.
А TCK_RET с TCK в каком именно месте соединяется? На пине кристалла или прямо на разъеме? Был случай, когда из-за плотной трассировки решили сэкономить (~40-45 мм) и соединили TCK_RET с TCK прямо на разъеме, а не возле пина TMS320VC5509A. В результате также иногда получали непредсказуемые глюки, а SM510PCI (аналог XDS510PCI) приходилось подстраивать (параметр задержки TCK) почти под каждую плату.

Share this post


Link to post
Share on other sites

К сожалению, не успел посмотреть печать :( зная наших конструкторов - соединение TCK и возвратной линии может быть и где-то на полдороге между процессором и колодкой. На колодке разница TCK и TCK_RET невелика, по осциллографу практически полное совпадение в середине амплитуды (около 1.5В) и разбег 2-4нс на других участках. Спасибо за наводку, хоть документацию копнем в этом направлении, ибо пока ничего кроме "Designing for JTAG emulation" (который из мануалов CCS) не изучили :)

Share this post


Link to post
Share on other sites

UPD:

:smile3046: На плате накрылось питание ядра третьего Спартана и C6713 (1.2В) - из-за пробоя конденсатора идет пила 20КГц от 1.2 до 1.4В. Проц при этом упорно не соединяется с эмулятором (что вроде бы логично, но заставляет задуматься о покупке веночка и пузыря для поминок по красивому квадратику в шариковом корпусе)

 

Перед этим успел убедился - TCK и TCK_RET действительно соединены прямо под колодкой JTAG-а. Увы, не могу сказать, что разрезание дорожки и подпайка проводков разной длины что-то изменили. Видимо, доступ по порту все же нормальный (например, нехитрая прога счета импульсов на GPIO 4 раза в секунды вываливает длинное сообщение и кучу цифр в консоль CCS. Сигнальные линии при этом загружены сильней чем когда-либо, но сбоев не видно). Также отпали версия с неправильным резетом логики JTAG-порта на самом C6713 (пуллап на #RST давил #TRST = 0, подаваемый эмулятором при коннекте к процессору).

Share this post


Link to post
Share on other sites

1) Данных о коде ошибки от композера мало, там такое всякое может быть, причем даже по причинам, с жтагом не связанным, что волосы дыбом встают.... Надо сделать "xdsprobe -i -f путь/к/cfg/файлу" и если он прошел без ошибок, то "xdsprobe -g -c 10000 -f путь/к/cfg/файлу". И на основании этих тестов судить о проблемах жтага. Если и второй тест прошел, то жтаг полностью безпроблемный. Утилита xdsprobe лежит в <где_композер>/cc/bin

2) TRST->RST... Отпилить!

3) на 3-х см пофигу и буфера, и соединение TCK->TCKR в разъеме.

4) Если тесты показывают неустойчивость, уменьшить частоту TCK в конфиге, поиграться терминаторами там же.

 

 

(пуллап на #RST давил #TRST = 0, подаваемый эмулятором при коннекте к процессору).

Ни хрена себе пуллап, задавить пушпульный КМОП-выход с последовательным резистором в 22 ома.

 

ЗЫ. Заваленные фронты на TDO норма жизни, это же выход с Z-состоянием, в котором он всегда, кроме DSCAN/ISCAN

Share this post


Link to post
Share on other sites

SM мне помогите !

# config version=3.5

$ uscif

slowclk=NO

tdoedge=RISE

$ /

$ sepk

pod_port=0x240

pod_tckdiv=7

pod_tckpredivena=NO

pod_tckload=YES

pod_tdiload=NO

pod_shortlinkdly=NO

pod_tdoontckfall=NO

pod_aclk_enable=NO

pod_aclk_delay=0

pod_drvr=sm510usb.dll

$ /

@ tms320c6720_0 family=tms320c672x

@ bypass_0 family=bypass irbits=8

# /

xdsprobe -i -f путь/к/cfg/файлу

проходит ок

xdsprobe -g -c 10000 -f путь/к/cfg/файлу

проходит ок

SAU510 соединяется с TMS320С6727 но

при попыткке загрузить программу выдает следующее

Error 0x00000008/-2042 Error during: Break Point, Cannot set/verify breakpoint at 0x10005340

если после этого сделать сброс (ctrl+r) то программа грузиться но при попытке поставить брэкпоинты ругается ошибкой вида

Error 0x00000008/-1066 Error during: Break Point, Cannot set/verify breakpoint at 0x00000000

Share this post


Link to post
Share on other sites

Блин, уже в привате ответил. Ну не надо спрашивать в привате, что может быть интересно не только Вам. повторять тут уже не буду

Share this post


Link to post
Share on other sites
90% - какие-то проблемы с порчей (программной) недокументированных регионов адресного пространства процессора, да так, что ему "всю башку сносит"

5% - при загрузке софта что-то пишется не в тот регион.

2% - GEL-файл при стартапе композера что-то не так инитит, или наоборот, что-то не инитит.

1% - конфиги разные получились у CCS и тот, что указывался xdsprobe, пересетапить CCS именно с тем же конфигом

Остальные 2 процентф - я не знаю что это.

90% как локализовать проблему тогда?

5% область памяти озу по датащиту указана в .cmd файле

2% GEL не используется вообще т.к. для С6727 его не нашел готового

1% конфиги одинаковые проверял ручками

 

SAU510 приобретен только что, при этом есть плата EVML137 к которой подключиться так и не удалось.

К С6727В подключаюсь используя CCSv3.3 драйвер tixds6000.dvr, здесь вы писали что надо использовать другой драйвер но для ccsv3.3 такого нет. тынц

Интересный ньюанс, с настройками TCK(~10MHz)

pod_tckdiv=7

pod_tckpredivena=NO

CCS коннектиться к процессору, а если понизить частоту TCK выставив (2.5MHz)

pod_tckdiv=7

pod_tckpredivena=YES

то CCS вообще перестает коннектиться к процессору. При этом тест JTAG IR and DR c помошью xdsprobe и на 2.5MHz и на 10MHz проходят на ура.
Edited by talus

Share this post


Link to post
Share on other sites
90% как локализовать проблему тогда?

Ну попробовать грузануть что-то на столько простое, что физически не может содержать ошибки.

5% область памяти озу по датащиту указана в .cmd файле

Ну это хорошо... Но лишняя проверка не помешает.

2% GEL не используется вообще т.к. для С6727 его не нашел готового

Это тоже может быть корнем зла. В некоторых процах надо кое что обязательно сделать через GEL прежде чем грузить с эмулятора.

К С6727В подключаюсь используя CCSv3.3 драйвер tixds6000.dvr, здесь вы писали что надо использовать другой драйвер но для ccsv3.3 такого нет.

Какой SR? Сейчас вроде 11 последний.

CCS коннектиться к процессору, а если понизить частоту TCK выставив (2.5MHz)

то CCS вообще перестает коннектиться к процессору. При этом тест JTAG IR and DR c помошью xdsprobe и на 2.5MHz и на 10MHz проходят на ура.

Это вообще сверхстранно.

 

Да, еще один момент. Может быть так, что после включения питания проц грузит откуда то какое-то нечто, которое ему башку и сносит. А эмулятор потом ничего сделать уже не может.

Share this post


Link to post
Share on other sites
Ни хрена себе пуллап, задавить пушпульный КМОП-выход с последовательным резистором в 22 ома.

Сами удивляемся. Но, по правде сказать, проектировщик платы допустил некоторую бардачность в части разводки и обвеса резетов и пинов жтага, так что мыши теперь колются и едят кактус :05: По п.1 большое спасибо, у нас три человека и ВСЕ намертво забыли об этой возможности :laughing: Оживим питание платы (если получится) - начнем с этого.

 

З.Ы. глюк при понижении частоты жтага дополнительно в 4 раза (pod_tckpredivena=YES) у нас тоже был, по крайней мере с самоделкой (кит с С6713 устойчиво соединяется с CCS и при 20МГц на JTAG)

Share this post


Link to post
Share on other sites
Ну попробовать грузануть что-то на столько простое, что физически не может содержать ошибки.

Гружу проще некуда

int main()

{

while(TRUE)

{

}

}

 

 

Какой SR? Сейчас вроде 11 последний.

SR11

 

Это вообще сверхстранно.

Сранно но это так, на 2.5MHz не коннектиться вообще.

 

Да, еще один момент. Может быть так, что после включения питания проц грузит откуда то какое-то нечто, которое ему башку и сносит. А эмулятор потом ничего сделать уже не может.

Ээээ не акцентировал внимание, буду смотреть что да как и откуда грузится.

 

И еще забыл спросить может ли на эти ошибки влиять EMU0 EMU1 сигналы? Просто у меня их можно сделать только однонаправленными.

Share this post


Link to post
Share on other sites
И еще забыл спросить может ли на эти ошибки влиять EMU0 EMU1 сигналы? Просто у меня их можно сделать только однонаправленными.

Вряд-ли, главное, чтобы они были в единице в момент импульса на TRST (и при power up)

Share this post


Link to post
Share on other sites

Внимание сейчас проверил работоспособность платы с эмулятором XDS510PP от spectrum digital все прекрасно работает, ставятся точки останова, дебаг по шагам, никаких ошибок и матерных слов вида ERROR со стороны CCS, вообщем все работает только ооочень медленно. Следовательно плата рабочая одназначно.

Теперь как заставить SAU510 работать также без ошибок?

 

P.S.

2% GEL не используется вообще т.к. для С6727 его не нашел готового
Это тоже может быть корнем зла. В некоторых процах надо кое что обязательно сделать через GEL прежде чем грузить с эмулятора.

GEL кстати и для XDS510PP и для SAU510 подсовывал DSP621x_671x.gel. Результат одинаков SAU510 ругается ошибками а XDS510PP работает как часы

Edited by talus

Share this post


Link to post
Share on other sites

Ну значит смотрите осциллом в чем разница в сигналах. Может в конфиге терминаторы отключить, или наоборот, включить, или с TDOEDGE что-то не так. Или версия драйверов не последняя. Потому как иначе это чудеса.

Share this post


Link to post
Share on other sites
Ну значит смотрите осциллом в чем разница в сигналах. Может в конфиге терминаторы отключить, или наоборот, включить, или с TDOEDGE что-то не так.

На осциллографе никакого криминала не вижу. Задержка TCK-TCKR около 5нс.

С конфигом уже как тока не игрался наверно все комбинации перепробовал какие есть.

Или версия драйверов не последняя.

Версии драйверов последнии пробовал как с сайта suaris так и с сайта сканти.

Потому как иначе это чудеса.

Чудеса это или нет но факт остается фактом, новый SAU510 не работает.

А старый пыльный XDS510PP прекрасно работает.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this