
Linuxデバイスドライバ入門
@linux_driver
KindleFire搭載照度センサドライバを読み解きながら学ぶLinuxデバイスドライバ入門 https://linux-driver.com/
旧8章9章の内容とudevの内容を、"ドライバとユーザーランド層のやり取り" として、新8章にまとめました。 linux-driver.com/2024/05/04/%e3…
[新規] udev linux-driver.com/2024/05/04/ude… ueventはAOSPだけでは無く、Ubuntu等の汎用的なLinuxにおいても使われている仕組みです。代表的な物にudevがあり、udevの構成要素である、ueventの情報を取得できるudevadmと、ueventの情報を元に設定した各種処理を行うudevdについて、紹介します。
[新規] 待ち合わせ処理 linux.coresv.com/2023/11/03/%e5… 非同期による遅延処理や後述する割込み処理 と、元の処理において待ち合わせを行い、同期を取る為の仕組みがLinuxカーネルにおいて用意されています。照度センサドライバでは使用されていませんが、 代表的な物として、wait_eventやwait_for_completion
Ueventによるドライバからユーザランド層への通知 linux.coresv.com/2023/10/27/uev… ドライバからユーザーランド層へ通知して、制御を変える方法として、照度センサデバイスドライバでも使用されているueventを説明します。ueventは、Linuxカーネルとユーザーランド層のプログラム間のコミュニケーションを実現
9章は、「ドライバからユーザランド層への通知」ぐらいの題で、kobject_uevent等について記載したいと思います。
I2Cを用いた制御 linux.coresv.com/2023/09/05/i2c… の補足として、writing-clients 和訳 linux.coresv.com/2023/10/20/wri… を追加
[改版] devicetree linux.coresv.com/2023/09/01/dev… Linuxのデバイスドライバに関連するソースコードは、ロジック部を記載しているドライバのファイルである「*.c」の他に、設定値等のパラメータ部を別のファイルとして持っています。このファイルが「*.dts」「*.dtsi」となり、
[改版] I2Cドライバの登録 (i2c_add_driver) linux.coresv.com/2023/08/31/i2c… I2Cドライバの登録は、照度センサドライバ等のI2CクライアントドライバをLinuxカーネルのI2Cコアドライバに登録し、コールバック関数を呼び出してもらう為の処理です。i2c_add_driverが、I2Cクライアントドライバを登録する為の関
[改版] Wakelock linux.coresv.com/2023/08/29/wak… WakelockとはCPUがsuspend状態に入るのを止める仕組みです。タブレット端末等では、CPUをsuspend状態に入れることで、消費電流を削減します。しかし、特定の条件(音楽再生中等)ではデバイスを動作させ続ける必要があります。このような際は、Wakelockにより
[改版] 排他制御 (spin_lock, mutex_lock) linux.coresv.com/2023/08/28/%e6… 排他制御は、複数のスレッドが共有リソースにアクセスする際に競合を防ぐ為の仕組みです。一方の処理が終わるまで、他の処理を止める事ができます。Linuxカーネルで使用可能な主要な排他制御には、mutex_lockとspin_lockがあり、
[改版] Timer処理 linux.coresv.com/2023/08/27/tim… Timer処理は、特定の処理を一定の時間経過後に実行する為の仕組みです。繰り返しTimer処理を行うことによって、定期的な処理も実現する為にも使用されます。Linuxカーネルで使用可能なTimerには、代表的な物としてHZ Timer、High-Resolution Timer、Alarm Ti
[改版] 遅延処理(workqueue, delayed_workqueue, kthread_queue) linux.coresv.com/2023/08/30/%e9… 遅延処理は、別のスレッド用いて、特定の処理を非同期に遅らせて実行する為の仕組みです。代表的な物としてworkqueue、delayed_workqueue、kthread_queueの3つがあり、それぞれについて説明します。
[改定] アトミック操作 linux.coresv.com/2023/08/26/%e3… アトミック操作とは、複数のプロセスやスレッドから同時にアクセスされる可能性のある変数へのアクセスを同期化するために使用される方法の1つです。アトミック操作は、複数のCPUで同時に実行されている場合でも、互いに競合することなく実行されます。
[改定]メモリ確保 (kmalloc, vmalloc) linux.coresv.com/2023/08/24/%e3… 本章のメモリ確保とは、mallocの様な関数を用いて、動的にメモリを確保する処理を示します。Linuxカーネルのメモリ確保関数として、kmallocやvmallocが用意されていますので、それぞれについて説明します。
[改定]ドライバの登録 linux.coresv.com/2023/08/23/%e3… ドライバの登録は、ドライバをLinuxカーネルに登録し、コールバック関数を呼び出してもらう為の処理です。4章の「ドライバの初期化処理について」の「driverとしての初期化」で始めに出てきたplatform_driver_registerが、ドライバを登録する為の関数に
[改定] ログ出力 linux.coresv.com/2023/08/22/%e3… 本章のログ出力は、printfの様な関数を用いて、ログ領域に文字列を残す処理を示します。Linuxカーネルの中では、stdlib.hが使えない為、printf自体は使えません。標準出力自体が無い為、その他のputs等も使用できません。その代わりにLinuxカーネルのログ出力
[改版] 読み解く照度センサとドライバについて linux.coresv.com/2023/08/21/%e6… 本章では、読み解く照度センサドライバと、そのドライバが制御する照度センサデバイスの概要について、説明します。
[改版] デバイスドライバとは linux.coresv.com/2023/08/20/%e3… デバイスドライバはハードウェアを制御するソフトウェアです。C言語だけを学んだ方は、ハードウェアを制御するとしてもライブラリ等を使用するので、その実態を知らない状態だと思っています。本章ではデバイスドライバが、どのようにハードウェ
システムコールによるインターフェース呼び出し linux.coresv.com/2023/09/20/sys… 前章の内容でデバイスドライバを通してハードウェアを制御する為のインターフェースが、準備できました。本章では、ドライバのインターフェースを通した上位層からの制御について説明します。基本的には7章で説明したsysfs、dev
United States 趨勢
- 1. Good Friday 39.3K posts
- 2. Dorado 4,239 posts
- 3. Flacco 93.7K posts
- 4. #FridayVibes 3,809 posts
- 5. RED Friday 1,472 posts
- 6. #FridayMotivation 2,846 posts
- 7. Talus 15.1K posts
- 8. Melly 3,171 posts
- 9. #Talisman 8,489 posts
- 10. Cuomo 97.2K posts
- 11. #FridayFeeling 1,665 posts
- 12. Justice 340K posts
- 13. #clubironmouse 4,213 posts
- 14. Rodgers 58K posts
- 15. Tomlin 23.6K posts
- 16. Pence 84.8K posts
- 17. Bolton 238K posts
- 18. yeonjun 125K posts
- 19. Chase 109K posts
- 20. Ramsey 20.4K posts
Something went wrong.
Something went wrong.