Например TDA7294

Форум РадиоКот • Просмотр темы - Как, и в чем отлаживать байт код
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Вт апр 16, 2024 17:01:32

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 27 ]  1,  
Автор Сообщение
Не в сети
 Заголовок сообщения: Как, и в чем отлаживать байт код
СообщениеДобавлено: Сб мар 24, 2018 16:58:07 
Открыл глаза

Зарегистрирован: Вт апр 05, 2011 12:46:14
Сообщений: 69
Рейтинг сообщения: 0
Прошу прощения, уже пятый день напрягаю поисковики, но всегда натыкаюсь на отладку из исходного кода, да еще на отладочной плате. Помогите уже начать отлаживать, а не забивать голову ненужным (пока) материалом.
Имею на руках устройство с Cortex-M3 (STM32F207) на борту. Прочитал из него прошивку, с помощью J-Flash (J-Link кабель) через SWD канал. Нужно пошагово походить по ветвлениям прошивки, прямо на этом процессоре, чтобы понять принцип работы. Но исходного кода прошивки нет. Нужно поставить несколько брейкпоинтов и просмотреть содержимое памяти и регистров в этих точках при остановке.
Какая среда отладки позволяет отлаживать чистый байт-код, без исходного кода?
Сильно не ругайте, я не спец по ARM, только начал их изучать,


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как, и в чем отлаживать байт код
СообщениеДобавлено: Сб мар 24, 2018 18:30:51 
Друг Кота
Аватар пользователя

Карма: 32
Рейтинг сообщений: 482
Зарегистрирован: Сб сен 10, 2011 17:46:25
Сообщений: 3832
Рейтинг сообщения: 0
можно покопать в сторону QEMU emulator и IDA
через GDB:
http://cxemotexnika.org/2010/12/%D0%BF% ... %BB%D0%BB/
IDA:
http://www.hexblog.com/?p=111


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как, и в чем отлаживать байт код
СообщениеДобавлено: Сб мар 24, 2018 18:39:00 
Открыл глаза

Зарегистрирован: Вт апр 05, 2011 12:46:14
Сообщений: 69
Рейтинг сообщения: 0
Вы хотите сказать, получить СИ-исходный код с помощью ИДА?
И не понятно, зачем мне подключать симулятор ARM, если есть готовое устройство и J-Link?
Или я все неправильно понял?


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: Как, и в чем отлаживать байт код
СообщениеДобавлено: Сб мар 24, 2018 18:59:18 
Друг Кота
Аватар пользователя

Карма: 32
Рейтинг сообщений: 482
Зарегистрирован: Сб сен 10, 2011 17:46:25
Сообщений: 3832
Рейтинг сообщения: 0
почему Си - IDA интерактивный дизассемблер, который широко используется для реверс-инжиниринга.
Если "нужно пошагово походить по ветвлениям прошивки", то как это сделать без текста программы, а если текста нет - значит надо дизассаемблировать. Не видел дебагеров шагающих по hex кодам.
Еще Keil-у для ARM можно подсунуть "чужой" бинарный файл (или hex), но для прошивки, дизассемблер тоже покажет, но шагать не будет. Давно пробовал, может сейчас что поменялось


Вернуться наверх
 
Организация питания на основе надежных литиевых аккумуляторов EVE и микросхем азиатского производства

Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Как, и в чем отлаживать байт код
СообщениеДобавлено: Сб мар 24, 2018 19:11:11 
Открыл глаза

Зарегистрирован: Вт апр 05, 2011 12:46:14
Сообщений: 69
Рейтинг сообщения: 0
Хорошо а есть возможность менять байты во флеш памяти, во время работы процессора? Зачем мне это, сейчас попробую объяснить.
Например
Я подключусь к устройству через программу J-Mem. В нужном месте (где хотел поставить брейкпоинт), изменю два байта, чтоб получился переход на самого себя (бесконечный цикл). И когда выполнение байт кода доберется до моего цикла, прочитаю память.


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Как, и в чем отлаживать байт код
СообщениеДобавлено: Сб мар 24, 2018 19:25:03 
Друг Кота
Аватар пользователя

Карма: 32
Рейтинг сообщений: 482
Зарегистрирован: Сб сен 10, 2011 17:46:25
Сообщений: 3832
Рейтинг сообщения: 0
микроконтроллер может писать во флэш - можно отдельным проектом написать процедурку записи и "попросить" линкер разместить в свободном месте по определенному адресу (где заканчивается основная прошивка), после компиляции вручную соединить две прошивки в hex редакторе. Дебагер не знаю - может ли писать флэш.
А почему прямо в прошивке сразу эти 2 байта не поменять редактором hex?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как, и в чем отлаживать байт код
СообщениеДобавлено: Сб мар 24, 2018 19:28:21 
Открыл глаза

