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

 
 
 
Reply to this topicStart new topic
> Средства отладки ARM11, Cortex-A8, для отладки Android через JTAG
Bosicc
сообщение Jan 12 2010, 16:10
Сообщение #1


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

Группа: Свой
Сообщений: 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. RealView
2. UDE/ARM11 Universal Debug Engine
3. EDGE debuger from Mentor Graphics

И как бы в меморис, не много полезных ссылок:
1. The ARM Solution Center for Android
2. Android source code
3. Qualcomm - Snapdragon
4. Samsung - ARM11

Есть множество ссылок и мануалов по потому как собрать исходники и получить образ системы, но для меня осталось не ясным следующее:
1. В какой среде можно отлаживать ARM11 или Cortex-A8 через JTAG?
2. Какой нужно купить JTAG что б можно было комфортно дебагать? (не изобретая велосипед)
3. Как собирать проект? Может у кого есть опыт или пожелания/наставления?

Буду очень рад обсудить выше изложенные вопросы и все что касается разработки под Android на asm,С,С++
Go to the top of the page
 
+Quote Post
SM
сообщение Jan 12 2010, 16:23
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 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 тоже.

насчет комфортности и прочего, включая "андроид", о котором я не слышал, я не в курсе, но на физическом уровне все подцепится и будет отлаживаться.
Go to the top of the page
 
+Quote Post
Bosicc
сообщение Jan 12 2010, 16:59
Сообщение #3


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

Группа: Свой
Сообщений: 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 ?
Go to the top of the page
 
+Quote Post
SM
сообщение Jan 12 2010, 17:18
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 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-шка отказывалась. Так что только методом тыка.
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Jan 12 2010, 18:07
Сообщение #5


Ally
******

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



Вот тут вы почувствуете всю "открытость" Андроида. biggrin.gif
Вам по сути надо отлаживать Линукс. Причем после специфичного патча.
А вам ведь нужно перестроить ядро чтоб туда попала отладочная информация. Это первая проблема.

Далее, значит все типа CCS, RealView, EDGE-йе ... идет лесом.
Ни в чем этом вы не сможете не только собрать, но и нормально парсить и редактировать исходники.
Об отладке через JTAG даже речи быть не может, они никто не понимают файлов с отладочной информацией Линукса. (а сначала они под Линуксом сами должны работать)
Да, погонять биты по JTAG-у сможете, даже увидите регистры процессора в неизвестном модуле, процессе, треде и адресном пространстве!
Но как понимаете это не отладка.
Есть только путь через Eclipse->CDT->GDB (JTAG который выберете должен поддерживать GDB).
Но и тут собственно операционку, драйвера и процессы проблематично визуализировать.
Т.е. получится ли в принципе поставить брекпойнт в драйвере и ожидать что CDT остановиться там где надо и правильно покажет все адресное пространство с локальными переменными в контексте ядра Линукса науке не известно.
По крайней мере свидетельств этому в инете либо нет либо крайне мало.


Цитата(Bosicc @ Jan 12 2010, 18:10) *
Добрый день уважаемые Армоведы.

Возникла необходимость поиграться с платформой Android в чистом виде. Не на уровне Java приложений, а на уровне потрохов и внутренностей железа и пошаговой отладки исходников.
Go to the top of the page
 
+Quote Post
vanokuten
сообщение Jan 12 2010, 22:44
Сообщение #6


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

Группа: Участник
Сообщений: 116
Регистрация: 18-12-04
Из: Минск
Пользователь №: 1 550



На уровне JTAG и отладки начального загрузчика (скорее всего u-boot)
можно использовать gdb + OpenOCD

Eclipse->CDT->GDB вполне рабочий вариант
или любая другая IDE под Linux например KDevelop


--------------------
Go to the top of the page
 
+Quote Post
SM
сообщение Jan 13 2010, 06:21
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(vanokuten @ Jan 13 2010, 01:44) *
gdb + OpenOCD


А вот интересно (в разрезе OMAP) - а он (OpenOCD) разве поддерживает ICEPICK-C? Это JTAG-маршрутизатор, коммутирующий состав JTAG-цепочки внутри чипа.
Go to the top of the page
 
+Quote Post
Trashy
сообщение Jan 13 2010, 07:31
Сообщение #8


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

Группа: Свой
Сообщений: 121
Регистрация: 19-01-05
Пользователь №: 2 049



