I have started an update for firmware 1.6.0 and logged the output:
When entering firmware updater (after the loading screen):
FIRMUP_START!
3157: 100283.538 [LENS] WARN [ARIMA]LensDrv_ComWithRetry err:2 (0,0)
3158: 100283.551 [LENS] WARN [ARIMA]EFLensLib_Com ERR:0x10002,[13][80],2
3285: 100441.682 [FM] Suspend : Normal
3305: 100484.319 [FSU] PwControl: CARD_POWER_OFF End 41061us 2000
#
BootLoadErase SROM(start:0xE1FF8000)
complete
Write SROM
complete
CheckSum file=FACFA6A9 calc=FACFA6A9
Now jump to EOSRP160.FIR(0x00800120)!!
READY FIR
14: 52.575 [PROPAD] ERROR SearchFromProperty DataType = 0x03000000(L:3290)
15: 52.589 [PROPAD] ERROR SearchFromProperty DataType = 0x03000000(L:3290)
16: 52.594 [PROPAD] ERROR SearchFromProperty DataType = 0x03000000(L:3290)
63: 56.703 [PROPAD] ERROR SearchFromProperty DataType = 0x12000000(L:3290)
64: 56.711 [PRP] ERROR NotFoundID:0x12000004,Func:0x008ACE82
65: 57.032 [PROPAD] ERROR SearchFromProperty DataType = 0x12000000(L:3290)
66: 57.040 [PRP] ERROR NotFoundID:0x12000000,Func:0x008ACE82
70: 58.924 [UPDATE] startupInitializeComplete
86: 160.013 [UPDATE] Mount Card2
153: 345.603 VARI: 1 0 0 0
156: 345.735 [PROPAD] ERROR SearchFromProperty DataType = 0x12000000(L:3290)
157: 345.743 [PRP] ERROR NotFoundID:0x12000003,Func:0x008037E6
158: 345.777 [DEVICE] ERROR PROP_ACTIVE_SWEEP_STATUS : 0
159: 345.845 [UPD] Welcome to Update program
160: 345.851 [UPD] Program Ver.Master 0.2.0
167: 345.962 [UPD] ------------ Initialized
187: 362.998 0x0=SpecificToPartnerForFirmUp
190: 363.075 [UPD] CurrentVersion=1.6.0
208: 369.691 [FIO] ERROR @tUpdMgr FirstEnt(ecode=0x100b) L:1405
213: 378.873 [UPD] FILESELECT_FIRMUP ffffffff
218: 379.255 [UPD] 01 B:/EOSRP160.FIR 0
When starting the update process:
264: 52725.951 [UPD] FileSelect 0
265: 52725.966 [UPD] CurrentFile=B:/EOSRP160.FIR
289: 56613.927 0x0=SpecificToPartnerForFirmUp
290: 56613.955 [UPD] StartFirmupProgress
296: 56631.329 [UPD] Read file=B:/EOSRP160.FIR
300: 58128.931 [UPD] V&D Updater V5
301: 62250.558 [UPD] V&D Firmware V5
403: 115892.943 [UPD] CheckSum file=0x4eb0a38d buffer=0x4eb0a38d
next boot : get service from FROM
415: 116219.746 [UPD] TAG type 256
435: 118193.515 [UPD] detect File == FROM, No need to write. (No=0x1)
437: 118193.535 [UPD] Erace add=0xe13ecf20 Tsize=0x13acf20 size=0x2f30e0
next boot : get service from FROM
448: 131293.247 [UPD] updProgress(01,142344/333819) 46percent
451: 131305.313 [UPD] No=1 done
453: 131305.331 [UPD] TAG type 256
next boot : get service from FROM
469: 131357.037 [UPD] detect File == FROM, No need to write. (No=0x2)
471: 131357.057 [UPD] Erace add=0xe1f9df44 Tsize=0x4df44 size=0x520bc
next boot : get service from FROM
476: 132553.509 [UPD] updProgress(02,3932/333819) 47percent
479: 132565.787 [UPD] No=2 done
481: 132565.806 [UPD] TAG type 256
next boot : get service from FROM
497: 132585.260 [UPD] detect File == FROM, No need to write. (No=0x3)
499: 132585.278 [UPD] Erace add=0xf0000014 Tsize=0x14 size=0xfec
next boot : get service from FROM
504: 132585.361 [UPD] updProgress(03,25/333819) 47percent
507: 132597.474 [UPD] No=3 done
509: 132597.492 [UPD] TAG type 256
525: 132738.252 [UPD] detect File == FROM, No need to write. (No=0x4)
527: 132738.272 [UPD] Erace add=0xf0627fbc Tsize=0x137fbc size=0x68044
532: 134320.359 [UPD] updProgress(04,10224/333819) 50percent
535: 134332.472 [UPD] No=4 done
537: 134332.491 [UPD] TAG type 256
555: 135169.633 [UPD] detect File == FROM, No need to write. (No=0x5)
557: 135169.651 [UPD] Erace add=0xf0edb56c Tsize=0x83b56c size=0x124a94
564: 140271.701 [UPD] updProgress(05,58982/333819) 68percent
567: 140284.414 [UPD] No=5 done
569: 140284.432 [UPD] TAG type 512
611: 140395.480 [UPD] updProgress(06,102/333819) 68percent
next boot : get service from FROM
614: 140407.622 [UPD] No=6 done
616: 140407.643 [UPD] TAG type 512
21387: 221631.510 [UPD] updProgress(07,104858/333819) 100percent
21390: 221643.797 [UPD] No=7 done
21392: 221643.816 [UPD] COMPLETE_FIRMUP
21396: 221873.039 0x0=SpecificToPartnerForFirmUp
MPU is also updated and does print this at the same time:
Waiting for receive binary
EEP write start...********************
Complete.
MPU Send RAM Program...
jump to RAM program
RAM exec Start
Write MPU Firm
S0 Check OK
erase Area
Write Blocks Start
****************************** ... (lots of stars)
Write Complete.
ErasedBlock:000007FE
ErasedPage :00000000
Erase Rest Block
ChkSum_WRITE=0x5F81A6BF
ChkSum_READ =0x5F81A6BF
ChkSum OK!
Update Successfly Complete.
when leaving updater:
24019: 643960.485 [UPD] SHUTDOWN_FIRMUP
24036: 644099.539 [UPD] _REBOOT ICU -> MPU
MPU prints this when leaving:
MPU Update Done.
RESET
RSTFLG : 0100
MPU Update Complete
Clear Hold RAMsetCCSnkRst
disableBattUVLOInt
Reg0D: 00/00, Reg14: 7F/7F
setCCSnkRst
E0ON
E1ON
initBattery
On first boot after update:
BootLoadeK433 READY
31: 8.813 [STARTUP] K433 ICU Firmware Version 1.6.0 ( 3.9.5 )
175: 895.293 [BATCHK] ERROR PROP_ACTIVE_SWEEP_STATUS : 0
184: 895.732 [BATCHK] ERROR PROP_ACTIVE_SWEEP_STATUS : 0
382: 914.341 [STARTUP] update inner version string. "3.9.5 0110(0a)"
383: 914.378 [STARTUP] update outer version string. "1.�
For some reason the outer version string is broken on the 1.6.0 update but it is stored properly anyway.
Output after downgrading to 1.5.0:
BootLoadeK433 READY
31: 8.843 [STARTUP] K433 ICU Firmware Version 1.5.0 ( 3.8.7 )
172: 725.251 [BATCHK] ERROR PROP_ACTIVE_SWEEP_STATUS : 0
181: 725.695 [BATCHK] ERROR PROP_ACTIVE_SWEEP_STATUS : 0
380: 744.557 [STARTUP] update inner version string. "3.8.7 0110(0a)"
381: 744.581 [STARTUP] update outer version string. "1.5.0"
...
These update version string messages will only appear, if there is actually a change. When updating from 1.6.0 -> 1.6.0 they won't appear.
I have always wondered why there are two version numbers. You can find the second version number 3.9.5. in ROM1 usually. According to line 380 and 381 I do now know that 1.5.0 is the outer version number which the customer sees, and 3.8.7 is the version number canon uses inernally. Internal name for EOSRP is K433 by the way.
When beeing at the updater typing akashimorino will start an Eval Shell but with fewer and different options compared to main firmware. It is basically a mini DryOS which is loaded from the firmware update file.
Prompt is K433FU[1]> instead of K433[1]>. FU does probably stand for Firmware Updater.
Typing ? while beeing in the updater does list the following Event Functions:
K433FU[1]>?
[CompTestHDMI]
[CtrlSrvQueue]
[DISP_Evf_GetCurrentTemp]
[DISP_Evf_GetStartupTemp]
[DISP_Evf_ReceiveData]
[DISP_Evf_SendData]
[DISP_Evf_StopOrbit]
[DISP_Panel_SendData]
[DebugSTG_1SectorRead]
[DebugSTG_1SectorWrite]
[DebugSTG_BatchTest]
[DebugSTG_CacheUnCache]
[DebugSTG_ChangeNews]
[DebugSTG_CheckUHS2Mode]
[DebugSTG_CheckUHSIIHW]
[DebugSTG_ChgSDSpeedMode]
[DebugSTG_ClearSusAddr]
[DebugSTG_CreateDesignateFile]
[DebugSTG_EasyMount]
[DebugSTG_EasyUnMount]
[DebugSTG_EndChain]
[DebugSTG_EngineDriver]
[DebugSTG_ExtendDir]
[DebugSTG_GetCFASTCardInfo]
[DebugSTG_GetClusterSize]
[DebugSTG_GetEmptyInfo]
[DebugSTG_GetFatData]
[DebugSTG_GetFreeCluster]
[DebugSTG_GetSDCardInfo]
[DebugSTG_GetSDWriteSpeed]
[DebugSTG_GetSusAddr]
[DebugSTG_GetUHS2CardCapability]
[DebugSTG_Getdriveinfo]
[DebugSTG_InitTSM]
[DebugSTG_IsScriptMode]
[DebugSTG_IsUHS2Card]
[DebugSTG_IsUHSCard]
[DebugSTG_MemorySpeed]
[DebugSTG_MonPinActivate]
[DebugSTG_NewsGpoRead]
[DebugSTG_PowerOnFromNoCard]
[DebugSTG_PrintfLogEnable]
[DebugSTG_RandomWrite]
[DebugSTG_ReadDummyData]
[DebugSTG_ReadReg]
[DebugSTG_ResetMemAddr]
[DebugSTG_SDPreInit]
[DebugSTG_SDUhs2Dormant]
[DebugSTG_SDWRNative]
[DebugSTG_SetSDPowerLimit]
[DebugSTG_SetSDRMode]
[DebugSTG_SetSSCG]
[DebugSTG_SetSleepMode]
[DebugSTG_SplitPerformance]
[DebugSTG_StartChain]
[DebugSTG_StartInfWrite]
[DebugSTG_StopInfWrite]
[DebugSTG_SwitchPll]
[DebugSTG_UnMountDevice]
[DebugSTG_VFatOpen]
[DebugSTG_VFatSC]
[DebugSTG_VFatSearch]
[DebugSTG_WriteDummyData]
[DebugSTG_WriteRegData]
[DebugSTG_d]
[DebugSTG_dfile]
[DebugSTG_fileio]
[DebugSTG_getautable]
[DebugTch_AlterPanelSence]
[DebugTch_DebugTSMInit]
[DebugTch_Firmup]
[DebugTch_GetICVer]
[DebugTch_JDI_LAM_Cmd_StartScan]
[DebugTch_JDI_LAM_Cmd_StopScan]
[DebugTch_JDI_LAM_ReadProductID]
[DebugTch_JDI_LAM_Read]
[DebugTch_JDI_LAM_Write]
[DebugTch_LargeObject]
[DebugTch_RES_TFT]
[DebugTch_RegNotifyTouch]
[DebugTch_Rhoge]
[DebugTch_SetINTC]
[DebugTch_StartInform]
[DebugTch_StopInform]
[DebugTch_TerminalColor2]
[DebugTch_TerminalColor3]
[DebugTch_TerminalColor]
[DebugTch_WaitInt]
[DebugTch_WhichDrive]
[DebugTch_Whoge]
[DisableBootDisk]
[DisableFirmware]
[DisableMainFirm]
[DispColor]
[DispLayerOff]
[DispLayerOn]
[DispMarker]
[DispSaveProperty]
[DispSioMon]
[DlphWriteReg]
[DumpEvfReg]
[DumpPanelReg]
[DumpSinkSupport]
[EVP_CreateFROMPropertyHandleForTuneData2]
[EVP_CreateFROMPropertyHandleForTuneData]
[EVP_DeleteFROMPropertyHandleForTuneData]
[EnableBootDisk]
[EnableFirmware]
[EnableMainFirm]
[FA_TP_BackLightOff]
[FA_TP_Complete]
[FA_TP_Prepare]
[FA_TP_ReceiveData]
[FA_TP_ResetTP]
[FA_TP_SendData]
[FA_TP_SetWaitIntTime]
[FA_TP_TurnOff]
[IOPSenarios]
[MixFailCount]
[NewTaskShell]
[PrepareDisableFirmware]
[PrepareEnableFirmware]
[SetAccessLedMode]
[SetFactoryModeFlag]
[SetYccRgb]
[StartRedirectUART]
[StopRedirectUART]
[Test_ChgBLBrightness]
[Test_ChgEvfBrightness]
[Test_Evf_CurrentRegMap]
[Test_Evf_GetTempNullCount]
[Test_Evf_IndividualAdj]
[Test_Evf_SetBrightness]
[Test_Evf_TempCorrLogLevel]
[Test_Evf_TempCorrParam]
[Test_Evf_TempCorrResult]
[Test_ReceiveDataFromEVF]
[Test_SendDataToEvf]
[Test_SendDataToTft]
[Test_SetTFTTone]
[Test_VariangleNormal]
[Test_VariangleOpen]
[Test_VariangleSelf]
[UHS2Test]
[UHSIICompTest]
[UPD_AddPropertyDataIfNotExist]
[UPD_AddPropertyData]
[UPD_AddPropertyUINT32DataIfNotExist]
[UPD_AddPropertyUINT32Data]
[UPD_CopyCurrentFROMPropertyByDataType]
[UPD_DeletePropertyData]
[UPD_EraseFROMPropertySectorByDataType]
[UPD_GetPropertyData]
[UPD_SaveFixToFile]
[UPD_SavePropertyDataToTextFile]
[UPD_SaveRasenToFile]
[UPD_SaveRingToFile]
[UPD_SaveTuneToFile]
[UPD_SetPropertyData]
[UPD_SetPropertyUINT32Data]
[UPD_WriteFROMPropertyByDataType]
[UPD_WriteFROMPropertyPartly]
[UtilSTG_SetScriptMode]
[VramRead]
[VramStateNum]
[VramState]
[cfastSataCtrl]
[cfastSataPowerMode]
[cfastSataTransMode]
[cfastSatagen]
[cfastactpm]
[cfastplevel]
[cfastsanitize]
[cfastsata]
[cfastslumber]
[checksum]
[checksumarea]
[chgedid]
[chgmon]
[d]
[dfrom]
[dmescalation]
[dmhistory]
[dmprint]
[dmstart]
[dmstop]
[dmstore]
[drysh]
[dump]
[dumpf]
[dumpfrom]
[edid]
[filewrite]
[flasherase]
[flashwrite]
[gang]
[gpioread]
[gpiowrite]
[grep]
[harbint]
[hdmiddc]
[hdmiphy]
[hdmitc]
[i2c_read_proc]
[i2c_write_proc]
[i]
[logstat]
[memMap]
[memShow]
[objInfo]
[olddump]
[olddumpf]
[oldgrep]
[prop_deletepropertyfromfile]
[prop_getproperty]
[prop_getpropertylist]
[prop_prohibitfromaccess]
[prop_readpropertytofile]
[prop_saveproperty]
[prop_savepropertydual]
[prop_savepropertymultipartly]
[prop_savepropertypartly]
[prop_savewritemultipartly]
[prop_setidwritemultipartly]
[prop_setnumwritemultipartly]
[prop_testFactory]
[prop_testmultipartly1]
[prop_writemultipartly]
[prop_writepropertyfromfile]
[readedid]
[saveedid]
[setedid]
[sysConfig]
[taskShow]
[umDBack]
[umDComp]
[umDConSafe]
[umDConServ]
[umDCon]
[umDFail]
[umDFile]
[umDL]
[umDLow]
[umDPow]
[umDProg]
[umDR]
[umGetTest]
[umMenu]
[umPostMessage]
[umResume]
[umSendState]
[umSet]
[umSuspend]
[umfirminvalid]
[umfirmvalid]
[ummemdumpf]
[up]
This reveals some updater specific functions. To name a few:
[UPD_AddPropertyDataIfNotExist]
[UPD_AddPropertyData]
[UPD_AddPropertyUINT32DataIfNotExist]
[UPD_AddPropertyUINT32Data]
[UPD_CopyCurrentFROMPropertyByDataType]
[UPD_DeletePropertyData]
[UPD_EraseFROMPropertySectorByDataType]
[UPD_GetPropertyData]
[UPD_SaveFixToFile]
[UPD_SavePropertyDataToTextFile]
[UPD_SaveRasenToFile]
[UPD_SaveRingToFile]
[UPD_SaveTuneToFile]
[UPD_SetPropertyData]
[UPD_SetPropertyUINT32Data]
[UPD_WriteFROMPropertyByDataType]
[UPD_WriteFROMPropertyPartly]
...
[umDBack]
[umDComp]
[umDConSafe]
[umDConServ]
[umDCon]
[umDFail]
[umDFile]
[umDL]
[umDLow]
[umDPow]
[umDProg]
[umDR]
[umGetTest]
[umMenu]
[umPostMessage]
[umResume]
[umSendState]
[umSet]
[umSuspend]
[umfirminvalid]
[umfirmvalid]
[ummemdumpf]
[up]
Running drysh and extask while in the update file dialog does list the following running tasks:
K433FU[1]>dryshDry[WarpPUX]> Dry[WarpPUX]> extask
Name ID State Pri Wait(ID) Stack % StackTop StackEnd SP Bound(ID)
CC_SWHACK 0093000f WAIT 15 RCVMQ(0092000c) 00d0/1000 05 00140bf8 00141bf8 00141b58 BND(0)
EventMgr 0042000b WAIT 17 RCVMQ(00410006) 0100/1000 06 001387b0 001397b0 001396e8 BND(0)
LEDCon 0046000c WAIT 18 RCVMQ(00430007) 00e8/0400 22 0013e7e0 0013ebe0 0013eb28 BND(0)
CamConduct 004b000d WAIT 18 EVENT(00470006) 0188/1000 09 0013ebe8 0013fbe8 0013fb60 BND(0)
PropMgr 0037000a WAIT 20 RCVMQ(00360005) 0238/1000 13 001377a8 001387a8 001386e0 BND(0)
DispVCtrl 00980010 WAIT 21 RCVMQ(0097000d) 0428/1000 25 00141c00 00142c00 00142b38 BND(0)
DispDCtrl 009c0011 WAIT 21 RCVMQ(009b000e) 0244/1000 14 00142c08 00143c08 00143b40 BND(0)
FingerDet 00a20012 WAIT 22 RCVMQ(00a1000f) 01b8/1000 10 00143c10 00144c10 00144b48 BND(0)
CtrlSrv 00b70019 WAIT 24 EVENT(00b6000c) 00d8/4000 01 00149c40 0014dc40 0014db98 BND(0)
EvShel 00c9001a RUNNING 24 ------- 0300/8000 02 0014dc48 00155c48 -------- BND(0)
ConsoleSvr 00d1001c WAIT 24 RCVMQ(00cc001a) 01f8/0800 24 0013b3d0 0013bbd0 0013bb38 BND(0)
UpdMgrM 00a70014 WAIT 25 RCVMQ(00a60010) 0200/1000 12 00144c18 00145c18 00145b50 BND(0)
UpdApiTask 00af0018 WAIT 25 RCVMQ(00ae0014) 00b0/1000 04 00148c38 00149c38 00149bb8 BND(0)
LowConsole 00d0001b SUSPEND 25 ------- 00d0/0800 10 0013abc8 0013b3c8 0013b358 BND(0)
tUpdMgr 00a90015 WAIT 26 RCVMQ(00a80011) 0798/1000 47 00145c20 00146c20 00146b80 BND(0)
UpgMpuMgr 00ad0017 WAIT 26 RCVMQ(00ac0013) 0198/1000 09 00147c30 00148c30 00148b68 BND(0)
UpgIcuMgr 00ab0016 WAIT 27 RCVMQ(00aa0012) 0198/1000 09 00146c28 00147c28 00147b60 BND(0)
BcSvc 00a50013 WAIT 29 EVENT(00a4000b) 00c0/0400 18 0013a7c0 0013abc0 0013ab30 BND(0)
CSMgrTask 0057000e WAIT 30 RCVMQ(0055000b) 0638/1000 38 0013fbf0 00140bf0 00140b48 BND(0)
DbgMgr 002a0005 WAIT 31 RCVMQ(00290001) 02d8/1000 17 001397b8 0013a7b8 0013a6f0 BND(0)
idle 00010001 READY 33 ------- 0080/0100 50 00137598 00137698 00137668 BND(0)
idle 00020002 RUNNING 33 ------- 0070/0100 43 001376a0 001377a0 -------- BND(1)