Linux Driver Development for Embedded Processors: Second Edition
سامانههای نهفته (embedded systems)، به بخشی جدایی ناپذیر از زندگی روزمره ما تبدیل شده اند. آنها در دستگاههای همراه، زیرساختهای شبکه، دستگاهها و لوازم خانگی، صفحههای دیجیتالی، تصویر برداری پزشکی، سیستم سرگرمی خودرو و بسیاری از کاربردهای صنعتی دیگر مورد استفاده قرار میگیرند. استفاده از سامانههای نهفته به صورت نمایی در حال رشد است. پردازندههای امروزی از سیلیکون ساخته شده اند که خود آن از یکی از فراوانترین مادههای روی زمین یعنی شن ساخته شده است. فناوری پردازنده از ساخت 90 نانومتری در سال 2000 به 14 نانومتری امروز حرکت کرده است و پیش بینی میشود تا سال 2021 به 7 یا 5 نانومتر کاهش یابد.
پردازندههای embedded امروزی از CPUهای ۶۴ بیتی چند هسته ای ساخته شده در فرآیندهای پیشرفته ۱۴ نانومتری، با قابلیتهای محاسبات گسترده ناهمگن از جمله GPUهای قدرتمند و DSPها مهندسی شده اند تا اجازهی اجرای شبکههای عصبی آموزش دیده را بدهند و نسل بعدی برنامههای واقعیت مجازی را فعال سازند تا پردازندههای نهفته تک یا دو هسته ای برای برنامههای کم مصرف و به صرفه طراحی شده برای IoT (اینترنت اشیا) در حال رشد و بازارهای صنعتی. امروزه داشتن یک سیستم لینوکسی embedded که بر روی پردازنده ای چند دلاری اجرا میشود امکان پذیر است و پردازندههای جدید در راه اند و این هزینه را کاهش میدهند.
انعطاف پذیری لینوکس embeded، در دسترس بودن پردازندههای قدرتمند و کم مصرف طراحی شده برای محاسبات embedded و قیمت پایین پردازندههای جدید، شرکتهای صنعتی بسیاری را تشویق میکند تا توسعههای جدیدی را مبتنی بر پردازندههای embedded انجام دهند. مهندسین فعلی ابزارهای قدرتمندی را برای توسعه برنامههای کاربردی که قبلاً غیرقابل تصور بودند در اختیار دارند، اما باید ویژگیهای بی شماری را که امروزه لینوکس ارائه میدهد را درک کنند. توسعه دهندگان embedded firmwareهای لینوکس، نیاز به درک سطح پایین کنترل عملکرد سخت افزاری دارند تا قادر به نوشتن رابط هایی برای نوشتن دستگاههای جانبی باشند مثل GPIO ها، serial busها، تایمر ها، DMA، CAN، USB و LCD.
ویرایش دوم کتاب Linux Driver Development for Embedded Processors، یک ابزار یادگیری برای شروع به توسعه درایورها بدون هیچ دانش قبلی در این زمینه است، بنابراین هدف این کتاب این بوده است که بدون نیاز به دانش سطح بالایی بتوانید درایورهای خودتان را توسعه دهید. همچنین فراموش نکنید که بهترین روش برای توسعه یک درایور، ننوشتن آن از ابتدا است. شما میتوانید از کدهای آزاد مشابه درایورهای کرنل لینوکس، برای توسعه درایورهای خودتان نیز استفاده کنید. همهی کدهای درایورهای این کتاب تحت لایسنس GPL هستند و شما میتوانید این کدها را تغییر داده و تحت همین لایسنس بازنشر کنید.
Table of Contents:
1. Building the System
2. The Linux Device and Driver Model
3. The Simplest Drivers
4. Character Drivers
5. Platform Drivers
6. I2C Client Drivers
7. Handling Interrupts in Device Drivers
8. Allocating Memory with Linux Drivers
9. Linux DMA in Device Drivers
10. Input Subsystem Framework for Device Drivers
11. Industrial I/O Subsystem for Device Drivers
12. Using the Regmap API in Linux Device Drivers