Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
電子辞書のアイデンティティを消す方法
Search
Takumi Sueda
September 24, 2022
3
3.9k
電子辞書のアイデンティティを消す方法
第54回 情報科学若手の会 #wakate2022
Takumi Sueda
September 24, 2022
Tweet
Share
More Decks by Takumi Sueda
See All by Takumi Sueda
組み込みLinuxの時系列
puhitaku
4
1.3k
電子辞書にステータスバーを実装する
puhitaku
0
200
知育おもちゃの遊び方 Lv. 999
puhitaku
5
2.8k
ルーターでプレゼンする
puhitaku
1
5k
AST as Black Magic
puhitaku
0
120
次世代の足下を舗装するコミュニティ
puhitaku
5
1.7k
電子辞書で学ぶ Linux のサスペンド
puhitaku
0
620
USB PD で迎える AC アダプター大統一時代
puhitaku
2
2.6k
リセットとフリーズで解析する電子辞書リバエン記 / reverse-engineer-e-dictionaries-with-reset-and-freeze
puhitaku
2
6.5k
Featured
See All Featured
Navigating Team Friction
lara
183
15k
Java REST API Framework Comparison - PWX 2021
mraible
PRO
28
8.3k
Fantastic passwords and where to find them - at NoRuKo
philnash
50
2.9k
Done Done
chrislema
181
16k
A designer walks into a library…
pauljervisheath
204
24k
jQuery: Nuts, Bolts and Bling
dougneiner
61
7.5k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
29
2k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
2
170
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
28
2.1k
Gamification - CAS2011
davidbonilla
80
5.1k
Designing for Performance
lara
604
68k
Faster Mobile Websites
deanohume
305
30k
Transcript
54 #wakate 2022 @puhitaku
2 Takumi Sueda @puhitaku HOMMA Inc. 3 D
20 1 4 2 018 2020 Linux 20 2 1 TEPRA Lite BLE
None
4
SHARP Brain 5
2020 Linux 6
Twitter #wakate 202 2 7
SHARP Brain
SHARP Brain SHARP Brain PW-SH 1 SHARP 2008 Windows CE
2020 CE exe Brain 2ch Brain Windows CE Wikipedia matplotlib 9
SHARP Brain 10 DRAM: LPDDR 128 MB eMMC: 8 GB
SD Raspberry Pi LCD CPU: NXP i.MX 2 83 ARM 926 EJ-S, armv 5 tej 4 54 MHz LCD: 8 00 x 48 0 SD: SDXC :
SHARP Brain Linux 2020 Linux "Brain Hackers" Brain Debian
Linux Brainux OS SD Brain Linux 11 Brainux / Brain Hackers
SHARP Brain 1 Windows Linux 12
SHARP Brain SD eMMC 13 SD Linux eMMC SD: SDXC
eMMC: 8 GB SD ❌
SHARP Brain SD eMMC SD SD SD SDIO Wi-Fi Linux
mainline SDIO Wi-Fi GPIO eMMC Linux 14
SHARP Brain SD eMMC Brain Linux Linux Good-bye, Windows
Good-bye, 15
eMMC Linux
eMMC Linux 17
eMMC Linux 18 Brain Windows CE
eMMC Linux 19 Windows CE ?
eMMC Linux SoC eMMC 20
Boot ROM
Boot ROM Arm SoC 22
Boot ROM A. Boot ROM 23
Boot ROM A. Boot ROM (i.MX 28 On-chip ROM
) 24
Boot ROM CPU 25 eMMC DRAM I 2 C SPI
ARM 9 2 6 EJ-S Core
Boot ROM On-chip ROM On-chip RAM On-chip RAM On-chip ROM
26 On-chip ROM (Boot ROM) On-chip RAM (SRAM) ARM 9 2 6 EJ-S Core
ARM 9 2 6 EJ-S Core Boot ROM CPU
Boot ROM 27 On-chip ROM On-chip RAM (SRAM) 🤔 ARM USB recovery I 2 C SPI SSP (eMMC / SD) GPMI (NAND) JTAG
ARM 9 2 6 EJ-S Core Boot ROM Boot
ROM "One-Time Programmable ROM" "Boot Mode" 28 On-chip ROM On-chip RAM (SRAM) 🤔 OTP One-Time Programmable ROM
Boot ROM "OTP ROM" "OTP" SoC ROM CPU OTP
One-Time Programmable (OTP) ROM 29 OTP
OTP
SHARP OTP SHARP Brain PW-SH 1 SHARP 2008 Windows CE
2020 CE exe Brain 2ch Brain Windows CE Wikipedia matplotlib 31
SHARP OTP Brain Scalpel Windows CE 32
SHARP OTP 33 0x 80 02 C 1 A 0
32bit MSB 8bit BOOT_MODE Scalpel 0x 80 02 C 1 A 0 BOOT_MODE 0x 01 ( 0 b 00 0000 01 )
SHARP OTP BOOT_MODE 0 bXXX 0 0 001 I²C 3
. 3 V 34
ARM 9 2 6 EJ-S Core SHARP OTP CPU
I²C EEPROM 35 On-chip ROM On-chip RAM (SRAM) 😊 ARM USB slave (recovery) SSP (eMMC / SD) SPI I 2 C GPMI (NAND) JTAG I²C
EEPROM
SHARP EEPROM Q. Brain EEPROM 37
SHARP EEPROM 38
SHARP EEPROM I²C 100kHz 400kHz EEPROM Digi-key SON 2 mm
x 3 mm ON Semi Rohm 0.5mm Rohm VSON EEPROM IC 4G 3 BR 2 4 G 3 2 = 4 KB EEPROM 39
SHARP EEPROM 0.2mm 40
SHARP EEPROM "Boot Stream" (SB) SB Boot ROM Rockbox sbtoelf
Ghidra disassemble EEPROM 41 SB Header Encryption keys Section 0 Cmd: LOAD @ 0xE440 Cmd: FILL @ 0xE6A0 ~ +0x114 Cmd: LOAD @ 0xE400 Cmd: CALL @ 0xE400 Cmd: MODE to 0x09 Rockbox: Boot ROM (U-Boot)
SHARP EEPROM SB SRAM 42 IVT Header Entry point:
0xE61C Instructions (armv5tej) Zero-filled area (.bss) 0xE400 0xE440 0xE6A0 0xE7B4 0xE61C CALL command Jump Return
SHARP EEPROM eMMC eMMC eMMC EEPROM eMMC SB EEPROM Boot
ROM 43 Cmd: LOAD @ 0xE440 Cmd: FILL @ 0xE6A0 Cmd: LOAD @ 0xE400 Cmd: CALL @ 0xE400 Cmd: MODE to 0x09 eMMC eMMC
ARM 9 2 6 EJ-S Core SHARP EEPROM CPU
I²C EEPROM eMMC eMMC 44 On-chip ROM On-chip RAM (SRAM) 😊 ARM USB slave (recovery) SSP (eMMC / SD) SPI I 2 C GPMI (NAND) JTAG I²C EEPROM eMMC eMMC
eMMC
SHARP eMMC Linux SD dd /dev/mmcblk 0 Master Boot
Record i.MX 2 8 partition type 0 x 5 3 SB eMMC 46
SHARP eMMC eMMC 47 MBR Entry 0: FAT32 Entry 1:
SB Entry 2: ? SB FAT32 Sector 0 256 2304 Read MBR Read & run SB Run EBOOT ? 198912
ARM 9 2 6 EJ-S Core SHARP eMMC CPU
eMMC EBOOT Windows CE 48 On-chip ROM On-chip RAM (SRAM) 😊 ARM USB slave (recovery) SSP (eMMC / SD) SPI I 2 C GPMI (NAND) JTAG eMMC
SHARP eMMC EBOOT NK image Windows eMMC DRAM Windows
CE 49 EBOOT SSP (eMMC / SD) MBR Boot Stream NK image NK image On-chip ROM On-chip RAM DRAM NK image EBOOT EBOOT
SHARP eMMC 50 On-chip ROM I²C EEPROM eMMC Windows CE
None
I²C EEPROM SB OS eMMC SB Windows CE EBOOT eMMC
Linux 52 On-chip ROM I²C EEPROM eMMC OS OS
: USB boot eMMC boot Windows
54 "USB boot mode" PC SB EEPROM eMMC SB PC
Windows CE EEPROM OS eMMC ❌ I²C EEPROM USB Boot 💻 USB SB U-Boot mkimage
eMMC USB USB boot mode 55
: EEPROM eMMC 56 On-chip ROM I²C EEPROM eMMC SB
eMMC
eMMC Linux U-Boot (Das U- Boot) SD Linux kernel U-Boot
eMMC SD OS SB U-Boot eMMC OS 58
eMMC eMMC OS 59 MBR Entry 0: FAT32 Entry 1:
SB Entry 2: Ext4 FAT32 Ext4 Sector 0 2048 20800 Read MBR Read & run SB Run U-Boot SB 24800
eMMC
eMMC Linux SD eMMC dd USB boot + (UART)
eMMC 61
eMMC UART 62
eMMC 63 /dev/mmcblk0 = eMMC
eMMC SHARP Brain Linux 64
None
66 On-chip ROM I²C EEPROM eMMC SoC