Magic Lantern Firmware Wiki
Advertisement


Parent: http://magiclantern.wikia.com/wiki/2.0.4_AJ


Ref: 2.0.4 bootstrap

MG 9221

Bootstrap onwards[]

I'm not really sure the best way of explaining how the firmware works - especially as I don't know myself!

And where better to start than the 'top' of the tree? AJ_guess_bootstrap() at 0xFF810000


AJ_guess_bootstrap()
TH_cstart()
TH_create_init_task( TH_init_task )


At some point TH_init_task() is then activated

TH_init_task() TH_dmSetup AJ_termDriverInit TH_termDeviceCreate TH_stdioSetup
TH_stdlibSetup TH_armlib_setup <AJ_massive_kernel_init>
AJ_massive_kernel_init() AJ_Serial_IO AJ_task_create_PowerMgr AJ_init_task_for_DM AJ_property_config
<AJ_CreateSequencer> AJ_loads_of_RegisterFunc_calls AJ_task_create("TaskMain") AJ_NewTaskShell

AJ_CreateSequencer(

aAJ_0xFFC49B74_toplevel_SeqSubList)

AJ_task_create("Sequencer")


The "Sequence" task calls a sub called AJ_SEQ_seqEventDispatch() to go through the startup routines in order:

ROM:FFC49B74 aAJ_0xFFC49B74_toplevel_sub_list 
ROM:FFC49B78                 DCD TH_startupEntry
ROM:FFC49B84                 DCD AJ_startupPrepareProperty
ROM:FFC49B90                 DCD AJ_startupPrepareCapture
ROM:FFC49B9C                 DCD AJ_startupPrepareDevelop_n_SDS_initialise
ROM:FFC49BA8                 DCD AJ_startupPreparePlayback
ROM:FFC49BB4                 DCD AJ_startupInitializeComplete
       

For the purposes of simplicity - and because each one of these does enough to fill a house with - I'll decided that each one of these is 'high enough' to be considered a Top Level function


Top Level Functions[]

A routine that is functionally high enough to the subroutine hierarchy to warrant its own listing


Address Subroutine Name Description
0xFF810000 AJ_guess_bootstrap() Eyes to the top of this page.
0xFF813684

TH_startupEntry()

CreateTaskClass, PROPAD(Fix,Ring,Rasen,Custom), InitializeIntercom, PROP_Initialize, EM_Initialise
0xFF813F98 AJ_startupPrepareProperty() Init the FM (FileMgr), and allocated space for FC (FileCache)
0xFF814350 AJ_startupPrepareCapture() Create "FileCache"' and' "RscMgr" tasks
0xFF8147B0 AJ_startupPrepareDevelop_n_SDS_initialise() Get ready for LiveView
0xFF814A58 AJ_startupPreparePlayback()
0xFF814B58 AJ_startupInitializeComplete() InitializeDL, BindGUI(, FA_Initialize(), EnablePowerSave()


Orphan Functions[]

A routine that IDA cannot find a cross-reference to a routine! (eg test function, or one where the reference is 'hidden' in data)


Address Subroutine Name Description
0xFF866B90 AJ_DispCon_TestTurnOnLcd_Start()
0xFF898BAC AJ_guess_windows_setup_svg_width_height_viewbox()
0xFF9AC1F0 AJ_check_Vram_For_Adjust()
0xFF9AC284 AJ_Check_Vram_For_Adjust_p2()
0xFF9AC34C AJ_AlreadyVramForAdjust()
0xFF9AC5AC AJ_Vram_for_adjust_CreateWhiteRedGreen()
0xFF9ACA68 AJ_DisplayFactory.c_VRAM_YUV422_File_Name()
0xFF9BA770 AJ_setup_calls_for_CU_n_CUStart
0xFF9C59A8 AJ_UndisplayPhysicalScreen_and_call_MainTestProc
0xFF9C5A18 AJ_TestSemaphore
0xFF9E0CE0 AJ_FACTORY_zFctBackSWTest.c
0xFFA28F18 AJ_CreateObject
0xFFA664A4 AJ_AL_FACTORY
0xFFB5639C AJ_StartLnImgTransferApp
0xFFBD4408 AJ_CRP_TOPLEVEL
Advertisement