Например TDA7294

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



Текущее время: Пт июл 19, 2019 02:24:07

Часовой пояс: UTC + 3 часа [ Летнее время ]


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



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

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


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

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


Вернуться наверх
 
JLCPCB, всего $2 за прототип печатной платы! Цвет - любой!

Отличное качество, подтвержденное более чем 600,000 пользователей! Более 10,000 заказов в день.

Зарегистрируйтесь и получите два купона по 5$ каждый:https://jlcpcb.com/quote

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

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


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

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

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

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


Вернуться наверх
 
Плавкие предохранители LittelFuse. Грамотный подбор

Выбор оптимального плавкого предохранителя требует учета многих параметров. Для упрощения выбора оптимального предохранителя и автоматизации расчетов Littelfuse предлагает онлайн-утилиту. Подробнее>>
Не в сети
 Заголовок сообщения: Re: Как, и в чем отлаживать байт код
СообщениеДобавлено: Сб мар 24, 2018 20:11:11 
Открыл глаза

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


Вернуться наверх
 
Немногим дороже дискретного решения: новое поколение импульсных стабилизаторов Mornsun

Практически во всех радиоэлектронных устройствах массово применяются линейные понижающие стабилизаторы напряжения типа КРЕН в корпусе TO220 (другое обозначение – 78хх) и им подобные для формирования основного напряжения питания схемы.
Данные стабилизаторы позволяют без особых затрат получить нужное для каскада или узла схемы напряжение, если устройство питается от внешнего источника с более высоким напряжением. Для этого требуются… Подробнее>>
Не в сети
 Заголовок сообщения: Re: Как, и в чем отлаживать байт код
СообщениеДобавлено: Сб мар 24, 2018 20:25:03 
Друг Кота
Аватар пользователя

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


Вернуться наверх
 


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

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


Вернуться наверх
 


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

Карма: 31
Рейтинг сообщений: 389
Зарегистрирован: Сб сен 10, 2011 18:46:25
Сообщений: 3241
Рейтинг сообщения: 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 - не прыгает никак.


Вернуться наверх
 
Prist.ru предлагает скидку всем частным лицам при покупке приборов АКИП, GW Instek, APPA (кроме осциллографов АКИП-4115/1А, GDS-71102)!

Интересные новинки уже на складе:

Осциллограф АКИП-4126Е

Многоканальные источники питания серии GPP

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

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


Вернуться наверх
 
Купить электронные компоненты в LCSC

Отправка со склада через 4 часа после заказа!
900 000 пользователей, 3000+ заказов в день!
Зарегистрируйтесь сегодня и получите скидку 8 долларов на первый заказ!
Не в сети
 Заголовок сообщения: Re: Как, и в чем отлаживать байт код
СообщениеДобавлено: Сб мар 24, 2018 21:04:01 
Друг Кота
Аватар пользователя

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


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

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


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

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


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

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


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

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

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


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

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

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


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

Карма: 31
Рейтинг сообщений: 389
Зарегистрирован: Сб сен 10, 2011 18:46:25
Сообщений: 3241
Рейтинг сообщения: 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 14:07:42 
Открыл глаза

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


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

Карма: 1
Рейтинг сообщений: 8
Зарегистрирован: Пт июн 20, 2008 10: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 01:16:33 
Открыл глаза

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


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

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

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


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

Часовой пояс: UTC + 3 часа [ Летнее время ]


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

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


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

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


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