Для сборки CHDK-прошивки под Windows вам потребуется Unix-like среда типа Cygwin или Mingw/MSys. Также предполагается, что вы владеете базовыми знаниями работы в командной строке Windows.
Среда разработки
Готовую среду разработки вы можете взять здесь. (Возможно она не работает под Vista, хотя под Windows 2000/XP она работает нормально)
Установка
Среда разработки
Создайте папку для проекта CHDK. Например, D:\CHDK.
Создайте поддиректорию для среды разработки. Например, D:\CHDK\gcc.
Добавьте папку с exe-файлами в вашу переменную окружения PATH.
Для этого откройте 'Start' menu -> 'Control Panel' -> 'System', закладка 'Advanced' tab, кнопка 'Environment Variables'. Я использовал переменную PATH из User Variables. Если переменная PATH не существует просто создайте её и присвойте ей 'D:\CHDK\gcc\bin'. Если переменная PATH существует, то добавьте в конец её ';D:\CHDK\gcc\bin' (не забудьте разделитель ';' (точка-с-запятой). Сохраните сделанные изменения.
Примечание:
Все переменные окружения в Windows - регистронезависимые. То есть, если имеется переменная с именем 'Path' или 'path' или 'pAtH' просто используйте её. Не создавайте новую заглавными буквами.
Исходники
Создайте рабочую дитекторию. Например, D:\CHDK\src.
Сказайте последню версию исходников из SVN-репозитория: tools.assembla.com в созданную директорию.
Вы можете использовать SVN-клиент для Windows или просто скачать исходники ZIP-архивом непосредственно с tools.assembla.com.
Если вы скачали исходники архивом, распакуйте его в папку D:\CHDK\src\. Затем проверьте, что директория 'bin' присутствует на верхнем уровне иерархии исходников (т.е..
D:\CHDK\src\branches\grand\bin\). Если её нет, то создайте её.
Если вы планируете в дальнейшем участвовать в разработке и всегда иметь последние изменения в вашей копии, то использование SVN-клиента является более предпочтительным, так как он позволяет совмещать изменения из/в SVN-репозиторий. Путь до SVN-репозитория - https://tools.assembla.com/svn/chdk. Для первичного получения исходников вы можете использовать следующую команду:
Перейдите в директорию с исходниками(т.е.. D:\CHDK\src\branches\grand\). Затем наберите:
gmake fir
По умолчанию, CHDK собирается только для A610, fw1.00e. Если вы хотите собрать прошивку для другой модели камеры, просто запускайте 'gmake' с аргументами PLATFORM и PLATFORMSUB. Например:
gmake PLATFORM=a620 PLATFORMSUB=100f fir
Чтобы скомпилировать прошивку для всех камер, наберите:
gmake batch-zip
Проблемы и решения
Кофликт с продуктами Borland
Если в пути находится компилятор фирмы Borland, это может привести к ошибкам компиляции в связи с тем, что среда сборки будет использовать не те файлы (с теми же именами). Пример некорректной работы:
>> Entering to platform/a620/sub/100f boot.c -> boot.o stubs_min.S -> stubs_min.o boot.c -> stubs_auto.S stubs_auto.S -> stubs_auto.o -> stubs_entry.S CAUTION! 'stubs_entry.S' is not uptated due to target firmware binary not found! Touch Version 4.2 Copyright (c) 1998 Borland International
ERROR! There are unresolved addresses in 'stubs_entry.S' (a620-100f) for the following names: File stubs_entry.S: free Please, add them into 'stubs_entry_2.S' manually!
Чтобы избежать такого поведения, просто изолируйте продукт Borland (например, модифицированием переменной PATH).
Undefined reference to `sub_...'
Неожиданно, или после обновления, может возникнуть сообщение об ошибке такого рода:
... -> main.elf ../platform/a610/sub/100e/libplatformsub.a(boot.o): In function `h_usrInit': boot.c:(.text+0x4): undefined reference to `sub_FFC019BC' boot.c:(.text+0x10): undefined reference to `sub_FFEB737C' boot.c:(.text+0x14): undefined reference to `sub_FFEA3A54' ...
Чтобы исправить эту проблему удалите файл 'platform/XXX/sub/YYY/stubs_auto.S' И снова скачайте его из репозитория.