Зарегистрирован: Вт апр 05, 2011 12:46:14
Сообщений: 69
Рейтинг сообщения: 0
Я хотел, чтобы иметь возможность переустанавливать эти два байта во время работы контроллера. Типа снимать ставить брейкпоинты.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как, и в чем отлаживать байт код
СообщениеДобавлено: Сб мар 24, 2018 19:40:51 
Друг Кота
Аватар пользователя

Карма: 32
Рейтинг сообщений: 482
Зарегистрирован: Сб сен 10, 2011 17:46:25
Сообщений: 3832
Рейтинг сообщения: 0
Пока не вижу пути, как всеж дизасемблировать ИДА supports:
ARMv7-M: Cortex-M3 (e.g. NXP LPC17xx/18xx/13xx, STM32 F1/F2/L1 series, TI Stellaris, Toshiba TX03/TMPM3xx etc.)
Самому скомпилировать, что получилось. Добиться аналогичной работы "своей" программы, потом уже добавлять свое.
Нашел
http://www.keil.com/support/docs/1936.htm
Только там µVision Version 2.12 и слово simulate. У меня 5.14 - не прыгает никак.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как, и в чем отлаживать байт код
СообщениеДобавлено: Сб мар 24, 2018 19:46:59 
Открыл глаза

Зарегистрирован: Вт апр 05, 2011 12:46:14
Сообщений: 69
Рейтинг сообщения: 0
Хорошо владеть терминологией.
Можно более понятнее написать, что вы только что сказали? Я практически ничего не понял, кроме отрывка про ИДА.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как, и в чем отлаживать байт код
СообщениеДобавлено: Сб мар 24, 2018 20:04:01 
Друг Кота
Аватар пользователя

Карма: 32
Рейтинг сообщений: 482
Зарегистрирован: Сб сен 10, 2011 17:46:25
Сообщений: 3832
Рейтинг сообщения: 0
1)прошивка в виде файла, я понимаю есть, судя "Прочитал из него прошивку"
2)берем IDApro (на злачных местах есть)
3)открываем прошивку в IDApro, отвечаем там на вопросы и дизассемблируем и сохраняем получившийся ассемблерный текст.
4)в любимом IDE (Keil там, IAR) создаем ассемблерный проект с одним ассемблерным файлом, копируем выше получившийся текст в этот файл, пробуем компилировать, сходу может не получится, правим, добиваемся чтоб скомпилировалось.
5)прошиваем нашей новой прошивкой устройство, убеждаемся что работает
6)теперь в нашем новом проекте можно легко добавлять свои хотелки и дебажить просто тоже


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как, и в чем отлаживать байт код
СообщениеДобавлено: Сб мар 24, 2018 20:12:06 
Открыл глаза

Зарегистрирован: Вт апр 05, 2011 12:46:14
Сообщений: 69
Рейтинг сообщения: 0
Я пытаюсь запустить отладку, из-за того, что сомневаюсь в правильности дизассемблирования этой прошивки ИДА-ой. К тому-же ИДА очень слабо дружит с Thumb-2 (даже наверное не с Thumb-2, а именно с этим контроллером). Поэтому ее листингу доверять я не могу.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как, и в чем отлаживать байт код
СообщениеДобавлено: Сб мар 24, 2018 21:14:17 
Друг Кота
Аватар пользователя

Карма: 1
Рейтинг сообщений: 157
Зарегистрирован: Пн окт 11, 2010 19:00:08
Сообщений: 3328
Рейтинг сообщения: 0
Хотите отладку прошивки? Подключаете ST-Link к МК, запускаете программу STM32 ST-LINK Utility. Подключаетесь к МК и в меню Target открываете окно MCU Core. В нем кликаете по кнопке Step и наблюдаете за работой МК.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как, и в чем отлаживать байт код
СообщениеДобавлено: Сб мар 24, 2018 21:24:19 
Открыл глаза

Зарегистрирован: Вт апр 05, 2011 12:46:14
Сообщений: 69
Рейтинг сообщения: 0
ST-Link пока нет, но отлаживать хочется уже сейчас. А разве у J-Link нет такого функционала?
Установил ST-Link 4.1.0.0, но не вижу этот Step. Или он появится после коннекта с МК?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как, и в чем отлаживать байт код
СообщениеДобавлено: Сб мар 24, 2018 21:31:09 
Друг Кота
Аватар пользователя

