Jump to content

    

TI AM1808 + XDS510USB

XDS510 полностью поддерживает AM1808.

 

Все эти проблемы случаются от двух вещей:

 

1) (в части ошибок во время заливки программы, коннекта, или исполнения GEL) - не включено адаптивное тактирование. Для ARM9 оно необходимо, ну либо ставить частоту TCK в 4 или более раз меньше той частоты, на которой стартует процессор до инициализации PLL. Это особенности архитектуры ARM9 и его эмуляционного блока.

2) ( в той же части) - несогласованность линий JTAG, особенно TCK_RET, слишком большие выбросы на них, или некорректные уровни (например 5-вольтовые при допустимых в 3.3).

 

ну и 3) - это уже в части, когда программа залилась, запустилась, а после ее останова происходят всевозможные глюки - то это, скорее всего, ошибка в программе, которая привела либо к записи в недокументированные области адресного пространства процессора, либо ушла на исполнение "левого" кода (например данных в качестве кода), например, из-за проблем со стеком.

 

 

Share this post


Link to post
Share on other sites
XDS510 полностью поддерживает AM1808.

На сайте TI указано, что поддерживает. У нас XDS510USB от Spectrum Digital, на их сайте AM1808 в списке поддерживаемых девайсов нет. Кому верить?

Пробоволи законектиться с помощью XDS510USB - ничего не вышло, при создании Target Configuration в CCS v5.5 и нажатии Test Connection ошибку не выдаёт, но лог какой-то короткий (строки 4, в первом посте приводил пример). При нажатии на Connect Target, пытается что-то сделать, на TCLK клоки всё время идут, но соединения не происходит.

Есть плата с F28M36 (C28x + ARM Cortex-M3) со встроенным XDS100v2 и возможностью подключения внешнего JTAG. На ней нашим XDS510USB к ядру C28x конектится и при Test Connection нормальный такой лог выдаёт (есть, что почитать), к ядру Cortex-M3 - те же грабли, что и с AM1808. Поменяли несколько программаторов, но результат тот же. Пришли к выводу, что XDS510USB не поддерживает AM1808, попробовали Black Hawk 560PCI с ним стало хоть как-то подключаться (с проблемами, описанными выше), при Test Connection тоже лог нормальный (можете выше глянуть).

 

Все эти проблемы случаются от двух вещей:

1) (в части ошибок во время заливки программы, коннекта, или исполнения GEL) - не включено адаптивное тактирование. Для ARM9 оно необходимо, ну либо ставить частоту TCK в 4 или более раз меньше той частоты, на которой стартует процессор до инициализации PLL. Это особенности архитектуры ARM9 и его эмуляционного блока.

Для BH 560PCI адаптивное тактирование включено по-умолчанию с границей 10 МГц, вот задание меньшего значения границы не проходит, частота всё равно доходит до 10 МГц. Ещё попробовал ставить фиксированную частоту 2-4 МГц - этот вариант работает, хотя, если работает он, то работает и первый с адаптивным тактированием и лимитом в 10 МГц. Если уж отвалилось, то не работает ни то, ни другое, надо какое-то время убить, чтоб всё опять запустилось.

Для XDS510USB не пробовал менять тактирование, проверю, может и правда с ним заработает.

 

 

2) ( в той же части) - несогласованность линий JTAG, особенно TCK_RET, слишком большие выбросы на них, или некорректные уровни (например 5-вольтовые при допустимых в 3.3).

Что касается несогласованности линий JTAG, то, наверное, это может быть главной причиной, разъём был неправильно разведён (плата не первая, а лоханулись) и счас там куча проводов висит, чтоб исправить. Но если смотреть на TCLKR, то она практически ровная и красивая, а вот на самой TCLK есть небольшие выбросы.

Share this post


Link to post
Share on other sites

XDS510 в принципе своем (не зависимо от производителя) поддерживает все те семейства, что поддерживает XDS560, без каких либо исключений или добавок.

 

А вот в частностях, чтобы XDS510 корректно работал с ARM9 (любым ARM9), надо либо самому обеспечить адаптивную генерацию TCK, не используя сигнал TCK с эмулятора (или используя его как строб для триггера петли RTCK->TCK), подавая на эмулятор получившийся TCK_RET, либо купить готовый адаптер с адаптивным тактированием, ну или использовать такой XDS510, в котором адаптивное тактирование встроено.

 

Еще одна частность, возможно, поможет добавление параметра router.skip_polling YES и router.adaptive_tclk yes, но зная особенности спектрумовских драйверов, не факт, что они будут вообще как-то реагировать на эти настройки, в отличие от других XDS510, базирующихся на драйверах TI. Да и адаптивное тактирование надо обеспечить, прежде чем играться этими параметрами.

 

