Сообщество - TECHNO BROTHER

TECHNO BROTHER

2 082 поста 13 660 подписчиков

Популярные теги в сообществе:

291
TECHNO BROTHER

Мультитул для инженера: волшебная коробочка с I2C/SPI/UART/JTAG за 1.000 рублей

Будучи творческим человеком и техногиком, я обожаю при первой возможности апгрейдить своё оборудование. Время от времени я мониторю маркетплейсы в поисках чего-то новенького и в этот раз я наткнулся на настоящий мультитул для Embedded-разработчика — контроллер I2C/SPI/UART/JTAG в одной коробочке и всё это всего за 1.000 рублей... Конечно я не смог пройти мимо этой штучки и в рамках сегодняшней статьи хочу рассказать что оно из себя представляет и как с ним работать. Жду вас под катом!

❯ Что за устройство?

На самом деле такой формат статей для меня «в новинку», до этого я ни разу не делал обзоров на оборудование. Да и мой инструментарий слишком зауряден, чтобы делать ещё одну статью уровня «почему Quciko T12 лучше любой 900M станции» или «почему Вам не стоит покупать компрессорный люкей в 2025 году». Однако обзоров на сегодняшний гаджет я не нашёл, несмотря на его огромную пользу как для Embedded-разработчиков и инженеров, так и мастеров по ремонту смартфонов, планшетов и ноутбуков.

Во время подготовки статьи о том, как я написал BIOS для игровой консоли от Waveshare, в рекомендациях мне попадались другие товары от этого производителя — в том числе и сегодняшний гаджет. Меня сразу привлекла возможность переключения 3v3->5v логики и обширный набор поддерживаемых шин. В официальной вики были описаны следующие характеристики:

  • Шины: 1x SPI с двумя чип-селектами (можно подключить до двух устройств на одну шину), 1x I2C, 1x JTAG (полноценный, с ресетом!) и 2x UART с дополнительными линиями CTS/RTS для совместимости с классическими COM-портами.

  • Используемый контроллер: WCH CH347. Некоторым читателям чип может показаться знакомым по аналогии с классическим CH341A.

  • Питание: 5В, 3.3В, потребление ~65мА на VBus. Есть самовосстанавливающийся предохранитель на «входе».

Waveshare — достаточно известный бренд, под которым реализуются одноплатные компьютеры, «бутербродная» периферия для них и инструменты.

Waveshare — достаточно известный бренд, под которым реализуются одноплатные компьютеры, «бутербродная» периферия для них и инструменты.

Я сразу смекнул, что смогу использовать гаджет как для восстановления программно-убитых устройств по типу КПК, так и для отладки своих собственных самоделок, благо набор шин к этому располагает. Устройство приехало ко мне примерно через месяц, в небольшом пакетике и брендовой коробочке, в которую входило само устройство, кабель USB Type-B (ну почему не Type-C?), Dupont-провода в IDC-коннекторе для всех шин, а также небольшой мануал. Нареканий к доставке кроме скорости не возникло.

Сам гаджет представляет из себя компактную металлическую коробочку с «ушками» для удобного крепления на столе или стене. Сверху расположена шпаргалка по распиновке и режимам работы CH347, а также светодиодные индикаторы для UART.

Разбирается гаджет очень просто: достаточно лишь открутить несколько винтов с обеих боковых пластин устройства и перед нами открывается вид на плату. Схемотехника здесь простейшая: самовосстанавливающийся предохранитель, линейный регулятор AMS1117, который питает контроллер и нагрузку на VCC (до ~600мА), сам CH347, а также набор ключей для согласования режимов работы. CH347 — это не просто ASIC, а вполне себе полноценный микроконтроллер, прошивку которого можно обновить, правда SDK для использования CH347 как МК производитель не предоставляет.

После подключения гаджет радостно зажег индикатор PWR, подтвердив свою работоспособность, а значит пришло время протестировать возможные варианты использования!

❯ UART

С UART всё просто и понятно: нам достаточно лишь выбрать желаемый режим работы (M0 — двухканальный UART, остальные режимы — UART + I2C/SPI или UART + JTAG) с помощью тумблера и подключить/припаять Dupont'ы к соответствующим пинам на плате. UART здесь достаточно быстрый: при двухканальном режиме работы, на UART0 можно добиться до 9Мб/с (мегабод), а на UART1 — до 7.5Мб/с.

Провода в разъёмы установлены не бездумно — у них есть цветовая маркировка и логика помимо «красный — VCC, чёрный — GND».

Провода в разъёмы установлены не бездумно — у них есть цветовая маркировка и логика помимо «красный — VCC, чёрный — GND».

В качестве теста я решил снять лог загрузки со своего проекта самодельной игровой консоли. Для работы с UART я привык использовать Putty: сначала я припаял RX/TX и массу, затем запустил Putty и выбрал COM-порт, соответствующий первому каналу, установил бодрейт в 115200 и включил консоль:

Всё работает! В целом, гаджет можно использовать и для прошивки более сложных устройств: например многие смартфоны и кнопочные телефоны всё ещё имеют альтернативный режим прошивки через UART, а ретро-телефоны Samsung и LG так вообще не имеют альтернатив — если нет специального JIG, то остаётся лишь вызванивать RX/TX с разъёма и подпаиваться напрямую к UART процессора!

❯ SPI/I2C

