Написал тут по-быстрому (хотя не очень, 4 дня потратил на этот говнокод) на C# библиотеку для чтения ELF файлов и парсинга DWARF4 дебаг информации в ELF файлах.
https://github.com/L-proger/ELFUtils
https://github.com/L-proger/ELFExplorer - GUI приложение, лагучий набросок.
В основном для самообучения, для раскуривания дебаггинга и т.п. но ещё одно интересное для меня применение - напишу вскоре тулзу для вывода подробной инфы о памяти ELF бинарника. Я довольно часто программирую под микроконтроллеры и как многим известно там есть обычно достаточно большие проблемы с объёмом памяти - как FLASH так и оперативной, потому часто приходится считать байты и стараться сделать бинарник как можно меньше по размеру.
Вот и накидал эту библиотеку. На самом деле всё можно было бы сделать гораздо проще! Использоваться стандартную тулзу тулчейна readelf и, скажем, регулярками разбирать её вывод и получать финальную информацию о символах в бинарнике, но это слишком просто ) А так я разобрался в DWARF формате что меня весьма радует.
Пример вывода консольной версии ниже. Консоль сейчас для простого дебага, я вскоре сделаю красивый удобный гуй для этого всего ) А, да, ещё DLL умеет парсить пока минимально lds скрипты линкера и правильно использовать информацию о секциях памяти для последующего анализа её использования (можно посмотреть сколько % памяти каждого из банков занято и т.п.).
Вывод инфы по секциям памяти.
https://github.com/L-proger/ELFUtils
https://github.com/L-proger/ELFExplorer - GUI приложение, лагучий набросок.
В основном для самообучения, для раскуривания дебаггинга и т.п. но ещё одно интересное для меня применение - напишу вскоре тулзу для вывода подробной инфы о памяти ELF бинарника. Я довольно часто программирую под микроконтроллеры и как многим известно там есть обычно достаточно большие проблемы с объёмом памяти - как FLASH так и оперативной, потому часто приходится считать байты и стараться сделать бинарник как можно меньше по размеру.
Вот и накидал эту библиотеку. На самом деле всё можно было бы сделать гораздо проще! Использоваться стандартную тулзу тулчейна readelf и, скажем, регулярками разбирать её вывод и получать финальную информацию о символах в бинарнике, но это слишком просто ) А так я разобрался в DWARF формате что меня весьма радует.
Пример вывода консольной версии ниже. Консоль сейчас для простого дебага, я вскоре сделаю красивый удобный гуй для этого всего ) А, да, ещё DLL умеет парсить пока минимально lds скрипты линкера и правильно использовать информацию о секциях памяти для последующего анализа её использования (можно посмотреть сколько % памяти каждого из банков занято и т.п.).
Вывод инфы по секциям памяти.
STM32F4, DCMI и USB CDC - камера с консолькой что ли? :)
ОтветитьУдалитьКамера с USB HS интерфейсом для сливания изображения и потока обработанных на камере данных трекинга )
ОтветитьУдалитьПо CDC решил что проще всего реализовать протокол с командами и сливанием картинки. Что может быть проще COM порта )
ОтветитьУдалитьУ меня первая мысль и была, что это веб-камера по виртуальному ком-порту, потом подумал - да ну нафиг, не может быть :)
УдалитьКак оказалось (в древние времена этого поста), куда лучше кастомный USB класс запилить. Да и дрова не нужно свои писать. На Windows 8.1+ WinUSB драйвер ставится автоматом (если девайс содержит нужные магические дескрипторый под WinUSB). На Linux/Android так же дров не нужно. Всё из юзер спейса прекрасно делается. И ещё: libusb страшное го*но. В те же времена после кучи найденных косяков (включая НАРУШЕНИЕ порядка пакетов при большой нагрузке) запилили свою либу Счастье, радост по сей день.
УдалитьПочему не может быть? ) Мне кроме картинки (которая не часто нужна) необходимо слать некоторые обработанные данные. Другого более подходящего стандартного класса не знаю ) А запилить свой класс - хлопотно ибо надо писать драйвер под WIndows + пописывать т.к. целевая платформа 64 битная.
ОтветитьУдалить