wiki:HDK/Изучение прошивок фотиков Canon с DIGICII

Version 9 (modified by GrAnd, 7 years ago) (diff)

--

Изучение прошивок фотиков Canon с DIGICII

По материалам соответсвующей ветки форума iXBT.

Для чего это нужно

Изначально предполагалось просто научить камеру сохранять RAW файлы.

Смотрим в прошивку

Для анализа прошивки вам понадобится дизассемблер. Я использовал IDA Pro. Прошивку (файл PRIMARY.BIN) следует загрузить как бинарный файл для процессора ARM с начального адреса 0xFFC00000.

Для автоматического распознавания функций можно использовать FLIRT-сигнатуры от прошивки A610. А также IDC-скрипт, который поможет на начальном этапе запустить дизассемблирование. Оба эти файла можно взять здесь или здесь.

Где взять альтернативную "прошивку"

Исходники

На данный момент самые свежие исходники можно взять из SVN репозитория, логин anonymous, без пароля. Прошивка постоянно (но не очень регулярно) обновляется, за что огромное спасибо vitalyb. Для работы с SVN-репозиторием вам понадобится SVN-клиент (хотя можно и через web, но это не очень удобно, так как файлов очень много и не будет возможности накладывать изменения), который можно скачать здесь. Также доступно описание на русском.

Собранные прошивки

Пока нет одного места, где бы выкладывались бы последние собранные версии прошивок. Можете попробовать посмотреть либо здесь, либо ищите ссылки по форуму. Ещё они могут быть здесь.

Если нет прошивки для вашей модели/версии

Если ваша камера построена на базе DIGICII, то скорее всего для неё существует возможность собрать альтернативную прошивку. Что для этого нужно смотри здесь?.

Собираем прошивку сами

На данный момент сборка прошивки может осуществляться либо под Windows, либо под Linux 64bit.

Сборка под Windows

Вам понадобится gcc для ARM под Windows. А тагже Unux-подобная среда типа Cygwin или Mingw/MSys.

Если не хочется возиться с настройкой, можно взять готовый environment здесь. Вот инструкция по установке:

  • Запускаем Far (или ваш любимый файловый менеджер).
  • Создаём на каком-нибудь диске рабочую папку, скажем 'D:\hdk-devel'.
  • Переходим в неё.
  • Скачиваем архив с environment'ом gcc_env_for_hdk.rar.
  • Распаковываем его.
  • Добавляем каталог 'D:\hdk-devel\bin' в PATH. Для этого идём в настройки Windows (у меня WinXP Eng): 'Start' -> 'Control Panel' -> 'System', закладка 'Advanced', кнопка 'Environment Variables'. Я добавлял в переменные пользователя. Если у вас такой переменной, как PATH, ещё не было, то жмём 'New' и вписываем имя переменной 'PATH' и значение 'D:\hdk-devel\bin'. Если такая переменная была, то жмём 'Edit', и добавляем к значению в конец ';D:\hdk-devel\bin' (не забываем разделитель ';' (точка с запятой)). Отбиваемся от всей этой кучи окон кнопками 'Ok'.
  • На всякий случай, перезапускаем Far (или ваш любимый файл менеджер), чтобы он зацепил изменения в переменных окружения. Не для всех файл менеджеров этот шаг необходим, но лучше перестраховаться.
  • Всё. Подготовка завершена.
  • Для сборки прошивки находясь в каталоге верхнего уровня с исходниками набираем 'gmake fir'. Для запаковки прошивки в zip-архив - 'gmake firzip'.
  • По-умолчанию собирается прошивка для A610 версии 1.00e. Для сборки под другую модель и/или версию прошивки можно указать параметры для gmake: PLATFORM=<модель> PLATFORMSUB=<версия прошивки>.
    Например, 'gmake PLATFORM=a620 PLATFORMSUB=100f fir'
    
  • Для очистки дерева исходников от всех объектников и собранных бинарников - 'gmake clean'.
    Также можно использовать 'gmake batch-zip' и 'gmake batch-clean' для сборки прошивок под все версии оригинальных прошивок и очистки всего дерева исходников соответственно.

Сборка под Linux

Здесь всё гораздо проще, так как почти всё уже есть в системе... Скачиваете gcc для ARM, распаковываете, настраиваете на него путь в файле makefile.inc, и вперёд.

Загрузка "прошивки" в камеру

Для загрузки прошивки вам возможно понадобится картридер, тат как необходимо записать файл прошивки PS.FIR в корень флэшки. Включаете фотоаппарат в режиме просмотра, заходите в меню и выбираете пункт меню Update Firmware.... В случае успешной загрузки прошивки фотоаппарат перезагрузится и мигнёт синим светодиодом.

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

Как пользоваться

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

  • Съёмка в RAW формате
  • Отображение живой гистограммы (RGB, яркостная и поканальные)
  • DOF калькулятор
  • Скрипты
  • Игра :)

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

Инструкция.

Скрипты

Маленькая инструкция (на английском).

Полезные ссылки