Starting from our recent discovery about display access from bootloader, we thought, hey, we could now have full control of the resources from this embedded computer. At this stage, we knew what kind of ARM processor we have (ARM 946E-S), how much RAM we have (256MB/512MB depending on the model), how to print things on the display (portable code), how to handle timers and interrupts, how to do low-level SD card access on select models (600D and 5D3), and had a rough idea where to start looking for button events.
So, why not trying to run a different operating system?
We took the latest Linux kernel (3.19) and did the first steps to port it. As we have nearly zero experience with kernel development, we did not get too far, but we can present a proof of concept implementation that ……boots the Linux kernel 3.19 on Canon EOS DSLR cameras!
- It is portable, the same binary runs on all ML-enabled cameras (confirmed for 60D, 600D, 7D, 5D2 and 5D3)
- Allocates all available RAM
- Prints debug messages on the camera screen
- Sets up timer interrupts for scheduling
- Mounts a 8 MiB ext2fs initial ramdisk
- Starts /bin/init from the initrd
- This init process is a selfcontained, libc-less hello world
- Next step: build userspace binaries (GUI, etc)
1 comment:
Linux
Introduction
The Linux TCP/IP Source Code
A Brief History of Data Communication
The OSI Seven-Layer Network Model
Connection-Oriented and Connectionless Protocols
Broadband Networking Versus Local Area Networking
Packets and Frames
The Digital Data Rate Hierarchy in The Public Network
Broadband Networking Protocols of Yesterday and Today
Post a Comment