Jump to content

    

gerber

Участник
  • Content Count

    764
  • Joined

  • Last visited

Community Reputation

0 Обычный

About gerber

  • Rank
    Знающий

Recent Profile Visitors

8416 profile views
  1. Дык на то и опкод, по которому процессор декодирует инструкцию. После декодирования опкода процессор "понимает", что это, к примеру, MOV Rx, #immediate, пересылка immediate value в регистр, в этом случае, часть бит интерпретируется как номер регистра-приемника, а часть бит как собственно immediate value. Другой опкод будет по-другому интерпретировать биты инструкции, и вместо immediate value там окажется, к примеру, смещение относительной адресации.
  2. В теле опкода инструкции, например, из 32-бит опкода часть бит (например, 12 бит) может быть выделено под immediate value, в этом случае с помощью такой инструкции можно работать с константным числом от 0 до 4095, или -2048...2047, если трактуется как знаковое число. В тех архитектурах или режимах, где инструкции короткие, скажем, 16-битные, под immediate value может быть выделено совсем мало бит, в этом случае такие инструкции используются в совсем простых случаях, скажем, для инкремента (a++). В остальных случаях используется смещение относительно PC, и константа забирается с адреса, лежащего в окрестностях текущего выполнения кода.
  3. В опкоде инструкции же, это и есть immediate value.
  4. В таких (простых) случаях компилятор использует инструкции, работающие с immediate value, или же располагает константы в теле кода, где-то "неподалеку" от текущего адреса выполнения (регистр PC) с near-доступом относительно PC. Таким образом, расходования области констант не происходит, к тому же это намного быстрее, чем "лазить" в другой сегмент памяти.
  5. Протокол Modbus

    Возможно, cервер интерпретирует число как float 16-bit, с соответствующей потерей точности.
  6. PCIe Hot-Plug

    В QNX через Dev-менеджер, в Win - через диспетчер Plug-and-Play (PnP), в Linux - через udev.
  7. ИМХО, в такую сумму только трафареты и поместятся. Реальный ценник на монтаж таких плат 50-70 тыр.
  8. Не нужно мерять периоды, все гораздо проще - нужно взвести прерывание по фронту, в его обработчике стартует таймер на 480 мкс, по истечении которого уровень на линии определяет информационный бит. При приеме преамбулы с такого декодера пойдут одинаковые биты, после чего прием "плавно" перейдет в накопление ключа, которое стартует при приеме первого бита, отличного от преамбулы. Ещё, как правило, такие посылки содержат контрольный бит (четности или др.), таким образом, событие "принят ключ" наступает после цепочки событий "накоплено N битов преамбулы" -> "накоплено 12 бит" -> "совпал бит четности".
  9. Интересный финт оптимизатора, приводящий к ошибке: предположим, что основная часть функций программы контроллера расположена во флэшке, а некоторым функциям предписано директивами размещение в RAM (такое бывает необходимо, если из функции выполняется запись во внутреннюю флэшь контроллера). При отсутствии оптимизации всё работает, а при включенной оптимизации зависает где-то внутри функции, которая должна быть в RAM. Оказалось, что оптимизатор заинлайнил функции, которые должны были быть в RAM, они слились с телом "обычных" функций и разместились во флэшке. А на первый взгляд и не придерешься - сначала отрабатывает компилятор со своей оптимизацией, потом в дело вступает линкер, которому предписано размещение в RAM функций, которых уже нет после прохода оптимизатора...
  10. Я похожую штуку делал через MDIO интерфейс микросхемы-свича, у них есть для каждого порта управляющий бит "Port isolation" в регистрах, ставим внешний контроллер (я ставил Атмегу), и в нужный момент изолируем порт. Линк при этом пропадает полностью, как если бы вытащили кабель из гнезда.
  11. 2 stm32 на одну шину fmc

    Вам надо сделать арбитраж между 2-мя мастерами на FMC, например, по аналогии с PCI шиной, проложить 2 провода между процессорами - REQ# и GNT#, один процессор ведущий - у него GNT# выход, а REQ# вход, у второго - наоборот. Ведущий может лезть на FMC, только если у него GNT# выход неактивен, ведомый должен выставить REQ# и дождаться GNT# от ведущего, после чего лезть на FMC.
  12. Keil 5.xx может запросто компилировать с помощью GCC-компилятора.
  13. Каким местом тут BLE Mesh, интересно.
  14. Насколько я понимаю, это нереальная задача. БТ подразумевает установление соединения между 2-мя узлами с возможным обменом ключами для шифрования трафика. Вклиниться в обмен (даже просто прослушать его) обычным смартфоном не представляется возможным, это будет весьма нетривиально даже при разработке собственного низкоуровневого устройства.