KWBOOT(1) General Commands Manual KWBOOT(1)

kwboot - بوت تراشه‌های ۳۲ بیتی Marvell Kirkwood (و سایر موارد) از طریق اتصال سریال

kwboot [-b image] [-t] [-B baudrate] TTY

برنامه kwboot بردهای مبتنی بر پلتفرم‌های ۳۲ بیتی Marvell از جمله Kirkwood، Dove، Avanta، A370، AXP، A375، A38x و A39x را از طریق UART داخلی آن‌ها بوت می‌کند. فایل‌های ایمیج بوت معمولاً شامل یک بوت‌لودر مرحله دوم مانند U-Boot هستند. فایل ایمیج باید با قالب ایمیج سفت‌افزار BootROM متعلق به Marvell (kwbimage v0 یا v1) که با ابزاری مانند mkimage ساخته شده است، مطابقت داشته باشد.

پس از روشن شدن یا بازنشانی (reset) سیستم، کد BootROM سیستم برای مدت کوتاهی UART را بررسی (poll) می‌کند تا پیام دست‌تکانی (handshake) را برای شروع بارگذاری ایمیج تشخیص دهد. این برنامه پیام بوت را تا زمانی که یک تأییدیه مثبت دریافت کند ارسال می‌نماید. انتقال ایمیج با استفاده از Xmodem انجام می‌شود.

علاوه بر این، این برنامه یک حالت ترمینال کمینه را پیاده‌سازی می‌کند که می‌تواند به‌صورت مستقل استفاده شود یا بلافاصله پس از اتمام انتقال ایمیج بوت وارد آن شود. این حالت اغلب برای دریافت پیام‌های اولیه بوت یا متوقف کردن دستی روند بوت پیش‌فرض توسط لودر مرحله دوم مفید است.

-b image
دست‌تکانی؛ سپس بارگذاری فایل image از طریق TTY.

توجه داشته باشید که برای اجرای کد بوت کپسوله‌شده، image باید از نوع «UART boot» (0x69) باشد. برنامه kwboot این نوع را به‌طور خودکار تغییر می‌دهد، مگر اینکه image امضا شده باشد، که در این صورت امکان تغییر آن وجود ندارد.

این حالت وضعیت دست‌تکانی و نشانگر پیشرفت بارگذاری را در stdout می‌نویسد. ممکن است image شامل یک کد باینری اختیاری در سرآیند خود باشد که خروجی‌هایی را از طریق UART چاپ کند (برای نمونه U-Boot SPL این کار را انجام می‌دهد). در چنین حالتی، این خروجی نیز پس از ارسال سرآیند در stdout نوشته می‌شود.

تنها دست‌تکانی را روی TTY بدون بارگذاری هیچ فایلی انجام می‌دهد. بارگذاری فایل را می‌توان بعداً از طریق گزینه -D یا از طریق هر برنامه Xmodem دیگری مانند sx(1) انجام داد.
انجام دست‌تکانی ویژه روی TTY برای حالت اشکال‌زدایی کنسول.

این گزینه به BootROM دستور می‌دهد تا وارد حالت اشکال‌زدایی کنسول ساده داخلی شود. باید با گزینه -t ترکیب شود.

برای دریافت راهنمای BootROM، این دستور را تایپ کرده و کلید ENTER را فشار دهید:

?

در BootROM پردازنده Armada 38x باگی وجود دارد که باعث می‌شود در صورت وجود یک ایمیج بوت معتبر در محل منبع بوت پیش‌فرض، خروجی استاندارد BootROM روی UART خاموش شود. با این وجود، ورودی استاندارد BootROM و اکوی ترمینال آن فعال هستند و به درستی کار می‌کنند. برای دور زدن این باگ BootROM در رابطه با خروجی استاندارد، می‌توان متغیرهای ذخیره‌شده در SRAM را که BootROM برای بررسی فعال بودن یا نبودن خروجی استاندارد استفاده می‌کند، به‌طور دستی بازنویسی کرد. برای فعال کردن خروجی استاندارد BootROM روی UART، این دستور را تایپ کرده و کلید ENTER را فشار دهید:

بارگذاری فایل image از طریق TTY بدون دست‌تکانی اولیه.

این روش عمدتاً روی پلتفرم‌های Dove استفاده می‌شود؛ در این پلتفرم‌ها BootROM از دست‌تکانی اولیه برای ورود به حالت بارگذاری UART پشتیبانی نکرده و به جای آن از پین‌های strapping (مثلاً از طریق دکمه‌ها) استفاده می‌شود.

منسوخ شده است. کاری انجام نمی‌دهد.

در گذشته، هنگامی که از این گزینه استفاده می‌شد، برنامه سرآیند ایمیج را پیش از بارگذاری به نوع «UART boot» وصله می‌کرد. اکنون این کار به‌طور پیش‌فرض انجام می‌شود.

