|
|
  |
Дэбаг непрерывного процесса?, IAR 4.41A, AT91SAM7S256 |
|
|
|
Jun 17 2009, 20:34
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Цитата(zltigo @ Jun 18 2009, 00:17)  Угу, не видете разницы, между отладкой программ и отладкой ядер процессоров? Тяжело,небось, стало без чего-нибуть хотя-бы типа древнего ETM (http://www.segger.com/jtrace_general.html) роутинг отлаживать  . А время последовательных, причем дейсвительно изначально многофункциональных интерфейсов наступило. C унификацией не очень  , на конкретных производителей западать пока не очень хочется, посему пока на вечно молодом UART. ну Вы уже как нить определитесь куда меня отнести... то что мне хватает виглера и просто брейкпоинтов не значит что я не знаю как можно пользовать нексус... разговор то о том что без брейкпоинтов иногда бывает очень грустно...
|
|
|
|
|
Jun 17 2009, 20:52
|
Гуру
     
Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881

|
Цитата(zltigo @ Jun 18 2009, 00:33)  Не поедставляю, зачем трассировка в реалтайме для "отладки софта". Трассировка в самом реалтайме, разумеется, не нужна. Она нужна, если по результатам анализа данных, поступивших в реалтайме, остановили процессор, и хотят узнать, где он был "тогда". Ну и в общем смысле, посмотреть историю за некоторое время до возникновения ошибочной ситуации, приведшей к останову, так как останов может случиться далеко не в том месте, где произошла ошибка. А к отладке ядер оно отношения не имеет никакого. Да и nexus, собственно, не определяет физические провода, он разрешает и JTAG, и другие порты, думаю, и против чего-нить быстрого сериального, например RapidIO-линка  - всего два провода, а 3 Гбит/с, иметь не будет...
|
|
|
|
|
Jun 18 2009, 06:05
|

Ally
     
Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050

|
Вот и расказали бы о своей конкретной грусти. Т.е. больше конкретики, Use Case-ов как говорится. Аргумент что все порты заняты как бы не принимаются. Композитный дивайс на USB это классика, и нас применяется повсеместно. Вот для подъема USB логично применить JTAG. Но дальше проблемки есть, среди них: JTAG не видит состояния памяти так как видит ее процессор через свой кэш. Т.е. на стопе дамп дает неправильный снимок памяти JTAG не видит буфферизацию записи. Опять же на стопе дамп дает неправильный снимок памяти Что JTAG видит в SoC-ах с акселераторами доступа FLASH тож тайна покрытая мраком. Чтение через JTAG в реал-тайме используя семихостинг вносит местный эффект в выполнение кода. Баги могут временно пропадать. Призводители умеют манипулировать JTAG сигналами когда вы пытаетесь лезть в области содержащие защищенный код или периферию, это еще вносит путаницу. Наконец цикл отладки под JTAG просто длинее по времени чем отладка средствами встроенными в сам код. Для старта отладки по JTAG нужен длиный период загрузки символьной отладочной информации, а перед этим скомпилить надо с отладочной информацией, а перед этим оптимизацию снизить до 0. Вообщем лучше всех бы нам рассказал о всех неудобствах отладки через JTAG это SM поскольку CCS для ARM самый медленный и дубовый компилятор в мире. Цитата(singlskv @ Jun 17 2009, 23:34)  ну Вы уже как нить определитесь куда меня отнести... то что мне хватает виглера и просто брейкпоинтов не значит что я не знаю как можно пользовать нексус... разговор то о том что без брейкпоинтов иногда бывает очень грустно...
|
|
|
|
|
Jun 18 2009, 08:16
|
Гуру
     
Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881

|
Цитата(AlexandrY @ Jun 18 2009, 10:05)  Вообщем лучше всех бы нам рассказал о всех неудобствах отладки через JTAG это SM Могу сказать совершенно точно, что драйвера отладки обеспечивают видимость всего через кеши и прочие буфера и акселераторы именно так, как это видит процессор. И, при надобности, сливают или инвалидатят кеши, обеспечивая когерентность. Это совершенно надуманная проблема. Кеши не мешают отладке ни на каком из семейств процессоров, поддерживаемых CCS. Гораздо больше неприятностей от MMU, если его задействовать, так как ни драйвера, ни среда о нем без понятия, и "куда уехал цирк", а именно адреса внешних устройств, оно не догадывается. Цитата(defunct @ Jun 18 2009, 05:07)  Доки на RDI только под NDA идут (в бумаге).. закрытый он. Ясно, спасибо, работаем  . По ходу он уже и устарел, нынче RDDI заменил RDI. И он, все же, не в бумаге, но под лицензией.
|
|
|
|
|
Jun 18 2009, 14:02
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Цитата(AlexandrY @ Jun 18 2009, 10:05)  Аргумент что все порты заняты как бы не принимаются. Композитный дивайс на USB это классика, и нас применяется повсеместно. Вам не кажется что консоль на композитном USB девайсе выводящая дамп при попадании в дата аборт это несколько оригинальное решение ? Цитата Вот для подъема USB логично применить JTAG. то есть JTAG таки бывает нужен... Цитата Наконец цикл отладки под JTAG просто длинее по времени чем отладка средствами встроенными в сам код. иногда длиннее иногда короче, сильно зависит от ошибки. Цитата Для старта отладки по JTAG нужен длиный период загрузки символьной отладочной информации, а перед этим скомпилить надо с отладочной информацией, А кто мешает компилить всегда с отладочной инфой а шить из параллельно создаваемого BIN ? Цитата а перед этим оптимизацию снизить до 0. Для вменяемой отладки мне хватает снижения до 1 иначе во флеш уже не лезет...
|
|
|
|
|
Jun 18 2009, 14:41
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Цитата(zltigo @ Jun 18 2009, 18:25)  И с таким уровнем считаем, что система "рабочая"  . уровень снижаеться только на время отладки, после нахождения бага он опять меняеться на -O2 или -Os кстати разница в размере кода между -Os и -O1 в моем случае всего ~10% Цитата Остается более-менее посмотреть буфера какие-нибудь. А при сбросе уровня оптимизации "для посмотреть", все, что более-менее зависит от времени хорошо уплывает. Дык так и используеться, сбросил уровень оптимизазии, нашел багу, поднял уровень, смотрим через "консоль". Кстати, "для посмотреть" буфера уровень оптимизации вобще не нужно сбрасывать, это нужно только для чуть-чуть походить по коду.
|
|
|
|
|
Jun 18 2009, 14:53
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(SM @ Jun 18 2009, 17:45)  Так это уже бага, которую надо ловить и лечить - если от уровня оптимизации что-то куда-то уплывает. Долго смеялся Цитата(singlskv @ Jun 18 2009, 17:41)  Дык так и используеться, сбросил уровень оптимизазии, нашел багу, Баг зависил от времени исполнения какого либо куска ( о том, что он раз в неделю проявляется, при неудачном расплоложении звезд на небе у встречной стороны вообще молчу) Дальнейшие действия? Цитата смотрим через "консоль". Простите, а кто "ставил условия" - для консолей интерфейсов нет и не будет? Отлаживаться будем через JTAG причем стоя в гамаке через Wiggler. Цитата Кстати, "для посмотреть" буфера уровень оптимизации вобще не нужно сбрасывать, Кстати, я об этом и писал
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Jun 18 2009, 15:43
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Цитата(zltigo @ Jun 18 2009, 18:53)  Долго смеялся  то есть все Ваши проги умирают от снижения производительности на 10% ? огласите пожалуйста список того что Вы делали и что не нужно покупать  (шутю) Цитата Баг зависил от времени исполнения какого либо куска ( о том, что он раз в неделю проявляется, при неудачном расплоложении звезд на небе у встречной стороны вообще молчу) Дальнейшие действия? Простите, а кто "ставил условия" - для консолей интерфейсов нет и не будет? Отлаживаться будем через JTAG причем стоя в гамаке через Wiggler. Вы не внимательны, условие не жесткое, если заработал модбас по уарту то "консоль"(вывод отладочной инфы) уже туда.
|
|
|
|
|
Jun 18 2009, 15:54
|
Местный
  
Группа: Участник
Сообщений: 214
Регистрация: 19-07-07
Пользователь №: 29 228

|
Цитата(SM @ Jun 18 2009, 18:04)  Т.е. Вы считаете программу, которая на разных уровнях оптимизации ведет себя по-разному НОРМАЛЬНОЙ? Я бы программиста с таким мнением уволил бы неглядя... Ой Ой Ой, меня скоро уволят)))).....а вообще интересная тема, у меня прога хуже работает после того как я ставлю все галочки в разделе оптимизация, хотя по размеру становится меньше в 2 раза(оптимизация то с приоритетом на скорость). Где можно что то почитать типа IAR C++ Compiler Efficient coding? а то вы еще будете долго спорить  ))
--------------------
Нет повести печальнее на свете, чем повесть о хреновом интернете.
|
|
|
|
|
Jun 18 2009, 16:46
|

