|
|
  |
Средства отладки ARM11, Cortex-A8, для отладки Android через JTAG |
|
|
|
Jan 12 2010, 16:10
|

Частый гость
 
Группа: Свой
Сообщений: 93
Регистрация: 5-03-06
Из: Украина, Киев
Пользователь №: 14 970

|
Добрый день уважаемые Армоведы. Возникла необходимость поиграться с платформой Android в чистом виде. Не на уровне Java приложений, а на уровне потрохов и внутренностей железа и пошаговой отладки исходников. Пока все только теоретически, но хочется перейти и к практике. Для этого немного просмотрел что есть на рыке отладочных плат для Android: 1. Texas Instrumentals OMAP kit based on TI OMAP 3530 ( Cortex A8) 600MHz kit здесь или здесь2. Samsung ARM11 S3C6410 ARM1176JZF-S 800 MHz здесь или здесь. У Корейцев есть Mango64 3. Samsung ARM9 S3C2440A ARM920T 400 MHz На форуме уже писали про него. Так же нашел здесь и здесьПока идет выбор платы, решил посмотреть, а чем же можно зацепить ARM11 или Cortex-A8 через JTAG и подебагать в железе. И то, что смог найти: 1. RealView2. UDE/ARM11 Universal Debug Engine3. EDGE debuger from Mentor GraphicsИ как бы в меморис, не много полезных ссылок: 1. The ARM Solution Center for Android2. Android source code3. Qualcomm - Snapdragon4. Samsung - ARM11Есть множество ссылок и мануалов по потому как собрать исходники и получить образ системы, но для меня осталось не ясным следующее: 1. В какой среде можно отлаживать ARM11 или Cortex-A8 через JTAG? 2. Какой нужно купить JTAG что б можно было комфортно дебагать? ( не изобретая велосипед) 3. Как собирать проект? Может у кого есть опыт или пожелания/наставления? Буду очень рад обсудить выше изложенные вопросы и все что касается разработки под Android на asm,С,С++
|
|
|
|
|
Jan 12 2010, 16:23
|
Гуру
     
Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881

|
Могу точно сказать, что если есть TI-шный CCS и совместимый отладчик (xds510 или 560), то CCS зацепит полностью со всеми потрохами ARM-11 и Cortex-A8, по крайней мере TIшного производства, драйвера в CCS для них выпущены для ARM11 с рождения 3-его композера, а для Cortex-ов (всех) кажется с сервис-релиза SR7. Если речь именно про OMAP - то будет можно дебажить параллельно и одновременно оба ядра, и DSP тоже.
насчет комфортности и прочего, включая "андроид", о котором я не слышал, я не в курсе, но на физическом уровне все подцепится и будет отлаживаться.
|
|
|
|
|
Jan 12 2010, 16:59
|

Частый гость
 
Группа: Свой
Сообщений: 93
Регистрация: 5-03-06
Из: Украина, Киев
Пользователь №: 14 970

|
Цитата(SM @ Jan 12 2010, 18:23)  Могу точно сказать, что если есть TI-шный CCS и совместимый отладчик (xds510 или 560), то CCS зацепит полностью со всеми потрохами ARM-11 и Cortex-A8, по крайней мере TIшного производства Ну насчет OMAP процессора у меня как бы сомнений нет что его родная Code Composer Studio зацепит. Вопрос, можно ли будет создать в нем проект и редактировать исходники из него. Или он сможет только дебагать, а собирать надо будет под линуксом. Вот нашел еще полезный ресурс Android on OMAPМеня еще также волнует вопрос, а подружится ли он с Samsung ?
|
|
|
|
|
Jan 12 2010, 17:18
|
Гуру
     
Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881

