Linuxデバイスドライバ入門 I2Cを用いた制御 LinuxデバイスドライバにおけるI2Cを用いた制御方法について、代表的な関数である、i2c_master_send、i2c_transfer、i2c_master_recvを交えて説明しています。 2023.09.05 Linuxデバイスドライバ入門
Linuxデバイスドライバ入門 ドライバにおけるハードウェアの初期化処理 はじめに 本章では、4章のdriverとしての初期化処理の流れで出てきた関数で使われている、ハードウェア関連の初期化処理について説明します。。ハードウェアの初期化は、ltr578_i2c_probeから呼ばれているltr578_init_... 2023.09.04 Linuxデバイスドライバ入門
Linuxデバイスドライバ入門 待ち合わせ処理 元の処理において待ち合わせを行い同期を取る為の仕組みとして、Linuxデバイスドライバではwait_eventやwait_for_completionが用意されており、それぞれについて説明しています。 2023.11.03 Linuxデバイスドライバ入門
Linuxデバイスドライバ入門 devicetree devicetreeによって、Linuxデバイスドライバでは、設定値等のパラメータ部を分けて別のファイルで管理することができます。このdevicetreeの使い方等について説明しています。 2023.09.01 Linuxデバイスドライバ入門
Linuxデバイスドライバ入門 I2Cドライバの登録 (i2c_add_driver) LinuxデバイスドライバにおけるI2Cドライバの登録関数であるi2c_add_driverの動作と使い方について、I2Cのクライアントドライバ、コアドライバ、ホストドライバの役割を交えて説明しています。 2023.08.31 Linuxデバイスドライバ入門
Linuxデバイスドライバ入門 Wakelock WakelockとはCPUがsuspend状態に入るのを止める仕組みです。LinuxデバイスドライバにおけるWakelock制御関数である、wakeup_source_init、__pm_stay_awake、__pm_wakeup_eventについての使い方や、デバッグ関連の情報について説明しています。 2023.08.29 Linuxデバイスドライバ入門
Linuxデバイスドライバ入門 排他制御 (spin_lock, mutex_lock) 排他制御は、複数のプロセスが共有リソースにアクセスする際に競合を防ぐ為の仕組みです。Linuxデバイスドライバにおける排他制御関数であるmutex_lockとspin_lockについて説明しています。 2023.08.28 Linuxデバイスドライバ入門
Linuxデバイスドライバ入門 Timer処理 Timer処理は、特定の処理を一定の時間経過後に実行する為の仕組みです。Linuxデバイスドライバにおける代表的な物としてHZ Timer、High-Resolution Timer、Alarm Timerの3つがあり、それぞれについて説明します。 2023.08.27 Linuxデバイスドライバ入門
Linuxデバイスドライバ入門 非同期による遅延処理(workqueue, delayed_workqueue, kthread_queue) 非同期による遅延処理は、別のスレッド用いて、特定の処理を非同期に遅らせて実行する為の仕組みです。Linuxデバイスドライバにおける代表的な物としてworkqueue、delayed_workqueue、kthread_queueの3つがあり、それぞれについて説明しています。。 2023.08.30 Linuxデバイスドライバ入門
Linuxデバイスドライバ入門 アトミック操作 アトミック操作は、複数のスレッドから同時にアクセスされる可能性のある変数へのアクセスを同期化するために使用される方法の1つです。Linuxデバイスドライバにおけるアトミック操作関数であるatomic_set、atomic_read、atomic_add、atomic_sub等の使い方について説明しています。 2023.08.26 Linuxデバイスドライバ入門