Перейти к содержанию
    

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

 

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

 

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

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

 

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

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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 есть небольшие выбросы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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 построен так, что в нет ничего для корректного завершения после ошибочной ситуации. Внутренние эмуляционные блоки процессора остаются черти в каком состоянии, из которых корректно выйти практически невозможно.

Изменено пользователем SAURIS GmbH

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

UPD2:

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

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

 

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

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

post-63539-1403640465_thumb.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Может что-то не так понимаю, для 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.

Изменено пользователем SAURIS GmbH

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

с самой прошивкой и её стартом не мог разобраться, на какие-то непонятные адреса всё перепрыгивало.

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

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

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

post-63539-1403689387_thumb.jpg

post-63539-1403689393_thumb.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

Ранее считал, что проблема может быть как-то связана с отсутствием или наличием неправильного 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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

 

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

Изменено пользователем SAURIS GmbH

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нашёл, как должна выглядеть настройка адаптивного тактирования в 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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нашёл, как должна выглядеть настройка адаптивного тактирования в 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, что говорит о том, что ему это надо.

Изменено пользователем SAURIS GmbH

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Эта "так штаа..." есть 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 можно?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...