|
Цитата(Bosicc @ Jan 12 2010, 19:59)  Вопрос, можно ли будет создать в нем проект и редактировать исходники из него. Или он сможет только дебагать, а собирать надо будет под линуксом. Редактировать исходники и вести проект точно можно. Собрать... Ну собиралка для АРМ в нем есть - его родные компиляторы - но я понятия не имею, соберет ли оно то, что Вам нужно. Вообще скачать и попробовать никто не мешает. Цитата(Bosicc @ Jan 12 2010, 19:59)  Меня еще также волнует вопрос, а подружится ли он с Samsung ? Гарантий нет. Может подружится, может не подружится. Был вот когда-то опыт с Excalibur (ARM926 кажется) - так вот, CCS 2-ой версии его подхватывал как родной, а 3-шка отказывалась. Так что только методом тыка.
|
|
|
|
|
Jan 12 2010, 18:07
|

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

|
Вот тут вы почувствуете всю "открытость" Андроида. Вам по сути надо отлаживать Линукс. Причем после специфичного патча. А вам ведь нужно перестроить ядро чтоб туда попала отладочная информация. Это первая проблема. Далее, значит все типа CCS, RealView, EDGE-йе ... идет лесом. Ни в чем этом вы не сможете не только собрать, но и нормально парсить и редактировать исходники. Об отладке через JTAG даже речи быть не может, они никто не понимают файлов с отладочной информацией Линукса. (а сначала они под Линуксом сами должны работать) Да, погонять биты по JTAG-у сможете, даже увидите регистры процессора в неизвестном модуле, процессе, треде и адресном пространстве! Но как понимаете это не отладка. Есть только путь через Eclipse->CDT->GDB (JTAG который выберете должен поддерживать GDB). Но и тут собственно операционку, драйвера и процессы проблематично визуализировать. Т.е. получится ли в принципе поставить брекпойнт в драйвере и ожидать что CDT остановиться там где надо и правильно покажет все адресное пространство с локальными переменными в контексте ядра Линукса науке не известно. По крайней мере свидетельств этому в инете либо нет либо крайне мало. Цитата(Bosicc @ Jan 12 2010, 18:10)  Добрый день уважаемые Армоведы.
Возникла необходимость поиграться с платформой Android в чистом виде. Не на уровне Java приложений, а на уровне потрохов и внутренностей железа и пошаговой отладки исходников.
|
|
|
|
|
Jan 13 2010, 08:35
|

Местный
  
Группа: Свой
Сообщений: 290
Регистрация: 27-06-05
Из: Киев
Пользователь №: 6 345

|
Цитата(AlexandrY @ Jan 12 2010, 21:07)  Вот тут вы почувствуете всю "открытость" Андроида. Вам по сути надо отлаживать Линукс. Причем после специфичного патча. А вам ведь нужно перестроить ядро чтоб туда попала отладочная информация. Это первая проблема. Далее, значит все типа CCS, RealView, EDGE-йе ... идет лесом. Ни в чем этом вы не сможете не только собрать, но и нормально парсить и редактировать исходники. Об отладке через JTAG даже речи быть не может, они никто не понимают файлов с отладочной информацией Линукса. (а сначала они под Линуксом сами должны работать) Да, погонять биты по JTAG-у сможете, даже увидите регистры процессора в неизвестном модуле, процессе, треде и адресном пространстве! Но как понимаете это не отладка. Есть только путь через Eclipse->CDT->GDB (JTAG который выберете должен поддерживать GDB). Но и тут собственно операционку, драйвера и процессы проблематично визуализировать. Т.е. получится ли в принципе поставить брекпойнт в драйвере и ожидать что CDT остановиться там где надо и правильно покажет все адресное пространство с локальными переменными в контексте ядра Линукса науке не известно. По крайней мере свидетельств этому в инете либо нет либо крайне мало. Есть GDB сервер под Segger. Вы не пробовали его в этой цепочке Eclipse->CDT->GDB? Segger последних версий вроде бы adaptive clocking поддерживает.
--------------------
Если в сердце дверь закрыта - надо в печень постучать..
|
|
|
|
|
Jan 13 2010, 10:08
|

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