На сайте спектрума написано, что поддерживает OMAP - значит поддерживает OMAP-L138 - а значит и его кастрированную версию - AM1808

 

UPD:

Вроде у XDS510 спектрума нет возможности менять параметры тактирования, в железе нет.

 

UPD2:

Если отвалилось, причем с такими ошибками, то надо полностью перезапускать дебаг сессию, с нуля, а с учетом того, что в современных композерах ее не всегда удается "срубить", то вплоть до перезапуска композера. После чего сделать "Reset emulator" и еще передернуть питание у таргета. К сожалению, код драйверов эмуляции TI построен так, что в нет ничего для корректного завершения после ошибочной ситуации. Внутренние эмуляционные блоки процессора остаются черти в каком состоянии, из которых корректно выйти практически невозможно.

Edited by SAURIS GmbH

Share this post


Link to post
Share on other sites

Может что-то не так понимаю, для BH 560PCI стоит настройка (см. рисунок) и при подключении на линии TCLK перебираются клоки, это и есть адаптивное тактирование?

 

UPD2:

Если отвалилось, причем с такими ошибками, то надо полностью перезапускать дебаг сессию, с нуля, а с учетом того, что в современных композерах ее не всегда удается "срубить", то вплоть до перезапуска композера. После чего сделать "Reset emulator" и еще передернуть питание у таргета. К сожалению, код драйверов эмуляции TI построен так, что в нет ничего для корректного завершения после ошибочной ситуации. Внутренние эмуляционные блоки процессора остаются черти в каком состоянии, из которых корректно выйти практически невозможно.

Примерно так и поступаю.

 

Еще одна частность, возможно, поможет добавление параметра router.skip_polling YES и router.adaptive_tclk yes, но зная особенности спектрумовских драйверов, не факт, что они будут вообще как-то реагировать на эти настройки, в отличие от других XDS510, базирующихся на драйверах TI. Да и адаптивное тактирование надо обеспечить, прежде чем играться этими параметрами.

Тут спасибо, попробую посмотреть, как это влияет.

post-63539-1403640465_thumb.jpg

Share this post


Link to post
Share on other sites
Может что-то не так понимаю, для BH 560PCI стоит настройка (см. рисунок) и при подключении на линии TCLK перебираются клоки, это и есть адаптивное тактирование?

 

Угу, не так понимаете... Адаптивное тактирование, это когда эмулятор выдает следующий перепад на линии TCK только после того, как предыдущий перепад прошел через процессор, войдя в него по TCK, и выйдя по RTCK. Вообще, это реализуется тупым инвертором и триггером, на вход триггера подается RTCK, с выхода через инвертор подается на TCK, ну и это чем-то там тактируется достаточно высокочастотным (я недопонимаю, чего там спектрумдигитал на 150 баксов наворотил). Суть этого процесса в том, что в зависимости от тактовой ядра процессора (у ARM9), меняется максимально допустимая тактовая его TCK. Схема адаптивного тактирования сама адаптируется к изменению тактовой частоты ядра и меняет частоту TCK, поддерживая ее всегда около максимально разрешенной для данного режима процессора. А она, максимально разрешенная, меняется в разы и в десятки раз при запуске PLL и изменениях ее коэффициентов умножения.

 

Вот, изучите на досуге. http://www.blackhawk-dsp.com/downloads/doc...cking-TA-01.pdf

 

ЗЫ

надо бы нам статейку в нашей wiki накатать по-русски...

 

ЗЗЫ

Да, настройка "Automatic with limit", возможно, подразумевает адаптивное тактирование. Это уже надо изучать доку на конкретный эмулятор, что они там подразумевают под этим.

 

 

И совсем вдогонку. Еще вариант есть для XDS510 - найти где-то в Вашей плате клок 1 МГц или ниже, и его завести на TCK процессора и TCK_RET эмулятора. А RTCK процессора и TCK эмулятора не использовать. Возможно, спасет ситуацию для 510.

Edited by SAURIS GmbH

Share this post


Link to post
Share on other sites

Спасибо, будо пробовать.

 

Share this post


Link to post
Share on other sites
с самой прошивкой и её стартом не мог разобраться, на какие-то непонятные адреса всё перепрыгивало.

Нашёл опции проекта при которых не попадает в main и ошибка выбрасывается.

1) Нерабочий вариант

2) Рабочий вариант

post-63539-1403689387_thumb.jpg

post-63539-1403689393_thumb.jpg

Share this post


