مسئله مقدمه
برای یک پروژه جدید، تصمیم گرفتیم از Raspberry Pi Compute Module 5 (CM5) به عنوان پلت فرم سخت افزاری خود استفاده کنیم.
من یک کیت توسعه دریافت کردم که شامل موارد زیر است:
- Compute Module 5 (4 GB RAM and 32 GB eMMC)* 27W USB-C Type-C PD Power Supply* Compute Module 5 IO Board* Antenna Kit* Compute Module 5 IO Case* 2 x HDMI® to HDMI® Cable* Cooler for Compute Module 5* USB-A to USB-C Cable.
هدف
برای ساده سازی توسعه، می خواستم نرم افزار سیستم را (raspiOS) از کارت microSD اجرا کنم، زیرا Compute Module 5 IO Board شامل یک اسلات کارت microSD است.
من از Raspberry Pi Imager استفاده کردم تا آخرین سیستم عامل Raspberry Pi را روی کارت microSD فلش کنم، کارت را در شکاف برد IO قرار دهم و سیستم را روشن کنم.
با این حال، به جای بوت شدن در سیستم عامل، نمایشگر پیامی ترمینال مانند را نشان داد که می گوید "SD: card شناسایی نشد" و سیستم بوت نشد.
علت و معلول
پس از کمی تحقیق، توضیحات را در مستندات Raspberry Pi برای Compute Module 5پیدا کردم:
- اسلات کارت microSD (فقط برای استفاده با انواع Lite بدون eMMC؛ انواع دیگر اسلات را نادیده می گیرند)
این بدان معناست که اسلات microSD فقط در نوع "Lite" قابل استفاده است که شامل فضای ذخیره سازی eMMC داخلی نمی شود. CM5 من دارای 32 گیگابایت eMMC است، بنابراین اسلات SD غیرفعال است و در حین بوت نادیده گرفته می شود.
روش صحیح نصب نرم افزار سیستم بر روی CM5 با eMMC
برای نصب سیستم عامل بر روی CM5 با eMMC، دستورالعمل های رسمی setting up the IO Boardرا دنبال کنید.
یک مرحله مهم قرار دادن یک جامپر روی هدر J2 روی تخته IO است. این CM5 را در حالت بوت USB قرار می دهد و به رایانه میزبان شما اجازه می دهد مانند یک دستگاه ذخیره سازی انبوه به eMMC دسترسی داشته باشد.
مشکل با rpiboot و راه حل
در دستگاه توسعه خود (اوبونتو 22.04)، در ابتدا سعی کردم rpiboot را با موارد زیر نصب کنم:
sudo apt install rpiboot
با این حال، این نسخه به درستی کار نمی کرد - احتمالا به دلیل قدیمی بودن یا ناسازگاری با CM5.
در عوض، مجبور شدم rpiboot را از منبع بسازم. مراحل اینجا را دنبال کنید:
مخزن رسمی را کلون کنید:
git clone --recurse-submodules --shallow-submodules --depth=1 https://github.com/raspberrypi/usbboot
cd usbboot
### وابستگی ها را نصب کنید و بسازید:
sudo apt install git libusb-1.0-0-dev pkg-config build-essential
make
### rpiboot را اجرا کنید
با اتصال CM5 و جامپر J2 در محل:
sudo ./rpiboot -d mass-storage-gadget64
این سیستم eMMC CM5 را شناسایی می کند و اکنون می توانید سیستم عامل را با استفاده از Raspberry Pi Imager یا dd روی آن فلش کنید.</:code4:>
</:code3:>
</:code2:></:code1:>
خلاصه
- اسلات CM5 SD فقط روی انواع Lite (بدون eMMC) کار می کند.
- برای فلش کردن CM5 با eMMC، باید:
** جامپر J2 را تنظیم کنید.
** از rpiboot برای افشای eMMC از طریق USB استفاده کنید. - اگر rpiboot بسته بندی شده کار نمی کند، آن را از منبع بسازید.
پس از انجام این کار، می توانید سیستم عامل Raspberry Pi را مستقیما روی eMMC فلش کنید، گویی که یک کارت SD است.