Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: как отлаживать at91sam7x имея jLink?
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
anpilog
Суть проблемы такова:
имеем at91sam7x256 и Jlink JTAG
Работает простой код (crossworks)
Но как отлаживать работу OS (FreeRTOS, ethernut, uCos и т.д.)?
То есть понятно как это делать, если они хоть как-то работают (blink.c например 8) )
Но что делать если скомпилированный пример не работает вообще - процессор просто не подает признаков жизни (работу кварца проверить нечем).

Какой подход в этом случае?
Каким ПО пользоваться, куда копать, что читать?
Master
Цитата(anpilog @ Jan 11 2007, 22:59) *
... процессор просто не подает признаков жизни (работу кварца проверить нечем).

Какой подход в этом случае?
Каким ПО пользоваться, куда копать, что читать?

Для того, чтобы начать отлаживать софт, необходима рабочая "железка".
Можно аналитически предполагать о возможных причинах неработоспособности процессора и выдвигать гипотезы о нужных действиях, но IMHO проще подъехать к знакомым, у которых есть хотя бы аналоговый осциллограф и убедиться, что, как минимум, запускается ядро. Дальше можно загрузить любой пример, благо их есть у Atmel, и почти все рабочие wink.gif Проверить его работу. И только потом уже лить ось, и отлаживать на ней приложения.

Удачи в Вашем (равно как и нашем) нелёгком деле!
anpilog
Цитата(Master @ Jan 11 2007, 23:30) *
Для того, чтобы начать отлаживать софт, необходима рабочая "железка".
Можно аналитически предполагать о возможных причинах неработоспособности процессора и выдвигать гипотезы о нужных действиях, но IMHO проще подъехать к знакомым, у которых есть хотя бы аналоговый осциллограф и убедиться, что, как минимум, запускается ядро. Дальше можно загрузить любой пример, благо их есть у Atmel, и почти все рабочие wink.gif Проверить его работу. И только потом уже лить ось, и отлаживать на ней приложения.

Удачи в Вашем (равно как и нашем) нелёгком деле!


Правильный ли я сделал вывод о том, что ядро запускается из того, что работает "blink.c" (управление светодиодом) в среде crossworks?
при этом замечательно работает пошаговая отладка через jlink
Полностью согласен с Вашими рекомендациями и в принципе так и поступаю.
Но вот что мне делать если "blink.c" работает а что-то большее нет?
К слову вполне жизненная ситуация: http://electronix.ru/forum/index.php?showtopic=25782
aaarrr
Цитата(anpilog @ Jan 12 2007, 00:48) *
Но вот что мне делать если "blink.c" работает а что-то большее нет?

Искать причину. В подавляющем числе случаев, даже простой светодиод позволяет установить место и причину возникновения проблемы, тем более, что на SAM'е им можно управлять откуда угодно - JTAG для этого совсем не обязателен.

P.S. Сужу по себе - JTAG'ом на ARM для отладки не пользовался никогда, только на DSP всяких smile.gif
Master
Цитата(anpilog @ Jan 12 2007, 00:48) *
Правильный ли я сделал вывод о том, что ядро запускается из того, что работает "blink.c" (управление светодиодом) в среде crossworks?
при этом замечательно работает пошаговая отладка через jlink
Полностью согласен с Вашими рекомендациями и в принципе так и поступаю.
Но вот что мне делать если "blink.c" работает а что-то большее нет?
К слову вполне жизненная ситуация: http://electronix.ru/forum/index.php?showtopic=25782

Полагаю, правоту сделанных выводов Вы можете оценить только сами. Любое мнение будет субъективным.
Если отойти от философии, то с CW я пока (к большому сожалению) дела не имел. Пишу под IAR.
Насчёт ситуации по указанной ссылке, я заметил в коде использование таймера - гарантируете, что правильно настроен?
Помнится, в первых версиях моего прибора пошаговая отладка также работала. Соответственно, работоспособность кода было видно только под отладчиком. Как только отладчик вытаскивали, камень вставал в позу... .
Но раз пошаговая отладка работает, пробуйте отловить момент, на котором выполнение останавливается.
Alex03
Ёщё, по крайней мере у меня в связке CW+JLink+LPC, есть непонятки с отваливанием прерываний.
Гарантированный способ у меня - ручное нажатие RESETa.

Плюс сбойность при отладке по JTAG-у.

Вообще по моему в CW чтото с reset-скриптом LPC намудрили. Да и меняют его от версии к версии.
Может я его с моим супервизором ресета/питания не смог подружить.
anpilog
Хмм...
Спасибо за ответы!!!

В моей ситуации есть код работающий под CW, но не работающий под GNU (WinARM, YAGARTO)
У меня возникает вопрос - как его отлаживать, если у меня нет возможности даже ножку дернуть....

Буду НУ ОЧЕНЕНЬ благодарен если в этом топике всезнающий All сможет привести минимальную схему и исходник обычного blink.c (мигать светодиодом, например).
Так как не имею на руках отладочного кита, даже зацепиться не за что.
Схема собрана максимально близко к атмеловскому даташиту на кит. Может быть там неточности?
Alex03
Цитата(anpilog @ Jan 12 2007, 14:19) *
В моей ситуации есть код работающий под CW, но не работающий под GNU (WinARM, YAGARTO)


