第54回 情報科学若手の会 #wakate2022
54 #wakate2022@puhitaku
View Slide
2Takumi Sueda @puhitakuHOMMA Inc. 3D 2014 20182020 Linux 2021TEPRA Lite BLE
4
SHARP Brain5
2020 Linux6
Twitter #wakate20227
SHARP Brain
SHARP BrainSHARP Brain PW-SH1SHARP 2008Windows CE 2020CEexeBrain 2chBrain Windows CEWikipediamatplotlib 9
SHARP Brain 10DRAM: LPDDR128MBeMMC:8GBSDRaspberry PiLCDCPU: NXP i.MX283 ARM926EJ-S, armv5tej454MHzLCD:800x48 0SD: SDXC:
SHARP BrainLinux2020 Linux"Brain Hackers" Brain DebianLinux BrainuxOS SDBrain Linux11Brainux / Brain Hackers
SHARP Brain 1 Windows Linux12
SHARP Brain SD eMMC 13SD LinuxeMMCSD: SDXCeMMC:8GBSD❌
SHARP Brain SD eMMCSDSDSDSDIO Wi-FiLinux mainlineSDIO Wi-FiGPIOeMMC Linux14
SHARP Brain SD eMMCBrain Linux LinuxGood-bye, Windows Good-bye,15
eMMC Linux
eMMC Linux 17
eMMC Linux 18Brain Windows CE
eMMC Linux 19Windows CE ?
eMMC LinuxSoC eMMC20
Boot ROM
Boot ROMArm SoC22
Boot ROMA. Boot ROM23
Boot ROMA. Boot ROM (i.MX28On-chip ROM )24
Boot ROMCPU25eMMCDRAMI2CSPIARM92 6EJ-S Core
Boot ROMOn-chip ROM On-chip RAMOn-chip RAM On-chip ROM26On-chip ROM (Boot ROM)On-chip RAM (SRAM)ARM92 6EJ-S Core
ARM92 6EJ-S CoreBoot ROMCPU Boot ROM27On-chip ROMOn-chip RAM (SRAM)🤔ARMUSB recoveryI2CSPISSP (eMMC / SD)GPMI (NAND)JTAG
ARM92 6EJ-S CoreBoot ROMBoot ROM"One-Time Programmable ROM" "Boot Mode"28On-chip ROMOn-chip RAM (SRAM)🤔OTP One-Time Programmable ROM
Boot ROM"OTP ROM" "OTP"SoCROMCPU OTPOne-Time Programmable (OTP) ROM29OTP
OTP
SHARP OTPSHARP Brain PW-SH1SHARP 2008Windows CE 2020CEexeBrain 2chBrain Windows CEWikipediamatplotlib 31
SHARP OTPBrain Scalpel Windows CE32
SHARP OTP 330x8002C1A032bitMSB 8bit BOOT_MODEScalpel 0x8002C1A0 BOOT_MODE 0x01(0b00000001)
SHARP OTPBOOT_MODE0bXXX0 0001I²C3.3V34
ARM92 6EJ-S CoreSHARP OTPCPU I²C EEPROM35On-chip ROMOn-chip RAM (SRAM)😊ARMUSB slave (recovery)SSP (eMMC / SD)SPII2CGPMI (NAND)JTAGI²C
EEPROM
SHARP EEPROMQ. Brain EEPROM37
SHARP EEPROM 38
SHARP EEPROMI²C 100kHz 400kHzEEPROMDigi-keySON2mm x3mm ON Semi Rohm0.5mm Rohm VSON EEPROMIC 4G3BR24G32=4KBEEPROM39
SHARP EEPROM0.2mm40
SHARP EEPROM"Boot Stream" (SB)SB Boot ROMRockbox sbtoelf Ghidra disassembleEEPROM41SB HeaderEncryption keysSection 0Cmd: LOAD @ 0xE440Cmd: FILL @ 0xE6A0 ~ +0x114Cmd: LOAD @ 0xE400Cmd: CALL @ 0xE400Cmd: MODE to 0x09Rockbox:Boot ROM (U-Boot)
SHARP EEPROMSB SRAM42IVT HeaderEntry point: 0xE61CInstructions (armv5tej)Zero-filledarea (.bss)0xE400 0xE440 0xE6A0 0xE7B40xE61CCALL command Jump Return
SHARP EEPROMeMMCeMMCeMMC EEPROMeMMC SBEEPROM Boot ROM43Cmd: LOAD @ 0xE440Cmd: FILL @ 0xE6A0Cmd: LOAD @ 0xE400Cmd: CALL @ 0xE400Cmd: MODE to 0x09eMMCeMMC
ARM92 6EJ-S CoreSHARP EEPROMCPU I²C EEPROM eMMCeMMC44On-chip ROMOn-chip RAM (SRAM)😊ARMUSB slave (recovery)SSP (eMMC / SD)SPII2CGPMI (NAND)JTAGI²C EEPROMeMMCeMMC
eMMC
SHARP eMMCLinux SD dd /dev/mmcblk0 Master Boot Record i.MX28partitiontype0x53 SBeMMC46
SHARP eMMCeMMC47MBREntry 0: FAT32Entry 1: SBEntry 2: ?SBFAT32Sector 0 256 2304Read MBR Read & run SB Run EBOOT?198912
ARM92 6EJ-S CoreSHARP eMMCCPU eMMC EBOOT Windows CE48On-chip ROMOn-chip RAM (SRAM)😊ARMUSB slave (recovery)SSP (eMMC / SD)SPII2CGPMI (NAND)JTAGeMMC
SHARP eMMCEBOOT NK image Windows eMMC DRAM Windows CE49EBOOTSSP (eMMC / SD)MBRBoot StreamNK imageNK imageOn-chip ROM On-chip RAMDRAMNK imageEBOOTEBOOT
SHARP eMMC 50On-chip ROM I²C EEPROM eMMCWindows CE
I²C EEPROM SB OSeMMC SB Windows CE EBOOTeMMCLinux52On-chip ROM I²C EEPROM eMMCOS OS
: USB boot eMMC boot Windows
54"USB boot mode" PC SB EEPROMeMMC SB PC Windows CEEEPROM OSeMMC❌I²C EEPROMUSB Boot💻USBSB U-Boot mkimage
eMMC USB USB boot mode55
:EEPROM eMMC56On-chip ROM I²C EEPROM eMMCSB
eMMCLinux U-Boot (Das U-Boot)SD Linux kernelU-Boot eMMCSD OSSB U-BooteMMC OS58
eMMCeMMC OS59MBREntry 0: FAT32Entry 1: SBEntry 2: Ext4FAT32Ext4Sector 0 2048 20800Read MBR Read & run SB Run U-BootSB24800
eMMCLinux SD eMMCdd USB boot + (UART)eMMC61
eMMCUART62
eMMC 63/dev/mmcblk0 = eMMC
eMMCSHARP BrainLinux64
66On-chip ROM I²C EEPROM eMMCSoC