Карма: 1
Рейтинг сообщений: 157
Зарегистрирован: Пн окт 11, 2010 19:00:08
Сообщений: 3328
Рейтинг сообщения: 0
Magadan69 писал(а):
ST-Link пока нет
Нужно было давно купить. Такой как на скриншоте стоит около 100 рублей.
СпойлерИзображение

Magadan69 писал(а):
но не вижу этот Step.
Мурик писал(а):
в меню Target открываете окно MCU Core. В нем кликаете по кнопке Step


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как, и в чем отлаживать байт код
СообщениеДобавлено: Сб мар 24, 2018 21:36:02 
Открыл глаза

Зарегистрирован: Вт апр 05, 2011 12:46:14
Сообщений: 69
Рейтинг сообщения: 0
в меню Target открываете окно MCU Core. В нем кликаете по кнопке Step

Ясно, значит нужен ST-Link. У меня эта вкладка не открывается, пишет: "No ST-LINK detected".


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как, и в чем отлаживать байт код
СообщениеДобавлено: Вс мар 25, 2018 08:42:31 
Друг Кота
Аватар пользователя

Карма: 32
Рейтинг сообщений: 482
Зарегистрирован: Сб сен 10, 2011 17:46:25
Сообщений: 3832
Рейтинг сообщения: 0
открываете окно MCU Core. В нем кликаете по кнопке Step и наблюдаете за работой МК.

Посмотрел документ
http://www.st.com/content/ccc/resource/ ... 262073.pdf
Цитата:
3.7 MCU core functions
The Core panel dialog box shown in displays the ARM® Cortex®-M3 core register values.

Посмотреть можно вроде только регистры ядра и пошагать. Для хотелок ТСа может быть недостаточно:
Цитата:
Нужно поставить несколько брейкпоинтов и просмотреть содержимое памяти и регистров в этих точках при остановке.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как, и в чем отлаживать байт код
СообщениеДобавлено: Вс мар 25, 2018 13:07:42 
Открыл глаза

Зарегистрирован: Вт апр 05, 2011 12:46:14
Сообщений: 69
Рейтинг сообщения: 0
Пойду-ка я поизучаю "J-Link Commander" и "J-Link RTT Viewer". В коммандере точно можно брейкпоинты ставить, единственное работать придется в командной строке или по скриптам. Но мне для начала хватит.
Если я правильно все понял, то не придется никакую среду, типа Кеил, устанавливать.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как, и в чем отлаживать байт код
СообщениеДобавлено: Пн мар 26, 2018 23:49:09 
Встал на лапы
Аватар пользователя

Карма: 1
Рейтинг сообщений: 8
Зарегистрирован: Пт июн 20, 2008 09:38:05
Сообщений: 127
Откуда: Харьков
Рейтинг сообщения: 0
Хоспаде.. наплели семь бочек арестантов.
Magadan69 уверен у вас сейчас каша в голове. Давайте начнем с терминологии:

То что вы хотите - реверс-инжиниринг. Очень не простоая задача

Байт-код - слово применяемо к промежуточному представлению программы. к примеру Java программы находятся именно в этом состоянии (https://ru.wikipedia.org/wiki/Байт-код). Давайте о нем забудем. То что вы подразумевали будем называть Прошивкой/Фирмварью/хексом/бинарем (4)

1) Исходный код - надеюсь тут вопросов нету, С/С++, asm, или что-угодно
2) Объектные файлы - то что получили в результате компиляции(!) пример: *.o
3) Исполняемые файлы - то, что получили в результате линковки(!) пример: *.exe, *.dll, *.elf, *.so
4) Прошивка - бинарное представление программы, что можно залито непосредственно в камень (микроконтроллер) и прочитано из него. примеры: *.bin, *.hex

Собственно, у вас нету пунктов [1;3]. Есть только 4.
Если при сборке был флаг -g, то пунк 3 будет содержать в себе всю дебаг информацию (пути к файлам, символы и тд). его можно "полноценно" дебажить

То, что вы хотите сделать software developer'ы называют Debug. для этого есть Debug'еры (gdb например). Это очередная грамма которая контролирует исполнение вашей программы ( debug(myprogramm()) )
Как происходит процесс дебага на вашем десктопе? К примеру накидали вы hello world. скомпили. слинковали. запустили под дебагером. Дебагер получает от вас команды "шаг. стоп. run. и тд" он же может и модифицировать код/перменные!

