Search
Write a publication
Pull to refresh
1
0
Евгений @Uzix

Программист

Send message

Здорово что для ВГ015 всё больше отладок появляется. Видимо, сыграли продажи голого контроллера на маркетплейсах. Я тоже буквально вчера свой вариант отладки допаял, если всё будет ок - выложу в опенсорс.

Харон немного про другое - в нём используется SoC M6117D - самобытный чип с процессором и чипсетом внутри, который, по сути, невозможно встретить в обычных материнских платах. Если говорить именно о перепайке деталей со сгнивших плат, то стоит сказать про реплику M396F от Marco Both и mb386sx-rc2016 от Сергея Киселёва. Ну и коли речь про новодельные 386, то нельзя не упомянуть проект SBC-компьютера от Alexandru Groza, который вставляется в ISA-слот.

Использовал данный плагин в своих хобби поделках. После его применения плате требуется доработка "напильником", но итоговый результат мне нравится.

Hidden text

Не подделка, но б/у: CPLD EPM7128S продали с уже залитой прошивкой, в которой отключен JTAG. А с отключенным JTAG эти чипы перепрошить практически невозможно.
Это с каждым годом делать всё тяжелее. В Chrome и основанных на его движке приложениях (например, VS Code), уже несколько лет неотключаемое в Windows сглаживание. В Linux с переходом Pango на HarfBuzz несглаженные шрифты стали выглядеть, мягко говоря, странно. В Windows 10 во многих частях интерфейса (панель задач, новая панель управления) нет [известного мне] способа отключить сглаживание.
На схеме Арлекина этот сигнал, почему-то, подключен через резистор. Сделаем так же. Зачем, я не знаю. Может, умные люди подскажут в комментариях…

Этот сигнал параллельно подключен к слоту для периферии. Благодаря этому, периферия может принудительно отключать встроенное ПЗУ спектрума и подключать вместо него своё. Резистор нужен чтобы избежать конфликта между ULA и периферией. Эта функция используется, например, в Beta Disk Interface, DivMMC, ZX Dandanator Mini и т.д.
Недостатки этого подхода в отсутствии визуализации процесса и в очень ограниченных возможностях загрузчика, т.е. никакую сложную логику стандартными средствами не наворотить, если конечно же не придумать свою команду в u-boot (но это уже другой тип обновления, язык C великая сила)

Посмотрите barebox, он умеет выполнять shell-скрипты.
Для FreeBSD:
cat ~ |strings |xargs -IX sh -c 'test -e X && echo X'

Но не работает с каталогами и файлами, содержащими в имени перевод строки.
Это уменьшает вероятность проблем, но не исключает их. NMI handler, например, может вызываться в STM32 при сбое тактирования (если включен CSS).
Посмотрите gcc.gnu.org/onlinedocs/gcc/Named-Address-Spaces.html, спецификатор __memx. Мне им не приходилось пользоваться, но, похоже, это то, что Вам нужно.
Приведу 3 примера, ставящих под сомнение утверждение о выполнении команд через пробел интерпретатором.

1. Попробуйте переименовать "-c" в, например, "-r". Первый и последующие запуски будут давать одинаковый результат.

2. Попробуйте следующий скрипт:
#!/bin/bash --

echo $1
Первый и последующие запуски также будут давать одинаковый результат.

3. Попробуйте следующий скрипт:
#!/bin/bash

/bin/uname
При первом запуске, несмотря на присутствие uname в скрипте, будет напечатано лишь «SURPRISE», при последующих — «Linux».
Не соглашусь с некоторыми тезисами в объяснении. Ключевое в задаче №6 то, как происходит запуск скрипта и передача аргументов ему же. Первым аргументом команде, прописанной в shebang (#!/bin/bash) передаётся собственно имя скрипта. При первом запуске передаётся "-c", что интерпретируется как аргумент командной строки, выполняющий следующую за ним команду внутри bash. Т.е. полная команда будет выглядеть так: '/bin/bash -c «echo SURPRISE»'. При последующих запусках bash берёт уже путь из кеша, и команда будет выглядеть так: '/bin/bash ./-c «echo SURPRISE»'. Здесь "./-c" уже интерпретируется как имя скрипта для выполнения, а всё что дальше — как аргументы скрипта.

Выполнение команд через пробел работает, насколько мне известно, только для установки переменных окружения.

Вообще, передача "-c" как имени файла при пустом кеше выглядит как баг.
Насколько помню, типовая схема БС (применяемая как минимум Multitech и в платах iC880a) включает в себя 2 трансивера sx127*, которые работают в относительно узких диапазонах. Собственно, при настройке packet forwarder'а базовые частоты для этих трансиверов и указываются в секциях «radio_0» и «radio_1».
В зависимости от требуемого времени выполнения команды, периода сбора данных, объёма батареи и планируемого срока службы радиомодуля — задача реализуется и классом А. При этом приём команд радиомодулем происходит в небольшое временное окно после передачи им данных.
На Cortex M во многих случаях может помочь навешивание на *Fault_Handler обработчика, выводящего в, например, UART содержимое различных регистров (например, при применении MPU очень удобно видеть SCB->MMFAR), или даже полного дампа SRAM. Не панацея, но зачастую помогает ловить пулю «на подлёте».
Отображение содержимого регистров memory-mapped периферии. cmsis-svd является общепринятым форматом описания доступных регистров у микроконтроллеров на базе ядра Cortex.
Из того, что заметил за несколько минут знакомства: не хватает поддержки cmsis-svd, просмотра содержимого памяти, нормального дизассемблера (сейчас он доступен только если нет исходного кода проекта, насколько я понял).
В качестве примера хорошего embedded-отладчика можете посмотреть SEGGER Ozone.
Собственно, в этом и есть суть WAL, который, как и отмечено в статье, отлично сжимается. Проблема, насколько я понял, в хранении именно неинкрементальной версии (версий), на которую уже накатываются WAL.
Интересно, SSH тоже посчитают незаконным?

Information

Rating
Does not participate
Registered
Activity

Specialization

Embedded Software Engineer, System Administration
Linux
C
STM32
Arm Architecture
Embedded Linux
Embedded system
Electronics Development
Verilog HDL
Rust