|
проблема в J-LINK или at91sam7s64, проблема при работе с китайским J-LINK 8 или же проблема с самим ARMом |
|
|
|
Sep 30 2013, 17:13
|
Местный
  
Группа: Участник
Сообщений: 248
Регистрация: 30-09-11
Пользователь №: 67 474

|
Всем привет.
Решил Сам собрать себе дисковери кит на базе at91sam7s64-ek. Подарили мне китайский J-Link 8 c прошивкой 3.20. Недолго думая я посетил сайт производителя SEGGER и скачал от туда версию 4.76е. Пере прошил проггер на эту версию с новым серийником. Использовал кейген для лицензий (установились все кроме GDBserver). Использую IAR ARM 6.3, ОС - Windows 7 ultimate. Пробовал зашить его и включить debug, но выдал ошибку по RDI, перезагрузил программатор и плату, потом выдал ошибку: BAD JTAG communication write to IR: expected 0x1, got 0x0 <TAP command : 15> @ off 0x5. Потом опять перезагрузил, но выдало уже FAiled to measure total IRlen. И так замкнутый круг.
Запустил J-link arm консоль. Выдал: VTARGET: 3.31 V IRLEN: 04, IRPrint 0x1, ARM7TDMI CORE
Значит проц то J-LINK видет. НО!!!!
Запускаю команду testwspeed на скорости 100 кГц. И выдает Write test failed. Пробую testcspeed - выдает NO RAM available @ address 0x0. Пробовал на скоростях от 10 кГц и выше Опять перезагружаю все вместе с программой J-link arm , но выдает уже IRLEN: 04, UNKNOWN DEVICE. Опять перезагружаю. Появляется IRLEN: 04, IRPrint 0x1, ARM7TDMI CORE, выставляю скорость в 4 кГц, выдает BAD JTAG communication...
Со стороны своей платы все прозвонил - ничего не замыкает, все ножки правильно подключены к J-LINK. Все необходимые линии подтянуты, как на схеме ATmel. Пробовал и с JTAG_SEL играть - резистором 5 кОм на + и на -. На плюс подтягивал - совсем не работало. На минус - работало. По описанию по идее там внутренняя подтяжка 15 кОм на землю. Так что я думаю это излишне. Со стороны J-LINK не припаял только nTRST - потому что некуда.
Не могу понять в чем дело. Народ, пожалуйста, подскажите где и куда копать? В чем проблема может быть?
Заранее спасибо.
|
|
|
|
|
Sep 30 2013, 18:04
|
Местный
  
Группа: Участник
Сообщений: 248
Регистрация: 30-09-11
Пользователь №: 67 474

|
Спасибо огромное за мысль!!! Я ведь тоже китайский переходник с 20-pin разъема на другие разъемы использую!!! Надо будит разобраться с ним. Еще момент нашел статью одну про китайских J-LINK, пишут что ставить версию SEGGER J-LINK надо не больше 4.24, а у меня 4.76е. Стоит ли делать downgrade, если он меня хоть как то дышит?
|
|
|
|
|
Oct 2 2013, 13:57
|
Местный
  
Группа: Свой
Сообщений: 491
Регистрация: 16-01-05
Из: Санкт-Петербург
Пользователь №: 1 987

|
Цитата(max_mart @ Sep 30 2013, 22:04)  Еще момент нашел статью одну про китайских J-LINK, пишут что ставить версию SEGGER J-LINK надо не больше 4.24, а у меня 4.76е. Стоит ли делать downgrade, если он меня хоть как то дышит? Про такие тонкие моменты J-Link'ов ничего не могу сказать. Но если знаете, как делать не только downgrade, но и upgrade, и вообще, как восстановить состояние - то почему не попробовать все варианты?
|
|
|
|
|
Oct 5 2013, 14:50
|
Местный
  
Группа: Участник
Сообщений: 248
Регистрация: 30-09-11
Пользователь №: 67 474

|
Спасибо большое за ответы и желание помочь. Я раньше все время только с пиками, да с аврками и иксмегами работал только и беды не знал. А вот сейчас нужна мощь и проблемы пошли. Да и этих армов в запасе около 40 штук. Вот и решил начать грызть гранит науки ARM.
нету. имеется ввиду, тот который работает от LPT? У меня ведь и LPT, то нету.
У меня вот, что недавно получилось:
Написал пробную программу для at91sam7s64 в IAR ARM 6.30 , чтобы узнать в чем дело. Значит ситуация следующая: 1) Проект отканфигурирован под дебаггер RDI j-link 8, настройки linker - at91sam7s64.icf. Output converter - поставил создать дополнительный binary файл. Почему после компиляции этот файл весит 1 кб, а другой файл .out 32кб? Когда нажимаю download and debug, то вылазиет ошибка Failed to measure CPU clock frequency, но почему-то в отладку заходит после нажатия ОК. Что это может значить? При этом, если я использую J-link commander, то он выдает ту же ошибку TDO constant high!!! 2) Пробовал через SAM-BA 2.12 прошить. Сначала выполнил команду Eraseall. Затем попытался загрузить, создавшийся .bin в ARM. Операция прошла успешно. Но запрограммированные функции не выполняются. Правильно ли я зашиваю? Почему bin весит 1 кб.? Поэтому и возникают выше пречисленные вопросы. Помогите, пожалуйста, найти на них ответы.
Для PLL выставил 1.5 кОм, 1нФ, 10 нФ, как в ките. НО!!!
Не понятный момент: PLL, если высчитывать по атмеловскому калькулятору, то при делителе 5 и умножителе 25 (как в шаблоне проекта) = ~92,16 MHz. И нужно поставить якобы 874 Ом, 11нФ, 1нФ
Как это понимать? На что ссылаться?
|
|
|
|
|
Oct 7 2013, 18:54
|
Местный
  
