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

Лидеры

  1. KeisN13

    KeisN13

    Участник


    • Баллы

      3

    • Постов

      84


  2. one_eight_seven

    one_eight_seven

    Участник*


    • Баллы

      2

    • Постов

      1 622


  3. makc

    makc

    Администратор


    • Баллы

      1

    • Постов

      8 173


  4. amaora

    amaora

    Участник


    • Баллы

      1

    • Постов

      798


Популярный контент

Показан контент с высокой репутацией 30.05.2024 во всех областях

  1. Так посмотрите выступления на конференциях, подкасты на тематических каналах. Равно как и людей, которые в консультирующих конторах работают, которые тоже всё уже понимают, но вынуждены пользоваться инфоцыганщиной, потому что эффективные менеджеры наконец прочитали третью книгу в своей жизни, и сейчас у них модно читать про агиле, и вот хотят они, чтобы то, что им построят, называли агиле, потому что так модно.
    2 балла
  2. В лог вывожу сообщения, обычно простой короткий текст с минимумом параметров, по которому однозначно ясно где и что произошло. На каждую строку лога пишется время от старта и номер включения (количество сбросов без снятия питания). Дальше по обстоятельствам, можно продолжить работу (переключив тактирование с кварца на RC, например), сделать сброс, или перейти в безопасный режим (остановить основные функции устройства). Лог хранится в RAM в области которая не обнуляется на старте. В любой момент его можно прочитать или очистить.
    1 балл
  3. Не совсем. Если trap генерируется программный (например: в результате проверки каких-то переменных в программе обнаружено их недопустимое состояние), то делается вызов trap() (это не макрос и не функция в обычном виде, это возбуждение прерывания SVC, оформленное в виде функции (IAR умеет такое)). Внутри ISR SVC защёлкивается в ОЗУ дамп = id_trap+аргументы+регистры+стек, потом делается реинит всей периферии и CPU с активацией только нужной для trap-режима. МК можно рестартовать или не рестартовать. Главное - отключить все работающие DMA и перевести все интерфейсы работающие с внешней периферией в дефолтное выключенное состояние (выключить питание моторов, отключить Ethernet, USB, CAN и т.п.). Если trap не программный, а вход в ловушку идёт из ISR HF или ISR MPU или ISR шинных ошибок или ошибок чётности памяти (и т.п.), которые сами являются по факту событиями ошибки, то симулируется как будто была получена SVC (повышение приоритета прерывания до максимума и т.д.), и содержимое регистров и стека берётся таким, каким оно было до входа в этот ISR (HF, MPU, ...) Чтобы причина trap указывала на причину, вызвавшую исходный ISR, а не на код внутри ISR. Также для HF декодируется причина fault-а (по соответствующим регистрам), и эта инфа передаётся как номер и аргументы trap(). Для таких ловушек у меня есть целый класс номеров: #define TRAP_EXC_HARD 0x100 //исключение Hard Fault (неуточнённое) #define TRAP_EXC_HARD_VECTTBL 0x101 //ошибка при попытке считать содержимое таблицы векторов прерываний #define TRAP_EXC_HARD_FORCED 0x102 //произошла эскалациЯ прерываниЯ до HardFault (исходный fault неизвестен) #define TRAP_EXC_MPU 0x110 //MEMORY MANAGER FAULT (неуточнённое) #define TRAP_EXC_MPU_IERR 0x111 //MM FAULT: нарушение прав доступа к коду #define TRAP_EXC_MPU_DERR 0x112 //MM FAULT: нарушение прав доступа к данным #define TRAP_EXC_MPU_MUSTKE 0x113 //MM FAULT: при выходе из обработчика прерываниЯ возникло порождённое прерывание MemFault #define TRAP_EXC_MPU_MSTKE 0x114 //MM FAULT: при входе в обработчик прерываниЯ возникло порождённое прерывание MemFault #define TRAP_EXC_MPU_LSPE 0x115 //MM FAULT: при отложенном сохранении состоЯниЯ FPU возникла ошибка #define TRAP_EXC_BUS 0x120 //BUS FAULT (неуточнённое) #define TRAP_EXC_BUS_IBUS 0x121 //BUS FAULT: ошибка при попытке выборки инструкции #define TRAP_EXC_BUS_PRECISE 0x122 //BUS FAULT: точнаЯ ошибка при обращении к данным #define TRAP_EXC_BUS_IMPRECISE 0x123 //BUS FAULT: неточнаЯ ошибка при обращении к данным #define TRAP_EXC_BUS_USTK 0x124 //BUS FAULT: при попытке выхода из обработчика прерываниЯ #define TRAP_EXC_BUS_STK 0x125 //BUS FAULT: при попытке входа в обработчик прерываниЯ #define TRAP_EXC_BUS_LSPE 0x126 //BUS FAULT: при отложенном сохранении состоЯниЯ FPU #define TRAP_EXC_USAGE 0x130 //USAGE FAULT (неуточнённое) #define TRAP_EXC_USAGE_DIV0 0x131 //USAGE FAULT: попытка делениЯ на 0 #define TRAP_EXC_USAGE_UNALIGN 0x132 //USAGE FAULT: попытка невыровненного доступа к памЯти #define TRAP_EXC_USAGE_NOCP 0x133 //USAGE FAULT: попытка доступа к отсутствующему или отключенному сопроцессору #define TRAP_EXC_USAGE_INVPC 0x134 //USAGE FAULT: ошибочное значение в EXC_RETURN #define TRAP_EXC_USAGE_INVSTAT 0x135 //USAGE FAULT: попытка выполнениЯ инструкции при неверном значении бита T или полЯ IT регистра EPSR #define TRAP_EXC_USAGE_UNDEF 0x136 //USAGE FAULT: попытка выполнить неизвестную или привилегированную инструкцию у некоторых ещё есть аргументы. Вообще типичное содержимое trap.h из текущего проекта: А зачем его воспроизводить? Адрес есть, значит можно встать на этот адрес и проанализировать, что там не так. А дальше действовать по обстоятельствам.
    1 балл
  4. Да, все верно. Каких-либо требований к народному творчеству не предъявляю, иначе высок риск, что подобный сборнки вообще бы никогда не вышел. Как обычно, я не уверен, что эта затея (в плане FPGA журнала) долго проживёт, но если затея зайдёт, то постепенно будем вводить и корректоров и редакторов и вычитку и кошерную верстку и тд. Пока это просто сверстанный в гараже самиздат.
    1 балл
  5. камней там много... не унесете сразу все. люди годами это изучают и не все знают про СВЧ. зависит много от диэлектрика и топологии платы, размера резистора, самой пайки и монтажа резистора. чем меньше размер, тем ниже паразитная индуктивность. и еще, до 100 Ом больше паразитная индуктивность проявляется, выше 100 Ом - паразитная емкость. Есть СВЧ резисторы Vishay серии CH до 50 ГГц. Vishay resistors.pdf
    1 балл
  6. Я уже наверное порядком вам поднадоел, но всё же сообщу, что вышел уже второй номер FPGA журнала. Вся инфа по журналу и ссылка на скачивание https://fpga-systems.ru/fsm
    1 балл
  7. Мы паяем так: лудим площадки на плате свинцовым припоем, чтобы получились небольшие бугорки припоя, наносим флюс-гель для пайки BGA в минимальном количестве на площадки, ставим микрофон и паяем феном на минимальной температуре (220-230) с нижним подогревом. Если плата совсем крохотная, то в принципе можно обойтись без нижнего подогрева, но лучше все же с ним - меньше придётся жарить микрофон. После пайки ни в коем случае ничем не мыть. Можно и так, но это дольше и для прототипов может быть избыточно.
    1 балл
  8. Хочу попробовать сделать журнал, полностью посвященный программируемой логике: FPGA, ПЛИС, разработка микросхем, ASIC, верификация, RTL, HDL и тд. Это будет бесплатный и свободно распространяемый PDF. Первый релиз состоится 20-30 ноября 2023. Если найдутся желающие поделиться опытом, лайфхаками, туториалами и тд буду весьма признателен. Вся инфа по журналу на странице https://fpga-systems.ru/fsm
    1 балл
×
×
  • Создать...