С SPI и I2C уже всё чуточку интереснее. Дело в том, что как вы уже могли понять — чип использует свой собственный проприетарный протокол для организации моста между программой на ПК и шиной данных. Для работы с этим протоколом производитель предоставляет уже готовую библиотеку для Windows начиная с 2000, так что возможно у чипа есть перспективы для оживления легаси пром. оборудования. Для Linux же есть альтернативные драйвера, которые пробрасывают CH347 как обычные spidev и i2c-dev устройства.

Драйвер можно скачать здесь

Драйвер можно скачать здесь

Для проверки коммуникации можно использовать специальную тестовую программу из SDK, которая позволяет отправлять произвольные данные и даже прошивать флэшки 25 'ой и EEPROM'ки 24'ой серии.

Давайте же попробуем написать что-нибудь полезное! Например, подключим к гаджету 1.8-дюймовый дисплей и что-нибудь на него выведем.

С разводкой дисплея проблем не возникает: SDO к MOSI, SCK к CLK, VCC к VCC и BL (питание подсветки), однако для управления DBI-дисплеями необходимы ещё две дополнительные линии: D/C (линия, определяющая как интерпретировать байт на входе), а также RESET для аппаратного сброса контроллера. И с этим проблем тоже не возникает: у контроллера есть как минимум четыре свободных GPIO, два из которых мы с вами и будем использовать для управления линиями дисплея — GPIO6 (CTS на UART1) и GPIO7 (RTS на UART).

Далее я начал изучать PDF-ку с документацией сомнительного качества и писать код инициализации. Начинается всё с получения контекста устройства с помощью функции CH347OpenDevice, которая принимает в себя индекс нужного контроллера в системе и возвращает непонятный идентификатор (вероятно WinUSB?). Интересно то, что в остальном API используется не идентификатор, а как раз тот самый индекс, который в большинстве случаев будет 0. Далее мы получаем информацию об устройстве и сверяем режим работы, если он отличается от нужного — выбрасываем исключение:

/* Initialize CH347 */
deviceHandle = CH347OpenDevice(deviceIndex);
if (!deviceHandle)
throw new std::runtime_error("Failed to open CH347 device");

mDeviceInforS info;
CH347GetDeviceInfor(deviceIndex, &info);
if (info.ChipMode != 1)
throw new std::runtime_error("Incorrect chip mode");

Далее настраиваем SPI-контроллер. На выбор есть все три существующих режима, настройки полярности и возможность вручную дергать один из двух доступных ChipSelect'ов, а также тайминги. Частота работы определяется предустановленным набором делителей — 60МГц, 30МГц, 15МГц и т.п. Не забываем настроить таймаут каждой USB-транзакции:

CH347SetTimeout(deviceIndex, CommunicationTimeout, CommunicationTimeout);

/* Initialize SPI bus & GPIO */
mSpiCfgS cfg;
memset(&cfg, 0, sizeof(cfg));
cfg.CS1Polarity = 0; /* CS0 = active low */
cfg.CS2Polarity = 0;
cfg.iActiveDelay = DefaultChipSelectDelay;
cfg.iByteOrder = 1;
cfg.iClock = 0;
cfg.iDelayDeactive = DefaultChipSelectDelay;
cfg.iIsAutoDeativeCS = 0;
cfg.iMode = 0;
cfg.iChipSelect = 0;
cfg.iSpiWriteReadInterval = DefaultChipSelectDelay;

if (!CH347SPI_Init(deviceIndex, &cfg))
throw new std::runtime_error("Failed to initialize SPI");

И инициализируем дисплей. Здесь есть важный момент: функция CH347GPIO_Set устанавливает состояние всего GPIO-контроллера в чипе и поэтому принимает в себя три битовые маски с конфигурацией каждого пина. Функции GPIO стандартные — вход/выход, плюс обработка прерываний с помощью специального callback'а:

CH347GPIO_Set(deviceIndex, 1 << config.IOReset, 1 << config.IOReset, 0);
this_thread::sleep_for(16ms); /* HW reset */
CH347GPIO_Set(deviceIndex, 1 << config.IOReset, 1 << config.IOReset, 1 << config.IOReset);

/* Software initialization */
SendCommand(EMIPICommandList::cmdSWRESET, 0, 0, 16);
SendCommand(EMIPICommandList::cmdSLPOUT, 0, 0, 0);

/* Framerate and refresh */
uint8_t frameRateControlRegister[] = { 0x01, 0x2C, 0x2D };
SendCommand(EMIPICommandList::cmdFRMCTL1, frameRateControlRegister, sizeof(frameRateControlRegister), 0);
SendCommand(EMIPICommandList::cmdFRMCTL2, frameRateControlRegister, sizeof(frameRateControlRegister), 0);
SendCommand(EMIPICommandList::cmdFRMCTL3, frameRateControlRegister, sizeof(frameRateControlRegister), 0);
SendCommand(EMIPICommandList::cmdFRMCTL4, frameRateControlRegister, sizeof(frameRateControlRegister), 0);

/* Power control */
uint8_t powerControlRegister1[] = { 0xA2, 0x02, 0x84 };
SendCommand(EMIPICommandList::cmdPWCTL1, powerControlRegister1, sizeof(powerControlRegister1), 0);

uint8_t powerControlRegister2 = 0xC5;
SendCommand(EMIPICommandList::cmdPWCTL2, &powerControlRegister2, sizeof(powerControlRegister2), 0);

