🚀 پروژه Mini PC Remix: به روزرسانی پیشرفت و وضعیت فعلی

🔹 مقدمه و وضعیت
Remix Mini PC در ابتدا به عنوان یک دستگاه مبتنی بر اندرویدی جمع و جور طراحی شده است ، اما هدف من در این پروژه بوده است آن را با سیستم عامل جایگزین مجدداً مورد استفاده قرار دهید، این امکان را برای اجرای یک سیستم عامل منبع باز مانند Armbian فراهم می کند. این سفر درگیر شده است اصلاحات سیستم عامل ، آزمایش بوت لودر و غلبه بر چالش های مختلف سخت افزاریبشر در این پست ، پیشرفت تاکنون ، موانع روبرو و راه حل های مورد بررسی در طول مسیر را مستند می کنم.
challeng چالش ها و آزمایش های اولیه
🛠 درک سخت افزار مینی ریمیکس
- یکی از بزرگترین موانع جاده ای این بود که دستگاه من فاقد ذخیره سازی NAND/EMMC، به این معنی که من باید بفهمم چگونه مستقیماً از کارت SD بوت کنیدبشر این منجر به تحقیق در مورد دنباله بوت Allwinner Soc برای تعیین نحوه اولویت بندی دستگاه های ذخیره سازی. به عنوان مثال ، بر خلاف رایانه های x86 سنتی ، که به طور پیش فرض به ترتیب بوت BIOS ، SOC های Allwinner سعی می کنند ابتدا از EMMC بوت شوند ، سپس SD و در آخر USB در صورت پیکربندی
- من سخت افزار داخلی Remix Mini را بررسی کردم ، از جمله SOC Allwinner ، پیکربندی حافظه و پشتیبانی محیطی، برای درک محدودیت ها و اصلاحات احتمالی آن. این شامل تأیید اینکه آیا می توان از فلاش SPI به عنوان یک روش بوت جایگزین استفاده کرد
- از آنجا که EMMC گزینه ای نبود ، هرگونه تغییر سیستم عامل یا bootloader باید در خارج ذخیره می شد، افزودن پیچیدگی برای پایدار نگه داشتن تنظیمات. من مجبور شدم هر بار که سیستم بوت شود ، به بارگیری مجدد دستی u-boot اعتماد کنم
🔄 آزمایش با سیستم عامل جایگزین
- تست اصلاحات U-Boot برای فعال کردن بوت کارت SD ضروری بود. من به نسخه U-boot سازگار این به درستی سخت افزار را به درستی آغاز کرد و کنترل را به سیستم عامل منتقل کرد. به عنوان مثال ، برخی از ساختهای U-Boot به دلیل تنظیمات درخت دستگاه از دست رفته ، نتوانستند رابط کارت SD را تشخیص دهند
- من ارزیابی کردم بازوبند و بوی شست، هر دو از دستگاه های مبتنی بر Allwinner پشتیبانی می کنند. Armbian امیدوار کننده برای عملکرد گسترده تر بود ، در حالی که Tow-Boot یک جایگزین سبک وزن را ارائه می داد که باعث می شود رسانه های خارجی بوت شود
- دویدن حالت FEL برای بارگیری سیستم عامل خارجی قبل از ایجاد تغییرات دائمی ، آزمایش ایمن را با نسخه های مختلف U-Boot انجام دهید. این روش به ویژه هنگامی که کارت SD من به دلیل پیکربندی نادرست بوت لودر نتوانست بوت شود ، مفید بود
- من همچنین گزینه جایگزین را بررسی کردم SOC های Allwinner A64، که سازگاری سخت افزار و سیستم عامل مشابه را با Remix Mini به اشتراک می گذارند:
- Pine64 / Pine 64 Plus -پشتیبانی از جامعه ، با پشتیبانی اصلی U-Boot و Linux
- Pine64 LTS -چرخه پشتیبانی طولانی تر و متمرکز بر صنعتی
- Bananapi M64 – مشابه A64 SOC اما با پشتیبانی جانبی جانبی اضافی
- نانوپی A64 – فاکتور فرم جمع و جور ، که برای پشتیبانی خوب هسته اصلی شناخته شده است
- olimexa64 – olinuxino -طراحی سخت افزار کاملاً منبع باز
- ماژول محاسبه Sopinea64 – رویکرد محاسبه مدولار ، مشابه Raspberry Pi CM
- Orangepi3 – قدرتمندتر اما از همان معماری A64 SOC استفاده می کند
- کاج H64 – پیشرفته تر ، اما برخی از تفاوت ها در درس های تنظیمات بوت لودر که از این پروژه آموخته شده است می تواند برای این دستگاه ها گسترش یابد ، و این تلاش را برای یک جامعه گسترده تر ارزشمند می کند
🔹 اصلاحات و عیب یابی بوت لودر
💾 پاک کردن و اصلاح EMMC
- من سعی کردم سیستم عامل موجود را پاک کنید با استفاده از ابزارهای استاندارد لینوکس مانند
dd
باblkdiscard
وتflash_erase
، اما فرار کرد حفاظت و بخش های قفل شده EMMC را بنویسیدبشر حتی مجبور کردن پاک کردن ایمن از طریقmmc-utils
به دلیل محافظت در سطح سخت افزار انجام نشد - کاوش ODIN4 به عنوان یک ابزار چشمک زن بالقوه گام دیگری بود ، اما سازگاری آن با سخت افزار Allwinner محدود بود و باعث شد من به جای آن روی اصلاحات مستقیم کارت SD تمرکز کنم. محدودیت اصلی این بود که اودین بیشتر برای دستگاه های سامسونگ متناسب است و فاقد پشتیبانی چشمک زن NAND خاص Allwinner است
🚀 بوت شدن از کارت SD
- با موفقیت راه اندازی یک تصویر زره پوش قابل بوت اطمینان حاصل کرد که این سیستم دارای تمام اجزای هسته و رانندگان لازم است. یک قدم کلیدی تضمین صحیح بود uenv.txt پیکربندی برای هدایت هسته به دستگاه ذخیره سازی مناسب وجود داشت
- یک نقطه عطف کلیدی چشمک می زد U-Boot سفارشی به کارت SD، از آنجا که بوت لودر سهام برای اولویت بندی بوت SD در صورت عدم حضور EMMC طراحی نشده است. برخی از ساختها منجر به وحشت هسته به دلیل از دست دادن تنظیمات درخت دستگاه شد
- من متغیرهای محیط U-Boot را به صورت دستی اصلاح کردم BOOT CARD SD، اطمینان از آن
mmc0
همیشه اولین هدف بوت بود. این کار با استفاده از:
setenv boot_targets mmc0 usb0 pxe dhcp
saveenv
با این حال ، saveenv
به دلیل ذخیره سازی از دست رفته ، منجر به عیب یابی اضافی شد
🔒 ساخت محیط U-Boot پایدار است
- عدم وجود EMMC به این معنی بود
saveenv
به دلیل عدم موفقیت یک پارتیشن چربی گمشدهبشر U-Boot به طور معمول محیط خود را در اولین پارتیشن چربی قابل بوت قابل حمل ، که باید به صورت دستی ایجاد شود ، ذخیره می کند - من فساد جدول پارتیشن را برطرف کردم بازآفرینی پارتیشن ها در لینوکس با
fdisk
و اطمینان از قالب بندی صحیح سیستم فایل (vfat
برای بوت ،ext4
برای سیستم فایل ریشه). بدون یک پارتیشن بوت به درستی فرمت شده ، U-Boot در تشخیص متغیرهای محیط ذخیره شده ناکام است - پارتیشن بندی GPT در مقابل MBR مورد آزمایش قرار گرفت ، و MBR برای سازگاری با نسخه های میراث U-Boot قابل اطمینان تر بود. برخی از ساختهای U-Boot با GPT مبارزه کردند ، به خصوص نسخه های قدیمی که فاقد پشتیبانی EFI هستند
🔹 محدودیت های سخت افزار و راه حل های فیزیکی بالقوه
🚧 مشکل: NAND/EMMC قفل شده یا خراب
- EMMC Remix Mini PC یا قفل ، فاسد شده است ، یا با روش های پاک کننده معمولی شناخته نمی شود. تلاش برای خواندن/نوشتن دستگاه با استفاده از
fdisk
منجر به خطاهای I/O شد - ابزارهای پاک کردن استاندارد (
dd
باblkdiscard
باflash_erase
، حالت FEL) داشته باشد نتوانست عملکرد کامل نوشتن را بازیابی کندبشر این نشان دهنده آسیب سخت افزاری یا محدودیت های عمیق در سطح سیستم عامل است - این بدان معنی است که من نمی توانم تغییرات مداوم U-Boot را ذخیره کنم یا حافظه داخلی را از درون سیستم عامل قالب بندی کنم. حتی تلاش برای یک قالب اجباری از طریق
mke2fs -F /dev/mmcblk0p1
خطاهای حفاظت نوشتن برگشتی
🔌 راه حل فیزیکی: JTAG ، OpenOCD و برنامه نویسی NAND خارجی
- اشکال زدایی JTAG: با اتصال یک رابط JTAG ، می توانم دسترسی مستقیم به ذخیره سازی NAND ، با عبور از محدودیت های سطح سیستم عامل را بدست آورم. این امکان خواندن/نوشتن در پایین ترین سطح ممکن را فراهم می کند
- Openocd: اشکال زدایی روی تراشه باز (OpenOCD) ممکن است با واسطه مستقیم با پین های اشکال زدایی SOC ، قفل یا بازتاب تراشه NAND را در سطح پایین فراهم کند
-
حذف و برنامه ریزی مجدد NAND فیزیکی:
- اگر همه چیز دیگر شکست بخورد ، ممکن است لازم باشد Devolder تراشه NAND و با استفاده از یک آداپتور تخصصی NAND ، آن را در خارج مجدداً برنامه ریزی کنید
- با استفاده از a آداپتور و برنامه نویس NAND، من می توانم قبل از حل آن ، تراشه را کاملاً پاک و بازتاب دهم
- در حالی که بسیار شدید است ، این امر به من کنترل کامل بر روی دستگاه ذخیره سازی می دهد ، و اطمینان حاصل می شود که می توان آن را قالب بندی و بازنویسی کرد. یک روش مشابه برای برنامه ریزی مجدد بوت لودرهای قفل شده در دستگاه های تعبیه شده قدیمی استفاده شده است
از محتوا لذت می برید؟ اگر می خواهید از کار من حمایت کنید و ایده ها را در جریان نگه دارید ، در نظر بگیرید که یک قهوه برای من بخرید! حمایت شما به معنای جهان برای من است!