Хакаем цифровую мыльницу с ROM-DOS и x86-процессором

в 8:05, , рубрики: Canon, compact flash, digic, dos, FAT, timeweb_статьи, x86, мыльница, фотоаппарат

Приветствую всех!

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

Хакаем цифровую мыльницу с ROM-DOS и x86-процессором - 1

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

❯ Суть такова

Вообще, я не особо интересуюсь фототехникой, разве что временами подумываю купить зеркальник и пойти пытаться побивать топы всем известного сайта, но это так, не самые приоритетные мечты, так что на данный комментарий я не обратил особого внимания. Но вот, пообщавшись с товарищем @dlinyj я узнал, что, оказывается, штука эта намного более крутая, чем может сходу показаться. В общем, в коллекции того, кого очень интересуют разные девайсы на базе X86, артефакт просто незаменимый. Поэтому я решил приобщиться и раздобыл себе на опыты экземпляр.

❯ Откуда X86 в фотоаппарате?

В начале двухтысячных Canon выпустил чипсет для своих цифровых камер — DIGIC (Digital Imaging Integrated Circuit). Камеры на базе него выпускаются и в наши дни, но сейчас нас интересует самая первая версия: DIGIC I (или просто DIGIC без всяких маркировок). Помимо цифрового сигнального процессора и АЦП данный комплект включает в себя и процессор на ядре 80186.

Источник

Если разобрать такой фотик, то на плате можно увидеть тот самый чип DIGIC, а также заказной процессор NEC.

Само собой, всё это не прошло мимо исследователей, поэтому вскоре после выхода на этих фотоаппаратах научились запускать самописный софт: от простых примеров типа индикатора заряда батареи или пищалки до тетриса или анализатора цвета.

Источник

В последующих версиях (DIGIC II и позднее) всё уместилось внутри одного чипа. Впрочем, это уже совсем другая история...

❯ Про запуск своего софта на фотоаппарате

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

Наиболее информативной из материалов на просторах оказалась вот эта страница (к слову, как раз упомянутая в видео). Помимо инструкции для запуска там был и небольшой архив софта.

Несмотря на то, что мыльница работает на ROM-DOS, просто так запустить софт с ПК не выйдет из-за несколько другой организации памяти.

Источник

Вот карта памяти у фотоаппарата.

Источник

А вот — у обычного компа.

Поэтому, к сожалению, запуска Doom или каких‑то других игр с ПК сегодня не будет: для запуска их придётся серьёзно переписывать под архитектуру фотика. Так что будем довольствоваться более простым софтом.

❯ Обзор оборудования

Для опытов понадобится всего‑ничего — сам фотик, карта памяти Compact Flash и комп с картридером. Подойдут следующие модели:

  • Серия PowerShot A: A60, A70, A75, A80, A85, A95, A300, A310, A400.

  • Серия PowerShot G: G3, G5, G6.

  • Серия PowerShot S: S45, S50, S60, S70 (включая S1 IS).

  • Серия Digital IXUS / IXY / SD: v2, v3, 400, 430, 500, SD10, SD20.

  • Премиум-компакт: PowerShot Pro1.

  • Зеркальные камеры (DSLR): EOS 10D, EOS 300D (Digital Rebel).

Более поздние камеры (на чипсетах DIGIC II, III, 4, 4+, 5...) нас сейчас не интересуют, поскольку построены на ARM, а не X86, а работают на RTOS, а не DOS.

Сколько же стоит самый дешёвый подходящий экземпляр? Поиск на вторичке показал, что урвать самую простую модель можно буквально за пару‑тройку тысяч. «Пару‑тройку тысяч? Дайте две!» — подумал я и раздобыл сразу два экземпляра.

Хакаем цифровую мыльницу с ROM-DOS и x86-процессором - 6

Первым ко мне попал PowerShot A85.

Экземпляр неисправен, у него какие-то проблемы с механикой объектива. Прикупил его чисто ради опытов с DOS (и потому что будет не жалко случайно закосячить). Для экспериментов подойдёт даже фотик с разбитой оптикой или дохлой матрицей, главное, чтобы он загружался и пускал в меню.

Хакаем цифровую мыльницу с ROM-DOS и x86-процессором - 7

Внешне это типичный фотик первой половины нулевых: довольно внушительные для мыльницы габариты, маленький экран, оптический видоискатель (окуляр его виден над дисплеем), запись на Compact Flash (мыльницы с привычными нам SD появились заметно позже), довольно узнаваемая компоновка элементов управления.

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

Хакаем цифровую мыльницу с ROM-DOS и x86-процессором - 8

Сверху переключатель режимов, динамик и кнопка спуска затвора. Обожаю подобные элементы управления: всё очень приятно щёлкает, крутится и нажимается.