Дык CW - и пользует GNU.
Единственный известный мне баг arm-gcc - это неправильная генерация пролога/эпилога для обработчиков прерываний находящийся в *.c модуле. ( типа __attribute__ ((interrupt ("IRQ"))) ) с:
уровнем оптимизации >1 для gcc 3.x.x (-O2 .. -O6, -Os)
уровнем оптимизации >0 для gcc 4.x.x (-O1 .. -O6, -Os)
Баг давно известный но что-то его не правят в официальной ветке. Зато например у klen-а всё есть. smile.gif

Цитата
У меня возникает вопрос - как его отлаживать, если у меня нет возможности даже ножку дернуть....


Чёта я не понял? А JTAG то есть?
anpilog
Цитата(Alex03 @ Jan 12 2007, 12:33) *
Цитата(anpilog @ Jan 12 2007, 14:19) *


В моей ситуации есть код работающий под CW, но не работающий под GNU (WinARM, YAGARTO)


Дык CW - и пользует GNU.
Единственный известный мне баг arm-gcc - это неправильная генерация пролога/эпилога для обработчиков прерываний находящийся в *.c модуле. ( типа __attribute__ ((interrupt ("IRQ"))) ) с:
уровнем оптимизации >1 для gcc 3.x.x (-O2 .. -O6, -Os)
уровнем оптимизации >0 для gcc 4.x.x (-O1 .. -O6, -Os)
Баг давно известный но что-то его не правят в официальной ветке. Зато например у klen-а всё есть. smile.gif

Цитата
У меня возникает вопрос - как его отлаживать, если у меня нет возможности даже ножку дернуть....


Чёта я не понял? А JTAG то есть?

Jtag есть - JLink
Как мне гео использовать в такой ситуации???
Можно разжевать как младенцу - то что надо!!! 8)
Заранее благодарен.
Alex03
Цитата(anpilog @ Jan 12 2007, 15:58) *
Цитата

Чёта я не понял? А JTAG то есть?

Jtag есть - JLink
Как мне гео использовать в такой ситуации???
Можно разжевать как младенцу - то что надо!!! 8)
Заранее благодарен.


Так. Давай всё снова.
Девайс есть.
JLink есть.
CW есть.
Прога компиляется и зашивается в проц? В флешь?
CW Debug->Start debugging (или Reset and debug) на main-е тормозяться?
Далее пошаговая отладка.
Или вообще в любой момент времени Attach Debugger и Break Execution и смотрим где оно крутится (когда проблемы часто в aborte smile.gif ).

Или я чё не понял опять?
anpilog
Цитата(Alex03 @ Jan 12 2007, 18:30) *
Так. Давай всё снова.
Девайс есть.
JLink есть.
CW есть.
Прога компиляется и зашивается в проц? В флешь?
CW Debug->Start debugging (или Reset and debug) на main-е тормозяться?
Далее пошаговая отладка.
Или вообще в любой момент времени Attach Debugger и Break Execution и смотрим где оно крутится (когда проблемы часто в aborte smile.gif ).

Или я чё не понял опять?


Понял - так.
Это я понимаю и делаю.
Но вот мне надо теперь заупстить, например, тот же ethernut ил freertos (под GNU GCC - winarm или yagarto).
А оно не заводится, причем майтейнеры и комьюнити говорят, что у них все работает.
А у меня - нет.
Как мне отлаживать?
Где ошибки искать? Точнее каким образом????
Alex03
Цитата(anpilog @ Jan 13 2007, 01:30) *
Но вот мне надо теперь заупстить, например, тот же ethernut ил freertos (под GNU GCC - winarm или yagarto).
А оно не заводится, причем майтейнеры и комьюнити говорят, что у них все работает.
Как мне отлаживать?
Где ошибки искать? Точнее каким образом????


То мигание светодиодом под CW, то ethernut или freertos под winarm или yagarto.
Может хотябы "или" убрать.
Если вопрос в winarm или yagarto то я ничего не скажу. Но для отладки видимо глядеть надо в сторону gdb и его фронтэндов.
Или начать с тойже freertos под CW а уж по факту запуска/работы перенести проект на тотже winarm.
Мусатов Константин
Мне удалось запустить проект FreeRTOS по IAR. Сначала у меня был 128-й камень на плате и я помучился с управлением памятью, которой в нем в 2 рза меньше. В итоге web пришлось отключить. Заодно поставил нормальный IP адрес. Сейчас перепаяли камень на 256-й и в понедельник буду web включать обратно. Отладку сети дебагером не пробовал. А вот простой код нормально отлаживался, вобщем-то так и разобрался, что не хватало памяти. Делаешь маленький стк - при работе его не хватает и приложение падает. Делаешь маленькую кучу, часть приложений вообще не запускается.

А вот перенсти тестовый пример FreeRTOS под Yagarto пока не получилось, смотри в соседней аетке.
Andy Great
У меня работает скомпиленный Кейлом Блинк для FreeRTOS на LPC2214. Точки прерывания и пошаговый проход, светодиод мигает.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.