Группа: Свой
Сообщений: 491
Регистрация: 16-01-05
Из: Санкт-Петербург
Пользователь №: 1 987

|
Цитата(max_mart @ Oct 5 2013, 18:50)  нету. имеется ввиду, тот который работает от LPT? У меня ведь и LPT, то нету. Жаль. ByteBlaster - на LPT, USB Blaster - на USB. В принципе, можно и другие JTAG кабели использовать, лишь бы была уверенность в их 100% работоспособности, и софтина была бы, которая умеет с ними работать и дает доступ к низкоуровневым операциям с JTAG - например такая, как open source'ная Universal JTAG (UrJTAG). По работе с Atmel ARM'ами я не советчик - у меня до них руки не доходили пока. Разве что-нибудь замечу из самых общих инженерных соображений - это пожалуйста. Цитата(max_mart @ Oct 5 2013, 18:50)  1) Проект отканфигурирован под дебаггер RDI j-link 8, настройки linker - at91sam7s64.icf. Output converter - поставил создать дополнительный binary файл. Почему после компиляции этот файл весит 1 кб, а другой файл .out 32кб? Из того, что я знаю, .out файл и есть исполняемый файл. А что за binary файл размером 1 кБ? Объектник? Если так, то понятно, откуда разница - библиотеки прилинковались, скорее всего. Цитата(max_mart @ Oct 5 2013, 18:50)  При этом, если я использую J-link commander, то он выдает ту же ошибку TDO constant high!!! Похоже, у вас все-таки есть какие-то низкоуровневые проблемы. Точнее не скажешь пока. То ли железка имеет проблему, то ли firmware не совсем корректно что-то делает.... Я бы присмотрелся к этому коммандеру, изучил бы документацию на него. Судя по всему, он как раз мог бы помочь с низкоуровневой отладкой JTAG соединения с target'ом. Наверняка там есть что-то типа команды, в цикле производящей считывание ID чипов в JTAG цепочке, или еще что-то в этом роде. Это было бы большим подспорьем. Хорошо бы после изучения документации опробовать кабель на 100% работающем устройстве (неважно, с каким чипом - лишь бы его ID был известен).
|
|
|
|
|
Oct 14 2013, 17:40
|
Местный
  
Группа: Участник
Сообщений: 248
Регистрация: 30-09-11
Пользователь №: 67 474

|
Всем Привет. Проблема решилась. Дeло оказалось в PLL. И очень странная ситуация: Сначала использовал обвеску из 1.5 кОм, 1 нФ, 10 нФ с настройками PLL: делитель 5, умножитель 25, PLL_counter 28 (845 мкС). Это не работало. Скачал программу калькулятор PLL. И оказалось совсем другое, что резистор нужен не 1.5 кОм, а 1 кОм, а для конденсаторов 1 нФ и 10 нФ, нужно выставить делитель не 25, а 23. Заработало, но с глюками. Выставил PLL_counter 33 (1000 uS) - глюки пропали. Почему такая разница??? В чем кроется подвох? Программирую через SAM-BA. Почему-то, если не отключусь от PA16 (ножка для SAM-BA), то может не запуститься ARM, а может и заработать моя прошивка. В чем может быть причина? Да и почему-то не обрабатывает одновременное нажатие 2-х кнопок и даже не инициализируется процессор. Но это лишь в том случае, если этот код используется (не закомментирован). А когда я его комментирую, то проблем нет и я их использую по отдельности. процессор инициализируется. Код: CODE #define button3 ((m_pPio->PIO_PDSR)&(BIT27|BIT28)) // 27, 28 - ноги
void delay (volatile unsigned long int a) { while (--a!=0); }
int main (void) { ... while (1) { ... if (!button3) { delay(10000) if (!button3!) { setLED1; delay(1000000); clearLED1; setLED2; delay(1000000); clearLED2; while (!button3); } }; } }
Данным способом я уже давно пользуюсь, но только на 8 битках и он работает на УРА. В чем может быть проблема? Заранее спасибо Забыл указать, что среда программирования IAR ARM 6.30
Сообщение отредактировал IgorKossak - Oct 15 2013, 13:07
Причина редактирования: [codebox] для длинного кода, [code] - для короткого!!!
|
|
|
|
|
Oct 14 2013, 17:47
|
Знающий
   
Группа: Свой
Сообщений: 583
Регистрация: 7-06-06
Из: Таганрог
Пользователь №: 17 840

|
Цитата(max_mart @ Oct 14 2013, 20:42)  Проблема решилась. Дeло оказалось в PLL. И очень странная ситуация Я бы посоветовал подробнее поизучать инициализацию PLL. Очень часто встречается, когда в PMC_MCKR одной операцией заносится и новый источник тактирования (CSS) и новый прескалер (PRES) при переходе со Slow clock на PLL clock. Неоднократно наблюдал, когда контроллер впадает в ступор и наблюдаются всякие чудеса. После переделки (сначала PRES, MCKRDY, потом CSS, MCKRDY) неработоссобная плата начинала вести себя адекватно и подвисаний не замечено. ЗЫ. И симптомы похожие: то запустится через 2 минуты, то сразу. Меняя элементы PLL, топологию разводки кварца, как будто наступает улучшение, но при длительном тестировании все равно наблюдаются подвисания, так что посмотрите как у Вас идет инициализация.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|