uint8_t powerControlRegister3[] = { 0x0A, 0x00 };
SendCommand(EMIPICommandList::cmdPWCTL3, powerControlRegister3, sizeof(powerControlRegister3), 0);

uint8_t powerControlRegister4[] = { 0x8A, 0x2A };
SendCommand(EMIPICommandList::cmdPWCTL4, powerControlRegister4, sizeof(powerControlRegister4), 0);

uint8_t powerControlRegister5[] = { 0x8A, 0xEE };
SendCommand(EMIPICommandList::cmdPWCTL5, powerControlRegister5, sizeof(powerControlRegister5), 0);

uint8_t powerControlVCOMRegister = 0x0E;
SendCommand(EMIPICommandList::cmdPWCTL6, &powerControlVCOMRegister, sizeof(powerControlVCOMRegister), 0);

/* Addressing */
uint8_t madCtlMode = 0xC8;
SendCommand(EMIPICommandList::cmdMADCTL, &madCtlMode, sizeof(madCtlMode), 0);

uint8_t rasetRegister[] = { 0x0, 0x0, 0x0, 0x7f };
uint8_t casetRegister[] = { 0x0, 0x0, 0x0, 0x9f };
SendCommand(EMIPICommandList::cmdRASET, casetRegister, sizeof(rasetRegister), 0);
SendCommand(EMIPICommandList::cmdCASET, rasetRegister, sizeof(casetRegister), 0);

uint8_t colorMode = 0x05; /* RGB565 */
SendCommand(EMIPICommandList::cmdCOLMOD, &colorMode, sizeof(colorMode), 0);
SendCommand(EMIPICommandList::cmdDISPON, nullptr, 0, 0);

...

void CDisplay::SendCommand(EMIPICommandList command, uint8_t* data, size_t length, uint32_t delay)
{
uint8_t cmd = (uint8_t)command;

/* Send command */
GPIOSet(deviceIndex, config.IODataCommand, 0);
CH347SPI_Write(deviceIndex, 0, sizeof(cmd), sizeof(cmd), &cmd);

/* Send arguments (if any) */
if (data && length)
{
GPIOSet(deviceIndex, config.IODataCommand, 1);
CH347SPI_Write(deviceIndex, 0, length, length, data);
}

this_thread::sleep_for(chrono::milliseconds(delay));
}

Теперь можно запустить программу и посмотреть на результат. Если вы увидели шум (или мусор) на экране — значит вы всё делаете правильно и контроллер успешно проинициализирован.

На фото можно заметить перемычку между CS и массой, однако не все контроллеры дисплеев толерантны к постоянному низкому уровню на CS. На моей практике контроллеры ILI отказывались проходить инициализацию, если не разграничивать каждую транзакцию с помощью CS.

Теперь можно что-нибудь вывести. Подготавливаем изображение, преобразовав в 16-битный массив пикселей, переводим контроллер в режим записи в VRAM, отправляем изображение:

void CDisplay::CopyFrameBuffer(uint8_t* pixels)
{
uint8_t cmd = (uint8_t)EMIPICommandList::cmdRAMWR;

/* Send command */
GPIOSet(deviceIndex, config.IODataCommand, 0);
CH347SPI_Write(deviceIndex, 0, sizeof(cmd), sizeof(cmd), &cmd);

GPIOSet(deviceIndex, config.IODataCommand, 1);

uint32_t frameBufferSize = config.Width * config.Height * 2;
uint32_t offset = 0;

CH347SPI_Write(deviceIndex, 0, frameBufferSize, 2, pixels);
}

И пишем небольшую демо-программу:

int main(int argc, char** argv)
{
CDisplayConfiguration config = {
ChipSelectIndex, ResetGPIOIndex, DataCommandGPIOIndex, 128, 160
};
CDisplay display(config);
display.CopyFrameBuffer(beach);


return 0;
}

Результат — на дисплее появляется картинка!

Потенциальных применений у такого гаджета много: можно сделать красивые анимированные часы, мониторинг датчиков, показ уведомлений или дублировать окно с основного ПК. А ведь когда-то ради такого покупали LPT-провода, дисплеи от Сименсов и вручную превращали параллельную шину в последовательную...

❯ Заключение

Вот такой интересный гаджет выпустила компания Waveshare — и, что радует, по очень приятной цене! Ссылку по понятным причинам прилагать не буду, но при желании вы сможете его найти на всех трёх крупных маркетплейсах. Кроме того, можно купить Breakout-плату с тем же самым чипом за ~500 рублей, но там не будет таких удобных переключателей и Dupont'ов.

К сожалению, теста JTAG в статье не будет. У меня пока нет готовых к работе необычных гаджетов, где можно было бы протестировать OpenOCD... однако мой HTC Dream всё ещё ждёт свою прошивку модема!

А если вам интересна тематика ремонта, моддинга и программирования для гаджетов прошлых лет — подписывайтесь на мой Telegram-канал «Клуб фанатов балдежа», куда я выкладываю бэкстейджи статей, ссылки на новые статьи и видео, а также иногда выкладываю полезные посты и щитпостю. А ролики (не всегда дублирующие статьи) можно найти на моём YouTube канале.


Если вам понравилась статья...

И у вас появилось желание что-то мне задонатить (например прикольный гаджет) - пишите мне в телегу или в комментариях :) Без вашей помощи статьи бы не выходили! А ещё у меня есть Boosty.

