EOS 50D (and most likely 40D)It was known already that UART is accessible externally from battery grip pins. It requires a modified grip / battery to access.
I thought for sure there has to be some connector inside for factory tests / programming, and I wasn't wrong.
There are two debug connectors, one on ICU (on the other side of HDMI port), and one for MPU - above CF slots. Test pads are exposed around this area.
For MPU - two topmost testpads are (top) MPU_RX, (bottom) MPU_TX
For ICU - two rightmost testpads are (top) ICU_TX, (bottom) ICU_RX
ICU debug connector is easily accessible after removing just ports cover part of the case.


CF is not a startup disk.
K261 READY
0: 8.308 [STARTUP] K261 ICU Firmware Version 1.0.9 ( 3.4.5 )
Open Console K261[1]>...
K261[1]>
7: 45.299 [HPD] add emergency isr.
22: 88.777 [STARTUP] Ceres Disappeared
102: 111.712 [ENG] [ENGIO](Addr:0x5c640000, Data:0x 30000)
133: 122.797 [MC] PROP_GUI_STATE 0
138: 123.116 [MC] JobState 0
139: 123.304 [MC] HDMIConnect ---> (0)
142: 124.325 [MC] regist master CardCover
196: 361.327 [PRP] M:51 F:0 L:0 P:20
197: 361.636 [STARTUP] internal version 03:04:05:00:51:00:00:20
211: 369.843 [LVMD] Init RCh1=0, RCh2=0
213: 370.125 [LVCFG] LV_Initialize Jun 17 2009
219: 372.766 [LVMD] Set RCh1=a, RCh2=18
226: 375.385 [LVCFG] PROP_TEMP_STATUS Temp:0, FrameRate:1
227: 375.609 [LVCFG] PROP_LV_ACTION STOP
231: 375.893 [LVCFG] PROP_LV_LOCK PERIMIT
235: 376.190 [LVCFG] PROP_SHOOTING_TYPE 0
240: 377.805 [LV] PROP_LIVE_VIEW_FACE_AF
247: 378.733 [LVCFG] PROP_LIVE_VIEW_VIEWTYPE_SELECT 0->0
249: 378.959 [LVCFG] PROP_LIGHT_FALLOFF_COMP 0
269: 389.022 [PTP] LensID:0,0,0
321: 397.123 [PTP] PhotoStudioMode:0
374: 403.430 [PTP] LV End Clear LVData
377: 403.599 [PTPCOM] SetPtpTransportResources:0,319b
492: 416.092 [DISP] InitializeDisplayDeviceController (PUB)
493: 416.157 [DISP] Memory Area 0 0 0 0 0 0
497: 418.039 [HDMI] HPD OFF
546: 467.916 [LVCFG] PROP_OUTPUT_TYPE 0(0) / 0
574: 476.772 [GUI] HDMI_VIDEO_CODE 0
667: 526.338 [STARTUP] startupInitializeComplete
669: 526.477 [MC] cam event guimode comp. 0
687: 527.785 [MC] cam event guimode comp. 0
690: 528.014 [DISP] TurnOffDisplay (PUB) Type=0 fDisplayTurnOn=0
696: 528.999 [DISP] TurnOffDisplay (PUB) Type=0 fDisplayTurnOn=0
767: 701.207 [DISP] TurnOnDisplay (PUB) Type=0 fDisplayTurnOn=0
794: 868.687 [DISP] BackLightOn
796: 885.114 [DISP] TurnOnDisplay (PUB) Type=0 fDisplayTurnOn=1
K261[1]>drysh
=== Dry-shell start ===
Dry> help
[Debug]
task sem event mq mutex cond timer mkobjsize extask kill suspend
resume release delete prio mkcfg meminfo xd xm memmap objinfo
[Misc]
vers exit dminfo
Dry> vers
DRYOS version 2.3, release #0023
Dry-MK 2.39
Dry-DM 1.14
Dry-stdlib 1.33
Dry-shell 1.11
Dry-command alpha 029
Dry>
E1ON
MON>>about
MPU Ver...0x51
MPU code area check sum...0x0506D389
MON>>
E1OFF