|
Ну загрузчики Линукса это примитивные по сути программки в пару килобайт кода. При определенном рефакторинге их можно дебагить абсолютно любой оболочкой под ARM от Keil-а и IAR-а до RealView и Tasking-а, и любым JTAG-ом И это как бы не интересно. Совершенно иное дело когда у вас включен по полной MMU и динамическая загрузка библиотек. Вот определенное мнение по этому поводу: http://www.celinux.org/elc08_presentations...AG_Anderson.pptИз которого следует что KDevelop и CDT отдыхают. Нужен специальный агент на целевой платформе (GDB функциональности здесь недостаточно) и специальная поддержка со стороны драйверов JTAG. Иначе светит ковыряться ручками в бессмысленных значениях регистров и бесконечных дампах памяти в поисках нужного процесса. И похоже что на халяву таких тулсов нет. Цитата(vanokuten @ Jan 13 2010, 00:44)  На уровне JTAG и отладки начального загрузчика (скорее всего u-boot) можно использовать gdb + OpenOCD
Eclipse->CDT->GDB вполне рабочий вариант или любая другая IDE под Linux например KDevelop
|
|
|
|
|
Jan 14 2010, 15:48
|
Знающий
   
Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858

|
Цитата(AlexandrY @ Jan 12 2010, 22:07)  Т.е. получится ли в принципе поставить брекпойнт в драйвере и ожидать что CDT остановиться там где надо и правильно покажет все адресное пространство с локальными переменными в контексте ядра Линукса науке не известно. Не отношусь к научным работникам но делал это достаточно легко на современных ядрах linux на arm. Посмотрите про kgdb причем даже jtag не нужен. http://kgdb.wiki.kernel.org/index.php/Main_Page - в последних ядрах уже ничего не нужно патчить, он включен в основную ветку ядра.
Сообщение отредактировал sasamy - Jan 14 2010, 16:28
|
|
|
|
|
Jan 14 2010, 19:15
|

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

|
Не вводите только в заблуждение. Где написано с какими именно JTAG-ами kgdb умеет работать? То что есть софтварные отладчики для Линукс нельзя не заметить, позанимавшись темой хотя бы 5 минут. Но человека интересует именно JTAG. Подозреваю, что именно потому что он не может поднять kgdb ввиду "открытости" Андроида. Но и с JTAG-ом будет облом, вот и вся информация... Цитата(sasamy @ Jan 14 2010, 17:48)  Не отношусь к научным работникам но делал это достаточно легко на современных ядрах linux на arm. Посмотрите про kgdb причем даже jtag не нужен. http://kgdb.wiki.kernel.org/index.php/Main_Page - в последних ядрах уже ничего не нужно патчить, он включен в основную ветку ядра.
|
|
|
|
|
Jan 14 2010, 22:00
|

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

|
Вы правы в своих словах и в своем контексте. Настоящий контекст нам неизвестен, человек хочет JTAG. По выложенным им ссылкам можно конечно предположить что он немного не понимает сути проблем. Скажем то, что хождением по шагам Линукс с Андроидом не понять. Но может речь действительно идет о попытках ловли хардварных траблов на сырой платформе, скажем как раз тех китайских на которые были даны ссылки. Софтварные отладчики типа kgdb хороши когда у вас как минимум отладочный канал работает без проблем и ядро. Но на сырых платформах падать может что угодно, там могут быть элементарные проблемы с целостностью сигналов или некорректной инициализацией в фирменном BSP. Здесь только JTAG поможет и больше ничего, а еще лучше вместе с аппаратным трассировщиком. И JTAG потом в течении жизненного цикла постоянно будет нужен. Можно конечно и без него, но время отладки вырастает в разы. Цитата(sasamy @ Jan 14 2010, 22:11)  В заблуждение вводите Вы, причем постоянно. Я дал ответ на конкретное высказываение конкретного человека- Вас то есть, про невозможность отладки ядра linux. Про открытость андроида я ничего не знаю. А jtag для kgdb нужен как русалке лыжи - он нормально через последовательный порт работает как gdb-сервер. Потом что подразумевается под софтварным отладчиком ? kgdb - это не отладка в эмуляторе а самая настоящая отладка на настоящем железе с возможностью пошагового исполнения в разумных пределах конечно. Соответственно jtag - как промежуточное звено которе потом один фик выступает как локальный gdb-сервер между железом и отладчиком на рабочем столе не нужен как класс.
|
|
|
|
|
  |
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|