Slide 1

Slide 1 text

2023 #wakate 2023 s Linux aka @puhitaku

Slide 2

Slide 2 text

2 Takumi Sueda @puhitaku HOMMA Inc. OSS etc. 3 D 2014

Slide 3

Slide 3 text

Linux Linux 3 5 3

Slide 4

Slide 4 text

SHARP Brain SHARP Brain 4

Slide 5

Slide 5 text

SHARP Brain SHARP Brain PW-SH 1 SHARP 2008 Windows CE 2020 CE exe Brain 2ch Brain Windows CE Wikipedia matplotlib 
 5

Slide 6

Slide 6 text

SHARP Brain 6 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 :

Slide 7

Slide 7 text

SHARP Brain SHARP Brain PW-SH 1 U-Boot Linux 2020 Brain U-Boot 
 Linux Raspberry Pi SD 
 Linux LCD SD / eMMC 
 etc ... 7

Slide 8

Slide 8 text

SHARP Brain SHARP Brain PW-SH 1 cpufreq CPU 8 🤔

Slide 9

Slide 9 text

SHARP Brain SHARP Brain PW-SH 1 cpufreq CPU 9 🤔

Slide 10

Slide 10 text

No content

Slide 11

Slide 11 text

Suspend-to-Idle Standby Suspend-to-RAM Hibernation Linux 11 "sleep", "system-wide sleep" 


Slide 12

Slide 12 text

1 . Suspend-to-Idle 2 . Standby 😴 Userspace 😴 Timekeeping tick, 😴 I/O CPU CPU 😴 Suspend-to-Idle 😴 Non-boot CPU 3 . Suspend-to-RAM 😴 Standby 😴 CPU DRAM DRAM 4 . Hibernation 😴 CPU

Slide 13

Slide 13 text

1 . Suspend-to-Idle 2 . Standby 😴 Userspace 😴 Timekeeping 😴 I/O CPU CPU 😴 Suspend-to-Idle 😴 Non-boot CPU 3 . Suspend-to-RAM 😴 Standby 😴 CPU DRAM DRAM 4 . Hibernation 😴 CPU 
 
 Suspend-to-RAM

Slide 14

Slide 14 text

Suspend-to-RAM

Slide 15

Slide 15 text

Suspend-to-RAM 1 . 2 . 3 . & 4 . Non-boot CPU CPU IRQ Boot CPU 5 . tick 6 . RAM 7 . Suspend-to-RAM 15

Slide 16

Slide 16 text

Suspend-to-RAM 1 . 2 . CPU 3 . 4 . tick 5 . Non-boot CPU 6 . IRQ 7 . (thaw = ) 8 . Suspend-to-RAM 16

Slide 17

Slide 17 text

Suspend-to-RAM

Slide 18

Slide 18 text

Suspend-to-RAM Suspend-to-RAM 2 18 Brain SoC MOSFET GPIO SPI, I²C graceful dev_pm_ops Device Tree Power Management Subsystem 
 ISR Brain GPIO

Slide 19

Slide 19 text

Suspend-to-RAM /sys/power/state write 19 i.MX 28 Device Tree LCD Suspend-to-RAM Device Tree

Slide 20

Slide 20 text

Suspend-to-RAM 20 Suspend-to-RAM 1. pm_wakeup_event PM subsystem 2 . suspend_enter CPU PC CPU /drivers/input/keyboard/gpio_keys.c L 44 3 (Linux 5 . 4 . 2 3 4 ) /kernel/power/suspend.c L 5 02 (Linux 5 . 4 . 2 34 )

Slide 21

Slide 21 text

Brain

Slide 22

Slide 22 text

Brain ✅ Suspend-to-RAM ✅ GPIO ⬜ MCU I²C I²C ISR Windows ⬜ LCD FET ENABLE GPIO regulator Device Tree ⬜ ⬜ OS Suspend-to-RAM 22

Slide 23

Slide 23 text

suspend_prepare suspend_freeze_processes [1] userspace [ 1 ] https://elixir.bootlin.com/linux/v 5 . 4 . 23 4 /source/kernel/power/power.h#L 250 Q. kthread userspace 23 Q. 4 SoC Suspend-to-Idle Brain SoC 115mA 86 mA [1] Brain Standby Suspend-to-Idle Suspend-to-RAM LCD [ 1 ] https://twitter.com/puhitaku/status/ 1 62 984 98 629 24 6484 55

Slide 24

Slide 24 text

Bootlin Elixir: https://elixir.bootlin.com/linux/v 5 . 4 . 2 34 / Mainline Linux /Documentation/admin-guide/pm/suspend- fl ows.rst /Documentation/admin-guide/pm/sleep-states.rst 24