Link to post
Share on other sites

Ну это не удивительно, пытаться запустить код с библиотекой от ARMv7 (конкретно от ARM Cortex-M3) на архитектуре ARMv5 (ARM9) - это как бы, как код от пентиума с MMX запускать на старом i8086.

Share this post


Link to post
Share on other sites
Ну это не удивительно, пытаться запустить код с библиотекой от ARMv7 (конкретно от ARM Cortex-M3) на архитектуре ARMv5 (ARM9) - это как бы, как код от пентиума с MMX запускать на старом i8086.

Да, есть такое, признаю. Почему же оно не ругалось и дало возможность выбора заведомо неправильной либы?

Share this post


Link to post
Share on other sites

Приветствую!

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

Ранее считал, что проблема может быть как-то связана с отсутствием или наличием неправильного GEL файла, что было ошибочно, никакой связи там нет.

При подключении к процессору (Launch Selected Configuration -> Connect Target) возможны следующие варианты:

1) Подключение не произошло и выдало ошибку (рисунок 1).

2) Подключение произошло, но под подключением высветился адрес 0xFFFF000C (рисунок 2). Через какое-то ваемя выбросит ошибку. Если попробовать загрузить прошивку, так же выбрасывает ошибку (рисунок 3).

3) Подключение произошло, под подключением высветился адрес 0хFFFF0000 (рисунок 4). Всё будет работать до сброса питания процессора. Если сбросить питание - придётся попотеть, чтобы опять подключиться.

 

0xFFFF0000 ... 0xFFFF1FFF - ARM local RAM.

 

Возможная проблема - для нормальной работы с ARM9 и др. от TI необходим программатор с поддержкой адаптивного тактирования. Используется Black Hawk PCI560 c которым всё и работает описанным выше образом, с XDS510USB от Spectrum Digital подключаться не стало.

 

Решит ли предложенный девайс эту проблему?

А вот в частностях, чтобы XDS510 корректно работал с ARM9 (любым ARM9), надо либо самому обеспечить адаптивную генерацию TCK, не используя сигнал TCK с эмулятора (или используя его как строб для триггера петли RTCK->TCK), подавая на эмулятор получившийся TCK_RET, либо купить готовый адаптер с адаптивным тактированием, ну или использовать такой XDS510, в котором адаптивное тактирование встроено.

 

Кто какие программаторы использовал для работы с ARM9 (или др.) от TI?

post-63539-1405409348_thumb.jpg

post-63539-1405409359_thumb.jpg

post-63539-1405409366_thumb.jpg

post-63539-1405409374_thumb.jpg

Share this post


Link to post
Share on other sites
Возможная проблема - для нормальной работы с ARM9 и др. от TI необходим программатор с поддержкой адаптивного тактирования. Используется Black Hawk PCI560 c которым всё и работает описанным выше образом, с XDS510USB от Spectrum Digital подключаться не стало.

У меня с точностью до наоборот: работает только если отключить адаптивное тактирование.

OMAP L137 (ARM9+C674x) + SAU510 Iso Plus + CCS3.3.

Так штааа....

Share this post


Link to post
Share on other sites
Так штааа....

 

Эта "так штаа..." есть issue эмуляторов версии Iso Plus до V.2 - на некоторых тактовых частотах имеется нестабильная работа по причине целостности сигналов... Тут все давно выяснено и устранено. А для нормальной работы с ARM9 необходимо или 1) TCK меньше либо равно CLK/4 (где CLK минимально возможная тактовая ядра в любом из режимов), или 2) адаптивное тактирование. Третьего не придумано.

 

Касаемо ошибок -1063 - классика жанра при проблемах с тактированием TCK или целостностью сигналов, то есть система эмуляции внутри ядра вообще в полном ауте. -1033 - обычно возникает, если код программы сделал что-тот такое, от чего процессору стало крайне плохо. Например, произвел запись каких-то данных в какие-то недокументированные области управления периферией, от чего произошел полный кирдык. Но, от проблем с тактированием тоже может быть на раз-два. Бывает, что первый коннект -1033, затем улетает в стабильную -1063.

Edited by SAURIS GmbH

Share this post


Link to post
Share on other sites

Нашёл, как должна выглядеть настройка адаптивного тактирования в CCS v5 (см. рисунок), но для моего BH-560-PCI (или XDS510USB ) такая опция в выборе отсутствует, получается он не поддерживает адаптивное тактирование? Тут предлагается ещё один вариант адаптера. Но каким образом в настройке программатора появится эта опция если приобрести такой девайс? Не написано, что прилагается какой-то драйвер. Как тогда объяснить, что подключение всё же происходит (пусть и не с первого раза) и прграмматор далее нормально работает и без наличия адаптивного тактирования?

 

