project is not complited.
no binaries here.
developers wanted.
project goals:
- implement execution of independent binary modules inside of CHDK environment
benefits:
- low size of main CHDK binary file
- CHDK easy extensibility
- easy porting (no need to know CHDK architecture) - binary form of modules: ARM-ELF
- huge amount of RAM available to modules
- platform independency
details:
1) ELF module is built with dynamic linking to chdk.so shared library (also there will be no such file inside camera)
2) CHDK loads module into memory, updates import section, calls entry point inside module.
___________________________________________________
this folder contains example projects of modules.
they are :
- echo - writes string into file
- copy, del, rename, mkdir - file related applets
planning to make(port) following applets:
- encrypt - openssl open key encryption tool. you can encrypt your files in a such way nobody could decrypt them without encryption key which is suppossed to be out of your camera.
- ffmpeg - video conversion tool
- getexiff - tool to extract exiff information from jpeg file into ubasic variable
- bzip2 - compression tool
to keep size of main CHDK bin file low it is desired to migrate all non-photo related code into elf modules:
- games
- raw merge
- calendar
- file viewer
- memory dumper and other debug code
_________________________________________________
Q: HOW to build?
A:
1) to make elfs you need to built "../bin/chdk.so"
cd ../
gmake PLATFORM=a630 PLATFORMSUB=100c NO_INC_BUILD=1 fir
gmake PLATFORM=a630 PLATFORMSUB=100c NO_INC_BUILD=1 api
selected platform does not matter because there will be no chdk.so inside camera.
this file only required at compilation time.
2) inside of any elf folder execute: gmake
_________________________________________________
Q: How to make new module?
A:
1) copy any of example project into new folder
2) change file files.inc
3) change source files
4) run gmake
_________________________________________________
Q: What functions can I use in modules?
A: see ../core/elf_exported_functions.h for list of functions exported by CHDK
_________________________________________________
Q: I don't see function I need in elf_exported_functions.h
A: you can add it into this file and rebuild chdk.so
function must(?) be declared as extern so compiler could find it in export section of chdk.so
WARNING: doing this you make new version of CHDK so your module will not be compatible with old versions
________________________________________________
I used gcc_env_for_hdk-3.4.6.rar compiler to build project.
chdk.elf.edition.40314_20080324.rar - 2.12MB