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_main
PALFILE
MPS
AUDIO_IN
VIDEO_ENCODER
STREAM_MUX
STORAGE
HDMI_LoopThrough
USBEX
KEY_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.c
thread.c
heap.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.