FujiFilm's Tech History
History
- In 1988, Fujifilm released their first 0.4mp digital camera, the Fujix DS-1P (first commercial digital camera)
- Fuji released the $3500 Fujifilm S1 Pro in 2000, which accepted firmware updates
- In 2003, Fujifilm first released a firmware update and hackers on DPReview started to tinker with it
- Fujifilm started out using VxWorks, then later switched to MiSPO iTRON/NORTi
- More modern cameras use ThreadX, an open source RTOS. Most of the original Fujifilm code is still present.
- Modern cameras use SQLite to store some settings. SQLite starts up about 10 minutes after powering on the camera.
- SQLite was introduced in ~2012 to manage special settings in the camera
- In 2016-2017, a web server was introduced, with WiFi (wpa_supplicant)
- In 2022, Linux is dual booted on the X-H2S
CPUs
- Early Fujifilm cameras started out with TX49 MIPS III CPUs but switched to ARM later on (64 bit, Little endian)
- Smaller cameras have the FF4224, Arm v5 Little Endian 32 bit SoC
- Later cameras are Cortex A7
- The SoC has no internal memory and must be paired with external RAM chips (most of the time it's 256mb)
- Flash chips tend to be under the SD card reader (and tend to be 64mb)
Graphics
- Vector graphics processing is handled on vglib task
- Most cameras use OpenVG with the
VG_KHR_EGL_image
plugin. Implemented into Fuji cameras by NEC Systems Technology Ltd in the 2000s. - The rst task renders the OpenVG objects (?)
Memory Management
- Each task tends to have a custom method of allocating memory
- Each task tends to have it's own memset/memcpy/strcpy set of functions
- Once SQLite is initialized manually, memory can be allocated from
sqlite_mallocAlarm
- Memory starts at
0x00000000
and a mirror of the same region starts at0x400000000
- Main memory seems to be 256 megabytes, and each other region (0x1, 0x2, 0x3*...) seems to be 256kb
- IO regions start at
0xf0000000
(?)