Ситуация с микрокнтроллером чуть сложнее. Потмоу что мы делаем cross-компиляцию. То есть на x86 машине м собираем код для ARMv7-M. Соответсвенно в случае отладки у нас так же - cross-debug. Здесь трабла - отладчик то не запустить на x86, он же ARM... Но тут нас спасает gdb! Он ведь умеет в remote.
То есть у нас есть две сущности:
1) gdbserver - собственно ваш отладчик (j-link, st-link, etc.) и ваш камень с прошивкой
2) gdb client - то, что подключится к серверу и будет посылать команды

Тут есть варианты выбора, CMD, Keil, IAR и всё такое. Лично я эти виндовые проприретарные вещи ненавижу. Так что опишу вообще Unix'овый подход

Итак, что надо:
1) openocd - прекрасный gdbserver - который работает с любым отладчиком (j-link, st-link, etc.) http://gnutoolchains.com/arm-eabi/openocd/
2) arm-none-eabi-gdb - gdb client https://developer.arm.com/open-source/g ... /downloads

Как:
1) вам надо запустить gdbserver. Открываем консоль и скорее всего будет так
openocd -f interface/jlink.cfg -f target/stm32f1x.cfg - собственно в таргете - и есть ваш камень (семейство)
2) клиент. Опять же - консоль и
arm-none-eabi-gdb
здесь же
target remote :3333

и всё - можно апсчаться

Но есть одна загвоздочка.... Микроконтроллер вещь противная с флеш-памятью. и прошивка живет во флеше. Как все мы знаем, во флешку можно писать побайтно, стирать - только страницей. Значит если вы хотите поменять хотя бы 1 бит с 0->1 то придется теперь всю страницу.

Поэтмоу я б рекомендовал вам не заморачивать с пошаговой отладкой, а, как писали выше. Выкачать прошивку. Взять IDA и уже там модифицировать прошивку (ида это умеет) и дальше - заливать и смотреть что происходит. Благо у арма есть bkpt инструкция

Надеюсь вы сможете оценить сложность данной процедуры и напишете код с 0, а не будете пытаться реверсить не понимая что там внутри....


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как, и в чем отлаживать байт код
СообщениеДобавлено: Вт мар 27, 2018 00:16:33 
Открыл глаза

Зарегистрирован: Вт апр 05, 2011 12:46:14
Сообщений: 69
Рейтинг сообщения: 0
Спасибо за ликбез !!! (действительно спасибо, так как сложно было уложить понятия в голове).
Но я все-таки должен понять алгоритм "...4) Прошивки...", которая "*.bin".
К тому-же мне не нужна вся прошивка, мне нужно понять только несколько функций. В частности надо разобраться какие команды и с какими параметрами принимает АРМ по блютуз (не все), чтобы самому управлять устройством.
Переписывать данные во флеш я не буду (я не буду использовать софтварные брейкпоинты), мне достаточно шести железных брейкпоинтов, которые можно устанавливать в контроллере, J-Mem - просмотровика памяти, и того что АРМ-контроллер выдает значения своих регистров при остановке (halt). Я в принципе уже разобрал две функции (ида не ошиблась, но зато я теперь точно это знаю). Одно не удобно, работа с командной строкой в "J-Link Commander". Надо будет посмотреть на "openocd" и "arm-none-eabi-gdb" если они позволяют дебажить "...4) Прошивка...", то будет великолепно. Хоть немного автоматизирую процесс. А то обидно получается когда прошел уже немало кода вручну, остановился на брейкпоинте , и например, вместо команды "regs" наберешь команду "go", случайно по запарке.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как, и в чем отлаживать байт код
СообщениеДобавлено: Вт мар 27, 2018 08:13:32 
Друг Кота
Аватар пользователя

Карма: 32
Рейтинг сообщений: 482
Зарегистрирован: Сб сен 10, 2011 17:46:25
Сообщений: 3832
Рейтинг сообщения: 0
В частности надо разобраться какие команды и с какими параметрами принимает АРМ по блютуз (не все), чтобы самому управлять устройством.

блютуз внешний модуль или внутри кристалла? Если внешний - можно к RX ноге через переходник USB-COM компьютерным терминалом подцепиться и смотреть. Если внутренний - пробовать сниферить через компьютерный блютуз тем же терминалом.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 27 ]  1,  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 17


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y