کتاب Linux Device Driver Development یا توسعه درایور دستگاه لینوکس، نسخه دوم از این کتاب است که راهنمای برنامهنویسی دستگاههای راهانداز (Driver) و به طور کلی ارتباط دستگاههای سختافزاری با هستهی لینوکس را شرح میدهد. این کتاب در 17 فصل به آموزش مقدماتی تا بیان نکات پیشرفته و مهم برنامهنویسی سختافزارها در لینوکس خواهد پرداخت.
در ادامه مقدمهای از کتاب Linux Device Driver Development را از زبان نویسنده شرح خواهیم داد.
مقدمهای بر کتاب Linux Device Driver Development:
هسته لینوکس یک نرم افزار پیچیده، قابل حمل، ماژولار و پرکاربرد است که بر روی حدود 80 درصد سرورها و سیستمهای تعبیه شده در بیش از نیمی از دستگاهها در سراسر جهان اجرا میشود. درایورهای دستگاه نقش مهمی در زمینه نحوه عملکرد یک سیستم لینوکس دارند. از آنجایی که لینوکس یکی از محبوب ترین سیستم عاملها است، علاقه به توسعه درایورهای دستگاههای شخصی نیز به طور پیوسته در حال افزایش است.
درایور دستگاه پیوند بین فضای کاربر و دستگاههای سختافزاری از طریق هسته است.
این کتاب با دو فصل آغاز میشود که به شما کمک میکند اصول اولیه درایورها را درک کنید و شما را برای سفر طولانی از طریق هسته لینوکس آماده کند. سپس این کتاب توسعه درایور بر اساس زیرسیستمهای لینوکس، مانند مدیریت حافظه، ورودی/خروجی صنعتی (IIO)، ورودی/خروجی عمومی (GPIO)، مدیریت درخواست وقفه (IRQ) و مدار یکپارچه (I2C) را پوشش میدهد. و رابط محیطی سریال (SPI). این کتاب همچنین یک رویکرد عملی برای دسترسی مستقیم به حافظه و ثبت انتزاع نقشه را پوشش میدهد.
کد منبع موجود در این کتاب بر روی رایانه شخصی x86 و UDOO QUAD از SECO آزمایش شده است، که مبتنی بر ARM i.MX6 از NXP است، با ویژگیها و اتصالات کافی که به ما امکان میدهد تمام تستهای مورد بحث در کتاب را پوشش دهیم. . برخی از درایورها نیز برای اهداف آزمایشی برای قطعات ارزان قیمت ارائه شده اند، مانند MCP23016 و 24LC512 که به ترتیب یک کنترلر I2C GPIO و حافظه EEPROM هستند.
در پایان این کتاب، شما با مفهوم توسعه درایور دستگاه راحت خواهید بود و میتوانید هر درایور دستگاه را از ابتدا با استفاده از آخرین شاخه هسته پایدار (v5.10.y در زمان نگارش) بنویسید.
این کتاب برای چه کسی است؟
برای استفاده از محتوای این کتاب، دانش قبلی برنامه نویسی C و دستورات لینوکس مورد انتظار است. این کتاب توسعه درایور لینوکس را برای دستگاههای جاسازی شده پرکاربرد با استفاده از نسخه هسته نسخه 5.10 پوشش میدهد. این کتاب اساسا برای مهندسین جاسازی شده، مدیران سیستم لینوکس، توسعه دهندگان و هکرهای هسته در نظر گرفته شده است. چه یک توسعهدهنده نرمافزار، یک معمار سیستم، یا یک خالق که مایل به توسعه درایور لینوکس هستید، این کتاب برای شما مناسب است.
آنچه کتاب Linux Device Driver Development پوشش میدهد:
فصل 1، مقدمه ای بر توسعه هسته، فرآیند توسعه هسته لینوکس را معرفی میکند. در این فصل مراحل دانلود، پیکربندی و کامپایل یک هسته برای x86 و همچنین برای سیستمهای مبتنی بر ARM بحث خواهد شد.
فصل 2 کتاب Linux Device Driver Development، درک مفاهیم اولیه ماژول کرنل لینوکس، به ماژولار بودن لینوکس با استفاده از ماژولهای هسته میپردازد و بارگذاری/تخلیه آنها را توضیح میدهد. همچنین معماری ماژول را با برخی مفاهیم اساسی توصیف میکند.
فصل 3 کتاب Linux Device Driver Development، برخورد با کمککنندههای هسته هسته، عملکردها و مکانیسمهای کرنل را که اغلب مورد استفاده قرار میگیرند، مانند صف کار، صف انتظار، mutexes، قفل چرخشی و سایر امکاناتی که برای بهبود قابلیت اطمینان درایور مفید هستند را بررسی میکند.
فصل 4 کتاب Linux Device Driver Development، نوشتن درایورهای دستگاه کاراکتر، بر صادرات قابلیتهای دستگاه به فضای کاربر با استفاده از دستگاههای کاراکتر و همچنین پشتیبانی از دستورات سفارشی با استفاده از رابط ioctl تمرکز دارد.
فصل 5، درک و استفاده از درخت دستگاه، مکانیسم اعلام و توصیف دستگاهها در هسته را مورد بحث قرار میدهد. این فصل آدرس دهی دستگاه، مدیریت منابع و هر نوع داده ای را که در درخت دستگاه (DT) و APIهای هسته آنها پشتیبانی میشود، توضیح میدهد.
بیشتر بخوانید: کتاب Linux Kernel Debugging
فصل 6، مقدمه ای بر دستگاهها، درایورها و انتزاع پلت فرم، مفهوم کلی دستگاههای پلت فرم، مفهوم گذرگاه شبه پلت فرم، و همچنین مکانیسمهای تطبیق دستگاه و راننده را توضیح میدهد.
فصل 7 کتاب Linux Device Driver Development، درک مفهوم دستگاهها و درایورهای پلتفرم، معماری درایور پلتفرم را به شیوهای کلی و نحوه مدیریت دادههای پلتفرم را توضیح میدهد.
فصل 8، نوشتن درایورهای دستگاه I2C، به معماری درایور دستگاه I2C، ساختارهای داده، و روشهای آدرسدهی و دسترسی دستگاه در گذرگاه میپردازد.
فصل 9 کتاب Linux Device Driver Development، نوشتن درایورهای دستگاه SPI، معماری درایور دستگاه مبتنی بر SPI و همچنین ساختارهای داده درگیر را شرح میدهد. در این فصل روش دسترسی و ویژگیهای هر دستگاه و همچنین تلههایی که باید از آنها اجتناب کنید، بحث میشود. اتصال SPI DT نیز مورد بحث قرار گرفته است.
فصل 10 کتاب Linux Device Driver Development، درک تخصیص حافظه هسته لینوکس، ابتدا مفهوم حافظه مجازی را معرفی میکند تا طرح بندی کل حافظه هسته را توصیف کند. این فصل سپس از طریق زیرسیستم مدیریت حافظه هسته، تخصیص و نگاشت حافظه، APIهای آنها و همه دستگاههای درگیر در چنین مکانیزمها و همچنین مکانیسم ذخیرهسازی هسته را مورد بحث قرار میدهد.
فصل 11، پیاده سازی پشتیبانی از دسترسی مستقیم به حافظه (DMA)، DMA و API هسته جدید آن را معرفی میکند: API موتور DMA. این فصل در مورد نگاشتهای مختلف DMA صحبت خواهد کرد و نحوه رسیدگی به مسائل انسجام کش را شرح میدهد. علاوه بر این، این فصل تمام مفاهیم را با یک مورد استفاده عمومی خلاصه میکند.
فصل 12، Abstracting Memory Access – مقدمه ای بر Regmap API: یک Register Map Abstraction، یک نمای کلی از API های نقشه ثبت و نحوه انتزاع آنها از تراکنشهای SPI و I2C اساسی ارائه میدهد. این فصل به توضیح API عمومی و همچنین API اختصاصی میپردازد.
فصل 13، رمزگشایی از چارچوب IRQ هسته، هسته IRQ لینوکس را رمزگشایی میکند. این فصل به مدیریت IRQ لینوکس میپردازد، از انتشار وقفه در سیستم شروع میشود و به سمت درایورهای کنترل کننده وقفه حرکت میکند، بنابراین مفهوم چندگانهسازی IRQ را با استفاده از API دامنه IRQ لینوکس توضیح میدهد.
فصل 14 کتاب Linux Device Driver Development، مقدمهای بر مدل دستگاه لینوکس، یک نمای کلی از قلب لینوکس ارائه میکند، و توضیح میدهد که چگونه اشیا در هسته نمایش داده میشوند، و چگونه لینوکس در زیر هود به طور کلی طراحی میشود، از kobject تا دستگاهها تا Bus ها، کلاسها و درایورهای دستگاه.
فصل 15 کتاب Linux Device Driver Development، بررسی چارچوب IIO، چارچوب جمعآوری و اندازهگیری دادههای هسته را برای مدیریت مبدلهای دیجیتال به آنالوگ (DAC) و مبدلهای آنالوگ به دیجیتال (ADC) معرفی میکند. این فصل در میان APIهای IIO، هم از فضای هسته و هم از فضای کاربر (به لطف libiio)، با بافرهای راه اندازی شده و ضبط مداوم دادهها سروکار دارد.
فصل 16 کتاب Linux Device Driver Development، بهرهگیری از کنترلکننده پین و زیرسیستمهای GPIO، زیرساختهای کنترل پین هسته و APIها و همچنین درایورهای تراشه GPIO و gpiolib را که API هسته برای مدیریت GPIO است، توضیح میدهد. این فصل همچنین رابط GPIO مبتنی بر اعداد صحیح قدیمی و منسوخ شده و همچنین رابط مبتنی بر توصیفگر که جدید است و در نهایت نحوه پیکربندی آنها از داخل درخت دستگاه را مورد بحث قرار میدهد. همچنین libgpiod را پوشش میدهد، که کتابخانه رسمی برای رسیدگی به GPIO در فضای کاربر است.
فصل 17 کتاب Linux Device Driver Development، بهرهبرداری از زیرسیستم ورودی هسته لینوکس، یک نمای کلی از زیرسیستمهای ورودی ارائه میکند که با دستگاههای ورودی مبتنی بر IRQ و نظرسنجی سروکار دارد و هر دو API را معرفی میکند. این فصل توضیح میدهد و نشان میدهد که چگونه کد فضای کاربر با چنین دستگاههایی برخورد میکند.
سرفصلهای کتاب Linux Device Driver Development:
- Contributors
- About the author
- About the reviewer
- Preface
- Section 1 -Linux Kernel Development Basics
- Chapter 1: Introduction to Kernel Development
- Chapter 2: Understanding Linux Kernel Module Basic Concepts
- Chapter 3: Dealing with Kernel Core Helpers
- Chapter 4: Writing Character Device Drivers
- Section 2 – Linux Kernel Platform Abstraction and Device Drivers
- Chapter 5: Understanding and Leveraging the Device Tree
- Chapter 6: Introduction to Devices, Drivers, and Platform Abstraction
- Chapter 7: Understanding the Concept of Platform Devices and Drivers
- Chapter 8: Writing I2C Device Drivers
- Chapter 9: Writing SPI Device Drivers
- Section 3 – Making the Most out of Your Hardware
- Chapter 10: Understanding the Linux Kernel Memory Allocation
- Chapter 11: Implementing Direct Memory Access (DMA) Support
- Chapter 12: Abstracting Memory Access – Introduction to the Regmap API: a Register Map Abstraction
- Chapter 13: Demystifying the Kernel IRQ Framework
- Chapter 14: Introduction to the Linux Device Model
- Section 4 – Misc Kernel Subsystems for the Embedded World
- Chapter 15: Digging into the IIO Framework
- Chapter 16: Getting the Most Out of the Pin Controller and GPIO Subsystems
- Chapter 17: Leveraging the Linux Kernel Input Subsystem
- Other Books You May Enjoy
فایل کتاب Linux Device Driver Development را میتوانید پس از پرداخت، دریافت کنید.
دیدگاهها
هیچ دیدگاهی برای این محصول نوشته نشده است.