Encoder firmware - v3l0c1r4pt0r/lkv-wiki GitHub Wiki
Encoder has a firmware file usually with extension .bin. It contains raw dump of ROM memory, which is then loaded at address 0.
Image structure
0 - 1000: IRQ0 - IRQ15
7d100 - b53bf: code section
b53c0 - bd5bf: data section
bd5c0 - d8d6f: another code section
d8d70 - 10205f: another data section
200000 - 283104: SMEDIA02 container
Code base
Code starting at address 0x7d100 consists of FreeRTOS port with bunch of custom modules. It uses FreeRTOS for scheduling of the tasks. Task names are:
task_mainPALFILEMPSAUDIO_INVIDEO_ENCODERSTREAM_MUXSTORAGEHDMI_LoopThroughUSBEXKEY_MANAGER
Source files
Following source files are known to be present in firmware:
tasks.c- partially common with FreeRTOS codebasetimers.c- partially common with FreeRTOS codebasemsgq.cthread.cheap.c
Encoder CPU-part responsibilities
- upgrade SMEDIA02 (copy to different memory area)
- audio driver
- I2S initialization
- FAT32 filesystem support (purpose unknown)
- other/unknown
ISA
Machine code present in *.bin firmware blob is for OpenRISC 1000 (or1k) core.
SPI Flash
Most likely this is later stored on U4 chip.