Касаемо ошибок -1063 - классика жанра при проблемах с тактированием TCK или целостностью сигналов, то есть система эмуляции внутри ядра вообще в полном ауте. -1033 - обычно возникает, если код программы сделал что-тот такое, от чего процессору стало крайне плохо. Например, произвел запись каких-то данных в какие-то недокументированные области управления периферией, от чего произошел полный кирдык. Но, от проблем с тактированием тоже может быть на раз-два. Бывает, что первый коннект -1033, затем улетает в стабильную -1063.

Error -1063 выскакивает достаточно редко. После него делаю сброс питания процессора и на следующий connect практически всегда происходит подключение. Если процессор подключился, то показывает остановку на адресе 0xFFFF0000, как понимаю - это и есть адрес вектора сброса в ARM RAM, в этом случае можно заливать прошивку и работать. Но наиболее часто при попытке подключения, как бы подключается, останавливается на адресе 0xFFFF000C, что соответствует адресу вектора Pre-fetch abort в ARM RAM, и вот тогда уже при попытке заливки прошивки выбросит Error -1033 (даже если ничего не заливать, ошибка со временем появится).

post-63539-1405546030_thumb.jpg

Share this post


Link to post
Share on other sites
Нашёл, как должна выглядеть настройка адаптивного тактирования в CCS v5 (см. рисунок), но для моего BH-560-PCI (или XDS510USB ) такая опция в выборе отсутствует, получается он не поддерживает адаптивное тактирование?

Ну, видимо, да. Я, все таки, техподдержка не blackhawk, поэтому "видимо".

 

Но каким образом в настройке программатора появится эта опция если приобрести такой девайс? Не написано, что прилагается какой-то драйвер.

Этой железяке драйвер не нужен. Она обеспечивает адаптивное тактирование жестко, всегда и без возможности его отключения.

 

Как тогда объяснить, что подключение всё же происходит (пусть и не с первого раза) и прграмматор далее нормально работает и без наличия адаптивного тактирования?

Значит ситуация, когда тактирование эмуляционной системы конфликтует с тактированием ядра, происходит не так часто, и позволяет нестабильно, но подключиться. А потом - когда GEL скрипт "заведет" PLL на сотни мегагерц, тогда уже адаптивное тактирование становится не актуальным.

 

Но наиболее часто при попытке подключения, как бы подключается, останавливается на адресе 0xFFFF000C, что соответствует адресу вектора Pre-fetch abort в ARM RAM, и вот тогда уже при попытке заливки прошивки выбросит Error -1033 (даже если ничего не заливать, ошибка со временем появится).

Я не могу точно объяснить механизм, почему это так случается, так как это проблемы, вызванные чем-то внутри ядра процессора, а не проблемы эмулятора и эмуляционного интерфейса. Что-то в ядре "стопорится", в результате чего возникает и -1033, и, собственно, prefetch abort - обе вещи говорят одновременно об одном - кто-то внутри ядра заклинил работу внутренней шины. Это могло быть побочным эффектом сбоя в тактировании JTAG, могло быть сбоем в результате некорректной программы, в результате скачка на питании, на reset-е у процессора, и т.д., вариантов можно придумать еще много.

 

Что же касается адаптивного тактирования и его необходимости - при исследовании процесса подключения эмулятора к OMAP-L138 (это некастрированный брат-близнец AM1808), на осциллографе четко видно, как на какие то незначительные промежутки времени процессор понижает себе TCK, что говорит о том, что ему это надо.

Edited by SAURIS GmbH

Share this post


Link to post
Share on other sites
Эта "так штаа..." есть issue эмуляторов версии Iso Plus до V.2 - на некоторых тактовых частотах имеется нестабильная работа по причине целостности сигналов... Тут все давно выяснено и устранено. А для нормальной работы с ARM9 необходимо или 1) TCK меньше либо равно CLK/4 (где CLK минимально возможная тактовая ядра в любом из режимов), или 2) адаптивное тактирование.

Под "в любом из режимов" имеется в виду кроме прочего и тактовая до включения PLL?

Т.е. если у меня OMAP тактируется от внешнего генератора 18.432МГц, а после PLL получаю 294.912МГц, то нужна TCK <=18.432/4МГц ?

Но у меня вроде работало на TCK==15МГц с отключенным адаптивным тактированием.

Хотя надо ещё проверить - освежить в памяти какая там у меня была TCK...

 

А обновить прошивку в моём Iso Plus можно?

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