Хакаем цифровую мыльницу с ROM-DOS и x86-процессором - 9

Ест девайс немало: для работы требуются аж четыре батарейки.

Хакаем цифровую мыльницу с ROM-DOS и x86-процессором - 10

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

Хакаем цифровую мыльницу с ROM-DOS и x86-процессором - 11

Есть тут и USB для передачи данных на ПК.

Хакаем цифровую мыльницу с ROM-DOS и x86-процессором - 12

Затычка разъёма отвалилась сразу же. Питать девайс можно и от внешнего БП.

Хакаем цифровую мыльницу с ROM-DOS и x86-процессором - 13

Сбоку дверца отсека карты памяти.

Хакаем цифровую мыльницу с ROM-DOS и x86-процессором - 14

Кроме отсека под Compact Flash там ничего нет.

Хакаем цифровую мыльницу с ROM-DOS и x86-процессором - 15

А это Canon PowerShot A70, тот самый фотик из статьи того чеха.

Хакаем цифровую мыльницу с ROM-DOS и x86-процессором - 16

Он очень похож на предыдущий, но, как по мне, у A85 дизайн чуть более удобный.

Хакаем цифровую мыльницу с ROM-DOS и x86-процессором - 17

Помимо разъёмов сбоку разместился лоток для батарейки часов.

Хакаем цифровую мыльницу с ROM-DOS и x86-процессором - 18

Сверху всё идентично.

Хакаем цифровую мыльницу с ROM-DOS и x86-процессором - 19

А снизу их и вовсе почти не отличить.

❯ Внутренности

Проблемный фотик я решил разобрать и заглянуть внутрь.

Хакаем цифровую мыльницу с ROM-DOS и x86-процессором - 20

Откручиваем всё, что откручивается, и снимаем переднюю панель.

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

Хакаем цифровую мыльницу с ROM-DOS и x86-процессором - 21

На шлейфе видим подтверждение того, что работает фотик на DOS.

Хакаем цифровую мыльницу с ROM-DOS и x86-процессором - 22

Конструкция программного переключателя.

Хакаем цифровую мыльницу с ROM-DOS и x86-процессором - 23

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

Хакаем цифровую мыльницу с ROM-DOS и x86-процессором - 24

Плата питания.

Хакаем цифровую мыльницу с ROM-DOS и x86-процессором - 25

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

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

Хакаем цифровую мыльницу с ROM-DOS и x86-процессором - 26

А вот с A70 не повезло. Продавец заверял, что аппарат рабочий, но то ли он отправил дохлый экземпляр, то ли постаралась доставка (артефакт был отправлен замотанным в пару слоёв плёнки), но ничего кроме того, что выше, фотик не снимает и не реагирует ни на нажатие кнопок, ни на постукивание об стену.

Вот видео, где более детально демонстрируются внутренности.

❯ Как он в плане съёмки?

Разумеется, не мог не попробовать его по основному назначению.

Хакаем цифровую мыльницу с ROM-DOS и x86-процессором - 27

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

Ещё фотографии
Хакаем цифровую мыльницу с ROM-DOS и x86-процессором - 28
Хакаем цифровую мыльницу с ROM-DOS и x86-процессором - 29
Хакаем цифровую мыльницу с ROM-DOS и x86-процессором - 30
Хакаем цифровую мыльницу с ROM-DOS и x86-процессором - 31
Хакаем цифровую мыльницу с ROM-DOS и x86-процессором - 32
Хакаем цифровую мыльницу с ROM-DOS и x86-процессором - 33

❯ Запускаем софт

Ну что же, перейдём к опытам.

Первым делом понадобится карта памяти Compact Flash любого поддерживаемого объёма. Её надо отформатировать в ФС FAT32.

Хакаем цифровую мыльницу с ROM-DOS и x86-процессором - 34

Теперь в корне карты создаём папку DC97, а в ней папку MISC. Туда-то мы и будем записывать наши приложения.

Каждое приложение состоит из экзешника и одноимённого *.ini-файла. Он нужен для того, чтобы фотик опознал этот файл как исполняемый и отобразил его в меню. Содержимое его примерно следующее:

Canon DigitalEye executable:VERSION=0001:Battery 0.4L   

Размер этого файла должен составлять строго 57 байт, иначе приложение не запустится. Если ещё остаётся место, лишние байты добиваем пробелами.

Хакаем цифровую мыльницу с ROM-DOS и x86-процессором - 35

Никакой модификации прошивки для запуска софта не требуется. Просто закидываем проги на карту, втыкаем её в фотоаппарат, включаем его и в режиме просмотра медиа заходим в меню.

