کتاب Mastering Embedded Linux Development, 4th Edition: Craft fast and reliable embedded solutions with Linux 6.6 and The Yocto Project 5.0 (تسلط بر توسعه لینوکس توکار، ویرایش چهارم: ساخت راهحلهای توکار سریع و قابل اعتماد با لینوکس ۶.۶ و پروژه یوکتو ۵.۰) یک منبع جامع و عملی برای مهندسان نرمافزار توکار است. این کتاب به شما میآموزد که چگونه از پتانسیل کامل لینوکس برای طراحی و پیادهسازی سیستمهای توکار قدرتمند و پایدار بهره ببرید. ویرایش چهارم بر عناصر بنیادی پروژههای لینوکس توکار شامل زنجیره ابزار (toolchain)، بوتلودر (bootloader)، کرنل (kernel) و فایل سیستم ریشه (root filesystem) تمرکز دارد.
از دانلود و نصب زنجیره ابزار آماده گرفته تا کامپایل متقابل (cross-compiling) هر یک از این عناصر از ابتدا، کتاب شما را برای خودکارسازی فرآیند با استفاده از Buildroot و Yocto Project آماده میکند. این کتاب همچنین بهروزرسانیهای نرمافزاری از طریق هوا (OTA)، نمونهسازی سریع با بردهای افزودنی، و روشهای توسعه مدرن شامل بستهبندی پایتون و استقرار برنامههای کانتینری را پوشش میدهد. در نهایت، با بحث در مورد اشکالزدایی (debugging) و پروفایلسازی (profiling) کد در فضای کاربری و کرنل لینوکس، به شما کمک میکند تا دستگاههای توکار کارآمد، امن و رضایتبخش برای کاربران نهایی ایجاد کنید.
در ادامه مقدمهای از کتاب Mastering Embedded Linux Development را از زبان نویسنده شرح خواهیم داد.
مقدمهای بر کتاب Mastering Embedded Linux Development:
درباره این کتاب
لینوکس سالهاست که ستون فقرات رایانش توکار (embedded computing) بوده است. با این حال، کتابهای بسیار کمی وجود دارند که این موضوع را به طور کامل پوشش دهند: این کتاب قصد دارد آن خلأ را پر کند. اصطلاح لینوکس توکار به خوبی تعریف نشده است و میتواند برای سیستمعامل درون طیف گستردهای از دستگاهها از ترموستاتها گرفته تا روترهای Wi-Fi و واحدهای کنترل صنعتی به کار رود. با این حال، همه آنها بر روی همان نرمافزار متنباز اساسی ساخته شدهاند. اینها فناوریهایی هستند که من در این کتاب، بر اساس تجربه خود به عنوان یک مهندس، توصیف میکنم.
فناوری ثابت نمیماند. صنعتی که بر پایهی رایانش توکار بنا شده، دقیقاً مانند رایانش جریان اصلی، به قانون مور (Moore’s law) حساس است. رشد نمایی که این امر به آن اشاره دارد، به این معنی است که تعداد شگفتآوری از چیزها از زمان انتشار اولین ویرایش این کتاب تغییر کردهاند. ویرایش چهارم کتاب Mastering Embedded Linux Development کاملاً بازنگری شده است تا از جدیدترین نسخههای اجزای اصلی منبع باز، شامل لینوکس ۶.۶، پروژه یوکتو ۵.۰ اسکارثگپ (Scarthgap) و بیلدروت ۲۰۲۴.۰۲ LTS استفاده کند. علاوه بر Autotools، این کتاب اکنون CMake را نیز پوشش میدهد، یک سیستم ساخت مدرن که در سالهای اخیر پذیرش فزایندهای داشته است.
کتاب Mastering Embedded Linux Development برای چه کسانی است؟
این کتاب برای توسعهدهندگانی نوشته شده است که به رایانش توکار و لینوکس علاقهمند هستند و میخواهند دانش خود را به شاخههای مختلف این موضوع گسترش دهند. در نگارش کتاب، من فرض را بر درک اولیه از خط فرمان لینوکس و در مثالهای برنامهنویسی، دانش کاری از زبانهای C و پایتون گذاشتهام. چندین فصل کتاب Mastering Embedded Linux Development، بر سختافزاری که در یک برد هدف توکار استفاده میشود، تمرکز دارند، بنابراین آشنایی با سختافزار و رابطهای سختافزاری در این موارد یک مزیت قطعی خواهد بود.
کتاب Mastering Embedded Linux Development چه موضوعاتی را پوشش میدهد؟
فصل ۱، شروع، صحنه را با توصیف اکوسیستم لینوکس توکار و انتخابهای موجود برای شما در شروع پروژه خود، آماده میکند.
فصل ۲، یادگیری درباره زنجیرههای ابزار، اجزای یک زنجیره ابزار را توصیف میکند و اینکه از کجا میتوان یک زنجیره ابزار برای کامپایل متقابل کد برای برد هدف خود به دست آورد.
فصل ۳، همه چیز درباره بوتلودرها، نقش بوتلودر را در بارگذاری کرنل لینوکس در حافظه توضیح میدهد و از U-Boot به عنوان مثال استفاده میکند. همچنین درختان دستگاه (device trees) را به عنوان مکانیزم مورد استفاده برای کدگذاری جزئیات سختافزار در تقریباً تمام سیستمهای لینوکس توکار معرفی میکند.
فصل ۴ کتاب Mastering Embedded Linux Development، پیکربندی و ساخت کرنل، اطلاعاتی را در مورد نحوهی انتخاب یک کرنل لینوکس برای یک سیستم توکار و پیکربندی آن برای سختافزار درون دستگاه ارائه میدهد. همچنین نحوهی پورت لینوکس به سختافزار جدید را پوشش میدهد.
فصل ۵، ساخت یک فایل سیستم ریشه، ایدههای پشت بخش فضای کاربر (user space) یک پیادهسازی لینوکس توکار را از طریق یک راهنمای گام به گام در مورد نحوهی پیکربندی یک فایل سیستم ریشه معرفی میکند.
فصل ۶ کتاب Mastering Embedded Linux Development، انتخاب یک سیستم ساخت، دو سیستم ساخت لینوکس توکار پرکاربرد، Buildroot و The Yocto Project را پوشش میدهد که مراحل شرح داده شده در چهار فصل قبلی را خودکار میکنند.
فصل ۷، توسعه با یوکتو، نشان میدهد که چگونه میتوان تصاویر سیستم را بر روی یک لایه BSP موجود ساخت، بستههای نرمافزاری روی برد را با SDK قابل توسعه یوکتو توسعه داد، و توزیع لینوکس توکار خود را به همراه مدیریت بستههای زمان اجرا ایجاد کرد.
فصل ۸ کتاب Mastering Embedded Linux Development، یوکتو در زیر کاپوت، گشتی در جریان کار ساخت و معماری یوکتو است، از جمله توضیحی درباره رویکرد چندلایهای منحصر به فرد یوکتو. همچنین اصول اولیه نحو و معناشناسی BitBake را با مثالهایی از فایلهای دستور پخت واقعی، تشریح میکند.
فصل ۹، ایجاد یک استراتژی ذخیرهسازی، چالشهای ایجاد شده توسط مدیریت حافظه فلش، از جمله چیپهای فلش خام و بستههای eMMC (embedded MMC) را مورد بحث قرار میدهد. سیستمهای فایلی را که برای هر نوع فناوری قابل استفاده هستند، توصیف میکند.
فصل ۱۰، بهروزرسانی نرمافزار در میدان، روشهای مختلف بهروزرسانی نرمافزار پس از استقرار دستگاه را بررسی میکند و شامل بهروزرسانیهای کاملاً مدیریتشده OTA (Over-the-Air) است. موضوعات اصلی مورد بحث، قابلیت اطمینان و امنیت هستند.
فصل ۱۱، واسط با درایورهای دستگاه، نحوهی تعامل درایورهای دستگاه کرنل با سختافزار را با پیادهسازی یک درایور ساده توصیف میکند. همچنین روشهای مختلف فراخوانی درایورهای دستگاه از فضای کاربر را شرح میدهد.
فصل ۱۲ کتاب Mastering Embedded Linux Development، نمونهسازی سریع با بردهای افزودنی، نحوهی نمونهسازی سریع سختافزار و نرمافزار را با استفاده از یک تصویر Debian از پیش ساخته شده برای BeaglePlay همراه با بردهای افزودنی جانبی MikroElektronika نشان میدهد.
فصل ۱۳، راهاندازی – برنامه init، توضیح میدهد که چگونه اولین برنامه فضای کاربر، init
، بقیه سیستم را راهاندازی میکند. سه نسخه از برنامه init
را توصیف میکند که هر کدام برای گروه متفاوتی از سیستمهای توکار مناسب هستند، از سادگی init
در BusyBox، از طریق init
سیستم V، تا وضعیت فعلی هنر، systemd
.
فصل ۱۴، مدیریت توان، روشهای مختلفی را که لینوکس میتواند برای کاهش مصرف برق تنظیم شود، از جمله مقیاسبندی فرکانس و ولتاژ دینامیک، انتخاب حالتهای بیکاری عمیقتر، و تعلیق سیستم، بررسی میکند. هدف این است که دستگاههایی ساخته شوند که با یک بار شارژ باتری طولانیتر کار کنند و همچنین خنکتر باشند.
فصل ۱۵، بستهبندی پایتون، توضیح میدهد که چه گزینههایی برای بستهبندی ماژولهای پایتون برای استقرار در دسترس هستند و چه زمانی باید از یک روش به جای دیگری استفاده کرد. pip
، محیطهای مجازی و conda
را پوشش میدهد.
فصل ۱۶ کتاب Mastering Embedded Linux Development، استقرار تصاویر کانتینر، اصول جنبش DevOps را معرفی میکند و نشان میدهد که چگونه آنها را در لینوکس توکار به کار ببرید. ابتدا از Docker برای بستهبندی یک برنامه پایتون به همراه محیط فضای کاربری آن در یک تصویر کانتینر استفاده میکنیم. سپس از GitHub Actions برای راهاندازی یک خط لوله CI/CD برای تصویر کانتینر خود استفاده میکنیم. در نهایت، از Docker برای انجام بهروزرسانیهای نرمافزار کانتینری در Raspberry Pi 4 استفاده میکنیم.
فصل ۱۷، یادگیری درباره فرآیندها و نخها (Threads)، سیستمهای توکار را از دیدگاه برنامهنویس برنامه توصیف میکند. این فصل از کتاب Mastering Embedded Linux Development، به فرآیندها و نخها، ارتباطات بین فرآیندها و سیاستهای زمانبندی میپردازد.
فصل ۱۸، مدیریت حافظه، ایدههای پشت حافظه مجازی و نحوه تقسیم فضای آدرس به نگاشتهای حافظه را بررسی میکند. همچنین نحوهی اندازهگیری دقیق مصرف حافظه و نحوهی تشخیص نشت حافظه را شرح میدهد.
فصل ۱۹، اشکالزدایی با GDB، به شما نشان میدهد که چگونه از دیباگر GNU، GDB، همراه با عامل دیباگ، gdbserver
، برای اشکالزدایی برنامههایی که از راه دور روی دستگاه هدف اجرا میشوند، استفاده کنید. در ادامه نشان میدهد که چگونه میتوانید این مدل را برای اشکالزدایی کد کرنل، با استفاده از استابهای دیباگ کرنل، KGDB، گسترش دهید.
فصل ۲۰ کتاب Mastering Embedded Linux Development، پروفایلسازی و ردیابی، تکنیکهای موجود برای اندازهگیری عملکرد سیستم را پوشش میدهد، از پروفایلهای کل سیستم شروع کرده و سپس بر روی مناطق خاصی که گلوگاهها باعث عملکرد ضعیف میشوند، تمرکز میکند. همچنین نحوهی استفاده از Valgrind برای بررسی صحت استفاده برنامه از همگامسازی نخها و تخصیص حافظه را شرح میدهد.
فصل ۲۱، برنامهنویسی بلادرنگ، راهنمایی دقیق برای برنامهنویسی بلادرنگ در لینوکس با استفاده از پچ کرنل بلادرنگ PREEMPT_RT
را که اخیراً ادغام شده است، ارائه میدهد.
سرفصلهای کتاب Mastering Embedded Linux Development:
- Preface
- Part 1: Elements of Embedded Linux
- Starting Out
- Learning about Toolchains
- All about Bootloaders
- Configuring and Building the Kernel
- Building a Root Filesystem
- Part 2: Building Embedded Linux Images
- Selecting a Build System
- Developing with Yocto
- Yocto under the Hood
- Part 3: System Architecture and Design Decisions
- Creating a Storage Strategy
- Updating Software in the Field
- Interfacing with Device Drivers
- Prototyping with Add-On Boards
- Starting Up – The init Program
- Managing Power
- Part 4: Developing Applications
- Packaging Python
- Deploying Container Images
- Learning about Processes and Threads
- Managing Memory
- Part 5: Debugging and Optimizing Performance
- Debugging with GDB
- Profiling and Tracing
- Real-Time Programming
- Index
جهت دانلود کتاب Mastering Embedded Linux Development میتوانید پس از پرداخت، دریافت کنید.
دیدگاهها
هیچ دیدگاهی برای این محصول نوشته نشده است.