| DFU-PROGRAMMER(1) | DFU-PROGRAMMER(1) |
نام (NAME)
dfu-programmer - ارتقای سفتافزار مبتنی بر USB برای میکروکنترلرهای اتمل (Atmel)
خلاصه دستور (SYNOPSIS)
dfu-programmer target[:usb-bus,usb-addr] command [options]
[parameters]
dfu-programmer --help
dfu-programmer --targets
dfu-programmer --version
توضیحات (DESCRIPTION)
dfu-programmer یک پروگرمر خط فرمانی چندسکویی مبتنی بر ارتقای سفتافزار دستگاه (DFU) برای حافظه فلش میکروکنترلرهای اتمل سری AVR، AVR32، XMEGA و 8051 است که با یک بوتلودر USB عرضه میشوند. این ابزار از برنامهریزی درونسیستمی (ISP) برای توسعهدهندگان و بهروزرسانیهای احتمالی محصول پشتیبانی میکند. این بوتلودرها از مشخصات استاندارد کلاس USB DFU 1.0 الگوبرداری شدهاند، اما به الحاقاتی که توسط اتمل تعریف شده وابستهاند، تا جایی که درایورهای استاندارد DFU کار نخواهند کرد.
برای استفاده، ابتدا دستگاه مورد نظر را متصل کنید و مطمئن شوید در حالت DFU راهاندازی شده است. میکروکنترلرها هنگام ارسال از کارخانه اتمل در این حالت قرار دارند؛ یا ممکن است پس از یک بازنشانی سختافزاری خاص مجدداً وارد این حالت شوند. سپس این برنامه را برای صدور یک یا چند دستور DFU اجرا کنید. معمولاً باید کار را با دستور "erase" آغاز کنید؛ سیاستهای امنیتی پیشفرض مانع از استخراج سفتافزار میشوند تا از مهندسی معکوس کدهای اختصاصی جلوگیری به عمل آید.
میکروکنترلرهای پشتیبانیشده (SUPPORTED MICROCONTROLLERS)
این نامهای تراشه به عنوان پارامتر "target" در خط فرمان استفاده میشوند.
- کنترلرهای مبتنی بر 8051:
- at89c51snd1c, at89c51snd2c, at89c5130, at89c5131, at89c5132
- کنترلرهای مبتنی بر AVR:
- at90usb1287, at90usb1286, at90usb1287-4k, at90usb1286-4k, at90usb647, at90usb646, at90usb162, at90usb82, atmega32u6, atmega32u4, atmega32u2, atmega16u4, atmega16u2, atmega8u2
- کنترلرهای مبتنی بر AVR32:
- at32uc3a0128, at32uc3a1128, at32uc3a0256, at32uc3a1256, at32uc3a0512, at32uc3a1512, at32uc3a0512es, at32uc3a1512es, at32uc3a364, at32uc3a364s, at32uc3a3128, at32uc3a3128s, at32uc3a3256, at32uc3a3256s, at32uc3a4256s, at32uc3b064, at32uc3b164, at32uc3b0128, at32uc3b1128, at32uc3b0256, at32uc3b1256, at32uc3b0256es, at32uc3b1256es, at32uc3b0512, at32uc3b1512, at32uc3c064, at32uc3c0128, at32uc3c0256, at32uc3c0512, at32uc3c164, at32uc3c1128, at32uc3c1256, at32uc3c1512, at32uc3c264, at32uc3c2128, at32uc3c2256, at32uc3c2512
- کنترلرهای مبتنی بر XMEGA:
- atxmega64a1u, atxmega128a1u, atxmega64a3u, atxmega128a3u, atxmega192a3u, atxmega256a3u, atxmega16a4u, atxmega32a4u, atxmega64a4u, atxmega128a4u, atxmega256a3bu, atxmega64b1, atxmega128b1, atxmega64b3, atxmega128b3, atxmega64c3, atxmega128c3, atxmega256c3, atxmega384c3, atxmega16c4, atxmega32c4
- کنترلرهای STM32F4 (آزمایشی):
- stm32f4_B, stm32f4_C, stm32f4_E, stm32f4_G
نحوه استفاده (USAGE)
هیچ مکانیزمی برای برنامهریزی همزمان چندگانه (gang programming) وجود ندارد. بهطور پیشفرض، نخستین دستگاهی که با کدهای شناسه هدف مطابقت داشته باشد انتخاب میشود. بسیاری از اهداف کدهای شناسه یکسانی دارند. به همین دلیل، معمولاً باید از اتصال همزمان بیش از یک دستگاه از یک خانواده خاص (AVR، XMEGA، AVR32 یا 8051) خودداری کنید.
هدف را میتوان با شماره گذرگاه USB و آدرس دستگاهی که مایل به برنامهریزی آن هستید مشخص کرد. این کار برنامهریزی چندین دستگاه از یک خانواده را به صورت همزمان امکانپذیر میسازد.
تمامی این دستورات از «گزینههای عمومی» پشتیبانی میکنند. مگر اینکه آن را لغو کنید، دستوراتی که روی میکروکنترلر مینویسند یک مرحله اعتبارسنجی را اجرا خواهند کرد که دادههای نوشتهشده را دوباره خوانده، با نتیجه مورد انتظار مقایسه میکند و خطاها را گزارش میدهد.
توجه داشته باشید که بر خلاف برنامه BatchISP اتمل، dfu-programmer در هر زمان تنها یک عملیات را اجرا میکند. پاک کردن و برنامهریزی نیازمند دستورات جداگانه هستند.
configure register [--suppress-validation] data
بوتلودرهای
کنترلرهای
مبتنی بر 8051
از نوشتن
برخی
بایتهای
پیکربندی
پشتیبانی
میکنند.
dump [--force] [--bin] [(flash)|--user|--eeprom]
حافظه
برنامه را
در فلش
میخواند و
صفحات
غیرخالی را
با فرمت ihex در
stdout خروجی
میدهد. از --force
برای خروجی
گرفتن از کل
حافظه و از --bin
برای خروجی
باینری
استفاده
کنید. صفحات
کاربر (user page) و eeprom
با استفاده
از --user و --eeprom
انتخاب
میشوند.
erase [--force]
تمامی
حافظه فلش
را پاک
میکند.
برای
دستگاههای
نوع AT90 و ATmega
باید پیش از
دسترسی به
سایر
دستورات،
پاکسازی
کامل تراشه
(chip erase) انجام
شود. دستور erase
ابتدا خالی
بودن حافظه
را بررسی
میکند مگر
آنکه فلگ --force
تنظیم شده
باشد.
flash [--force] [(flash)|--user|--eeprom]
[--suppress-validation] [--suppress-bootloader-mem] [--validate-first]
[--ignore-outside] [--serial=hexbytes:offset] file or STDIN
نوشتن
حافظه فلش.
فایل ورودی
(یا stdin) باید از
قرارداد
قالب فایل
"ihex" برای
ایمیج
حافظه
استفاده
کند. گزینه
--suppress-bootloader-mem هرگونه
داده
نوشتهشده
در فضای
حافظه
بوتلودر
را هنگام
فلش کردن
دستگاه
نادیده
میگیرد.
این گزینه
به ویژه
برای
تراشههای
AVR32 مفید است.
فلگ --force به
برنامه
اعلام
میکند که
خالی بودن
یا نبودن
حافظه درون
ناحیه
برنامه را
نادیده
بگیرد. صفحه
کاربر و eeprom با
استفاده از
--user و --eeprom انتخاب
میشوند.
فلش فضای
کاربر در
تراشههای
AVR32 خارج از
محدوده
عادی
بلوکهای
فلش قرار
دارد و برای
ذخیره
پارامترهای
پیکربندی
طراحی شده
است.
پیکربندی
بوتلودر
از ۴ تا ۸
بایت
پایانی
صفحه کاربر
استفاده
میکند. اگر
این
دادهها
آسیب
ببینند،
دستگاه تا
زمان
استفاده از
دادههای
معتبر
مجدداً
وارد
بوتلودر
خواهد شد (به
doc7745 یا doc32166 اتمل
مراجعه
فرمایید).
گزینه --force
همیشه در
اینجا
الزامی
است.
گزینه --serial راهکاری را برای تزریق شماره سریال یا توالی منحصربهفرد دیگری از بایتها به ایمیج حافظه برنامهریزیشده در دستگاه ارائه میدهد. این امکان اجازه میدهد تا با یک فایل .ihex بتوان چندین دستگاه را برنامهریزی کرد و در عین حال به هر دستگاه شماره سریال اختصاصی داد. برای نمونه، --serial=ABCDEF01:0x6000 بایت موجود در 0x6000 را با مقدار هگز AB، بایت 0x6001 را با مقدار CD و به همین ترتیب برنامهریزی میکند. تعداد ارقام هگزادسیمال باید زوج باشد، اما طول توالی میتواند دلخواه باشد. فرض میشود افست دادهشده در صورتی که با پیشوند "0x" شروع شود هگز، اگر با "0" آغاز شود هشتهشتی (octal)، و در غیر این صورت دهدهی (decimal) است.
گزینه --validate-first یک مرحله اعتبارسنجی را پیش از نوشتن حافظه فلش اضافه میکند. اگر اعتبارسنجی موفقیتآمیز باشد (یعنی سفتافزار داخل تراشه با فایل ورودی یکسان باشد)، هیچ عملیات دیگری انجام نمیشود و نتیجه فلش موفق گزارش میگردد.
گزینه --ignore-outside رفتار اعتبارسنجی را به گونهای تغییر میدهد که هر خطای خارج از ناحیه برنامهریزی نادیده گرفته شود. این گزینه میتواند برای برنامهریزی بخشی از تراشه (که خطا در خارج از ناحیه مورد انتظار است) بدون نادیده گرفتن نتیجه اعتبارسنجی مفید باشد.
setsecure
بیت امنیتی
(security bit) را روی
تراشههای
AVR32 تنظیم
میکند. این
کار مانع از
خواندن
مجدد محتوا
از تراشه
میشود،
مگر در همان
نشست کاری
که در آن
برنامهریزی
شده است.
هنگامی که
فیوز
امنیتی
تنظیم شد،
تقریباً
هیچ فرمانی
بدون اجرای
ابتدایی
دستور erase کار
نخواهد کرد.
تنها راه
پاک کردن
فیوز
امنیتی پس
از تنظیم،
اجرای chip erase از
طریق JTAG است
که
بوتلودر
را نیز پاک
خواهد کرد.
get register
بایتهای
مختلف
شناسایی
محصول را
نمایش
میدهد.
launch [--no-reset]
اجرای
برنامه
کاربردی با
ریست کردن
دستگاه. فلگ
--no-reset میتواند
برای اجرای
دستگاه
بدون ریست
(پرش به آدرس
شروع
برنامه) به
کار رود.
گزینههای عمومی (Global Options)
--quiet - به حداقل رساندن خروجی
--debug level - فعالسازی خروجی با جزئیات در سطح مشخصشده
رجیسترهای پیکربندی (Configure Registers)
بوتلودر استاندارد برای تراشههای مبتنی بر 8051 از نوشتن بایتهای دادهای پشتیبانی میکند که برای تراشههای AVR مرتبط نیستند.
BSB - بایت
وضعیت بوت
SBV - بردار
نرمافزاری
بوت
SSB - بایت
امنیتی
نرمافزاری
EB - بایت اضافی
HSB - بایت
امنیتی
سختافزاری
دریافت رجیستر (Get Register)
bootloader-version - نگارش
بوتلودر
فعلی
فلششده
ID1 - شناسه اول
بوت دستگاه
ID2 - شناسه دوم
بوت دستگاه
manufacturer - کد
سازنده
سختافزار
family - کد
خانواده
محصول
product-name - نام
محصول
product-revision - بازبینی
محصول
HSB - مشابه
نسخه configure_register
BSB - مشابه
نسخه configure_register
SBV - مشابه
نسخه configure_register
SSB - مشابه
نسخه configure_register
EB - مشابه نسخه
configure_register
باگها (BUGS)
موردی شناخته نشده است.
مسائل شناختهشده (KNOWN ISSUES)
تراشههای سری at90usb هیچ فلگ حفاظت خواندن/نوشتنی ارائه نمیدهند، بنابراین ممکن است دستورهای dump یا flash با پیام خطایی نهچندان واضح شکست بخورند.
برای حذف هرگونه حفاظت نوشتن یا خواندن از هر تراشهای، پاکسازی کامل تراشه (full chip erasure) الزامی است. برای تراشههای AVR32 عملیات پاکسازی از طریق USB حفاظت را تا زمان راهاندازی مجدد دستگاه حذف میکند. برای حذف دائمیتر حفاظت، پاکسازی با JTAG نیاز است (که بوتلودر را نیز پاک خواهد کرد).
ممکن است لازم باشد عضو گروه uucp باشید تا بتوانید بدون دسترسی ریشه به دستگاه دسترسی داشته باشید.
نویسندگان (AUTHORS)
Weston Schmidt <weston_schmidt@alumni.purdue.edu>
همچنین ببینید (SEE ALSO)
dfu-programmer.sourceforge.net
USB DFU
Bootloader Datasheet (8052, AVR)
AVR32 UC3 USB
DFU Bootloader Protocol
FLIP USB DFU
Protocol
AVR32 UC3 USB DFU
Bootloader
حق نشر (COPYRIGHT)
Copyright (C) 2005-2015 Weston Schmidt
این برنامه یک نرمافزار آزاد است؛ شما میتوانید آن را تحت شرایط مجوز عمومی همگانی گنو (GNU GPL) همانگونه که توسط بنیاد نرمافزارهای آزاد منتشر شده است بازتوزیع کرده یا تغییر دهید؛ چه نگارش ۲ مجوز یا (به انتخاب خودتان) هر نگارش بالاتری.
این برنامه به این امید توزیع میشود که سودمند باشد، اما بدون هرگونه ضمانت؛ حتی بدون ضمانت ضمنی قابل فروش بودن یا تناسب برای یک هدف خاص. برای جزئیات بیشتر به مجوز عمومی همگانی گنو مراجعه فرمایید.
شما باید یک نسخه از مجوز عمومی همگانی گنو را همراه با این برنامه دریافت کرده باشید؛ در غیر این صورت، به بنیاد نرمافزارهای آزاد بنویسید: Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
| May 28, 2014 | DFU-PROGRAMMER |