реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> как отлаживать at91sam7x имея jLink?
anpilog
сообщение Jan 11 2007, 22:59
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 145
Регистрация: 11-12-06
Пользователь №: 23 382



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

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

Сообщение отредактировал anpilog - Jan 11 2007, 23:02


--------------------
---
human traffic - всегда 8)
Go to the top of the page
 
+Quote Post
Master
сообщение Jan 12 2007, 00:30
Сообщение #2


Частый гость
**

Группа: Новичок
Сообщений: 170
Регистрация: 26-05-05
Из: Москва
Пользователь №: 5 405



Цитата(anpilog @ Jan 11 2007, 22:59) *
... процессор просто не подает признаков жизни (работу кварца проверить нечем).

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

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

Удачи в Вашем (равно как и нашем) нелёгком деле!
Go to the top of the page
 
+Quote Post
anpilog
сообщение Jan 12 2007, 00:48
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 145
Регистрация: 11-12-06
Пользователь №: 23 382



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

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


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


--------------------
---
human traffic - всегда 8)
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jan 12 2007, 01:19
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(anpilog @ Jan 12 2007, 00:48) *
Но вот что мне делать если "blink.c" работает а что-то большее нет?

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

P.S. Сужу по себе - JTAG'ом на ARM для отладки не пользовался никогда, только на DSP всяких smile.gif
Go to the top of the page
 
+Quote Post
Master
сообщение Jan 12 2007, 01:28
Сообщение #5


Частый гость
**

Группа: Новичок
Сообщений: 170
Регистрация: 26-05-05
Из: Москва
Пользователь №: 5 405



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

Полагаю, правоту сделанных выводов Вы можете оценить только сами. Любое мнение будет субъективным.
Если отойти от философии, то с CW я пока (к большому сожалению) дела не имел. Пишу под IAR.
Насчёт ситуации по указанной ссылке, я заметил в коде использование таймера - гарантируете, что правильно настроен?
Помнится, в первых версиях моего прибора пошаговая отладка также работала. Соответственно, работоспособность кода было видно только под отладчиком. Как только отладчик вытаскивали, камень вставал в позу... .
Но раз пошаговая отладка работает, пробуйте отловить момент, на котором выполнение останавливается.
Go to the top of the page
 
+Quote Post
Alex03
сообщение Jan 12 2007, 08:11
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 359
Регистрация: 9-12-05
Пользователь №: 12 034



Ёщё, по крайней мере у меня в связке CW+JLink+LPC, есть непонятки с отваливанием прерываний.
Гарантированный способ у меня - ручное нажатие RESETa.

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

Вообще по моему в CW чтото с reset-скриптом LPC намудрили. Да и меняют его от версии к версии.
Может я его с моим супервизором ресета/питания не смог подружить.
Go to the top of the page
 
+Quote Post
anpilog
сообщение Jan 12 2007, 12:19
Сообщение #7


Частый гость
**

Группа: Свой
Сообщений: 145
Регистрация: 11-12-06
Пользователь №: 23 382



Хмм...
Спасибо за ответы!!!

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

Буду НУ ОЧЕНЕНЬ благодарен если в этом топике всезнающий All сможет привести минимальную схему и исходник обычного blink.c (мигать светодиодом, например).
Так как не имею на руках отладочного кита, даже зацепиться не за что.
Схема собрана максимально близко к атмеловскому даташиту на кит. Может быть там неточности?


--------------------
---
human traffic - всегда 8)
Go to the top of the page
 
+Quote Post
Alex03
сообщение Jan 12 2007, 13:33
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 359
Регистрация: 9-12-05
Пользователь №: 12 034



Цитата(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 то есть?
Go to the top of the page
 
+Quote Post
anpilog
сообщение Jan 12 2007, 13:58
Сообщение #9


Частый гость
**

Группа: Свой
Сообщений: 145
Регистрация: 11-12-06
Пользователь №: 23 382



Цитата(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)
Заранее благодарен.


--------------------
---
human traffic - всегда 8)
Go to the top of the page
 
+Quote Post
Alex03
сообщение Jan 12 2007, 19:30
Сообщение #10


Местный
***

Группа: Свой
Сообщений: 359
Регистрация: 9-12-05
Пользователь №: 12 034



Цитата(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 ).

Или я чё не понял опять?
Go to the top of the page
 
+Quote Post
anpilog
сообщение Jan 12 2007, 23:30
Сообщение #11


Частый гость
**

Группа: Свой
Сообщений: 145
Регистрация: 11-12-06
Пользователь №: 23 382



Цитата(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).
А оно не заводится, причем майтейнеры и комьюнити говорят, что у них все работает.
А у меня - нет.
Как мне отлаживать?
Где ошибки искать? Точнее каким образом????


--------------------
---
human traffic - всегда 8)
Go to the top of the page
 
+Quote Post
Alex03
сообщение Jan 14 2007, 14:21
Сообщение #12


Местный
***

Группа: Свой
Сообщений: 359
Регистрация: 9-12-05
Пользователь №: 12 034



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


То мигание светодиодом под CW, то ethernut или freertos под winarm или yagarto.
Может хотябы "или" убрать.
Если вопрос в winarm или yagarto то я ничего не скажу. Но для отладки видимо глядеть надо в сторону gdb и его фронтэндов.
Или начать с тойже freertos под CW а уж по факту запуска/работы перенести проект на тотже winarm.
Go to the top of the page
 
+Quote Post
Мусатов Констант...
сообщение Jan 15 2007, 00:49
Сообщение #13


Частый гость
**

Группа: Участник
Сообщений: 188
Регистрация: 10-10-06
Пользователь №: 21 172



Мне удалось запустить проект FreeRTOS по IAR. Сначала у меня был 128-й камень на плате и я помучился с управлением памятью, которой в нем в 2 рза меньше. В итоге web пришлось отключить. Заодно поставил нормальный IP адрес. Сейчас перепаяли камень на 256-й и в понедельник буду web включать обратно. Отладку сети дебагером не пробовал. А вот простой код нормально отлаживался, вобщем-то так и разобрался, что не хватало памяти. Делаешь маленький стк - при работе его не хватает и приложение падает. Делаешь маленькую кучу, часть приложений вообще не запускается.

А вот перенсти тестовый пример FreeRTOS под Yagarto пока не получилось, смотри в соседней аетке.
Go to the top of the page
 
+Quote Post
Andy Great
сообщение Jan 15 2007, 09:31
Сообщение #14


Знающий
****

Группа: Свой
Сообщений: 793
Регистрация: 5-11-04
Из: Краматорск, Украина
Пользователь №: 1 057



У меня работает скомпиленный Кейлом Блинк для FreeRTOS на LPC2214. Точки прерывания и пошаговый проход, светодиод мигает.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 13:09
Рейтинг@Mail.ru


Страница сгенерированна за 0.01468 секунд с 7
ELECTRONIX ©2004-2016