Ally
     
Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050

|
Не вижу для отладчика возможности заинвалидить кэш иным способом чем выполнить тем же процом принудительно несколько команд с через ICE http://infocenter.arm.com/help/index.jsp?t...222b/index.htmlТут уж местный эффект будет по полной. А драйвера в ССS если позволяют себе инвалидить кэш делают медвежью услугу. Но это не все, есть еще буфера на запись и не только встроенные в ядро, но и прилепленные на AHB производителями непосредственно чипов. Ага, значит CCS не поддерживает MMU...  Оч забавно. А ведь базовый адрес таблицы трансляции лехко читаеться, не сложнее чем кэш заинвалидить. Кстати RealView поддерживает компиляцию для DSP от TI в платформе OMAP совместно с кодом для ARM. А б рекомендовал бросать этот CCS и переходить на RealView. И как там, ССS поддерживает ARM Cortex-A8 для BeagleBoard на OMAP-е? Цитата(SM @ Jun 18 2009, 11:16)  Могу сказать совершенно точно, что драйвера отладки обеспечивают видимость всего через кеши и прочие буфера и акселераторы именно так, как это видит процессор. И, при надобности, сливают или инвалидатят кеши, обеспечивая когерентность. Это совершенно надуманная проблема. Кеши не мешают отладке ни на каком из семейств процессоров, поддерживаемых CCS. Гораздо больше неприятностей от MMU, если его задействовать, так как ни драйвера, ни среда о нем без понятия, и "куда уехал цирк", а именно адреса внешних устройств, оно не догадывается. Ясно, спасибо, работаем  . По ходу он уже и устарел, нынче RDDI заменил RDI. И он, все же, не в бумаге, но под лицензией. Вам вооще совет такой: Включаете JTAG в режим мониторинга, ставите брекпойнты. Перехватываете аборт вызванный брекпойнтом, и пишите интераптами в скоростную консоль хоть по USB, хоть UDP, хоть по SSI.. Прога останавливаться на брекпойтнах не будет и накладные будут меньше чем насиловать JTAG цепочку ICE, особливо если они там реально кэш и буфера инвалидят на каждом чихе. Цитата(coolibin @ Jun 18 2009, 18:54)  Ой Ой Ой, меня скоро уволят)))).....а вообще интересная тема, у меня прога хуже работает после того как я ставлю все галочки в разделе оптимизация, хотя по размеру становится меньше в 2 раза(оптимизация то с приоритетом на скорость). Где можно что то почитать типа IAR C++ Compiler Efficient coding? а то вы еще будете долго спорить  ))
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|