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.1k
電子辞書にステータスバーを実装する
puhitaku
0
200
知育おもちゃの遊び方 Lv. 999
puhitaku
5
2.8k
ルーターでプレゼンする
puhitaku
1
4.8k
AST as Black Magic
puhitaku
0
110
次世代の足下を舗装するコミュニティ
puhitaku
5
1.7k
電子辞書で学ぶ Linux のサスペンド
puhitaku
0
600
USB PD で迎える AC アダプター大統一時代
puhitaku
2
2.5k
リセットとフリーズで解析する電子辞書リバエン記 / reverse-engineer-e-dictionaries-with-reset-and-freeze
puhitaku
2
6.5k
Featured
See All Featured
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
8
890
How to Ace a Technical Interview
jacobian
276
23k
Building Applications with DynamoDB
mza
90
6.1k
Side Projects
sachag
452
42k
Visualization
eitanlees
145
15k
Thoughts on Productivity
jonyablonski
67
4.3k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
44
2.2k
Automating Front-end Workflow
addyosmani
1366
200k
10 Git Anti Patterns You Should be Aware of
lemiorhan
655
59k
Become a Pro
speakerdeck
PRO
25
5k
Testing 201, or: Great Expectations
jmmastey
38
7.1k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
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