Что думаете о таком преобразователе?
Всего голосов:
Что думаете об обзорах на оборудование? Есть смысл рассказывать о всяких ништяках, что я иногда покупаю для работы?
Всего голосов:

Подготовлено при поддержке @Timeweb.Cloud

Показать полностью 12 2
286

Сезам, грузися! Установка Windows XP на древний ноутбук без физических носителей

Недавно в моём районе открылась новая комиссионка, и конечно же, я наведался туда в первый же день. Особо заинтересовавшего улова было немного, но среди прочего попался красивый, хоть и побитый жизнью, ноутбук — ThinkPad X40.

За каких-то 500 йен (260 рублей) такое чудо забрать было просто обязательно. Ну, подумаешь, софттач уже разложился — к счастью, он миновал стадию превращения назад в нефть, и сразу перешёл в состояние наждачки.

Но как обычно, беда вылезла, откуда не ждали.

После подкидывания блока питания оказалось, что винчестер девственно чист. Однако попытки загрузиться с флешки, внешнего диска, или даже внешнего флопика, результата не приносили — неумолимо вылезала надпись «Operating System Not Found», да и названия устройств в биосе не появлялись.

Беглый гуглёж показал — ранние серии X40 были очень часто подвержены внезапной смерти мультиконтроллера (ICH6). Буквально подышишь не в ту сторону, втыкая флешку — и вот у тебя уже нету ни USB, ни чего-нибудь ещё.

Добрые люди дали посмотреть на схему, и опасения подтвердились: ICH6 отвечает за связь с аудиокодеком, блютусом и USB. Как впоследствии выяснится, ни звук, ни блютус, ни USB тоже не работают.

Удивило, конечно, что SD-ридер тут висит на шине PCI, и поэтому работает. Впрочем, это я уже забегаю вперёд, ведь загрузиться с него нельзя.

SD-ридер на PCI-шине, рядом с сетевыми адаптерами

SD-ридер на PCI-шине, рядом с сетевыми адаптерами

В случае обычного ноутбука, можно было бы просто кинуть винчестер в USB-переходник и залить образ с другого компьютера, но и тут подстава — винчестер в нём 1.8 дюйма, и на шину IDE с напряжением до 3.3 вольта, поди найди такой адаптер. Вкладываться в покупку переходника, SSD и ещё адаптера с USB на mSata тоже не хотелось, ибо уже жаба задушит :-)

Однако, в нём всё ещё есть опция загрузки по сети через PXE, может, это и спасло бы?

❯ Сначала было слово, и слово это — DHCP

Первым делом я попробовал самое очевидное решение — iVentoy. Вебморда и все дела, конечно — стильно, модно, молодёжно, но ноутбук при этом успешно загружал PXE-бинарник и вешался. Видимо, с i386 проект уже не совместим. Придётся делать всё вручную.

Для того, чтобы загрузиться через PXE, DHCP-сервер должен отдать грузящемуся клиенту в ответе как минимум два параметра:

  • № 66адрес/имя TFTP-сервера, с которого грузимся, в моём случае 192.168.1.228

  • № 67имя файла на TFTP-сервере, которое будем загружать

В OpenWRT их можно указать в параметрах интерфейса локальной сети на вкладке DHCP Server:

Опция 150 для PXE не нужна, у меня она прописана для работы в локалке цисковских телефонов

Опция 150 для PXE не нужна, у меня она прописана для работы в локалке цисковских телефонов

В качестве сервера был поднят TFTPD64, а загрузчиком для пробы был закинут iPXE в сборке от проекта netboot.xyz (файл netboot.kpxe).

Пробуем грузиться и... почему-то ноутбук всё равно усердно пытается найти TFTP-сервер на роутере.

Тут я перепробовал кучу разных настроек, но, видимо, моя версия OpenWRT забагована и никакие попытки прописать DHCP Next-Server другими способами не прокатили.

К счастью, сам файл iPXE весьма небольшой, поэтому я просто установил на роутер atftpd и положил его в /srv/tftp/netboot.kpxe.

После этого ноутбук загрузился в iPXE, показал меню выбора образа, из которых грузились на 512 метрах оперативки далеко не все, и я даже зачем-то установил на него OpenBSD, но быстро его поломал.

❯ Попробуем туда за-PE-реться

Дальше были многочисленные попытки загрузить хоть какой-то ISO-образ через memdisk. В общем случае это делается следующей последовательностью команд в iPXE Shell:

kernel memdisk initrd http://192.168.1.228:3939/bartPE.iso boot

Однако, все имеющиеся у меня установочники падали даже не доходя до загрузки, собственно, ОС из образа, и я толком не разобрался, что делал не так. Для загрузки конкретно же Windows PE, впрочем, нашёлся другой способ:

  1. Берём образ Windows Server 2003 SP1 (важно: именно SP1) и вытаскиваем оттуда командой expand из папки I386 файлы

    1. STARTROM.COM

    2. SETUPLDR.EXE — переименовываем в NTLDR (именно из EXE, не из BIN!)

    3. NTDETECT.COM

  2. Кладём это всё в корень нашего TFTP-сервера, а рядом кладём образ самого Windows PE, собранный из того же Server 2003 SP1.

  3. Создаём файл с именем WINNT.SIF, в который пишем

    [SetupData] BootDevice = "ramdisk(0)" BootPath = "\i386\System32\" OsLoadOptions = "/noguiboot /fastdetect /minint /rdexportascd /rdpath=WINPE16.ISO"

    где WINPE16.ISO — название образа Windows PE.