منسوخ شده است. کاری انجام نمی‌دهد.

مشخص نیست که آیا در گذشته کاری انجام می‌داده است یا خیر.

تعیین مهلت زمانی (timeout) سفارشی پاسخ هنگام انجام دست‌تکانی. مقدار پیش‌فرض ۵۰ میلی‌ثانیه است. این مهلت زمانی بین ارسال دو الگوی متوالی دست‌تکانی است، به این معنی که چه مدت باید منتظر پاسخ از BootROM ماند. فقط بر گزینه -b همراه با فایل ایمیج و گزینه -d تأثیر می‌گذارد.

گزینه -a مهلت زمانی پاسخ مناسب برای Armada XP BootROM را مشخص می‌کند که در حال حاضر ۱۰۰۰ میلی‌ثانیه است.

برخی آزمایش‌ها نشان داده است که تعیین ۲۴ میلی‌ثانیه به عنوان مهلت زمانی پاسخ، دست‌تکانی با Armada 385 BootROM را پایدارتر می‌کند.

اجرای یک برنامه ترمینال، که ورودی و خروجی استاندارد را به TTY متصل می‌کند.

اگر در ترکیب با گزینه‌های -b، -D یا -d استفاده شود، حالت ترمینال بلافاصله پس از بارگذاری موفقیت‌آمیز ایمیج یا دست‌تکانی موفقیت‌آمیز (در صورت عدم بارگذاری ایمیج) آغاز می‌شود.

اگر جریان‌های ورودی/خروجی استاندارد به یک کنسول متصل باشند، این حالت پس از دریافت ctrl-\ و به دنبال آن c از ورودی کنسول خاتمه می‌یابد.

اگر در ترکیب با -b استفاده شود، کدی را به سرآیند ایمیج تزریق می‌کند که نرخ باود را پس از بارگذاری سرآیند ایمیج به baudrate تغییر دهد، و کدی که نرخ باود را قبل از اجرای بار مفید (payload) به مقدار پیش‌فرض (115200 Bd) بازگرداند، و همچنین نرخ باود را روی TTY به‌طور متناظر تنظیم کند. این کار می‌تواند بارگذاری را به‌طور چشمگیری سریع‌تر کند.

اگر در ترکیب با -t استفاده شود، نرخ باود را پیش از شروع ترمینال روی TTY به baudrate تغییر می‌دهد.

اگر هر دو گزینه -b و -t استفاده شوند، نرخ باود پس از اتمام بارگذاری به 115200 بازگردانده می‌شود.

مقادیر آزمایش‌شده برای baudrate در Armada 38x عبارتند از: 115200، 230400، 460800، 500000، 576000، 921600، 1000000، 1152000، 1500000، 2000000، 2500000، 3125000، 4000000 و 5200000.

دستور به BootROM برای ورود به حالت بوت Xmodem، ارسال فایل kwbimage با نام u-boot-with-spl.kwb از طریق Xmodem روی /dev/ttyUSB0 با نرخ ۱۱۵۲۰۰ باود و اجرای برنامه ترمینال:

kwboot -b u-boot-with-spl.kwb -t /dev/ttyUSB0

دستور به BootROM برای ورود به حالت بوت Xmodem، ارسال سرآیند فایل kwbimage با نام u-boot-with-spl.kwb از طریق Xmodem با نرخ ۱۱۵۲۰۰ باود، سپس دستور به BootROM برای تغییر نرخ باود به ۵۲۰۰۰۰۰ باود، ارسال بخش داده‌های فایل kwbimage از طریق Xmodem با سرعت بالا، سپس بازگرداندن نرخ باود به ۱۱۵۲۰۰ باود و در نهایت اجرای برنامه ترمینال:

kwboot -b u-boot-with-spl.kwb -B 5200000 -t /dev/ttyUSB0

تنها ارسال فایل kwbimage با نام u-boot-with-spl.kwb از طریق Xmodem روی /dev/ttyUSB0 با نرخ ۱۱۵۲۰۰ باود:

kwboot -D u-boot-with-spl.kwb /dev/ttyUSB0

دستور به BootROM برای ورود به حالت اشکال‌زدایی کنسول و اجرای برنامه ترمینال روی /dev/ttyUSB0 با نرخ ۱۱۵۲۰۰ باود:

kwboot -d -t /dev/ttyUSB0

تنها اجرای برنامه ترمینال روی /dev/ttyUSB0 با نرخ ۱۱۵۲۰۰ باود:

kwboot -t /dev/ttyUSB0

mkimage(1), sx(1)

Daniel Stodden <daniel.stodden@gmail.com>
Luka Perkov <luka@openwrt.org>
David Purdy <david.c.purdy@gmail.com>
Pali Rohár <pali@kernel.org>
Marek Behún <kabel@kernel.org>

2022-03-02