Хакаем цифровую мыльницу с ROM-DOS и x86-процессором - 36

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

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

❯ Что тут есть из ПО?

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

Хакаем цифровую мыльницу с ROM-DOS и x86-процессором - 37

Вот, к примеру, индикатор заряда батареи.

Хакаем цифровую мыльницу с ROM-DOS и x86-процессором - 38

А вот электронная читалка *.txt.

Хакаем цифровую мыльницу с ROM-DOS и x86-процессором - 39

Для этой платформы даже были свои демки.

Хакаем цифровую мыльницу с ROM-DOS и x86-процессором - 40

Из игр здесь есть тетрис и пятнашки.

❯ Память

Если открыть приложение просмотра файлов, то можно увидеть и структуру папок.

Хакаем цифровую мыльницу с ROM-DOS и x86-процессором - 41

На диске A единственный экзешник CAMERA.EXE — это и есть вся локика фотоаппарата.

Хакаем цифровую мыльницу с ROM-DOS и x86-процессором - 42

На диске B единственная папка DATA, где хранятся ресурсные файлы типа звуков и иконок.

Хакаем цифровую мыльницу с ROM-DOS и x86-процессором - 43

Диск C не используется.

Хакаем цифровую мыльницу с ROM-DOS и x86-процессором - 44

И, наконец, диск D — сама карта памяти.

❯ Сборка своего софта

На прощание немного затронем то, как и каким инструментарием были сделаны все эти проги.

Как уже упоминалось, фотик работает под управлением ROM-DOS. Так что процесс сборки мало отличается от такового для DOS на обычном ПК. Так что попробуем собрать из исходников какое-нибудь простое приложение и посмотрим, что оно вообще из себя представляет.

Первым делом качаем Borland C. В данном случае по ссылке лежит готовый архив, так что установка максимально простая: распаковываем его в папку BORLANDC на системном диске, в PATH дописываем C:BORLANDCBIN.

Хакаем цифровую мыльницу с ROM-DOS и x86-процессором - 45

Далее запускаем BC, выбираем OptionsDirectories и указываем пути к папкам. Всё, со средой разработки разобрались.

Теперь очередь самой программы. Для примера взял прогу, которая выводит на экран скан-коды клавиш:

/****************************************************************************/
/*                   Keys flag view Canon PowerShot A70	      	    	    */
/****************************************************************************/
/* Created: 1.5.2005 [BORLAND C 3.1]                                        */
/* Last modified: 1.5.2005 [BORLAND C 3.1]	                            */
/* Copyright (C) 2004-2005 by RayeR					    */
/* Contact: http://www.volny.cz/rayer                                       */
/* Compiler: Borland C++ 3.1, disable Word Alignment, set 80186 code gen.   */
/****************************************************************************/
#include "psiolib.c"                   // PowerShot I/O library 2.0+

DWord key;

int main(void)
{
  ps_init();
  ps_cls(0,0);
  ps_set_pal(ps_default_palette,0);

  do {
    key=ps_get_key_state();
    ps_gotoxy(0,0);
    ps_clr_line(0,15);
    ps_printf(0,14,0,"KEYFLAG: %08X hn",key);
    ps_gotoxy(0,9);
    ps_printf(1,14,0,"Press [MENU] key to exit",key);
    if (key!=0)
      ps_delay(1000);
  } while ((key&PS_KEY_MENU)==0);
  return(0);
}

Для её сборки понадобится библиотека PSIOLIB (PowerShot I/O), которую надо скачать на всё той же странице чеха и закинуть в папку с исходником.

Хакаем цифровую мыльницу с ROM-DOS и x86-процессором - 46

Собираем эту прогу, получаем готовый к закидыванию на флешку экзешник.

Теперь создаём одноимённый *.ini-файл, куда пишем примерно следующее:

Canon DigitalEye executable:VERSION=0001:Hello app      

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

Хакаем цифровую мыльницу с ROM-DOS и x86-процессором - 47

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

Хакаем цифровую мыльницу с ROM-DOS и x86-процессором - 48

Отлично, всё работает!

❯ Что же в итоге?

Разумеется, это далеко не всё, что можно делать с данным девайсом. Программ для него было написано намного больше. Ну и, конечно же, никто не отменял использование аппарата непосредственно для съёмки, тем более, что фотографии на него получаются весьма антуражными.

Теперь есть интерес попробовать портировать на него какую-нибудь игру с ПК. Doom запустить получится вряд ли: ресурсов у фотика маловато. Тем не менее, будет интересно поэкспериментировать с запуском какой-нибудь игры времён XT.

Такие дела.

Может быть интересно:

Автор: MaFrance351

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js