情報科学若手の会 春の陣 2023 #wakate2023s
2023 #wakate2023sLinuxaka @puhitaku
View Slide
2Takumi Sueda @puhitaku HOMMA Inc. OSS etc. 3D 2014
Linux Linux 3 53
SHARP BrainSHARP Brain4
SHARP BrainSHARP Brain PW-SH1SHARP 2008Windows CE 2020CEexeBrain 2chBrain Windows CEWikipediamatplotlib 5
SHARP Brain 6DRAM: LPDDR128MBeMMC:8GBSDRaspberry PiLCDCPU: NXP i.MX283 ARM926EJ-S, armv5tej454MHzLCD:800x48 0SD: SDXC:
SHARP BrainSHARP Brain PW-SH1U-Boot Linux2020 Brain U-Boot LinuxRaspberry Pi SD Linux LCD SD / eMMC etc ...7
SHARP BrainSHARP Brain PW-SH1 cpufreq CPU8🤔
SHARP BrainSHARP Brain PW-SH1 cpufreq CPU9🤔
Suspend-to-IdleStandbySuspend-to-RAMHibernationLinux11"sleep", "system-wide sleep"
1. Suspend-to-Idle2. Standby😴 Userspace😴 Timekeeping tick,😴 I/OCPUCPU😴 Suspend-to-Idle😴 Non-boot CPU3. Suspend-to-RAM😴 Standby😴CPU DRAMDRAM4. Hibernation😴CPU
1. Suspend-to-Idle2. Standby😴 Userspace😴 Timekeeping😴 I/OCPUCPU😴 Suspend-to-Idle😴 Non-boot CPU3. Suspend-to-RAM😴 Standby😴CPU DRAMDRAM4. Hibernation😴CPU Suspend-to-RAM
Suspend-to-RAM
Suspend-to-RAM1.2.3. &4. Non-boot CPU CPU IRQ Boot CPU5. tick6. RAM7.Suspend-to-RAM15
Suspend-to-RAM1.2. CPU3.4. tick5. Non-boot CPU6. IRQ7. (thaw = )8.Suspend-to-RAM16
Suspend-to-RAMSuspend-to-RAM 218BrainSoCMOSFETGPIOSPI, I²Cgracefuldev_pm_ops Device TreePower Management Subsystem ISRBrain GPIO
Suspend-to-RAM/sys/power/state write19i.MX28Device TreeLCDSuspend-to-RAM Device Tree
Suspend-to-RAM 20Suspend-to-RAM1.pm_wakeup_eventPM subsystem2. suspend_enter CPU PC CPU/drivers/input/keyboard/gpio_keys.c L44 3(Linux5.4.2 34)/kernel/power/suspend.c L5 02(Linux5.4.2 34)
Brain
Brain✅ Suspend-to-RAM✅ GPIO⬜ MCU I²CI²CISRWindows⬜ LCDFET ENABLE GPIO regulator Device Tree⬜⬜ OSSuspend-to-RAM22
suspend_prepare suspend_freeze_processes [1] userspace[1] https://elixir.bootlin.com/linux/v5.4.234/source/kernel/power/power.h#L250Q. kthread userspace23Q.4SoCSuspend-to-Idle Brain SoC115mA86mA [1] Brain StandbySuspend-to-Idle Suspend-to-RAM LCD[1] https://twitter.com/puhitaku/status/1629849862924648455
Bootlin Elixir: https://elixir.bootlin.com/linux/v5.4.234/Mainline Linux/Documentation/admin-guide/pm/suspend-flows.rst/Documentation/admin-guide/pm/sleep-states.rst24