Перейти к содержанию

    

amiller

Участник
  • Публикаций

    180
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Информация о amiller

  • Звание
    Частый гость

Информация

  • Город
    Томск
  1. Судя по всему в этой прошивке используется память в диапазоне 0x0000 - 0x3F80. Так как адресация 16 битная, то подразумевается, что базовый адрес равен нулю. А бутлоадер должен находится в примерном диапазоне 0xF000 - 0xFFFF. Такими адресами здесь и не пахнет. Вывод: Это прошивка пользовательской программы. Таким простым способом бутлоадер не достать. Советую посмотреть на программу, с помощью которой Вы читаете кристалл. Если микросхема не залочена, то где то в конфигах надо явно указать диапазон, который Вы хотите прочитать. И ещё: Есть уверенность, что секция бутлоадера , это flash, и её в принципе можно писать? Может это ОТР? Я никогда с такими микросхемами не работал. Но точно существует документация на семейство, где всё это подробно расписано.
  2. Похоже, что не совсем правильно Первая строка: 10 - количество байт = 16. 0FD0 - смещение относительно базы. 00 - признак данных Далее 16 байт, на каждый байт по 2 символа. Последние 2 символа в строке = BF, это CRC. Ещё где то ранее должна быть служебная строка, которая задает базовый адрес (старшие байты). И в самом конце массива должна быть строка, конец файла.
  3. Связь ч/з цепи питания

    Излишнее усложнение. Компоненты D1, U1, R4, R5, C3 можно заменить просто транзистором. А на стороне приемника достаточно входа АЦП контроллера. Но это всё хорошо, когда передаваемая мощность меньше 1Вт и допустимы пульсации 1В. А если надо по цепи питания передавать 100Вт и пульсации более 50мВ недопустимы? В этом случае понадобятся более сложные решения. я бы в таком случае не стал заморачиваться и выделил ещё один провод для связи между модулями.
  4. st8l051 Uart детектирование FE.

    Извините, а вам действительно нужно знать, что именно нехорошего произошло на шине? Я обычно с этим не парюсь, а всегда перед чтением регистра данных читаю регистр статуса. Все биты ошибок при этом автоматически сбрасываются. А определение целостности данных производится на следующем уровне обработки. Там и CRC и таймауты и т.п. И работает такой алгоритм идеально на всех STM и не только.
  5. Электрическая надежность STM32.

    Из разряда легенд, которые появились в компании ещё до меня: В одном из узлов - гальваноразвязанный измеритель под потенциалом 60кВ и с возможностью высоковольтных пробоев на корпус для измерений стоит ATMEGA88. Было две попытки вкорячить туда STM32 для унификации - безуспешно, не живут. Причём и документацию внимательно изучали и дополнительных мер по защите было более десятка. Сейчас это уже действует как правило. В таких узлах только AVR. На мой взгляд причин две: 1. Более высокое напряжение питания. 2. Большая стойкость выводов по энергии. Хотя на уровне обычных напряжений и энергий помех работают STM32 без нареканий. Надо только соблюдать определенные правила. Например AVR мне не попадались с отгоревшими выводами, а STM32 сколько угодно. Кстати STM8 вроде тоже покрепче в плане стойкости к ЭМИ.
  6. Мне собственно тоже совершенно безразлично, что Вы пишете, если уж на то пошло. Единственное, что мне интересно, это оригинал стандарта. И не для того, чтобы Вас в чём то убедить, а в том, чтобы убедиться самому. Пока я этого не увидел, я считаю правильным такое утверждение: EIA-485 [TIA-485] Balanced (differential) interface; defines the Physical layer, signaling protocol is not defined. EIA485 is also called the RS485 standard, but the term RS485 is out-dated. EIA-485 specifies bidirectional, half-duplex data transmission. Эту фразу можно увидеть много где, в том числе и в переводе на русский язык. Одна из ссылок в моем предыдущем посте. А это означает, что RS485 - полудуплексный интерфейс, на что я и обратил внимание ТС. А любые допущения к делу не относятся.
  7. Я попробовал поискать. Яндекс дает на ключевые слова "RS485 full duplex" - 45 миллионов результатов. А на слова "RS485 half duplex" - всего 30 миллионов результатов. Поэтому Вам присуждается победа по очкам. Хотя с точки зрения интернета full более модно, чем half, поэтому преимущество гарантировано. Однако для установления истины нужен первоисточник, а не вторичные материалы. Я попробовал поискать действующий стандарт TIA/EIA-485. Странно, но быстро найти не удалось, по крайней мере бесплатно. Если у кого то есть, прошу поделиться ссылкой. То что я находил, не может претендовать на абсолютную истину, например: http://www.interfacebus.com/Design_Connector_RS485.html В этом источнике, а также в огромном количестве других материалов в сети в первых строчках описания RS485 явно указано, что это полудуплексный интерфейс. Я допускаю для организации дуплекса применение двух каналов RS485 и понимаю отличия такого варианта от RS422. Но отношу такой вариант скорее к нестандартному использованию RS485. По крайней мере в реальных устройствах такого способа организации связи встречать не приходилось. Может не везло просто. Или наоборот, повезло не встретить...
  8. Может Вы сейчас снова находитесь в заблуждении, только уже в другом? Меня статья по первой ссылке ни в чём не убеждает. Она написана такими же людьми, как и мы. И табличка справа противоречит основному тексту. Строка 2: Регламентирует электрические параметры полудуплексной многоточечной дифференциальной линии связи типа «общая шина». Строка примерно 9: В стандарте RS-485 для передачи и приёма данных используется одна витая пара проводов, иногда сопровождаемая экранирующей оплеткой или общим проводом. Для меня лично эти параметры несовместимы с режимом работы "дуплекс". А по этой Вашей ссылке: http://www.analog.com/media/en/technical-d.../ADM488_489.pdf Приведена документация на компонент, который может применяться как в режиме RS485, так и в режиме RS422. Так вот Full Duplex возможен именно в режиме RS422. Вот фрагмент с 14 страницы этого документа: The most significant difference between the RS-422 and RS-485 is that the RS-485 drivers can be disabled, thereby allowing up to 32 receivers to be connected to a single line. Only one driver should be enabled at a time, but the RS- 485 standard contains additional specifications to guarantee device safety in the event of line contention. Для меня это означает, что одновременная передача и прием данных в интерфейсе RS485 невозможна, поэтому для этого интерфейса можно говорить только о полудуплексном режиме применения.
  9. Я применяю эти интерфейсы на практике. Прежде чем давать ссылки на статьи, прочитайте что в них написано. Или покажите, как организовать дуплексную связь на одном интерфейсе RS485, который представляет собой физически одну дифференциальную линию. А RS422 - это по сути объединение двух интерфейсов RS485, где один канал передает данные в одну сторону, а другой - в другую. А совместно эти два канала способны обеспечить дуплексную связь между двумя точками.
  10. Ремарка: RS485 - полудуплексный и никак иначе. Сигнал направления передачи обязан присутствовать. По этому интерфейсу можно передавать в разных направлениях только поочередно. Полнодуплексные интерфейсы с одновременной передачей в обе стороны - это к примеру RS422 или RS232.
  11. IDA Pro

    Да вот в том то и дело что практически ничего правильно не идентифицируется. В прошивке для носорога (из статьи) правильно идентифицируется процентов 70 функций, да и текстовые сообщения почти без ошибок выделяются. Точно с такими же настройками на моих прошивках результат - полный ноль. Причём в составе кода есть структуры с большим количеством текстовых сообщений. Правда сейчас пришло в голову, что они все на кириллице, а в носороге на английском. Вся память без затей идентифицируется как константные данные и забивается директивами DCB или DCW. И "якобы код" был идентифицирован там, где лежали примитивы графики для дисплея. В общем чепуха полная. Про стартап написал по причине, что таблица прерываний для конкретного процессора определенная вещь. Зная данные из таблицы, можно идентифицировать все функции прерываний и main. Далее проанализировать все вторичные вызовы функций ну и т.д. Но похоже, что Ida работает как то иначе. Быстро получить результат не удалось. Поэтому и спрашивал о чужом опыте. Ещё рано говорить о поддержке STM32 или уже можно пытаться использовать?
  12. IDA Pro

    Приветствую! Обратил внимание на статью на хабре (https://habr.com/company/inforion/blog/359116/), где бодренько так показали процесс реверс-инжиниринга прошивки для STM32. Ради интереса решил попробовать. Установил версии IDA Pro 6.8 и 7.0 для теста (что нашел на просторах). Скормил ей по инструкции из статьи пару своих бинарников для STM32F103CB. Результат плачевный. Практически сплошные данные с редкими включениями неадекватного кода. Нет базы, с которой можно начинать работу по реверсу. Прошивки написаны на голом С без сторонних библиотек. В статье имеется пример прошивки, который анализировался. Скачал, скормил IDA и о чудо, - результат если и не идеальный, то точно есть с чем работать. Означает ли это, что IDA заточена на поиск стандартных сигнатур библиотечных функций и начинает анализ, отталкиваясь от них? Или я просто что то не так делаю? Если у кого то есть опыт успешного реверса, поделитесь настройками, что нужно сделать, чтобы процесс происходил максимально адекватно. Может нужно подключить дефайны с описанием регистров периферии, startup-файлы для нужного процессора?
  13. Вопрос о программировании Flash STM32F405

    Конечно глупая версия, но может после программирования и перед отладкой надо снять NRST? Такое может быть, если вы его формируете вручную. Опыт был, программирую всегда с поддержкой NRST, никаких проблем не возникало.
  14. Интересное поведение sdram

    Я бы начал с того, что прозвонил шину адреса. 0х200 - это вероятнее всего 10-ый бит. Скорее всего непропай. Соответственно данные пишутся и читаются таким образом, что адрес 0 равен адресу 0х200.
  15. STM32F373 ЦАП

    Цитата(Alex_Golubev @ May 14 2018, 03:36) Привет. Как понять, что ЦАП закончил все свои преобразования и выход ЦАП уже готов к использованию? Грубо говоря, записал число в регистр DAC1->DHR12R1 = 0xfff; сколько ждать когда на выходе устаканиться напряжение V_ref? Самое главное в доке не нашел регистра статуса ЦАП. Как Вы себе это представляете? Схема контроля уровня выходного напряжения будет гораздо сложнее, чем сам выход ЦАП, который достаточно тривиален. Тем более обычно речь идёт о единицах микросекунд. Точное время установления выходного напряжения ищите в электрических параметрах в документации на конкретный чип. В STM32 часто есть ещё возможность включения и отключения выходного буфера. Выходные параметры от этого сильно зависят. Обратите внимание.