Если тебе просто поиграться, то купи игруху на базе S5PC100. Odroid называется, за 350 баксов с отладочной мишурой. Сам хотел купить, но мне марвела подсунули. Пока занят.
Go to the top of the page
 
+Quote Post
KostyantynT
сообщение Jan 13 2010, 08:35
Сообщение #9


Местный
***

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



Цитата(AlexandrY @ Jan 12 2010, 21:07) *
Вот тут вы почувствуете всю "открытость" Андроида. biggrin.gif
Вам по сути надо отлаживать Линукс. Причем после специфичного патча.
А вам ведь нужно перестроить ядро чтоб туда попала отладочная информация. Это первая проблема.

Далее, значит все типа CCS, RealView, EDGE-йе ... идет лесом.
Ни в чем этом вы не сможете не только собрать, но и нормально парсить и редактировать исходники.
Об отладке через JTAG даже речи быть не может, они никто не понимают файлов с отладочной информацией Линукса. (а сначала они под Линуксом сами должны работать)
Да, погонять биты по JTAG-у сможете, даже увидите регистры процессора в неизвестном модуле, процессе, треде и адресном пространстве!
Но как понимаете это не отладка.
Есть только путь через Eclipse->CDT->GDB (JTAG который выберете должен поддерживать GDB).
Но и тут собственно операционку, драйвера и процессы проблематично визуализировать.
Т.е. получится ли в принципе поставить брекпойнт в драйвере и ожидать что CDT остановиться там где надо и правильно покажет все адресное пространство с локальными переменными в контексте ядра Линукса науке не известно.
По крайней мере свидетельств этому в инете либо нет либо крайне мало.

Есть GDB сервер под Segger. Вы не пробовали его в этой цепочке Eclipse->CDT->GDB? Segger последних версий вроде бы adaptive clocking поддерживает.


--------------------
Если в сердце дверь закрыта - надо в печень постучать..
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Jan 13 2010, 10:08
Сообщение #10


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
Go to the top of the page
 
+Quote Post
SM
сообщение Jan 13 2010, 10:32
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(AlexandrY @ Jan 13 2010, 13:08) *
Иначе светит ковыряться ручками в бессмысленных значениях регистров и бесконечных дампах памяти в поисках нужного процесса.


Ну не совсем в бессмысленных, "MMU Page Table Viewer" (композерский) все таки некую помощь оказывает... А так вообще да, тяжеловато.
Go to the top of the page
 
+Quote Post
sasamy
сообщение Jan 14 2010, 15:48
Сообщение #12


Знающий
****

Группа: Участник
Сообщений: 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
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Jan 14 2010, 19:15
Сообщение #13


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 - в последних ядрах уже ничего не нужно патчить, он включен в основную ветку ядра.
Go to the top of the page
 
+Quote Post
sasamy
сообщение Jan 14 2010, 20:11
Сообщение #14


Знающий
****

Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858



Цитата(AlexandrY @ Jan 14 2010, 23:15) *
Не вводите только в заблуждение.
Где написано с какими именно JTAG-ами kgdb умеет работать?
То что есть софтварные отладчики для Линукс нельзя не заметить, позанимавшись темой хотя бы 5 минут.
Но человека интересует именно JTAG.
Подозреваю, что именно потому что он не может поднять kgdb ввиду "открытости" Андроида.
Но и с JTAG-ом будет облом, вот и вся информация...


В заблуждение вводите Вы, причем постоянно. Я дал ответ на конкретное высказываение конкретного человека- Вас то есть, про невозможность отладки ядра linux. Про открытость андроида я ничего не знаю. А jtag для kgdb нужен как русалке лыжи - он нормально через последовательный порт работает как gdb-сервер. Потом что подразумевается под софтварным отладчиком ? kgdb - это не отладка в эмуляторе а самая настоящая отладка на настоящем железе с возможностью пошагового исполнения в разумных пределах конечно. Соответственно jtag - как промежуточное звено которе потом один фик выступает как локальный gdb-сервер между железом и отладчиком на рабочем столе не нужен как класс.

Сообщение отредактировал sasamy - Jan 14 2010, 20:38
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Jan 14 2010, 22:00
Сообщение #15


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-сервер между железом и отладчиком на рабочем столе не нужен как класс.
Go to the top of the page
 
+Quote Post

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

 


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


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