Если вам влом этим всем заниматься — можете забрать готовую папку с архиворга :-)

После этого, если конфигурация DHCP у вас работает, можно просто указать STARTROM.COM в опции №67, и система должна загрузиться. Если же у вас всё так же сломано, как и у меня, то грузимся в IPXE Shell и выполняем команды:

dhcp net0 set net0/next-server 192.168.1.228 chain tftp://192.168.1.228/STARTROM.COM

После чего, в теории, наш компьютер будет медленно и печально вытягивать ISO-файл по UDP.

Клиент качает

Клиент качает

Сервер отдаёт

Сервер отдаёт

Загрузи лося!

Загрузи лося!

Это может быть полезно, например, чтобы вытащить какие-то важные файлы с машины эпохи XP, которая не грузится, но ещё как-то шевелится. Однако, для установки, как оказалось, есть способ ещё проще, быстрее и надёжнее.

❯ Serva — всему голова

Оказывается, есть современный, более надёжный инструмент «всё в одном» специально для Windows: Serva.

Он позволяет развернуть установку Windows XP по сети с куда меньшим геморроем.

Сначала скачиваем дистрибутив, распаковываем и запускаем. Окно по дефолту будет пустым и загадочным — нужно нажать на иконку в строке заголовка, а затем Settings:

На вкладке TFTP включаем сервер и создаём для него новую папку (без всего хлама из прошлых шагов)

На вкладке DHCP можно сделать по-разному:

  • Если соединяем комп с сервером витухой напрямую, то включаем DHCP Server

  • Если, как у меня, всё идёт в общую локалку, то включаем proxyDHCP

Также не забываем включить и BINL — через него будут, собственно, загружаться системные файлы.

Нажимаем OK и затем закрываем Serva полностью.

Далее тысячу раз проверяем файрвол, что у нас не торчит голой задницей порт SMB в интернет, а затем идём в PowerShell и выполняем:

Enable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol -All -NoRestart

Либо мышкой

Важно: протокол SMBv1 дырявый, и лучше это дело после установки откатить сразу назад, либо проворачивать это всё на виртуалке.

Затем идём в Панель управления → Network and Sharing Center → Advanced Sharing Settings и выключаем Password protected Sharing

После чего перезагружаем компьютер.

Возвращаемся к папке, которую создали для TFTP-сервера в Serva, и открываем её свойства. На вкладке Sharing жмём на Advanced Sharing и делаем её доступной с названием, дословно, WIA_RIS_SHARE.

После чего на той же вкладке жмём на просто Share... и даём доступ на чтение для Guest и Everyone:

Важно: сделать то же самое через Advanced Sharing — не прокатит.

Затем в папке создаём подпапку WIA_RIS, в которой — любую другую, но без пробелов и спецсимволов. Я, например, создал папку WXPJpn. В неё перетаскиваем содержимое всего нашего установочного диска с Windows XP.

Загрузиться в теории это сможет уже сейчас, но установиться не сможет — сети-то нету. Поэтому создаём подпапку $OEM$\$1\Drivers\NIC и вбрасываем туда драйвера от сетевой карты нашего Thinkpad'а.

Запускаем Serva ещё раз. Должны побежать логи, но все без ошибок:

Теперь, опять же, если вы используете DHCP-сервер внутри Serva, или в вашей сети опции 66/67 работают корректно — можно прописать в опцию 66 адрес сервера, на котором Serva запущена, а в 67 — строку \BM\PXESERVA\BIOS\pxeserva.0, и грузиться.

В моём же поломанном случае нужно было зайти снова в папку TFTP-сервера и скопировать всё из BM\PXESERVA\BIOS\*.* в её корень. В итоге получилась такая структура:

И как в прошлый раз — загружаюсь в iPXE, раздаваемый роутером, а затем выполняю команды:

dhcp net0 set net0/next-server 192.168.1.228 chain tftp://192.168.1.228/PXESERVA.0

Наблюдаю на экране меню с заветным пунктом, значит всё настроено успешно!

Если все драйвера на месте, то дальше будет всё то же, что и при обычной загрузке с установочного компакт-диска. Ну а как дальше переустановить шиндошс — думаю, разберетесь :)

Автор текста: vladkorotnev (@akasaka)

Написано при поддержке Timeweb Cloud.

Больше интересных статей и новостей в нашем блоге на Хабре и телеграм-канале.

Реклама ООО «ТАЙМВЭБ.КЛАУД», ИНН: 7810945525

Показать полностью 24
14

Ответ на пост «Вот уж спасибо почте России!»1

Почта... У почты хоть трекинг есть. Хоть как-то можно узнать, что и как. И предъявить претензии.На счет альтернативных перевозчиков. Пользовался 5пост. Доволен. Сбер. Доволен. Яндекс. Доволен. Режил воспользоваться Озоном. И тут полный затык. Посылка ушла. И всё. Пропала с радаров. Перенос за переносом. И никакой инфы.Прикинь, у Озона @Ozon даже трекинга нет. Вообще!!! Вообще не говорят, где посылка. Просто бред. Дата меняется уже почти месяц. Поддержка моросится общими фразами. Типа, сложность на одном из этапов. Ответственности никакой. Прямо раздражает...


P.S. Чтьаем внимательно! Разговор о ПОСЫЛКАХ ОЗОН!

ОЗОН-ПОСЫЛКА!

КАК ПОЧТА! НО НЕ ПОЧТА!!!

Ответ на пост «Вот уж спасибо почте России!»
Показать полностью 1
1870
TECHNO BROTHER

Ретропонедельник №227 Бытовые мелочи

Начинаем новую трудовую неделю с новых экспонатов в виртуальном музее советской бытовой техники sovtech.su. Сегодня это разные мелкие бытовые мелочи. Например вот такой пузырь для льда:

Присмотритесь к декоративной отделке, тогда это не имело такого сильного контекста, как сейчас:

Приспособления для закатки банок двух типов:

Первое, позволяющее закупорить банку в одно движение, сделано на заводе "Пермские моторы".

Вторая мне нравилась больше, позволет регулировать степень прожима крыши, но можно перестараться и расколоть банку:

Коли разговор пошел о крышках - в таком виде они продавались, выпускал Северский Трубный Завод.

Два варианта логотипа в мой каталог логотипов. Почти за пол века лежания крышки по прежнему блестят и в идеальном состоянии, а вот резиновый уплотнитель превратится в труху, потеряв эластичность.

Ситечки. Нижнее имеет клеймо УЗГА - Уральский Завод Гражданской Авиации. Полностью отмыть сложно - щелочные средства отлично убирают чайный налет, но жрут алюминий(

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

Ручки для тяжелых пакетов и авосек, чтобы не резали пальцы:

Хлопалка для выбивания ковров

Вешалка с редко ныне встречаемой отделкой поверхности - тканевым чулком. Сейчас используют пластик или окраску.

Складной зажим для брюк:

Чехол для автоключей

И все, лимит по медиа достигнут. Фоткал я, обработал @AthosLaFere за что ему большое спасибо. Телеграм для тех, кому удобнее там - в профиле

Показать полностью 49
40
TECHNO BROTHER

Вот уж спасибо почте России!1

Вторая утерянная посылка за год - это уже какой-то антирекорд по меркам одного клиента. С 25 сентября ноль движения, точно также как и утерянная в Чите посылка зависла на статусе "прибыло в сортировочный центр" и потом мне написали отписку мол "утеряно документальное сопровождение". Собсна благодарим почту за ещё одну не вышедшую статью про интересный гаджет :(

Вот уж спасибо почте России!

Зачем в это дерьмо с некомпетентным менеджментом продолжают вливать бабки? Лучше бы долю у частного перевозчика купили типа сдэка и ее разваливали.

Жаль продавец зажопил копейку и решил отправить почтой, а не обычной озоновской доставкой

?
Всего голосов:
Показать полностью 1 1
254

Сура ПК8000. Компьютер и жизнь сообщества разработчиков спустя почти 40 лет

В этом материале поговорим об истории и создателях, главных особенностях, программном обеспечении и сообществе разработчиков «Суры ПК8000».

Информации по компьютеру довольно много на форумах, поэтому остановлюсь на действительно интересных моментах, а ссылки приведу в первом комментарии.

❯ 10 REM История и создатели: Пензенский ответ «буржуям»

Год создания: 1986-1987.
Изготовитель: Пензенский завод вычислительных электронных машин.
Модификации: «Сура», «Веста», «Хобби».

Команда разработчиков:

  • Александр Фролов и Николай Такочаков — ведущие разработчики «железа» и системного ПО.

  • Саломатин Александр — все первые макеты компьютера были спаяны с его помощью.

  • Вадим Ковалев — делал куски кода для ПЗУ.

  • Андрей Малышкин и Дмитрий Беляков — разрабатывали фрагменты кода, игровые программы, софт для производственного тестирования. Андрей Малышкин осуществлял помощь в адаптации Бейсика MSX для Суры и помогал адаптировать операционную систему CP/M.

  • Другие специалисты производства и отделов завода: Михаил Дурасов, Сергей Коновалов.

  • Петр Лисов — разработчик всех БП на ВЭМ, включая и машины ЕС.

Блок питания Суры с грозными молниями. Фото Сергея Лемешева

Блок питания Суры с грозными молниями. Фото Сергея Лемешева

Разработка компьютера началась в 1985 году на заводе «ВЭМ» в городе Пенза, который занимался промышленным производством ПК ЭВМ ЕС и «Эльбрус».

Идея создания ПК была совместной инициативой министерства, в которое входил ВЭМ, и самого завода. Началась перестройка, возникла необходимость создания советского персонального компьютера для бытового применения и компьютерных классов.

В это время массово внедрялись ПК «Агат», БК, персональные комплексы ДВК-2М. Иногда можно было встретить Yamaha MSX-1.

Предполагалось, что «Сура» станет достойным ответом «буржуям», но команда разработчиков столкнулась с большими трудностями при попытке создать ПК, полностью совместимый с MSX — в СССР не выпускались полноценные аналоги Z80, видеопроцессора и звукового генератора.

Усложнялась ситуация тем, что в СССР было не принято использовать зарубежные микросхемы. Создание заказных не было одобрено, а реализация функций видеопроцессора MSX на «мелкой логике» оказалась слишком дорогой в производстве и была экономически нецелесообразной. Поэтому разработчики приняли решение на первом этапе сделать упрощенный вариант конструкции компьютера, основанный на советской элементной базе, а затем уже продолжить разработку ПК, полностью совместимого с MSX.

Подобные разработки велись еще на нескольких заводах страны, проблемы были те же, что и у ВЭМ. Но именно пензенская команда сделала первый серийный компьютер, который выпускался тысячами экземпляров.

Видео с разработчиками компьютера Андреем Малышкиным и Александром Фроловым

(Правда, на фоне не Сура ПК8000, а Сура-С - «Синклер»)

Кстати, почему ПК8000? Полная расшифровка — «персональный компьютер серии 8000 восьмиразрядный». Предполагалось, что в серию пойдут 8001, 8002, и т. д.

Публикация в «Пензенской Правде» (октябрь, 1987)

Публикация в «Пензенской Правде» (октябрь, 1987)

❯ 20 REM Характеристики и особенности. В чём была уникальность «Суры»

Мой экземпляр. Ещё раз спасибо Сергею, что сделал переходник на AV и заменил нерабочий геркон

Мой экземпляр. Ещё раз спасибо Сергею, что сделал переходник на AV и заменил нерабочий геркон

«Железо»:

  • Процессор: КР580ВМ80А на тактовой частоте 2,5 МГц (процессор серьёзно тормозится видеоконтроллером и «пищалкой»);

  • Память: ОЗУ — 64 КБ, из которых видео-ОЗУ — 16 КБ; ПЗУ — 16 КБ;

  • Графика:

    • Текстовые режимы 40×24 и 32×24 (символы 6×8 и 8×8);

    • Графический режим 256×192, 15 цветов.

  • Звук: однобитный программный, выводится через встроенный пьезоизлучатель;

  • Вывод изображения на монитор либо телевизор;

  • Ввод/вывод программ: кассетный магнитофон, кассеты ПЗУ, блок с дисководами (а теперь и IDE!);

  • Встроенный интерпретатор языка Бейсик.

Часто пишут, что BASIC был заимствован с компьютера Yamaha MSX-1, а коды процессора Z80 были переведены в процедуры процессора КР580ИК80А. Но в процессе адаптации Бейсик перестал влезать в ПЗУ ПК8000. Сокращение синтаксиса привело к нестабильной работе. Поэтому в серию пошел вариант на основе кода прошивки из журнала «Радио».

Одно из ключевых достоинств ПК8000 для программирования — огромный (по тем временам) объем памяти, доступный для Бейсика — примерно 47 килобайт.

Интересно, что в одной строке можно было указать несколько инструкций через разделитель:

10 SCREEN 2:CLS:PRINT “HABR = TORT”

Кроме того, можно «гулять» по листингу вверх-вниз, влево-вправо, отредактировать строку и перезапустить код.

Главная особенность — богатые графические возможности. Например, в отличие от ZX Spectrum, где цвет был привязан к блоку 8x8 пикселей, видеоконтроллер «Суры» позволял назначать цвет для блока 8x1.

Игра «Питон» для «Суры» ПК8000

Игра «Питон» для «Суры» ПК8000

Dizzy II. ZX-Spectrum

Dizzy II. ZX-Spectrum

Конструкция «Суры» позволяла создавать детализированную графику без характерных для «Спектрума» цветных полос и квадратов. А в палитре 16-разрядного БК почему-то вообще «забыли» про белый цвет.

«Красный Диззи» на БК выглядит весьма зловеще

«Красный Диззи» на БК выглядит весьма зловеще

❯ 30 REM Программное обеспечение и руководства пользователя

В комплекте с компьютером поставлялись руководства пользователя, инструкции по подключению внешних устройств (телевизора), кабели для подключения к магнитофону и ТВ, и кассета с программами, «Питон», «Морской бой», «Минер», «Танец» и другие.

В архивах коллекционеров я нашел несколько десятков книг, включая руководства по Бейсику, Паскалю, Ассемблеру и Си.

Обложка заводского руководства пользователя

Обложка заводского руководства пользователя

В начале 90-х для «Суры» насчитывалось около 200-300 программ, из которых всего пара десятков были написаны самими разработчиками ПК.

Были и защищенные экземпляры ПО:

Я попытался найти не очень длинные листинги программ, но одного взгляда достаточно, чтобы понять, что это не заработает, даже если убрать очевидные ошибки:

Учитывая раскладку клавиатуры и немного западающие клавиши моей «старушки», я все-таки запустил эмулятор:

35 REM Скриншоты из программ и игр

«Питон» — вероятно, самая красочная игра на «Суре» в 80-х. Автор Дмитрий Беляков. Игра входит в стандартный комплект. Также можно было поиграть в нее на автомате «Фотон». В воде плещутся рыбки, пошагово движется питон, а наглые кролики убегают или сидят и жрут морковку

Игры:

«Клад» написал Андрей Малышкин

«Клад» написал Андрей Малышкин

«Тяп-ляп» (Тетрис) для ПК8000 написал Дмитрий Беляков

«Тяп-ляп» (Тетрис) для ПК8000 написал Дмитрий Беляков

Программа «Танец». Прыжки и ужимки под бипер

Программа «Танец». Прыжки и ужимки под бипер

Игра «Минер». Хотя что-то подсказывает, что это все-таки сапер

Игра «Минер». Хотя что-то подсказывает, что это все-таки сапер

Игра Bomberman Ивана Городецкого и Александра Тимошенко (2008 год!)

Игра Bomberman Ивана Городецкого и Александра Тимошенко (2008 год!)

Driller Tank. Александр Тимошенко, Иван Городецкий

Driller Tank. Александр Тимошенко, Иван Городецкий

❯ 40 PRINT «Народное НИИ»: REM сообщество и наследие

Несмотря на то, что в России осталось всего несколько десятков разработчиков и коллекционеров «Суры», появляются новое «железо» и расширения.

Ключевые фигуры и благодарность за подготовку статьи:

  • Сергей Лемешев @lleo_aha. Восстанавливает оригинальные советские (и не только) ретро-компьютеры. У него в гостях я обнаружил огромную коллекцию — БК, «Амига», УКНЦ, «Сура».

  • Иван Городецкий. Уделяет много времени в исследовании производительности «Суры». Пишет тесты и программы.

  • Олег Сенин (Яндекс.Музей). С коллегой разработали картридж с большинством игр, которые нашли. Все упаковано авторским алгоритмом.

  • Александр Тимошенко. Автор игр и других программ.

  • Михаил Тарасов и Сергей Лебедев. Восстановили все основные печатные платы и подготовили платы Суры для производства.

Что обсуждают и проектируют участники сообщества:

  • IDE-контроллер. Позволяет подключать CF и SD для эмуляции дисковода.

  • Ремонт оригинальных плат и создание их точных реплик на современной элементной базе.

  • Новые загрузчики, утилиты для работы с современными носителями и патчи для существующего ПО. Например, cas2com, которая может формировать листинги программ на Бейсике (КОИ-8) из .cas файлов.

  • Звуковая плата.

  • Подключение к современным ТВ и VGA.

Фото из Телеграм-чата ПК8000 «Сура», «Хобби», «Веста» (ссылка в первом комментарии)

Фото из Телеграм-чата ПК8000 «Сура», «Хобби», «Веста» (ссылка в первом комментарии)

Рекомендую посмотреть доклад Олега Сенина на Chaos Constructions 2021 «Архитектура и программирование компьютера "Сура" ПК8000»

❯ 50 SCREEN 2: CLS: BEEP: REM уникальный хобби-проект длиной в десятилетия

Сообщество не просто хранит музейные экспонаты, а фактически продолжает разработку платформы. В первом комментарии я привел ссылки на сообщества, эмулятор, ветку на форуме zx-pk с ответами Андрея Малышкина на вопросы о «Суре».

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

А мой экземпляр отправляется в надежные руки Михаила Судакова @mikhailsudakov из Яндекс.Музея.

В комментариях делитесь ссылками и воспоминаниями!


Автор текста: wilelf

Написано при поддержке Timeweb Cloud.

Больше интересных статей и новостей в нашем блоге на Хабре и телеграм-канале.

Реклама ООО «ТАЙМВЭБ.КЛАУД», ИНН: 7810945525

Показать полностью 20 3
94
TECHNO BROTHER

Олдскулы свело

Давным-давно, году эдак в 2010, я еще будучи школяром выменял свой китайский сонерик-раскладушку на бюджетную легенду - Nokia 6060…

Почему я поменял телефон с MP3 и поддержкой микросд на простенькую 6060? Будучи школьником я часто заглядывался как одноклассники играют в Java-игры и тоже мечтал поиграть в Асфальт, Гангстар и Ралли. А благодаря какому то халявному сервису, который рекламировали на ТВ, качал всякие прикольные игры на свой гаджет…

Ну, гештальт с Java играми я даже спустя 15 лет закрываю, в свои 24 :) А 6060 планирую восстановить и приодеть либо в новый корпус, либо найти донора в хорошем состоянии

6060 это…
Всего голосов:
Показать полностью 4 1
596
TECHNO BROTHER

Ретропонедельник №226. Автомобильное

Начинаем рабочую неделю с нового экспоната в виртуальном музее советской бытовой техники sovtech.su. Сегодня я вам разных автоприбамбасов насыплю. Вулканизатор:

Проколы в камерах автомобилей и мототехники латали кусочками сырой резины, которую для превращения в нормальную резину нужно вулканизировать - нагреть. Тогда сера, добавленная в состав, начнет сшивать молекулы каучука, и резина из мягкой и липкой превратится в эластичную, ту которую мы видим.

Вулканизатор - это мини пресс с нагревом. Имеет клеммы 12В для использования с автомобилем и 6В для использования с мототехникой.

Приспособление для контроля компрессии. АО "измерон" 1994 год. (располагаося в Питере на Новгородской 13)

Предприятие изготовило приспособление к манометру с клапаном и резинкой. В 90е многие предприятия стали выпускать товары народного потребления для выживания.

представьте, нужно сделать что-то под капотом в ночи на трассе? На помощь придет лампа ПД525

Крючок для подвешивания, присоединительный провод смонат внутри под крышкой.

Манометр шин МД214. Так получиось, что у меня два экземпляра - 1975 года и выпущенный в 80х. Разница между ними только в материале корпуса - карболит заменили на полистирол.

В карусельке видно внутреннее устройство, фиксация показаний за счет трения стрелки, возврат к нулю - кнопкой.

Телеграм канал в профиле, для тех кому удобнее там.

Показать полностью 17
Отличная работа, все прочитано!