.\"
.\" avrdude - A Downloader/Uploader for AVR device programmers
.\" Copyright (C) 2001, 2002, 2003, 2005 - 2023 Hans Eirik Bull,
.\" Stefan Rueger and Joerg Wunsch
.\"
.\" This program is free software; you can redistribute it and/or modify
.\" it under the terms of the GNU General Public License as published by
.\" the Free Software Foundation; either version 2 of the License, or
.\" (at your option) any later version.
.\"
.\" This program is distributed in the hope that it will be useful,
.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
.\" GNU General Public License for more details.
.\"
.\" You should have received a copy of the GNU General Public License
.\" along with this program. If not, see .
.\"
.\"
.Dd January 15, 2023
.Os
.Dt AVRDUDE 1
.Sh "نام (NAME)"
.Nm avrdude
.Nd برنامه راهانداز برای برنامهریزهای میکروکنترلر AVR
.Sh "خلاصه دستور (SYNOPSIS)"
.Nm avrdude
.Op Fl p \-part Ar part
.Op Fl b \-baud Ar baudrate
.Op Fl B \-bitclock Ar clock
.Op Fl c \-programmer Ar pgm
.Op Fl C \-config Ar file
.Op Fl C \-config Ar +file
.Op Fl N \-noconfig
.Op Fl A \-keep-trailing-0xff
.Op Fl D \-noerase
.Op Fl e \-erase
.Oo Fl E \-exitspecs Ar exitspec Ns
.Op \&, Ns Ar exitspec
.Oc
.Op Fl F \-force
.Op Fl i \-isp-clock-delay Ar delay
.Op Fl l \-logfile Ar file
.Op Fl n \-test-memory
.Op Fl O \-osccal
.Op Fl P \-port Ar port
.Op Fl r \-reconnect
.Op Fl q \-quell
.Op Fl T \-command Ar cmd
.Op Fl t \-terminal
.Op Fl U \-memory Ar mem:op:file:fmt
.Op Fl v \-verbose
.Op Fl x \-extended Ar extended_param
.Op Fl V \-noverify-memory
.Op Fl \-version
.Op Fl h \-help
.Sh "توضیحات (DESCRIPTION)"
.Nm Avrdude
برنامهای برای بارگیری و بارگذاری حافظههای درونتراشهای میکروکنترلرهای
Atmel AVR
است.
.Nm Avrdude
از برنامهریز STK500 شرکت Atmel،
دستگاههای AVRISP و AVRISP mkII شرکت Atmel،
برنامهریز STK600 شرکت Atmel،
ابزار JTAG ICE شرکت Atmel (نسخههای mkI، mkII و 3، که دو مورد آخر در حالت ISP نیز کار میکنند)،
برنامهریزهای سازگار با AppNote AVR910 و AVR109 (شامل Butterfly)
و همچنین، در سامانههای لینوکس یا BSD، از یک برنامهریز سیمکشیشده ساده
که مستقیماً به یک درگاه موازی
.Xr ppi 4
یا
.Xr parport 4
یا یک درگاه سریال استاندارد متصل شده است، پشتیبانی میکند.
در سادهترین حالت، سختافزار تنها شامل کابلی است
که خطوط سیگنال متناظر AVR را به درگاه موازی متصل میکند.
.Pp
میکروکنترلر (MCU) در
.Em "حالت برنامهریزی سریال"
برنامهریزی میشود؛ بنابراین، برای برنامهریز مبتنی بر
.Xr ppi 4 ،
سیگنالهای MCU شامل
.Ql /RESET ،
.Ql SCK ،
.Ql SDI
و
.Ql SDO
از رابط SPI میکروکنترلر AVR باید به درگاه موازی متصل شوند؛
بردهای قدیمیتر ممکن است از برچسبهای MOSI برای SDO یا MISO برای SDI استفاده کنند.
به صورت اختیاری، برخی پایههای خروجی بیاستفاده درگاه موازی میتوانند
برای تأمین تغذیه قطعه MCU به کار روند،
بنابراین ساخت یک دستگاه برنامهریزی غیرفعال (passive) و مستقل نیز ممکن است.
میتوان چند LED وضعیت برای نشان دادن وضعیت کاری فعلی برنامهریز متصل کرد،
و سیگنالی نیز برای واپایش آیسی بافر/راهانداز 74LS367 (یا 74HCT367)
در دسترس است. مورد دوم میتواند برای جداسازی درگاه موازی
از MCU هنگام استفاده از برنامهریزی درونسیستمی (in-system programming) سودمند باشد.
.Pp
شماری از آداپتورهای برنامهریزی بیتبنگ (bit-bang) به همان اندازه ساده که به
درگاه سریال متصل میشوند نیز پشتیبانی میگردند، از جمله آداپتور سریال
محبوب Ponyprog، و آداپتورهای DASA و DASA3 که در گذشته توسط
uisp(1)
پشتیبانی میشدند.
توجه داشته باشید که این آداپتورها برای اتصال به یک درگاه سریال فیزیکی طراحی شدهاند.
اتصال به یک درگاه سریال شبیهسازیشده روی USB احتمالاً اصلاً کار نخواهد کرد
یا بسیار کند خواهد بود.
.Pp
اگر سامانهای لینوکسی با دستکم ۴ پایه سختافزاری GPIO در دسترس دارید
(مانند تقریباً همه بردهای تعبیهشده لینوکس)، میتوانید بدون هیچ سختافزار اضافی کار کنید -
فقط کافی است آنها را به پایههای SDO، SDI، RESET و SCK روی AVR متصل کرده و از نوع برنامهریز
linuxgpio استفاده نمایید. این نوع با استفاده از رابط sysfs GPIO لینوکس، خطوط را
بیتبنگ میکند. البته باید به سازگاری سطح ولتاژ توجه شود. همچنین، اگرچه الزام
قطعی نیست، اکیداً توصیه میشود پایههای GPIO را به نحوی در برابر اضافهجریان
محافظت کنید. سادهترین راه قرار دادن چند مقاومت سری است، یا بهتر از آن، استفاده از یک
راهانداز بافر ۳-حالته مانند 74HC244.
.Pp
در یک توزیع لینوکس با دسترسی مستقیم به گذرگاه SPI و پایههای GPIO،
همانند آنچه در Raspberry Pi یافت میشود، نوع برنامهریز ``linuxspi'' میتواند
برای اتصال مستقیم و برنامهریزی تراشه با استفاده از رابطهای درونساخته رایانه
به کار رود. نیازمندیهای استفاده از این نوع این است که یک رابط SPI به همراه یک پایه
GPIO در دسترس باشد. پایه GPIO به عنوان خروجی ریست عمل میکند، زیرا راهاندازهای SPI
لینوکس هنگام عدم انجام انتقال داده، پایه انتخاب تراشه (chip select) را پایین نگه نمیدارند
و در نتیجه نمیتوان از آن به عنوان پایه ریست استفاده کرد. برای جلوگیری از آسیب احتمالی به
کنترلکننده SPI رایانه در صورتی که تراشه با ولتاژ ۵ ولت و SPI با ۳.۳ ولت کار میکند،
باید از یک مبدل سطح ولتاژ متداول میان گذرگاه SPI/GPIO ریست و تراشه استفاده شود.
پایه GPIO برگزیدهشده برای ریست را میتوان در پرونده پیکربندی avrdude با استفاده از مدخل
.Li reset
ذیل برنامهریز linuxspi، یا مستقیماً در مشخصات درگاه پیکربندی کرد.
باید یک مقاومت بالاکش (pull-up) خارجی میان پایه ریست AVR و Vcc متصل گردد.
اگر Vcc با ولتاژ SPI یکسان نیست، این کار باید در سمت AVR مبدل سطح ولتاژ انجام شود
تا سختافزار از آسیب محافظت گردد.
.Pp
گزینه
.Fl P Ar portname
برای این برنامهریز به طور پیشفرض
.Li /dev/spidev0.0:/dev/gpiochip0
است.
.Pp
برنامهریز STK500 شرکت Atmel نیز پشتیبانی میشود و به درگاه سریال متصل میگردد.
هر دو نسخه سفتافزار 1.x و 2.x پشتیبانی میشوند، ولی (در حال حاضر) نیازمند تعیین
نوع برنامهریز متفاوتی هستند.
با استفاده از سفتافزار نسخه ۲، برنامهریزی با ولتاژ بالا نیز پشتیبانی میشود،
هم به صورت موازی و هم سریال
(انواع برنامهریز stk500pp و stk500hvsp).
.Pp
بردهای Wiring (مانند Arduino Mega 2560 Rev3) با استفاده از پروتکل STK500 V2.x
پشتیبانی میشوند، اما از تغییر وضعیت ساده DTR/RTS برای بردن بردها به حالت
برنامهریزی استفاده میشود. نوع برنامهریز ``wiring'' است. توجه داشته باشید که گزینه
.Fl D
احتمالاً در این مورد لازم خواهد بود، زیرا بوتلودر حافظه برنامه را بازنویسی میکند،
اما هیچ پاکسازی واقعی تراشه نمیتواند انجام گیرد.
.Pp
بوتلودرهای سریالی که اسکلتی از پروتکل STK500 1.x را اجرا میکنند
از طریق نوع برنامهریز اختصاصی خود ``arduino'' پشتیبانی میشوند. این برنامهریز برای
Arduino Uno Rev3 یا هر میکروکنترلر AVR که بوتلودر Optiboot را اجرا میکند، کار میکند.
.Pp
پروتکل Urprotocol نگارشی سبکتر از پروتکل STK500 1.x است که برای سازگاری
روبهعقب با STK500 v1.x طراحی شده و اجازه میدهد بوتلودرها بسیار کوچکتر باشند،
مانند آنچه در پروژه urboot به نشانی
https://github.com/stefanrueger/urboot
پیادهسازی شده است. نوع برنامهریز ``urclock'' از این برنامهریزهای urboot پشتیبانی میکند.
به دلیل سازگاری روبهعقب، بوتلودرهایی که با برنامهریز arduino قابل سرویسدهی هستند معمولاً
میتوانند توسط برنامهریز urclock نیز پشتیبانی شوند. این امر ممکن است نیازمند مشخص کردن اندازه
بوتلودرهای ناشناخته (برای avrdude) به بایت با استفاده از گزینه
.Fl x Ar bootsize=
باشد، که برای برنامهریز urclock جهت محافظت از بوتلودر در برابر بازنویسی شدن ضروری است.
اگر یک بوتلودر ناشناخته دارای قابلیت خواندن/نوشتن EEPROM باشد، گزینه \-x eepromrw این
قابلیت را به avrdude \-c urclock اطلاع میدهد.
.Pp
ابزار BusPirate ابزاری همهکاره است که میتواند به عنوان یک برنامهریز AVR نیز به کار رود.
یک BusPirate منفرد میتواند به حداکثر ۳ میکروکنترلر مستقل AVR متصل شود. برای جزئیات به
بخش
.Em "پارامترهای گسترشیافته (extended parameters)"
در ادامه مراجعه کنید.
.Pp
برنامهریز STK600 شرکت Atmel در حالتهای برنامهریزی ISP و ولتاژ بالا پشتیبانی میشود
و از طریق USB متصل میگردد.
برای قطعات ATxmega، برنامهریز STK600 در حالت PDI پشتیبانی میشود.
برای قطعات ATtiny4/5/9/10، برنامهریزهای STK600 و AVRISP mkII در حالت TPI پشتیبانی میشوند.
.Pp
برنامهریز سریال ساده شرحدادهشده در یادداشت کاربردی AVR910 شرکت Atmel، و بوتلودر
شرحدادهشده در یادداشت کاربردی AVR109 شرکت Atmel (که همچنین در برد ارزیابی
AVR Butterfly به کار رفته است)، روی درگاه سریال پشتیبانی میشوند.
.Pp
ابزار JTAG ICE شرکت Atmel (نسخههای mkI، mkII و 3) نیز برای بارگذاری و بارگیری
نواحی حافظه قطعه هدف AVR پشتیبانی میشود (اشکالزدایی درونتراشهای پشتیبانی نمیگردد).
برای JTAG ICE mkII، حالتهای JTAG، debugWIRE و ISP پشتیبانی میشوند،
به شرطی که دارای نگارش سفتافزار دستکم 4.14 (دهدهی) باشد. JTAGICE3
نیز از تمام حالتهای JTAG، debugWIRE و ISP پشتیبانی میکند. برای محدودیتهای debugWIRE
به ادامه متن مراجعه کنید. برای قطعات ATxmega، ابزار JTAG ICE mkII در حالت PDI پشتیبانی میشود،
به شرطی که سختافزار ویرایش ۱ و نسخه سفتافزار دستکم 5.37 (دهدهی) داشته باشد.
برای قطعات ATxmega، ابزار JTAGICE3 در حالت PDI پشتیبانی میشود.
.Pp
ابزار Atmel-ICE (ARM/AVR) در تمام حالتها (JTAG، PDI برای Xmega، debugWIRE، ISP و UPDI)
پشتیبانی میشود.
.Pp
بردهای XplainedPro شرکت Atmel با استفاده از پروتکل EDBG (سازگار با CMSIS-DAP)،
با استفاده از نوع برنامهریز "jtag3" پشتیبانی میشوند.
.Pp
بردهای XplainedMini شرکت Atmel با استفاده از پروتکل mEDBG،
نیز با استفاده از نوع برنامهریز "jtag3" پشتیبانی میشوند.
.Pp
دستگاه AVR Dragon در تمامی حالتها (ISP، JTAG، HVSP، PP و debugWIRE) پشتیبانی میشود.
هنگام استفاده در حالت JTAG و debugWIRE، عملکرد AVR Dragon مشابه JTAG ICE mkII است،
بنابراین تمام نکات ویژه آن دستگاه در اینجا نیز صدق میکند.
هنگام استفاده در حالت ISP، رفتار AVR Dragon مشابه AVRISP mkII (یا JTAG ICE mkII در حالت ISP)
است، بنابراین تمام نکات ویژه آن دستگاه در آنجا نیز اعمال میشود.
بهویژه، Dragon کار خود را با بسامد ساعت ISP نسبتاً سریعی آغاز میکند، بنابراین ممکن است گزینه
.Fl B Ar bitclock
برای دستیابی به ارتباط پایدار ISP لازم باشد.
برای قطعات ATxmega، دستگاه AVR Dragon در حالت PDI پشتیبانی میشود، به شرط آنکه
نسخه سفتافزار آن دستکم 6.11 (دهدهی) باشد.
.Pp
آداپتورهای USBasp ISP، USBtinyISP، avrftdi و CH341A نیز پشتیبانی میشوند،
به شرطی که
.Nm avrdude
با پشتیبانی از libusb همگردانی شده باشد. هر دو آداپتور USBasp ISP و USBtinyISP
دارای پیادهسازیهای ساده USB صرفاً سفتافزاری هستند که به ترتیب بر روی یک ATmega8
(یا ATmega88) یا ATtiny2313 اجرا میشوند. برنامهریزهای CH341A مستقیماً به
هدف AVR متصل میگردند. ساعت بیت SPI آنها تقریباً ۱.۷ مگاهرتز است و
نمیتواند تغییر داده شود. در نتیجه، هدف AVR باید دارای بسامد پردازنده
۶.۸ مگاهرتز یا بیشتر باشد: قطعات AVR با تنظیمات کارخانه، که معمولاً با یک نوسانساز
داخلی میان ۱ مگاهرتز و ۱.۶ مگاهرتز کار میکنند، نمیتوانند با استفاده از \-c ch341a برنامهریزی شوند.
اگر libftdi در
.Nm avrdude
همگردانی شده باشد، دستگاه avrftdi پشتیبانی از بسیاری از برنامهریزهای مبتنی بر تراشههای
2232C/D/H و 4232H شرکت FTDI را در حالت MPSSE اضافه میکند، که در آن (درون تراشه)
SCK به بیت ۱، SDO به بیت ۲ و SDI به بیت ۳ اختصاص یافته است. ریست معمولاً بیت ۴ است.
.Pp
بوتلودر Atmel DFU هم در نسخه ۱ پروتکل FLIP (دستگاههای *AT90USB و *ATmega*U) و
هم در نسخه ۲ (دستگاههای Xmega) پشتیبانی میشود.
برای برخی نکات درباره رفتار پروتکل نسخه ۱ FLIP به ادامه متن مراجعه کنید.
.Pp
پروگرمرهای MPLAB(R) PICkit 4/5 و MPLAB(R) SNAP در حالتهای JTAG، TPI، ISP، PDI
و UPDI پشتیبانی میشوند.
برد Curiosity Nano در حالت UPDI پشتیبانی میشود. این برد
.Dq PICkit on Board
لقب گرفته است، از این رو نام آن
.Pa pkobn_updi
است.
.Pp
پیادهسازی برنامهریز SerialUPDI بر پایه ابزار
.Em pymcuprog Li https://github.com/microchip-pic-avr-tools/pymcuprog
شرکت Microchip بنا شده است، اما همچنین شامل برخی بهبودهای کارایی است که در هسته آردوینو
.Em DxCore
اثر Spence Konde در
.Li https://github.com/SpenceKonde/DxCore
گنجانده شده است.
به طور خلاصه، این برنامهریز از یک مبدل ساده USB->UART، یک دیود
و دو مقاومت تشکیل شده است. این ابزار از یک اتصال سریال برای فراهمسازی رابط UPDI بهره میبرد.
برای جزئیات بیشتر و مشکلات شناختهشده به مستندات texinfo مراجعه کنید.
.Pp
برنامهریز jtag2updi پشتیبانی میشود و میتواند میکروکنترلرهای AVR دارای رابط UPDI
را برنامهریزی کند. jtag2updi تنها سفتافزاری است که میتواند روی یک AVR بارگذاری شود،
و آن را قادر میسازد با استفاده از پروتکل jtagice mkii از طریق پیوند سریال با avrdude
ارتباط برقرار نماید.
.Li https://github.com/ElTangas/jtag2updi
.Pp
بوتلودر Micronucleus برای هر دو نسخه پروتکل V1 و V2 پشتیبانی میشود.
از آنجا که این بوتلودر از خواندن از حافظه فلش پشتیبانی نمیکند،
از گزینه
.Fl V
استفاده کنید تا از راستیآزمایی حافظه فلش توسط AVRDUDE جلوگیری شود.
برای گزینههای ویژه Micronucleus به بخش
.Em "پارامترهای گسترشیافته (extended parameters)"
مراجعه کنید.
.Pp
بوتلودر Teensy برای تمامی بردهای AVR پشتیبانی میشود.
از آنجا که این بوتلودر از خواندن از حافظه فلش پشتیبانی نمیکند،
از گزینه
.Fl V
استفاده کنید تا از راستیآزمایی حافظه فلش توسط AVRDUDE جلوگیری شود.
برای گزینههای ویژه Teensy به بخش
.Em "پارامترهای گسترشیافته (extended parameters)"
مراجعه کنید.
.Pp
پروندههای ورودی را میتوان در قالبهای پروندهای متفاوتی فراهم ساخت، و
پروندههای خروجی را میتوان در آنها نوشت؛ مانند پروندههای دودویی خام
حاوی دادهها برای نوشتن روی تراشه، قالب Intel Hex، یا قالب
Motorola S-Record. ابزارهای متعددی برای تولید این پروندهها در دسترس است،
مانند
.Xr asl 1
به عنوان یک اسمبلر مستقل، یا
.Xr avr-objcopy 1
برای مرحله پایانی زنجیرهابزار GNU برای میکروکنترلر AVR.
.Pp
به شرطی که هنگام همگردانی
.Nm avrdude
کتابخانه
.Xr libelf 3
حاضر بوده باشد، پرونده ورودی همچنین میتواند پرونده نهایی ELF تولیدشده توسط پیونددهنده باشد.
بخش(های) مناسب ELF بر اساس ناحیه حافظهای که قرار است در آن نوشته شود، بررسی خواهند شد.
.Pp
.Nm Avrdude
میتواند سلولهای حافظه EEPROM و حافظه فلش ROM قطعات AVR پشتیبانیشده را برنامهریزی کند.
در جاهایی که توسط مجموعه دستورالعملهای سریال پشتیبانی شود، بیتهای فیوز و
بیتهای قفل نیز میتوانند برنامهریزی شوند. این موارد درون
.Nm avrdude
به عنوان انواع حافظه جداگانه پیادهسازی شدهاند و میتوان آنها را با استفاده از دادههای
یک پرونده (به گزینه
.Fl U
مراجعه کنید) یا از حالت پایانه (به دستورهای
.Ar dump
و
.Ar write
مراجعه کنید) برنامهریزی کرد. همچنین خواندن تراشه (البته به شرطی که قبلاً حفاظت کد
روی آن فعال نشده باشد) و ذخیره دادهها در یک پرونده ممکن است. در پایان، یک حالت «پایانه» (terminal)
در دسترس است که امکان برقراری ارتباط تعاملی با MCU و نمایش یا برنامهریزی تکتک
سلولهای حافظه را فراهم میآورد.
در برخی برنامهریزها، برخی تنظیمات خودِ برنامهریز را نیز میتوان از داخل حالت پایانه بررسی کرد
و تغییر داد؛ به بخش
.Em "حالت پایانه (Terminal mode)"
مراجعه کنید.
.Ss "گزینهها (Options)"
به منظور کنترل تمامی حالتهای عملکردی گوناگون، تعدادی گزینه
باید برای
.Nm avrdude .
مشخص شوند.
.Bl -tag -offset indent -width indent
.It Fl p \-part Ar partname
این گزینه، میکروکنترلر (MCU) متصل به برنامهریز را مشخص میکند. شرح
میکروکنترلرها از پرونده پیکربندی خوانده میشود. برای دیدن فهرستی از
میکروکنترلرهای پشتیبانیشده فعلی، از ? به عنوان partname استفاده کنید که
شناسههای قطعه و نامهای رسمی قطعات را چاپ میکند. بسته به پوسته مورد استفاده،
ممکن است نیاز باشد ? به صورت "?" یا \\? نقلقول شود. در همراهی با -v،
این گزینه همچنین فهرستی از نامهای گوناگون قطعه را به همراه یک دونقطه اختیاری،
کد بستهبندی و برخی از بیشینههای مطلق مقادیر چاپ میکند. شناسه قطعه، نام رسمی
آن، هر یک از نامهای کامل گونه قطعه یا بخش آغازین آنها تا یک خط تیره میتواند
برای مشخص کردن یک قطعه با گزینه -p به کار رود. اگر -p ? همراه با یک برنامهریز
مشخص تعیین شود (به -c در زیر مراجعه کنید)، آنگاه تنها قطعاتی خروجی داده میشوند
که انتظار میرود برنامهریز بتواند آنها را مدیریت کند، به همراه رابط(های) برنامهریزی
که میتوان در آن ترکیب استفاده کرد. در واقعیت ممکن است انحرافاتی از این فهرست
وجود داشته باشد، به ویژه اگر برنامهریزی مستقیماً از طریق بوتلودر انجام پذیرد.
.Pp
قطعات زیر نیازمند توجه ویژهاند:
.Bl -tag -width "ATmega1234"
.It "AT90S1200"
پروتکل برنامهریزی ISP برای AT90S1200 تفاوتهای ظریفی با دیگر AVRها دارد.
از این رو، همه برنامهریزها از این دستگاه پشتیبانی نمیکنند. موارد شناختهشدهای
که کار میکنند، تمامی برنامهریزهای مستقیم بیتبنگ (bitbang) و همه برنامهریزهایی
هستند که از پروتکل STK500v2 استفاده میکنند.
.It "AT90S2343"
میکروکنترلرهای AT90S2323 و ATtiny22 از همان الگوریتم استفاده میکنند.
.It "ATmega2560, ATmega2561"
آدرسدهی حافظه فلش فراتر از ۱۲۸ کیلوبایت ممکن است توسط تمام سختافزارهای
برنامهریزی پشتیبانی نشود.
.It "ATtiny11"
میکروکنترلر ATtiny11 تنها در حالت سریال با ولتاژ بالا (high-voltage serial)
میتواند برنامهریزی شود.
.El
.It Fl p \-part Ar wildcard/flags
اجرای گزینههای توسعهدهنده برای میکروکنترلرهایی که با نویسه عام (wildcard) مطابقت دارند. با اینکه
کاربرد اصلی آنها برای توسعهدهندگان است، برخی پرچمها میتوانند برای کاربران نیز سودمند باشند؛ برای نمونه:
avrdude -p m328p/S برداشت AVRDUDE را از ویژگیهای MCU مدل ATmega328P در خروجی نمایش میدهد؛
برای اطلاعات بیشتر دستور avrdude -p x/h را اجرا کنید.
.It Fl b \-baud Ar baudrate
بازنویسی (override) نرخ بود (baud rate) اتصال RS-232 که در مدخل مربوط به
برنامهریز در پرونده پیکربندی مشخص شده یا توسط مدخل default_baudrate
در پرونده پیکربندی کاربری شما در
.Pa ${HOME}/.config/avrdude/avrdude.rc
یا
.Pa ${HOME}/.avrduderc
تعریف شده است، در صورتی که هیچ نرخ بودی برای این برنامهریز تعریف نشده باشد.
.It Fl r \-reconnect
درگاه سریال را با نرخ ۱۲۰۰ بود باز کرده و بیدرنگ میبندد، به ازای هر -r در
خط فرمان ۴۰۰ میلیثانیه درنگ میکند و سپس ارتباط با برنامهریز را برقرار میسازد.
این رفتار عموماً به عنوان یک "1200bps touch" شناخته میشود و برای راهاندازی
حالت برنامهریزی در بردهای خاصی مانند Arduino Leonardo، Arduino Micro/Pro Micro
و Arduino Nano Every به کار میرود. زمانهای انتظار طولانیتر و در نتیجه
چندین گزینه -r گاهی برای رایانههای میزبان کندتر و کمتوانتر مورد نیاز است.
.It Fl B \-bitclock Ar bitclock
مشخص کردن دوره تناوب کلاک بیت (bit clock period) برای رابطهای JTAG، PDI، TPI، UPDI یا ISP.
مقدار یک عدد ممیز شناور بر حسب میکروثانیه است. به عنوان روش جایگزین، مقدار میتواند
با "Hz"، "kHz" یا "MHz" پسوندگذاری شود تا به جای دوره تناوب، فرکانس کلاک بیت را مشخص کند.
برخی برنامهریزها مقدار کلاک بیت خود را به طور پیشفرض روی دوره ۱ میکروثانیه قرار میدهند
که برای میکروکنترلرهای هدف با کلاک ۴ مگاهرتز و بالاتر مناسب است. میکروکنترلرهای کندتر
متناسب با آن به دوره تناوب کلاک بیت بالاتری نیاز دارند. برخی برنامهریزها هنگام پایان کار
نرمافزار برنامهریزی، مقدار کلاک بیت خود را به مقدار پیشفرض بازنشانی میکنند، در حالی که
برخی دیگر آخرین مقدار کلاک بیت استفادهشده را ذخیره میکنند. اگر سرعت خواندن/نوشتن
اهمیت دارد، توصیه میشود همواره کلاک بیت مشخص شود.
میتوانید از کلیدواژه 'default_bitclock' در پرونده
.Pa ${HOME}/.config/avrdude/avrdude.rc
یا
.Pa ${HOME}/.avrduderc
خود استفاده کنید تا مقدار پیشفرضی تعیین شده و از نیاز به مشخص کردن این گزینه در هر بار اجرا جلوگیری شود.
.Pp
توجه داشته باشید که برخی از برنامهریزهای رسمی Microchip تنظیم bitclock را ذخیره کرده و
تا زمانی که مقدار متفاوتی ارائه نشود به استفاده از آن ادامه خواهند داد. این امر برای برنامهریزهای
«نسل دوم» (AVRISPmkII، AVR Dragon، JTAG ICE mkII، STK600) و برنامهریزهای
«نسل سوم» (JTAGICE3، Atmel ICE، Power Debugger) صدق میکند. برنامهریزهای «نسل چهارم»
(PICkit 4، MPLAB SNAP) آخرین bitclock مشخصشده توسط کاربر را تا زمانی که برنامهریز از
رایانه جدا شود، ذخیره میکنند.
.It Fl c \-programmer Ar programmer-id
استفاده از برنامهریز مشخصشده توسط آرگومان. برنامهریزها و پیکربندی پایههای آنها
از پرونده پیکربندی خوانده میشوند (گزینه
.Fl C
را ببینید). پیکربندیهای جدید پایه را میتوان با استفاده از یک پرونده پیکربندی به آسانی افزود
یا ویرایش کرد تا
.Nm avrdude
تا زمانی که برنامهریز از روش برنامهریزی سریال Atmel AVR پشتیبانی میکند، با برنامهریزهای گوناگون کار کند.
میتوانید از کلیدواژه 'default_programmer' در پرونده
.Pa ${HOME}/.config/avrdude/avrdude.rc
یا
.Pa ${HOME}/.avrduderc
خود استفاده کنید تا یک برنامهریز پیشفرض تعیین شود و از مشخص کردن این گزینه در هر بار اجرا بینیاز شوید.
فهرست کاملی از تمام برنامهریزهای پشتیبانیشده با استفاده از ? به عنوان programmer-id در پایانه خروجی داده میشود.
بسته به پوسته مورد استفاده، ممکن است نیاز باشد ? به صورت "?" یا \\? نقلقول شود. اگر -c ? با یک قطعه خاص
مشخص شود (به -p در بالا مراجعه کنید)، تنها برنامهریزهایی نمایش داده میشوند که انتظار میرود بتوانند
این قطعه را مدیریت کنند، همراه با رابط(های) برنامهریزی که میتوان در آن ترکیب به کار برد.
در واقعیت ممکن است انحرافاتی از این فهرست وجود داشته باشد، به ویژه اگر برنامهریزی مستقیماً از طریق بوتلودر انجام گیرد.
.It Fl c \-programmer Ar wildcard/flags
اجرای گزینههای توسعهدهنده برای برنامهریزهایی که با نویسه عام (wildcard) مطابقت دارند. با اینکه
کاربرد اصلی آنها برای توسعهدهندگان است، برخی پرچمها میتوانند برای کاربران سودمند باشند؛ برای نمونه:
avrdude -c usbtiny/S درک AVRDUDE را از ویژگیهای usbtiny نشان میدهد؛
برای اطلاعات بیشتر دستور avrdude -c x/h را اجرا کنید.
.It Fl C \-config Ar file
استفاده از پرونده پیکربندی مشخصشده برای بارگذاری دادههای پیکربندی. این پرونده شامل تمامی تعاریف
برنامهریز و قطعه است که
.Nm avrdude
از آنها آگاهی دارد.
پرونده پیکربندی را ببینید که در
.Pa ${PREFIX}/etc/avrdude.conf ,
واقع شده و حاوی شرحی از قالب آن است.
.Pp
اگر
.Ar file
به صورت
.Pa +file
نوشته شود، این پرونده پس از پروندههای پیکربندی سراسری سیستم و کاربری خوانده میشود.
این میتواند برای افزودن مدخلها به پیکربندی بدون وصلهکردن پرونده پیکربندی سراسری سیستم استفاده شود.
این گزینه را میتوان چندین بار به کار برد؛ پروندهها به همان ترتیبی که در خط فرمان داده شدهاند خوانده میشوند.
.It Fl N \-noconfig
بارگذاری نکردن پرونده پیکربندی شخصی که معمولاً در
~/.config/avrdude/avrdude.rc، ~/.avrduderc یا در همان دایرکتوری پرونده اجرایی avrdude قرار دارد.
.It Fl A \-keep-trailing-0xff
غیرفعال کردن حذف خودکار توالیهای 0xFF انتهایی در ورودی پروندهای که قرار است روی فلش
برنامهریزی شود و در خواندنهای AVR از حافظه فلش. به طور معمول، 0xFFهای انتهایی میتوانند
نادیده گرفته شوند، زیرا برنامهریزی فلش نیازمند آن است که حافظه پیشاپیش به 0xFF پاکسازی شده باشد.
گزینه
.Fl A
زمانی باید به کار رود که سختافزار برنامهریز، یا نرمافزار بوتلودر، پاکسازی تراشه را انجام نمیدهد
و به جای آن پاکسازی حافظه را در سطح صفحه مدیریت میکند. بوتلودرهای متداول آردوینو چنین رفتاری
نشان میدهند؛ به همین دلیل، هنگام تعیین
.Fl c
arduino، گزینه
.Fl A
به طور پیشفرض فعال است.
.It Fl D \-noerase
غیرفعال کردن پاکسازی خودکار برای فلش. هنگامی که گزینه
.Fl U \-memory
برای نوشتن روی هر حافظه فلشی مشخص شود،
.Nm
پیش از آغاز هر یک از عملیاتهای برنامهریزی، یک پاکسازی تراشه (chip erase) انجام خواهد داد، زیرا
به طور کلی برنامهریزی فلش بدون اجرای یک پاکسازی اولیه اشتباه است. این گزینه آن را غیرفعال میکند.
پاکسازی خودکار نه برای قطعات ATxmega و نه برای قطعات UPDI (خانواده AVR8X) استفاده نمیشود، زیرا
این قطعات میتوانند پیش از نوشتن هر صفحه از پاکسازی صفحه استفاده کنند و از این رو به پاکسازی صریح تراشه
نیازی نیست. با این حال توجه داشته باشید که هر صفحه فلش که تحت تأثیر عملیات فعلی نباشد، محتوای پیشین
خود را حفظ خواهد کرد. تنظیم
.Fl D
به معنای اعمال
.Fl A.
خواهد بود.
.It Fl e \-erase
موجب اجرای یک پاکسازی تراشه (chip erase) میشود. این کار محتویات ROM فلش و EEPROM را به مقدار
.Ql 0xff ,
بازنشانی کرده و تمامی بیتهای قفل (lock bits) را پاک میسازد.
به جز دستگاههای ATxmega و UPDI (خانواده AVR8X) که همگی میتوانند از پاکسازی صفحه استفاده کنند،
این دستور اساساً یک دستور پیشنیاز پیش از امکان برنامهریزی مجدد ROM فلش است. تنها استثنا زمانی خواهد بود
که محتویات جدید منحصراً موجب برنامهریزی بیتها از مقدار
.Ql 1
به
.Ql 0 .
شود. این گزینه پاکسازی تراشه را در آغاز، پیش از پردازش هر یک از گزینههای
.Fl U,
.Fl T
یا
.Fl t
به انجام میرساند. اگر یک پاکسازی تراشه در موقعیت مشخصی درون توالی گزینههای
.Fl U,
.Fl T
یا
.Fl t
مورد نیاز باشد، توصیه میشود به جای آن از -T erase استفاده شود که به همان ترتیب دادهشده در خط فرمان پردازش میشود.
.Pp
در نبود یک گزینه صریح
.Fl e
یا
.Fl D
،
.Nm
تلاش میکند از روی خط فرمان پیشبینی کند که آیا تراشه در ابتدا باید پاکسازی خودکار شود یا خیر. اگر
.Nm
دستور
.Fl U
را که در فلش مینویسد تشخیص دهد، آنگاه پاکسازی خودکار پیش از هر برنامهریزی دیگری اجرا خواهد شد،
مگر اینکه یک دستور -T erase پیشاپیش شناسایی شده باشد و مگر اینکه فلش پیش از نوشتن در آن خوانده شود.
به منظور این بررسی، هر دستور پایانه به عنوان دستوری در نظر گرفته میشود که احتمالاً فلش را میخواند.
.Pp
توجه داشته باشید که برای برنامهریزی مجدد سلولهای EEPROM، هیچ پاکسازی صریح قبلی تراشه
مورد نیاز نیست، زیرا میکروکنترلر در آن حالت پیش از برنامهریزی سلول، یک چرخه پاکسازی خودکار فراهم میکند.
.It Xo Fl E \-exitspecs Ar exitspec Ns
.Op \&, Ns Ar exitspec
.Xc
مقدار
.Ar exitspec
را به برنامهریز برگزیده ارسال میکند. تفسیر پارامتر exitspec به خود برنامهریز وابسته است. برای دیدن فهرست برنامهریزهایی که گزینههای پارامتر exitspec را میپذیرند به زیر بنگرید، یا فرمان
.Nm
-E help ... را برای مشاهدهی گزینههای برنامهریز برگزیده اجرا کنید.
.It Fl F \-force
بهطور معمول،
.Nm
پیش از ادامه تلاش میکند معقول بودن امضای قطعه (device signature) خواندهشده از تراشه را اعتبارسنجی کند. از آنجا که گاهی پیش میآید که یک قطعه امضای آسیبدیده (پاکشده یا رونویسیشده) داشته باشد اما در سایر موارد بهدرستی کار کند، این گزینه برای نادیدهگرفتن این بررسی ارائه شده است.
همچنین، برای برنامهریزهایی مانند Atmel STK500 و STK600 که میتوانند پارامترهای محلی ابزار برنامهریزی را (مستقل از اتصال واقعی به کنترلکنندهی مقصد) تنظیم کنند، میتوان از این گزینه همراه با
.Fl t
برای ادامهی کار در حالت پایانه (terminal mode) استفاده کرد.
افزون بر این، این گزینه اجازهی ادامه را با وجود شکست در مقداردهی اولیهی اتصال میان برنامهریز و مقصد میدهد.
.It Fl i \-isp-clock-delay Ar delay
برای برنامهریزهای نوع بیتبنگ (bitbang)، به مدت تقریباً
.Ar delay
میکروثانیه میان هر تغییر وضعیت بیت درنگ میکند.
اگر سیستم میزبان بسیار سریع باشد، یا مقصد با کلاک کند کار کند (مانند کریستال ۳۲ کیلوهرتز یا نوسانساز RC داخلی ۱۲۸ کیلوهرتز)، این امر میتواند برای برآورده کردن این شرط که بسامد کلاک ISP نباید از ۱/۴ بسامد کلاک CPU بیشتر باشد، ضروری شود.
این ویژگی بهصورت تأخیر حلقهی انتظار چرخشی (spin-loop delay) پیادهسازی شده تا حتی درنگهای بسیار کوتاه را ممکن سازد.
در سیستمعاملهای شبه یونیکس، حلقهی انتظار در آغاز بر پایهی یک زمانسنج سیستم تنظیم (کالیبره) میشود، بنابراین با فرض بار ثابت سیستم هنگام اجرای
.Nm
، تعداد میکروثانیهها نسبتاً واقعگرایانه خواهد بود.
در سیستمعاملهای Win32، تعداد چرخههای از پیش تعیینشده به ازای هر میکروثانیه فرض میشود که ممکن است برای دستگاههای بسیار سریع یا بسیار کند کمی خطا داشته باشد.
.It Fl l \-logfile Ar file
از
.Ar file
به جای
.Va stderr
برای خروجی عیبیابی استفاده میکند.
توجه داشته باشید که پیامهای عیبیابی اولیه (هنگام تجزیهی گزینهها) در هر صورت همچنان در
.Va stderr
نوشته میشوند.
.It Fl n \-test-memory
عدم نوشتن: نوشتن داده روی میکروکنترلر (MCU) را هنگام پردازش -U غیرفعال میکند (برای اشکالزدایی
.Nm avrdude
مفید است). حالت پایانه همچنان به نوشتن روی قطعه ادامه میدهد.
.It Fl O \-osccal
کالیبراسیون زمان اجرای نوسانساز RC را بر پایهی یادداشت کاربردی Atmel AVR053 انجام میدهد.
این ویژگی تنها روی سختافزارهای STK500v2، AVRISP mkII و JTAG ICE mkII پشتیبانی میشود.
توجه داشته باشید که نتیجه در خانهی EEPROM در نشانی ۰ ذخیره خواهد شد.
.It Fl P \-port Ar port
از
.Ar port
برای شناسایی اتصالی که برنامهریز از طریق آن متصل شده استفاده میکند. این اتصال میتواند یک اتصال سریالی، spi، linuxgpio یا در سیستمهای لینوکس یا BSD، یک اتصال موازی باشد.
برنامهریز معمولاً نوع اتصال را مشخص میکند؛ در نبود -P، مقادیر پیشفرض وابسته به سیستم
.Pa default_serial ,
.Pa default_spi ,
.Pa default_linuxgpio
یا
.Pa default_parallel
از پروندهی پیکربندی استفاده میشوند. اگر نیاز به استفاده از درگاه دیگری دارید، از این گزینه برای تعیین نام درگاه جایگزین استفاده کنید.
.Pp
برنامهریزهای منحصراً USB معمولاً نیازی به تعیین گزینهی درگاه ندارند، چرا که از طریق شناسههای سازنده و محصول خود از avrdude.conf یا .avrduderc بهطور خودکار شناسایی میشوند. تنها زمانی که چندین برنامهریز از یک نوع به رایانهی میزبان متصل باشند، گزینهی -P مورد نیاز است؛ به زیر بنگرید. برخی برنامهریزهای -c مانند pickit2 گزینهی -P را بهطور کامل نادیده میگیرند؛ این برنامهریزها قادر به تفکیک چندین برنامهریز متصلشده نیستند.
.Pp
با این حال، بیشتر برنامهریزهای USB از نحو خط فرمان -P usb[::][:] پشتیبانی میکنند که به کاربر امکان میدهد شناسههای سازنده و محصول را با اعداد شانزدهشانزدهی (هگزادسیمال) و بازنویسی کند و/یا تطبیق شماره سریال قطعهی مورد نظر را با درخواست نماید. این تطبیق پس از حذف هرگونه دونقطه (:) موجود از شماره سریال ارائهشده در خط فرمان و از راست به چپ انجام میشود، بنابراین تنها کمارزشترین بایتهای شماره سریال باید داده شوند. برنامهریزهای JTAG ICE mkII، JTAGICE3، SNAP، PICKit5، CH341A، teensy و avrftdi نمونههایی برای این نحو درگاه -P هستند. برخی از این موارد به نوبهی خود، مثلاً CH341A و teensy، قادر به تطبیق شماره سریال نیستند.
.Pp
اگر
.Nm
با پشتیبانی از libserialport پیکربندی شده باشد، میتوان با استفاده از نوع تطبیقدهندهی سریال از پیش تعریفشده در avrdude.conf یا .avrduderc یک درگاه سریال را مشخص کرد؛ مانند
.Ar ch340
یا
.Ar ft232r .
اگر بیش از یک تطبیقدهندهی سریال از یک نوع متصل باشد، میتوان آنها را با افزودن یک شماره سریال تفکیک کرد؛ مانند
.Ar ft232r:12345678 .
برای کارکرد این سازوکار، تراشهی مبدل USB به سریال باید دارای شماره سریال باشد. توجه داشته باشید که تطبیق شماره سریال برای تطبیقدهندههای سریال (برخلاف تطبیق برای برنامهریزهای USB در بالا) از چپ به راست است. برای تطبیق از راست به چپ، تطبیقدهندههای سریال میتوانند از بیضیها/سهنقطه (...) استفاده کنند. در مثال بالا،
.Ar ft232r:1234
نیز منجر به تطبیق میشود، و همچنین
.Ar ft232r:...5678 .
اگر تراشهی مبدل USB به سریال برای
.Nm
شناختهشده نباشد، میتوان آن را با شناسه سازندهی هگزادسیمال USB، شناسه محصول هگزادسیمال و یک شماره سریال اختیاری، بر پایهی قواعد تطبیق شماره سریال که در بالا شرح داده شد، تعیین کرد؛ مانند
.Ar usb:0x2341:0x0043
یا
.Ar usb:2341:0043:12345678 .
برای مشاهدهی فهرستی از درگاههای سریال متصلشدهی فعلی از -P ?s استفاده کنید. به منظور مشاهدهی فهرستی از تمام تطبیقدهندههای سریال شناختهشده برای
.Nm
از -P ?sa استفاده کنید. بسته به پوستهی مورد استفاده، ممکن است نیاز باشد علامت ? نقلقول شود؛ مانند "?" یا \\?.
.Pp
در سیستمعاملهای Win32، درگاههای موازی به ترتیب به صورت lpt1 تا lpt3 نامگذاری میشوند که به نشانیهای 0x378، 0x278 و 0x3BC اشاره دارند. اگر درگاه موازی از طریق نشانی دیگری قابل دسترسی باشد، این نشانی میتواند مستقیماً با استفاده از نمادگذاری متداول زبان C مشخص شود (یعنی مقادیر شانزدهشانزدهی با پیشوند
.Ql 0x
میآیند).
.Pp
برای JTAG ICE mkII و JTAGICE3، اگر
.Nm
با پشتیبانی libusb پیکربندی شده باشد،
.Ar port
میتواند متناوباً بهصورت
.Pa usb Ns Op \&: Ns Ar serialno .
مشخص شود. این باعث میشود
.Nm
برنامهریز را روی USB جستجو کند.
اگر
.Ar serialno
نیز مشخص شود، با شماره سریال خواندهشده از هر JTAG ICE mkII یافتهشده روی USB تطبیق داده میشود.
تطبیق پس از حذف هرگونه دونقطه (:) موجود از شماره سریال ارائهشده و از راست به چپ انجام میگیرد، بنابراین تنها کمارزشترین بایتهای شماره سریال باید ارائه شوند.
.Pp
avrdude -v -P usb:xyz -c jtag2 -p ... 2>&1 | grep ^Found
.Pp
تمام JTAG ICEهای متصل به USB را فهرست میکند؛ بخش
.Em مثالهای فراخوانی خط فرمان (Example Command Line Invocations)
را در مستندات تفصیلی pdf ببینید.
.Pp
از آنجا که ارتباط با قطعهی AVRISP mkII تنها از طریق USB امکانپذیر است، دقیقاً همان روش تعیین درگاه در آنجا نیز لازم است.
.Pp
برای برنامهریز USB به نام AVR-Doper که در حالت HID کار میکند، درگاه باید بهصورت
.Ar avrdoper.
مشخص شود. پشتیبانی از libhidapi در یونیکس و Mac OS لازم است اما در ویندوز نیاز نیست. برای اطلاعات بیشتر دربارهی AVR-Doper به https://www.obdev.at/products/vusb/avrdoper.html بنگرید.
.Pp
برای USBtinyISP، که قطعهای ساده است و شماره سریال پیادهسازی نمیکند، چندین دستگاه را میتوان با موقعیت مکانی آنها در سلسلهمراتب USB با استفاده از -P usb:: تفکیک کرد.
.Pp
برای USBasp، چندین دستگاه را نیز میتوان با استفاده از -P usb:: یا با استفاده از شماره سریال -P usb: تفکیک کرد.
برای مشاهدهی نمونهها، مدخل مربوطه در
.Em عیبیابی (Troubleshooting)
را در مستندات تفصیلی pdf ببینید.
.Pp
برای برنامهریز XBee، میکروکنترلر مقصد قرار است بهصورت بیسیم روی یک شبکهی مش ZigBee با استفاده از بوتلودر XBeeBoot برنامهریزی شود. نشانی ۶۴ بیتی ZigBee برای دستگاه XBee خود میکروکنترلر مقصد باید بهعنوان یک مقدار ۱۶ نویسهای هگزادسیمال به عنوان پیشوند
.Ar port
ارائه شود، به دنبال آن نویسهی
.Ql @
و سپس دستگاه سریال برای اتصال به دستگاه XBee دومی که مستقیماً قابل تماس و وابسته به همان شبکهی مش است (با نرخ باود پیشفرض ۹۶۰۰).
این مقدار ممکن است شبیه به این باشد:
.Pa 0013a20000000001@/dev/tty.serial .
.Pp
برای اهداف عیبیابی، اگر میکروکنترلر مقصد مجهز به بوتلودر XBeeBoot مستقیماً به درگاه سریال متصل باشد، فیلد نشانی ۶۴ بیتی میتواند حذف شود. در این حالت نرخ باود پیشفرض ۱۹۲۰۰ خواهد بود.
.Pp
برای برنامهریزهایی که با استفاده از نوعی پروتکل سطح بالاتر به یک درگاه سریال متصل میشوند (در برابر برنامهریزهای نوع بیتبنگ)،
.Ar port
میتواند بهصورت
.Pa net Ns \&: Ns Ar host Ns \&: Ns Ar port .
تعیین شود. در این حالت، به جای تلاش برای باز کردن یک دستگاه محلی، یک اتصال شبکهای TCP به (TCP)
.Ar port
روی
.Ar host
برقرار میشود.
برای خوانایی بهتر در نشانیهای عددی IPv6، میتوان کروشهها را در دو طرف
.Ar host
قرار داد (برای نمونه
.Li net:[2001:db8::42]:1337 ) .
نقطهی پایانی راه دور یک کارساز پایانه یا کنسول فرض میشود که جریان شبکه را به یک درگاه سریال محلی متصل میکند که برنامهریز واقعی به آن وصل شده است.
فرض بر این است که درگاه بهدرستی پیکربندی شده باشد، برای نمونه با استفاده از یک اتصال دادهی ۸ بیتی شفاف و بدون توازن (no parity) با نرخ ۱۱۵۲۰۰ باود برای یک STK500.
.Pp
یادداشت: توانایی پردازش نامهای میزبان و نشانیهای IPv6 (در حال حاضر) محدود به سیستمهای پازیکس (Posix) است.
.It Fl q \-quell
غیرفعال کردن (یا فرونشاندن) خروجی نوار پیشرفت هنگام خواندن یا نوشتن بر روی دستگاه. برای عملیات حتی ساکتتر، آن را چند بار مشخص کنید.
.It Fl T \-command Ar cmd
اجرای خط پایانه
.Ar cmd
هنگامی که نوبت آن در ارتباط با دیگر پایانههای تعاملی -t، دستورهای پایانه -T و عملیات حافظه -U فرا میرسد. بهجز سادهترین دستورهای پایانه، آرگومان
.Ar cmd
به احتمال زیاد باید درون گیومه قرار گیرد؛ برای جزئیات به راهنمای پوسته سیستمعامل خود نگاه کنید. برای شرح دقیق تمام دستورهای پایانه به بخش زیر بنگرید.
.It Fl t \-terminal
به
.Nm
میگوید تا هنگامی که نوبت آن در ارتباط با دیگر پایانههای تعاملی -t، دستورهای پایانه -T و عملیات حافظه -U فرا رسید، یک پایانه تعاملی را اجرا کند.
.It Xo Fl U \-memory Ar memory Ns
.Ar \&: Ns Ar op Ns
.Ar \&: Ns Ar filename Ns
.Op \&: Ns Ar format
.Xc
انجام یک عملیات حافظه طبق مشخصات هنگامی که نوبت آن در ارتباط با دیگر پایانههای تعاملی -t، دستورهای پایانه -T و عملیات حافظه -U فرا میرسد. فیلد
.Ar memory
حافظه مورد نظر را برای عملیات مشخص میکند. از نگارش 8.0، فیلد حافظه میتواند فهرستی از حافظهها باشد که با ویرگول از هم جدا شدهاند، مانند
.Ar flash,eeprom ;
همچنین، فایلهای Intel Hex یا Motorola S-Record تولیدشده توسط AVRDUDE میتوانند چندین حافظه را ذخیره کنند. حافظه ویژه
.Ar ALL
به تمام حافظههایی که قطعه دارد گسترش مییابد، در حالی که
.Ar all
به تمام حافظهها به استثنای زیرحافظهها گسترش مییابد.
.Ar etc
همانند
.Ar all ;
است؛ از این میتوان برای تغییر ترتیبی که در آن حافظهها در فایل نوشته یا از آن خوانده میشوند بهره برد، مانند
.Ar signature,etc
که فهرستی از تمام حافظههاست به گونهای که حافظه
.Ar signature
در آغاز میآید. حذف یک حافظه از فهرست تاکنون با قرار دادن یک علامت منفی یا بکاسلش پیش از آن امکانپذیر است، مانند
.Ar all,-calibration .
گونههای حافظه در دسترس وابسته به دستگاه هستند؛ پیکربندی واقعی را میتوان با دستور
.Cm part
در حالت پایانه مشاهده کرد.
.Pp
بهطور معمول، پیکربندی حافظه یک دستگاه دستکم دربردارنده حافظههای
.Ar flash ,
.Ar eeprom ,
.Ar signature
و
.Ar lock ,
است که گاهی با نام
.Ar lockbits
شناخته میشود. حافظه
.Ar signature
شامل سه بایت امضای دستگاه است که باید برای قطعه یکتا باشند، هرچند همواره چنین نیست. حافظه
.Ar lock
با یک یا چهار بایت، معمولاً مشخص میکند که آیا خواندن/نوشتن بیرونی از حافظه flash یا بخشهایی از آن مجاز است یا خیر. پس از محدود کردن دسترسی از طریق حافظه lock، اغلب تنها راه باز کردن قفل حافظه، پاکسازی کامل تراشه (chip erase) است. همچنین قطعات معمولاً دارای بایتهای فیوز هستند که حافظههای خواندنی/نوشتنی برای پیکربندی دستگاهاند، و حافظههای کالیبراسیون که معمولاً مقادیر کالیبراسیون کارخانهای فقطخواندنی را در بر دارند.
.Pp
حافظه flash، که از نظر فیزیکی به عنوان حافظه NOR پیادهسازی شده، از این حیث ویژه است که معمولاً تنها برنامهریزی بیتها برای تغییر از ۱ به ۰ امکانپذیر است. پیش از انجام دوباره برنامهریزی، معمولاً حافظه flash باید پاک شود. قطعات قدیمیتر برای انجام این کار تنها پاکسازی کامل تراشه (chip erase) را ارائه میکردند که EEPROM را نیز پاک میکند مگر آنکه پیکربندی فیوز محتویات آن را حفظ کند. اگر AVRDUDE گزینه -U را شناسایی کند که در حافظه flash مینویسد، بهطور خودکار پاکسازی کامل تراشه را برای این قطعات قدیمیتر فعال میکند. قطعات ATxmega یا UPDI (خانواده AVR8X) پاکسازی صفحهای (page erase) را ارائه میدهند، و AVRDUDE با پاک کردن صفحهها پیش از برنامهریزی آنها از این ویژگی بهره میگیرد، مگر اینکه -e (پاکسازی تراشه) یا -D (پیش از نوشتن پاک نشود) درخواست شده باشد. باید توجه داشت که در صورت نبود گزینه پاکسازی تراشه -e، هر صفحهای از flash در ATxmega یا UPDI که تحت تأثیر برنامهریزی قرار نگیرد، محتوای پیشین خود را حفظ خواهد کرد.
.Pp
برای دیدن فهرستی از تمام حافظههای شناختهشده، لطفاً به مستندات کامل مراجعه فرمایید، مانند:
.Li https://github.com/avrdudes/avrdude/blob/main/avrdude.pdf
.Pp
فیلد
.Ar op
مشخص میکند چه عملیاتی انجام شود:
.Bl -tag -width noreset
.It Ar r
خواندن حافظه دستگاه و نوشتن در فایل مشخصشده
.It Ar w
خواندن دادهها از فایل مشخصشده و نوشتن در حافظههای دستگاه در فهرست؛ حافظههای فقطخواندنی در یک فهرست حافظه نادیده گرفته میشوند، همانطور که فیوزها و بیتهای قفل هنگامی که پروگرامر یک بوتلودر است نادیده گرفته میشوند؛ نوشتن در تکحافظههای فقطخواندنی تنها در صورتی شکست میخورد که محتوا میان فایل و حافظه متفاوت باشد
.It Ar v
خواندن دادهها از دستگاه و فایل مشخصشده و انجام راستیآزمایی (verify)
.El
.Pp
فیلد
.Ar filename
نام فایل مورد نظر را برای خواندن یا نوشتن نشان میدهد.
فیلد
.Ar format
اختیاری است و دربردارنده قالب فایلی است که باید خوانده یا نوشته شود.
.Ar Format
میتواند یکی از موارد زیر باشد:
.Bl -tag -width sss
.It Ar i
قالب Intel Hex
.It Ar I
قالب Intel Hex همراه با توضیحات هنگام خواندن، و چشمپوشی از خطاهای چکسام هنگام نوشتن بر روی AVR
.It Ar s
قالب Motorola S-Record
.It Ar r
باینری خام (raw binary)؛ ترتیب بایت کمارزش (little-endian)، در مورد دادههای flash
.It Ar e
قالب ELF (Executable and Linkable Format، تنها برای ورودی)
.It Ar m
حالت بیدرنگ (immediate mode)؛ مقادیر واقعی بایت در خط فرمان مشخص میشوند که با ویرگول یا فاصله بهجای فیلد filename در گزینه -U قرار میگیرند. این قابلیت برای برنامهریزی بایتهای فیوز بدون نیاز به ساخت فایل تکبایتی یا ورود به حالت پایانه سودمند است.
.It Ar a
تشخیص خودکار (auto detect)؛ تنها برای ورودی معتبر است، و فقط در صورتی که ورودی از
.Em stdin
داده نشده باشد.
.It Ar d
دهدهی (decimal)؛ این قالب و قالبهای بعدی یک خط خروجی برای بخش مربوطه از حافظه تولید میکنند و فهرستی از مقادیر جداشده با کاما میسازند. این حالت بهویژه برای پردازشهای بعدی، مانند تنظیمات بیت فیوز، میتواند بسیار سودمند باشد.
.It Ar h
شانزدهشانزدهی (hexadecimal)؛ به ابتدای هر مقدار رشته
.Em 0x
افزوده میشود.
.It Ar o
هشتهشتی (octal)؛ به ابتدای هر مقدار یک
.Em 0
افزوده میشود مگر آنکه کمتر از ۸ باشد که در آن حالت هیچ پیشوندی نمیگیرد.
.It Ar b
دودویی (binary)؛ به ابتدای هر مقدار رشته
.Em 0b
افزوده میشود.
.El
.Pp
هنگامی که به عنوان ورودی استفاده شوند، قالبهای
.Ar m ,
.Ar d ,
.Ar h ,
.Ar o
و
.Ar b
از کد یکسانی برای خواندن فهرست اعداد جداشده با فاصله یا ویرگول بهره میبرند. روال خواندن، اعداد دهدهی، شانزدهشانزدهی، هشتهشتی یا دودویی را بر پایه عدد به عدد پردازش میکند، بنابراین فهرست اعداد میتواند از نوع آمیخته باشد. در حقیقت قواعد دستوری همانند دادههای مورد استفاده با دستور write در پایانه است؛ بدین معنی که دادههای ورودی فایل میتوانند اعداد صحیح کوتاه (short integer) دو بایتی، اعداد صحیح بلند (long integer) چهار بایتی، یا اعداد صحیح بسیار بلند (long long integer) هشت بایتی، اعداد ممیز شناور (floating point) چهار بایتی، اعداد با دقت مضاعف (double precision) هشت بایتی، رشتههای سبک C با پایاندهنده nul یا نویسههای سبک C مانند '\t' باشند. اعداد به صورت کمارزش (little-endian) در حافظه نوشته میشوند. هنگام استفاده از ورودی شانزدهشانزدهی 0x یا دودویی 0b، صفرهای آغازین برای تعیین اندازه عدد صحیح استفاده میشوند؛ برای نمونه، 0x002a دو بایت را اشغال کرده و یک 0x2a و به دنبال آن 0x00 را در حافظه مینویسد، و 0x01234 چهار بایت را اشغال خواهد کرد. برای جزئیات بیشتر به شرح دستور write پایانه مراجعه فرمایید.
.Pp
در نبود یک قالب فایل صریح، حالت پیشفرض استفاده از تشخیص خودکار برای فایلهای ورودی، قالب باینری خام برای فایلهای خروجی حاصل از خواندن یک حافظه، و قالب Intel Hex همراه با توضیحات در هنگام تولید فایل خروجی از فهرستی از حافظههاست. توجه داشته باشید اگرچه
.Nm avrdude
برای تمام قالبها به استثنای elf (:e) یک فایل خروجی منفرد از فهرست حافظهها میسازد، اما هنگام خواندن فایل برای راستیآزمایی یا نوشتن در حافظهها، تنها فایلهای Intel hex (:I یا :i)، Motorola S-Record (:s) یا فایلهای elf (:e، تولیدشده توسط کامپایلر) را به عنوان فایلهای چندحافظهای معتبر به رسمیت میشناسد. همچنین توجه کنید که اگر یک
.Ar filename
در نویسه یکی مانده به آخر دارای یک دونقطه باشد، فیلد
.Ar format
دیگر اختیاری نیست؛ چرا که در غیر این صورت آخرین نویسه به عنوان
.Ar format
به اشتباه تعبیر میشود.
.Pp
هنگام خواندن هر گونه ناحیه از حافظه flash (شامل زیرناحیههای گوناگون در دستگاههای Xmega)، فایل خروجی حاصل بریده خواهد شد تا بایتهای پایانی 0xFF را که نشاندهنده حافظه برنامهریزینشده (پاکشده) هستند شامل نشود. بدینسان، اگر کل حافظه برنامهریزینشده باشد، این امر به تولید یک فایل خروجی بدون هیچ محتوایی خواهد انجامید. این رفتار را میتوان با گزینه -A لغو کرد.
.Pp
به عنوان یک کوتهنوشت، ریختِ
.Fl U Ar filename
معادل مشخص کردن
.Fl U Em flash:w: Ns Ar filename Ns :a .
است. این تنها زمانی کار خواهد کرد که
.Ar filename
شامل جفت دونقطهای نباشد که یک نویسه منفرد را در میان گرفتهاند؛ زیرا در غیر این صورت ممکن است بخش نخست به عنوان حافظه و نویسه منفرد به عنوان عملیات حافظه تعبیر شود.
.Pp
نام فایلی که برای نوشتن در flash به کار میرود و با urboot: آغاز میشود، بهطور خودکار یک فایل بوتلودر urboot تولید میکند. برای نمونه، -c dryrun -U urboot:help را برای دیدن فهرستی از ویژگیهایی که محتوای بوتلودر را تعیین میکنند امتحان کنید. بهجز آن، مستندات مفصلی برای فایلهای خودکار تولیدشده در کتابچه راهنمای پیدیاف AVRDUDE موجود است، مانند:
.Li https://github.com/avrdudes/avrdude/blob/main/avrdude.pdf
نوشتن فایلهای urboot:... در flash با استفاده از -U این اثر جانبی مطلوب را نیز دارد که تمام پیکربندیهای فیوز مورد نیاز برای کارکرد بوتلودر را هم مینویسد.
.It Fl v \-verbose
فعالسازی خروجی با جزئیات بیشتر (verbose).
گزینههای
.Fl v
بیشتر، سطح پرگویی خروجی را افزایش میدهند.
.It Fl V \-noverify-memory
غیرفعالسازی بررسی صحت خودکار (verify) هنگام نوشتن داده روی AVR با گزینه -U.
.It Fl \-version
چاپ نگارش و خروج.
.It Fl x \-extended Ar extended_param
ارسال
.Ar extended_param
به عنوان یک پارامتر گسترشیافته به پیادهسازی برنامهریز برگزیده.
تفسیر پارامتر گسترشیافته به خود
برنامهریز بستگی دارد.
برای دیدن فهرستی از برنامهریزهایی که پارامترهای گسترشیافته را میپذیرند به زیر مراجعه کنید
یا دستور
.Nm
-x help ... را برای مشاهده گزینههای گسترشیافته برنامهریز برگزیده اجرا نمایید.
.It Fl h \-help
نمایش پیام راهنمای کوتاه و خروج.
.El
.Ss "حالت پایانه (Terminal mode)"
در این حالت،
.Nm
تنها ارتباط با MCU را مقداردهی اولیه کرده و سپس در ورودی استاندارد منتظر فرمانهای کاربر
میماند. حالت پایانه با استفاده از
.Xr readline 3
تاریخچه دستورها را فراهم میسازد،
بنابراین خطوط فرمان پیشتر واردشده را میتوان بازخوانی و ویرایش کرد.
.Pp
پارامترهای
.Ar addr
و
.Ar len
در دستورهای dump ،read ،disasm ،write ،save و erase میتوانند
با همان ساختار نحوی محاسبات زیررشته در perl یا python منفی باشند.
جدول زیر بازه حافظه مؤثر
.Ar [start ,
.Ar end]
را با توجه به اندازه حافظه
.Ar sz
تعریف میکند:
.Pp
.nf
addr len بازه حافظه توضیحات
------------------------------------------------------------------------
0/pos pos [addr, addr+len-1] نکته: len = end-start+1
0/pos neg [addr, sz+len] پایان به میزان |len| بایت کمتر از اندازه حافظه sz است
neg pos [sz+addr, آغاز به میزان |addr| بایت کمتر از اندازه حافظه است
sz+addr+len-1]
neg neg [sz+addr, sz+len] ترکیب دو حالت بالا
any 0 empty set بدون اقدام
.fi
.Pp
توجه داشته باشید که addr باید در بازه [-sz, sz-1] باشد. پس از محاسبه بازه حافظه
[start, end] طبق جدول بالا، طول مؤثر end-start + 1 نباید منفی باشد؛ اگر
طول مؤثر صفر باشد، هیچ اقدامی صورت نمیگیرد. End ممکن است برای دستورهای dump ،read یا disasm فراتر
از حافظه موجود باشد، که در این حالت عملیات از انتهای حافظه دور میزند (wrap around)،
اما طول مؤثر همواره به اندازه حافظه محدود میشود.
.Pp
در اینجا چند مثال برای حافظهای با اندازه sz برابر با 0x800 (۲۰۴۸) بایت آورده شده است:
.Pp
.nf
addr len بازه حافظه توضیحات
------------------------------------------------------------------------
0x700 12 [0x700, 0x70b] کاربرد معمول
1024 -257 [0x400, 0x6ff] اندازه حافظه ۲۰۴۸ یا 0x800 است
-512 512 [0x600, 0x7ff] ۵۱۲ بایت پایانی
-256 -1 [0x700, 0x7ff] ۲۵۶ بایت پایانی
0 49 [0, 48] ۴۹ بایت نخست
0 -49 [0, 1999] همه به جز ۴۸ = |len+1| بایت پایانی
0 -1 [0, 0x7ff] تمام حافظه بدون نیاز به دانستن اندازهاش
2046 4 [0x7fe, 0x801] دور زدن برای خواندن اما خطا برای نوشتن
2046 4096 [0x7fe, 0x17fe] توقف دور زدن خواندن در 0x7fd
-1 -1 [0x7ff, 0x7ff] یک بایت در 0x7ff آدرسدهی شده است
-1 -2 [0x7ff, 0x7fe] بدون اقدام: طول مؤثر صفر است
-1 -3 [0x7ff, 0x7fd] خطا: طول مؤثر منفی است
.fi
.Pp
دستورهای زیر برای تمامی برنامهریزها پیادهسازی شدهاند:
.Bl -tag -offset indent -width indent
.It Ar dump memory addr len
خواندن از بازه حافظه مشخصشده (به بالا بنگرید) و نمایش در قالب معمول شانزدهشانزدهی (hexadecimal) و اسکی (ASCII).
.It Ar dump memory addr
خواندن تعداد بایتی از
.Ar memory addr
که جدیدترین دستور
.Ar dump memory addr len
برای همین حافظه مشخص کرده بود (پیشفرض ۲۵۶ بایت) و نمایش آنها.
.It Ar dump memory
ادامه تخلیه محتویات (dump) از همان حافظهای که دستور قبلی
.Ar dump memory
متوقف شده بود.
.It Ar dump
ادامه تخلیه محتویات از همان حافظه و مکانی که جدیدترین دستور
.Ar dump
متوقف شده بود؛ اگر هیچ دستور dump پیشینی حافظهای را آدرس نداده باشد، پیام خطا نمایش داده میشود.
.It Ar dump memory addr ...
خواندن تمامی بایتها از حافظه مشخصشده با شروع از نشانی
.Ar addr Ns ،
و نمایش آنها (منسوخ شده: از dump memory addr -1 استفاده کنید).
.It Ar dump memory ...
خواندن تمامی بایتها از حافظه مشخصشده و نمایش آنها (منسوخ شده: از dump memory 0 -1 استفاده کنید).
.It Ar read
میتواند به عنوان نام مستعار (alias) برای dump به کار رود.
.It Ar disasm [opts] [arguments]
همانند dump، دستور disasm بخشی از حافظه مشخصشده را نمایش میدهد،
هرچند این کار را با تفسیر محتویات حافظه به عنوان کدهای دستوری (opcodes) پردازنده AVR و نمایش آن
به صورت کد مبدأ اسمبلی انجام میدهد. بر خلاف dump، دستور disasm دارای گزینههایی است؛
این گزینهها چگونگی نمایش نتیجه توسط disasm را کنترل میکنند (به زیر بنگرید). به جز این،
ساختار نحوی تعیین حافظه و بازه پردازشی آن عملاً همانند dump است: هرچند
طول پیشفرض disasm برابر ۳۲ بایت است و گاهی ممکن است طول اندکی کوتاهتر یا بلندتر از مقدار
درخواستشده باشد تا بخش حافظه برای disasm با کدهای دستوری همتراز شود.
گزینههای disasm پس از تنظیم، معتبر میمانند مگر آنکه خاموش شوند، که معمولاً با
تغییر بزرگی و کوچکی حروف (case) گزینه انجام میگیرد. بدین ترتیب، یک disasm ساده بدون گزینههای بیشتر
میتواند برای پیمایش گامبهگام حافظه با حفظ همان ظاهر قبلی استفاده شود. disasm گزینههای زیر را میشناسد:
.Bl -tag -offset indent -width indent
.It -g
تولید کد مبدأ avr-gcc: این گزینه -sOFQ را فعال کرده و دیباچه (preamble) بخش .text و
نماد main را خروجی میدهد مگر اینکه فرایند دیساسمبل خود آن را تولید کند؛ -G (پیشفرض)
گزینه -g را خاموش کرده و خروجی دیباچه را متوقف میسازد.
.It -A
عدم نمایش نشانیها؛ -a (پیشفرض) نشانیها را نمایش میدهد.
.It -O
عدم نمایش بایتهای کد دستوری (opcode)؛ -o (پیشفرض) بایتهای opcode را نمایش میدهد.
.It -C
عدم نمایش توضیحات؛ -c (پیشفرض) توضیحات را نمایش میدهد.
.It -f
نمایش پرچمهای تحت تأثیر در SREG، برای نمونه ---SVNZC برای دستور sbiw؛ گزینه -F (پیشفرض)
پرچمهای SREG را نمایش نمیدهد.
.It -q
نمایش تعداد چرخههای ماشین که یک کد دستوری مصرف میکند؛ -Q (پیشفرض)
چرخهها را نمایش نمیدهد.
.It -n
قرار دادن نام کامل کد دستوری در بخش توضیحات، مانند subtract immediate from word
برای دستور sbiw؛ گزینه -N (پیشفرض) نام کامل کدهای دستوری را نمایش نمیدهد.
.It -e
قرار دادن توضیح فنی کد دستوری در بخش توضیحات، مانند Rd+1:Rd
<-- Rd+1:Rd - K برای دستور sbiw؛ گزینه -E (پیشفرض) توضیحات
فنی را نمایش نمیدهد.
.It -S
استفاده از سبک مجموعه دستورالعملهای AVR: به این معنا که جفتثباتها به صورت
r31:30 به جای r30 نمایش داده میشوند؛ -s (پیشفرض) از سبک کد avr-gcc استفاده میکند.
.It -L
عدم پیشپردازش برچسبها؛ -l (پیشفرض) برچسبهای jump/call را پیشپردازش میکند.
.It -U
عدم نمایش برچسبهای استفادهنشده؛ -u (پیشفرض) برچسبهای برچسبگذاریشده (tagged) استفادهنشده را نمایش میدهد.
.It -d
رمزگشایی تمامی کدهای دستوری از جمله موارد ثبتنشده (undocumented)؛ گزینه -D (پیشفرض)
تنها کدهای دستوری معتبر برای آن قطعه را رمزگشایی میکند.
.It -z
پاک کردن (zap) فهرست پرشها و فراخوانیها (jumps و calls) پیش از دیساسمبل.
.It -t=
حذف نمادها از tagfile پیشتر خواندهشده (در صورت وجود) و خواندن پرونده برچسب
برای انتساب نشانیها به نام نمادها.
.El
پرونده tagfile یک فایل اسکی (ASCII) است که در آن هر سطر نمادی را برای نشانیهای
برچسب کد (L)، نشانیهای متغیر در حافظه فلش (P) و نشانیهای متغیرها
در حافظه یا فضای ورودی/خروجی (M) توصیف میکند. نویسه هش (#) آغازگر توضیحی در tagfile
است که تا انتهای سطر امتداد یافته و توسط disasm نادیده گرفته میشود. در اینجا نمونهای
مشخص از ساختار یک tagfile آورده شده است:
.nf
---------------------------------------------------------------
0x7f54 L putch Outputs a char # L are code labels
0x7ffe P W 1 version16 A word integer # P are PGM data
0x7f80 P A 4 headings Column headers # Auto-aligned strings
0x0100 M B 2048 sram 2 kB SRAM # Memory address
---------------------------------------------------------------
.fi
برچسبهای کد L میتوانند برای نمونه، نام توابع در فضای برنامه یا برچسبهای دستور goto باشند.
آنها تا چهار ستونِ جداشده با فاصلههای خالی را به کار میگیرند: نشانی،
حرف L، نام نمادین برچسب، و یک ستون اختیاری توضیحات
برای نماد، که در صورت ارجاع یا استفاده از این برچسب توسط کد، توسط disasm در ستون
توضیحات دیساسمبل کپی میشود. نمادهای متغیر در ستون دوم دارای P یا M هستند؛
آنها میتوانند همانطور که با حرف B یا W در ستون سوم مشخص میشود بایت یا کلمه (۱۶ بیت)
باشند و همانگونه که با شمار تکرار (multiplicity count) در ستون چهارم تعیین میگردد،
متغیرهای تکی یا آرایهها باشند. نمادهای P (و نه نمادهای M) میتوانند همچنین کاراکترها (۸ بیت)،
طولانی یا long (۳۲ بیت)، چهارگانه یا quad (۶۴ بیت) یا هشتگانه یا octa (۱۲۸ بیت) را به ترتیبی که با حروف
C ،L ،Q یا O مشخص شدهاند کدگذاری کنند، یا مکان پایه رشتههای
خاتمهیافته با nul باشند، آنچنان که با A یا S در ستون سوم کدگذاری میشود. بر حسب
ضرورت، فضای اشغالشده توسط رشتههای A/S متغیر است. تفاوت
میان نمادهای A و S در این است که آرایه رشتههای A ممکن است نویسه nul اضافی
برای همترازی خودکار فضای اشغالشده توسط آنها با یک نشانی زوج داشته باشد. ستون پنجم نام نمادین
نشانی P یا M است که میتواند توسط disasm برای خروجی دادن نمادین نشانیهای مرتبط به کار رود.
بخشهای P توصیفشده در tagfile همچنین به disasm اعلام میکنند که بخش متناظر
کد اجرایی نیست و نباید بدین عنوان دیساسمبل شود؛ در عوض، دستورهای راهنمای \&.byte ،\&.word ،\&.asciz و گاهی در انتهای بخش حافظه \&.ascii برای دیساسمبل آن بخش به کار میروند.
همانند برچسبهای L، متغیرهای P و M نیز میتوانند یک ستون توضیحات پایانی اختیاری وابسته به
نماد داشته باشند که در صورت و هنگام استفاده از متغیرهای متناظر، در ستون دیساسمبل خروجی داده شود.
.Pp
پروندههای tagfile برای دیساسمبل جهت خواناتر کردن خروجی disasm سودمندند.
آنها را میتوان به صورت دستی و گامبهگام همگام با افزایش درک فرد از کد ساخت.
همچنین، اسکریپت پوسته بش elf2tag میتواند به صورت خودکار یک پرونده برچسب را از فایل .elf که
محتویات حافظه فلش را تولید کرده است بسازد:
.Pp
$ elf2tag file.elf >file.tag
.Pp
اسکریپت elf2tag از دیساسمبل avr-objdump -d برای ایجاد برچسبهای L و از avr-nm
برای تولید نمادهای M بهره میبرد.
.It Ar write memory addr data[,] {data[,]}
برنامهریزی دستی خانههای حافظه مربوطه با آغاز از نشانی
.Ar addr ,
با استفاده از اقلام داده ارائهشده.
پایانه خواندن از و نوشتن در حافظههای نوع flash، EEPROM، bootrow و
usersig را معمولاً از طریق یک حافظه نهان (cache) و توابع دسترسی صفحهای پیادهسازی میکند.
تمامی حافظههای دیگر مستقیماً بدون استفاده از حافظه نهان نوشته میشوند. در برخی
قطعات قدیمیتر فاقد دسترسی صفحهای، بسته به برنامهریز، ممکن است به
flash و EEPROM نیز مستقیماً بدون حافظه نهان دسترسی پیدا شود.
.Pp
.Ar data
میتواند اعداد صحیح دودویی، هشتهشتی، دهدهی یا شانزدهشانزدهی، اعداد ممیز شناور،
یا رشتهها و نویسههای به سبک C باشد. اگر با هیچیک منطبق نباشد،
.Ar data
به عنوان نام پروندهای دربردارنده داده تفسیر خواهد شد که خوانده شده
و در این نقطه درج میشود. برای تحمیل تفسیر یک قلم داده به عنوان پرونده، مثلاً در حالتی که
نام پرونده در غیر این صورت به عنوان یک عدد تعبیر میشد، میتوان به نام پرونده یک مشخصکننده قالب
.Ar :f
داد. در نبود پسوند قالب، پایانه تلاش میکند
قالب پرونده را به صورت خودکار تشخیص دهد.
.Pp
نام پروندهای که با urboot: آغاز شود، یک پرونده بوتلودر urboot را به صورت خودکار تولید میکند. برای نمونه،
دستور پایانهای write flash urboot:help را برای دیدن فهرستی از ویژگیهایی که
محتوای بوتلودر را تعیین میکنند بیازمایید. علاوه بر این، مستندات مبسوطی برای پروندههای خودتولیدشده در
کتابچه راهنمای پیدیاف AVRDUDE وجود دارد، برای نمونه در:
.Li https://github.com/avrdudes/avrdude/blob/main/avrdude.pdf
در اینجا شایان ذکر است که نوشتن پروندههای ...:urboot در flash درون
پایانه، فیوزهای لازم برای کارکرد بوتلودر را نمینویسد (برخلاف عملیاتهای
.Fl U ) .
.Pp
برای اعداد صحیح، یک پسوند اختیاری و غیرحساس به بزرگی و کوچکی حروف، اندازه داده را تعیین میکند: HH
برای ۸ بیتی، H/S برای ۱۶ بیتی، L برای ۳۲ بیتی، LL برای ۶۴ بیتی. پسوند D بیانگر یک double شصت و چهار بیتی و F
بیانگر یک float سی و دو بیتی است، در حالی که یک عدد ممیز شناور بدون پسوند به طور پیشفرض
یک float سی و دو بیتی است. نمادگذاری ممیز شناور شانزدهشانزدهی نیز پشتیبانی میشود. یک پسوند پایانی
مبهم، برای نمونه 0x1.8D، به عنوان float بدون پسوند خوانده میشود که در آن D بخشی از
مانتیس است؛ برای شفافسازی از یک نمای صفر 0x1.8p0D استفاده کنید.
.Pp
یک پسوند اختیاری U اعداد صحیح را بدون علامت میکند. اعداد صحیح معمولی شانزدهشانزدهی 0x و
دودویی 0b همیشه بدون علامت در نظر گرفته میشوند. اعداد +0x، -0x، +0b و -0b
دارای علامت صریح، علامتدار تلقی میشوند مگر آنکه پسوند U داشته باشند.
اعداد صحیح بدون علامت نمیتوانند بزرگتر از 2^64-1 باشند. اگر n یک عدد صحیح بدون علامت باشد،
آنگاه همانند C مقدار -n نیز یک عدد صحیح بدون علامت معتبر است. اعداد صحیح علامتدار باید
در بازه [2^63-1, 2^63-] یا بازهای متناسباً کوچکتر در حالتی که پسوند
نوع کوچکتری را تعیین کند، جای گیرند.
.Pp
اعداد صحیح معمولی شانزدهشانزدهی 0x و دودویی 0b با n رقم (با احتساب
صفرهای آغازین) از کوچکترین اندازه میان یک، دو، چهار و هشت بایت استفاده میکنند که
بتواند هر عدد صحیح شانزدهشانزدهی/دودویی n-رقمی را در خود جای دهد. اگر پسوند یک عدد صحیح
اندازهای را به صراحت مشخص کند، تعداد متناظر از بایتهای کمارزش
نوشته میشوند، و چنانچه عدد در نمایش مورد نظر نگنجد هشداری نشان داده خواهد شد. در غیر این صورت،
اعداد صحیح بدون علامت کوچکترین بایتهای مورد نیاز میان یک، دو، چهار یا هشت بایت را اشغال میکنند.
اعداد علامتدار مجازند در کوچکترین نمایش علامتدار یا کوچکترین نمایش بدون علامت جای گیرند: برای نمونه، ۲۵۵
در یک بایت ذخیره میشود زیرا 255U در یک بایت میگنجد، هرچند به عنوان یک عدد علامتدار
در بازه تکبایتی [127, 128-] جا نمیگیرد. عدد ۱-
در یک بایت ذخیره میشود در حالی که 1-U به هشت بایت نیاز دارد چرا که همان
0xFFFFffffFFFFffffU است.
.Pp
یک ویرگول پایانی در انتهای اقلام
.Ar data
برای آسودگی در رونوشت و چسباندن (copy & paste) فهرستها نادیده گرفته میشود.
.It Ar write memory data
اگر اندازه حافظهای که در آن نوشته میشود یک بایت باشد، میتوان از نشانی آغازین
صرفنظر کرد.
.Ar data
میتواند هر چیزی از جمله یک پرونده باشد.
.It Ar write memory file
هنگامی که پروندهای در حافظه نوشته میشود، میتوان از نشانی آغازین صرفنظر کرد.
.It Ar write memory addr len data[,] {data[,]} ...
ریخت سه نقطه ... دادهها را در سراسر بازه حافظه که توسط
.Ar addr len
نشانیدهی شده مینویسد و در صورت نیاز، فضای باقیمانده را با تکرار آخرین قلم
.Ar data
پر (pad) میکند. دستور نوشتن همراه با پر کردن، فراتر از ناحیه حافظه مشخصشده نمینویسد،
حتی اگر دادههای بیشتری از مقدار مورد نیاز ارائه شده باشد.
.It Ar save memory {addr len} file[:format]
ذخیره یک یا چند قطعه حافظه در پرونده با قالبی که با حرف
:format تعیین شده است. حالت پیشفرض :r برای باینری خام (raw binary) است. هر قطعه حافظه
با یک جفت نشانی و طول توصیف میشود. در غیاب هرگونه قطعه حافظه،
کل حافظه در پرونده ذخیره میگردد. تنها قالبهای Motorola S-Record (:s) و
Intel Hex (:i یا :I) اطلاعات نشانی را به همراه دادههای ذخیرهشده
نگه میدارند.
.Nm Avrdude
در حال حاضر توانایی ذخیره در قالبهای پرونده ELF را ندارد. تمامی قالبهای پرونده دیگر،
اطلاعات نشانی را از دست داده و قطعههای برگزیده حافظه را پیدرپی در
پرونده خروجی به هم متصل میکنند. اگر نام پرونده - باشد، آنگاه
.Nm
در خروجی استاندارد (stdout) مینویسد.
.It Ar backup memlist file[:format]
پشتیبانگیری از یک یا چند حافظه در پرونده مشخصشده با بهرهگیری از قالب
انتخابشده. قالب پیشفرض برای پشتیبانگیری از یک تکحافظه :r (باینری
خام) است؛ برای پشتیبانگیری از چند حافظه :I (Intel Hex همراه با یادداشت) است.
Memlist میتواند فهرستی از حافظهها باشد که با ویرگول از هم جدا شدهاند، درست همانند
آرگومان خط فرمان
.Ar -U .
دستور
.Ar backup
پیش از خواندن حافظهها، حافظه نهان را تخلیه میکند.
.It Ar restore memlist file[:format]
بازیابی یک یا چند حافظه از پرونده مشخصشده. این مسئولیت کاربر است که
حافظهها را پیشاپیش بر حسب نیاز پاک کند: برخی حافظههای صفحهای
هنگام استفاده از برنامهریزهای خاص، رفتاری همانند حافظه NOR دارند؛ بدین معنا که برنامهریزی
نمیتواند بیتها را به ۱ تغییر دهد (مانند flash در بیشتر برنامهریزها). این حافظهها
باید پیشاپیش با استفاده از دستور erase (به پایین بنگرید) پاک شوند. قالب
تنها زمانی نیاز به تعیین دارد که نتواند به طور خودکار تشخیص داده شود؛
برای نمونه هنگامی که پرونده - برای ورودی استاندارد باشد. Memlist میتواند فهرستی
از حافظهها باشد که با ویرگول از یکدیگر جدا شدهاند، درست همانند آرگومان خط فرمان
.Ar -U .
دستور
.Ar restore
پیش از نوشتن حافظهها حافظه نهان را تخلیه کرده و پس از
نوشتن حافظهها، حافظه نهان را بازنشانی میکند. توجه داشته باشید که بازیابی حافظههای فقطخواندنی،
محتوای پرونده را با حافظههای ریزپردازنده متناظر راستیآزمایی میکند.
.It Ar verify memlist file[:format]
مقایسه یک یا چند حافظه با پرونده مشخصشده.
Memlist میتواند فهرستی از حافظهها باشد که با ویرگول از یکدیگر جدا شدهاند، درست همانند
آرگومان خط فرمان
.Ar -U .
دستور
.Ar verify
پیش از راستیآزمایی حافظهها، حافظه نهان را تخلیه میکند.
.It Ar erase
انجام پاکسازی کامل تراشه (chip erase) و دور ریختن تمامی نوشتههای معلق در flash، EEPROM و bootrow.
توجه داشته باشید که اگر بیت فیوز EESAVE فعال باشد (یعنی در آخرین بازنشانی پیش از این عملیات
مقدار متناظر را داشته باشد)، محتوای EEPROM حفظ خواهد شد.
.It Ar erase memory
پاکسازی کامل حافظه مشخصشده.
.It Ar erase memory addr len
پاکسازی بخشی از حافظه مشخصشده.
.It Ar flush
همگامسازی تمامی نوشتههای معلق در flash، EEPROM، bootrow و
usersig با دستگاه. در برخی ترکیبهای برنامهریز و قطعه، flash (و گاهی
EEPROM نیز) رفتاری شبیه حافظه NOR دارد، یعنی نوشتن تنها میتواند بیتها را پاک (صفر) کند
و هرگز آنها را یک نمیکند. برای حافظههای NOR باید پیش از نوشتن دادههای دلخواه، یک پاکسازی صفحه
یا در صورت در دسترس نبودن، یک پاکسازی کامل تراشه صادر شود. Usersig
تحت تأثیر پاکسازی کامل تراشه قرار نمیگیرد. هنگامی که یک حافظه رفتاری همانند حافظه NOR
دارد، یا پاکسازی صفحه به کار گرفته میشود (برای نمونه در قطعات دارای رابطهای PDI/UPDI)،
یا در صورت در دسترس نبودن، حافظههای نهان هر دوی EEPROM و flash به طور کامل
خوانده میشوند، یک دستور پاکسازی تراشه صادر میگردد و هر دو حافظه EEPROM و flash
مجدداً در دستگاه نوشته میشوند. از این رو، حصول اطمینان از اینکه یک تکبیت که پیشتر صفر شده بود
یک شود ممکن است چندین دقیقه زمان ببرد و بنابراین، این روتین باید با احتیاط فراخوانده شود.
.It Ar abort
در حالت عادی، حافظههای نهان تنها هنگامی واقعاً در دستگاه نوشته میشوند
که از دستور
.Ar flush
استفاده شود، در پایان نشست پایانه پس از وارد کردن
.Ar quit ,
یا پس از مواجهه با EOF در ورودی. دستور abort حافظه نهان را بازنشانی کرده و
تمامی نوشتههای قبلی در حافظه نهان flash، EEPROM، bootrow و usersig را دور میریزد.
.It Ar config {<-f|-a|-v>}
نمایش تمامی ویژگیهای پیکربندی قطعه؛ اینها معمولاً میدانهای بیتی
در بایتهای فیوزها یا بیتهای قفل هستند که میتوانند مقادیری بپذیرند که نوعاً
نامی یادافزا (mnemonic) دارند. هر قطعه مجموعه اقلام قابلپیکربندی اختصاصی خود را دارد. گزینه
-f ویژگیهای پیکربندی را بر پایه بایت فیوز و بیتهای قفلی که در آن قرار دارند
گروهبندی میکند، و مقدار کنونی این حافظهها را نیز نشان میدهد.
دستور Config -a یک اسکریپت مقداردهی اولیه با تمام ویژگیها و
تمامی انتسابهای ممکن مربوطه تولید میکند. مقادیر یادافزای منتسبشده کنونی
مواردی هستند که توضیح (کامنت) نشدهاند. گزینه -v بر پرگویی خروجی
دستور config میافزاید.
.It Ar config {<-f|-v>} {<-f|-v>}
نمایش مقدار کنونی ویژگی پیکربندی نامبردهشده. نویسههای عام یا
رشتههای آغازین مجازند (اما نه هر دو)، که در آن حالت مقادیر کنونی
تمامی ویژگیهای منطبق نمایش داده میشوند.
.It Ar config {<-f|-v>} = {<-f|-v>}
نمایش تمامی مقادیر ممکن برای ویژگی پیکربندی نامبردهشده (به = پایانی توجه کنید).
مقداری که اکنون تنظیم شده، تنها مقداری است که توضیح (کامنت)
نشده است. همانند قبل، نویسههای عام یا رشتههای آغازین مجاز هستند.
.It Ar config {<-f|-v|-c>} = {<-f|-v|-c>}
تغییر ویژگی پیکربندی نامبردهشده به مقدار دادهشده. فیوز یا
بیتهای قفل متناظر بیدرنگ دگرگون میشوند اما این تغییر
معمولاً تنها در بازنشانی بعدی قطعه اثر خواهد گذاشت؛ زمانی که
فیوزها و بیتهای قفل به کار گرفته میشوند. مقدار میتواند یک عدد صحیح معتبر
یا یکی از یادافزاهای نمادین (در صورت شناختهشده بودن) باشد. نویسههای عام یا رشتههای
آغازین برای ویژگی یا مقدار یادافزای منتسب مجازند، اما انتساب تنها زمانی انجام میشود
که هم ویژگی و هم نام بتوانند به صورت یکتا تفکیک گردند. گزینه -v مقدار ویژگی
پیکربندی منتسب را با خواندن دوباره آن از فیوز نمایش میدهد. در نبود -v،
گزینه -c مقدار جدید ویژگی پیکربندی را تنها در صورتی تأیید میکند که
تغییر کرده باشد.
.Pp
همانند نوشتن مستقیم در فیوزها و بیتهای قفل زیرین، کاملاً ممکن است
که یک قطعه بلااستفاده و «بریک» (brick) شود، یعنی در برابر برنامهریزی بیشتر
با برنامهریز برگزیده پاسخگو نباشد: اینجا وادی اژدهایان است (here be dragons).
.It Ar factory reset
بازنشانی قطعه متصل به وضعیت کارخانه تا جای ممکن
(برای نمونه، بوتلودرها توانایی نوشتن فیوزها را ندارند و ممکن است ابزاری برای
پاکسازی EEPROM نداشته باشند). این دستور ممکن است بسامد کلاک F_CPU قطعه را
پس از بازنشانی بعدی MCU هنگامی که مقادیر دگرگونشده فیوز اجرایی میشوند، تغییر دهد.
از این رو، این امر ممکن است ایجاب کند که فراخوانیهای بعدی avrdude در نوبت بعد نرخ کلاک بیت متفاوتی
تا سقف F_CPU/4 را برای برنامهریز به کار گیرند. توجه داشته باشید
که دستور factory میتواند کوتهسازی شود اما آرگومان الزامی reset
باید به طور کامل نوشته شود.
.It Ar regfile {}
دستور regfile بدون هیچ آرگومان افزون، پرونده ثباتهای (register file) قطعه را نمایش میدهد،
یعنی تمامی نامهای ثباتها و محتویات آنها در حافظه
.Ar io ,
در صورت امکان: توجه داشته باشید که برنامهریزی بیرونی نمیتواند ثباتهای
قطعات کلاسیک (رابطهای ISP یا TPI) را بخواند.
.Pp
گزینه -a نشانیهای ورودی/خروجی (I/O) ثبات را نیز علاوه بر آن نمایش میدهد؛ -m
نشانیهای حافظه ثبات را که برای کدهای عملیاتی lds/sts استفاده میشوند بهجای نشانیهای
I/O نمایش میدهد. گزینه -s همچنین اندازه ثبات را بر حسب بایت نشان میدهد، در حالی که
-v شرح اندکی گستردهتر را در کنار هر ثبات نمایش میدهد.
.It Ar regfile {} {}
دستور regfile همراه با نام ثبات
.Em reg
تمام آن ثباتهایی را که با
.Em reg
مطابقت دارند، نمایش میدهد.
استفاده از نویسههای عام (wildcard) یا رشتههای جزئی مجاز است، اما نه هر دو با هم. نامهای ثبات
دارای قالب
.Em module.name
یا
.Em module.instance.name
هستند. اگر
.Em reg
ارائهشده یک نام ثبات کامل و موجود باشد، برای نمونه
.Ar porta.out
آنگاه آن تنها ثباتی است که نمایش داده میشود؛ حتی با اینکه ممکن است
نام جزئی ثبات دیگری باشد، مانند
.Ar porta.outdir .
اگر
.Em reg
ارائهشده همانند
.Em instance.name
یا
.Em name
باشد، تطبیق جزئی دیگر به کار گرفته نمیشود و تمام ثباتهای ماژول با آن
.Em instance.name
یا
.Em name
دقیق نمایش داده میشوند. تطبیق جزئی را میتوان با استفاده از نویسههای عام تحمیل کرد، مانند
porta.out*
.It Ar regfile {} = {}
این دستور یک ثبات منفرد را که با
.Em reg
آدرسدهی شده، بر روی
.Em value
دادهشده تنظیم میکند.
تنها برنامهریزی بیرونی قطعات مدرن (قطعات دارای رابط UPDI) میتواند
از حافظه io ثبات بخواند و در آن بنویسد، اما از آنجا که آن حافظه فرار است،
محتویات آن پس از بازنشانی (reset) از دست خواهند رفت.
.It Ar include []
گنجاندن محتوای پرونده نامبرده به همان صورتی که تایپ شده باشد. این قابلیت برای
اسکریپتهای دستهای سودمند است، برای نمونه کدهای مقداردهی اولیه تکرارشونده برای فیوزها. گزینه
include با -e خطهای پرونده را پیش از پردازش آنها به صورت یادداشت چاپ میکند؛
در سطوح پرگویی (verbosity) غیر صفر، شماره خطها نیز چاپ میشوند.
.It Ar sig
نمایش بایتهای امضای دستگاه.
.It Ar part
نمایش اطلاعات قطعه کنونی، شامل حالتهای برنامهریزی پشتیبانیشده،
جدولهای حافظه و گونهها (variants). از
.Ar -m
تنها برای چاپ جدول حافظه، و از
.Ar -v
تنها برای چاپ جدول گونهها استفاده کنید.
.It Ar verbose Op Ar level
تغییر (هنگامی که
.Ar level
ارائه شده باشد)، یا نمایش سطح پرگویی (verbosity).
سطح پرگویی اولیه با تعداد گزینههای
.Fl v
دادهشده در خط فرمان کنترل میشود.
.It Ar quell Op Ar level
تغییر (هنگامی که
.Ar level
ارائه شده باشد)، یا نمایش سطح فرونشانی (quell). عدد ۱ برای فرونشاندن گزارشهای پیشرفت به کار میرود.
مقدار ۲ یا بالاتر به عملیات بهمراتب ساکتتر میانجامد.
سطح فرونشانی اولیه با تعداد گزینههای
.Fl q
دادهشده در خط فرمان کنترل میشود.
.It Ar help
ارائه خلاصهای کوتاه و برخط از دستورهای در دسترس.
.It Ar quit
خروج از حالت پایانه و در نتیجه خروج از
.Nm avrdude .
.It Ar !
اجرای پوسته در یک زیرپوسته (subshell)، مانند !ls *.hex. دستورهای زیرپوسته
ادامه خط را به عنوان دستور خود دریافت میکنند. به دلایل امنیتی، آنها باید
صریحاً با قرار دادن
.Pa allow_subshells = yes;
درون پرونده
.Pa ${HOME}/.config/avrdude/avrdude.rc
یا
.Pa ${HOME}/.avrduderc
شما فعال شوند.
.It Ar #
قرار دادن یادداشت در خط پایانه (سودمند برای اسکریپتها).
.El
.Pp
حرفهای d، r، w، q و ? شکل کوتهنوشت dump، read، write، quit و help هستند. به جز
آن، هر کوتهنوشت یکتای دیگری از یک دستور نیز کار میکند. دستور cmd -? جزئیات
بیشتری درباره دستور cmd ارائه میدهد.
.Pp
دستورهای پایانه زیر ممکن است تنها بر روی برخی از برنامهریزهای خاص پیادهسازی شده باشند:
.Bl -tag -offset indent -width indent
.It Ar pgerase memory addr
پاکسازی یک صفحه از حافظه مشخصشده.
.It Ar send b1 b2 b3 b4
ارسال کدهای دستورالعمل خام به دستگاه AVR. اگر به دسترسی به یک
ویژگی از قطعه AVR نیاز دارید که به طور مستقیم توسط
.Nm
پشتیبانی نمیشود، این دستور به شما امکان استفاده از آن را میدهد، حتی اگر
.Nm
آن دستور را پیادهسازی نکرده باشد. هنگام استفاده از حالت مستقیم SPI، تا ۳ بایت
را میتوان نادیده گرفت.
.It Ar spi
ورود به حالت مستقیم SPI. پایه
.Em pgmled
به عنوان انتخاب تراشه (chip select) عمل میکند.
.Em در برنامهریزهای بیتبنگ موازی، و تا حدی توسط USBtiny پشتیبانی میشود.
.It Ar pgm
بازگشت به حالت برنامهریزی (از حالت مستقیم SPI).
.It Ar vtarg voltage
تنظیم ولتاژ تغذیه هدف روی
.Ar voltage
ولت.
.Em در برنامهریزهای STK500 و STK600 پشتیبانی میشود.
.It Ar varef Oo Ar channel Oc Ar voltage
تنظیم منبع ولتاژ متغیر روی
.Ar voltage
ولت.
این ولتاژ معمولاً برای راهاندازی ورودی
.Em Aref
هدف در STK500 به کار میرود.
در Atmel STK600، دو ولتاژ مرجع در دسترس است که
میتوان آنها را با آرگومان اختیاری
.Ar channel
(۰ یا ۱) انتخاب کرد.
.Em در برنامهریزهای STK500 و STK600 پشتیبانی میشود.
.It Ar fosc freq Ns Op M Ns \&| Ns k
تنظیم نوسانساز برنامهریزی روی
.Ar freq
هرتز.
یک حرف پایانی اختیاری
.Ar \&M
در 1E6 ضرب میکند، و یک حرف پایانی
.Ar \&k
در 1E3 ضرب میکند.
.Em در برنامهریزهای STK500 و STK600 پشتیبانی میشود.
.It Ar fosc off
خاموش کردن نوسانساز برنامهریزی.
.Em در برنامهریزهای STK500 و STK600 پشتیبانی میشود.
.It Ar sck period
تنظیم دوره تناوب کلاک SCK بر حسب
.Ar period
میکروثانیه. توجه داشته باشید که برخی برنامهریزهای رسمی Microchip تنظیم
bitclock را ذخیره میکنند و تا زمانی که مقدار متفاوتی ارائه نشود
به استفاده از آن ادامه خواهند داد. برای اطلاعات بیشتر به
.Em -B bitclock
مراجعه کنید.
.It Ar parms
نمایش پارامترهای اختصاصی برنامهریز.
.El
.Ss "اتصالات پیشفرض پایههای درگاه موازی (Default Parallel port pin connections)"
(این اتصالات قابل تغییر هستند، گزینه
.Fl c
را ببینید)
.TS
ll.
\fBشماره پایه (Pin number)\fP \fBعملکرد (Function)\fP
2 - 5 Vcc (منبع تغذیه اختیاری MCU)
7 /RESET (به MCU)
8 SCK (به MCU)
9 SDO (به MCU)
10 SDI (از MCU)
18 - 25 GND
.TE
.Ss "محدودیتهای DebugWIRE (DebugWIRE limitations)"
پروتکل debugWIRE، پروتکل اختصاصی تکسیمه (به همراه زمین) متعلق به شرکت Atmel برای امکانپذیر ساختن شبیهسازی درونمداری قطعات کوچکتر AVR با بهرهگیری از خط
.Ql /RESET
است.
حالت debugWIRE با فعالسازی فیوز
.Ql DWEN
و سپس قطع و وصل تغذیه قطعه هدف آغاز میشود.
در حالی که این حالت عمدتاً برای عیبیابی/شبیهسازی در نظر گرفته شده است، قابلیتهای برنامهریزی محدودی را نیز ارائه میدهد.
در عمل، تنها بخشهای حافظهای که میتوان در این حالت خواند یا برنامهریزی کرد، flash ROM و EEPROM هستند.
همچنین خواندن امضا (signature) امکانپذیر است.
دسترسی به همه بخشهای دیگر حافظه ناممکن است.
هیچ قابلیت
.Em "پاکسازی تراشه (chip erase)"
در حالت debugWIRE وجود ندارد؛ در عوض، هنگام برنامهریزی دوباره flash ROM، هر صفحه از flash ROM درست پیش از بهروزرسانی آن پاک میشود.
این کار بهصورت شفاف توسط JTAG ICE mkII (یا AVR Dragon) انجام میگیرد.
تنها راه بازگشت از حالت debugWIRE، آغاز توالی ویژهای از دستورها به JTAG ICE mkII (یا AVR Dragon) است تا حالت debugWIRE موقتاً غیرفعال گردد و بتوان با استفاده از برنامهریزی عادی ISP به هدف دسترسی یافت.
این توالی بهطور خودکار هنگام استفاده از JTAG ICE mkII یا AVR Dragon در حالت ISP، هنگامی که تشخیص دهند ورود به حالت ISP ممکن نیست، آغاز میشود.
.Ss "ویژگیهای ویژه نسخه ۱ FLIP (FLIP version 1 idiosyncrasies)"
بوتلودرهایی که از نسخه ۱ پروتکل FLIP استفاده میکنند، رفتارهای بسیار ویژهای را بروز میدهند.
.Pp
این بوتلودرها هیچ گزینهای برای دسترسی به بخشهای حافظه به جز Flash و EEPROM ندارند.
.Pp
هنگامی که بوتلودر راهاندازی میشود، وارد یک
.Em "حالت امنیتی (security mode)"
میشود که در آن تنها دسترسی پذیرفتنی، پرسوجوی پارامترهای پیکربندی دستگاه (که برای امضا در قطعات AVR به کار میروند) است.
تنها راه بیرون آمدن از این حالت، یک
.Em "پاکسازی تراشه (chip erase)" .
است.
از آنجا که یک پاکسازی تراشه معمولاً هنگام برنامهریزی دوباره فلش توسط گزینه
.Fl U
به طور ضمنی اعمال میشود، این ویژگی ممکن است بلافاصله چندان آشکار نباشد.
.Pp
گاهی اوقات، به نظر میرسد بوتلودری که حالت امنیتی آن از پیش غیرفعال شده است، دیگر با دادههای پیکربندی معقول پاسخ نمیدهد، بلکه برای تمام پرسوجوها تنها 0xFF بازمیگرداند.
از آنجا که این پرسوجوها برای به دست آوردن معادل یک امضا به کار میروند،
.Nm avrdude
تنها میتواند در آن وضعیت با تحمیل دور زدن بررسی امضا توسط گزینه
.Fl F
ادامه دهد.
.Pp
یک
.Em "پاکسازی تراشه (chip erase)"
ممکن است دستکم در برخی نسخههای بوتلودر، EEPROM را پاکنشده باقی بگذارد.
.Ss "برنامهریزهای پذیرنده پارامترهای گسترشیافته (Programmers accepting extended parameters)"
.Bl -tag -offset indent -width indent
.It Ar dryrun
.It Ar dryboot
dryrun برنامهریزی خارجی را بدون نیاز به اتصال یک برنامهریز یا قطعه شبیهسازی میکند، در حالی که dryboot برنامهریزی بوتلودر را بدون نیاز به اتصال قطعه هدف شبیهسازی مینماید. آنها پارامترهای زیر را میپذیرند:
.Bl -tag -offset indent -width indent
.It Ar init
مقداردهی اولیه حافظهها با الگوهای خوانا برای انسان. حافظه Flash با توجه به بوتلودر، دادهها و طول کد بهطور تصادفی پیکربندی خواهد شد. الگوها را میتوان به بهترین شکل با قلم عرضثابت و قالب :I با بررسی پرونده hex تولیدشده یا با استفاده از مثلاً -U flash:r:-:I دید. الگوها در حافظه flash قابل اجرا هستند و کدهای بیضرر AVR را نشان میدهند، یعنی هیچ دسترسی به حافظه ورودی/خروجی (I/O) ندارند. برای نتایج تکرارپذیر، یک seed ثابت برگزینید.
.It Ar init=
میانبری برای -x init -x seed= (پایین را ببینید)
.It Ar random
مقداردهی اولیه حافظهها با کدها و مقادیر تصادفی. حافظه Flash با توجه به بوتلودر، دادهها و طول کد بهطور تصادفی پیکربندی خواهد شد. کد تصادفی در flash بیضرر خواهد بود، یعنی به حافظههای I/O، SRAM یا flash دسترسی نخواهد داشت. برای نتایج تکرارپذیر، یک seed ثابت برگزینید.
.It Ar random=
میانبری برای -x random -x seed=
.It Ar seed=
تخمگذاری مولد اعداد تصادفی با ؛ مقدار پیشفرض time(NULL) است. تنظیم این گزینه با یک n > 0 ثابت، گزینشهای تصادفی را تکرارپذیر میسازد، یعنی بین اجراهای گوناگون avrdude یکسان خواهند ماند.
.It Ar help
نمایش منوی راهنما و خروج.
.El
.It Ar JTAG ICE mkII
.It Ar JTAGICE3
.It Ar Atmel-ICE
.It Ar Power Debugger
.It Ar PICkit 4
.It Ar MPLAB SNAP
.It Ar AVR Dragon
هنگام استفاده از JTAG ICE mkII، JTAGICE3، Atmel-ICE، PICkit 4، MPLAB SNAP، Power Debugger یا AVR Dragon در حالت JTAG، پارامتر گسترشیافته زیر پذیرفته میشود:
.Bl -tag -offset indent -width indent
.It Ar jtagchain=UB,UA,BB,BA
راهاندازی زنجیره پویش JTAG به ترتیب برای
.Ar UB
واحد پیش از،
.Ar UA
واحد پس از،
.Ar BB
بیت پیش از، و
.Ar BA
بیت پس از AVR هدف.
هر واحد AVR درون زنجیره به اندازه ۴ بیت جابهجا (shift) میشود.
دیگر واحدهای JTAG ممکن است به تعداد شیفت بیتی متفاوتی نیاز داشته باشند.
.It Ar hvupdi
.Nm تنها Power Debugger و PICkit 4
.sp 0.5
برنامهریزی UPDI ولتاژ بالا برای فعالسازی پایه UPDI که پیشتر در حالت RESET یا GPIO تنظیم شده است، به کار میرود. از
.Ar -x hvupdi
برای فعالسازی مقداردهی اولیه UPDI ولتاژ بالا در اهدافی که از آن پشتیبانی میکنند، بهره بگیرید.
.It Ar vtarg
خواندن ولتاژ هدف.
.It Ar vtarg=VALUE
.Nm تنها Power Debugger
.sp 0.5
مولد ولتاژ را میتوان با تنظیم یک ولتاژ هدف فعال کرد.
.It Ar help
نمایش منوی راهنما و خروج.
.El
.It Ar PICkit 4
.It Ar MPLAB SNAP
.Bl -tag -offset indent -width indent
.It Ar mode=avr
تغییر برنامهریز به حالت AVR، سپس خروج در صورتی که هماکنون در حالت AVR نباشد
.It Ar mode=
تغییر برنامهریز به حالت MPLAB یا همان حالت PIC، سپس خروج
.Pp
برنامهریزهای PICkit 4 و MPLAB SNAP تنها زمانی میتوانند توسط
.Nm avrdude
به کار گرفته شوند که در حالت AVR باشند. از
.Ar -x mode=avr
برای تغییر به حالت AVR، یا از
.Ar -x mode=mplab
برای تغییر (بازگشت) به حالت MPLAB بهره بگیرید.
.It Ar vtarg
خواندن ولتاژ هدف.
.It Ar help
نمایش منوی راهنما و خروج.
.El
.It Ar PICkit 5
.It Ar PICkit 4 (PIC mode)
.Bl -tag -offset indent -width indent
.It Ar vtarg
خواندن ولتاژ هدف.
.It Ar vtarg=
تعیین ولتاژی میان ۱.۸ و ۵.۵ ولت که برنامهریز باید برای هدف تامین کند. اگر پیشتر ولتاژ معتبری به پایه VTG اعمال شده باشد، این تنظیم نادیده گرفته خواهد شد. هنگامی که AVRDUDE ولتاژ خارجی بیرون از این محدوده را تشخیص دهد، عملیات را پایان میدهد. میتوانید این بررسی را با تنظیم ولتاژ روی 0 V غیرفعال کنید. اگر قطعهای از نوع XMEGA انتخاب شده باشد، ولتاژ درخواستی بالاتر از ۳.۴۹ ولت به لغو عملیات خواهد انجامید.
.It Ar hvupdi
برنامهریزی UPDI ولتاژ بالا برای فعالسازی پایه UPDI که پیشتر در حالت RESET یا GPIO تنظیم شده است، به کار میرود. برای فعالسازی مقداردهی اولیه UPDI ولتاژ بالا در اهداف پشتیبانیشده از -x hvupdi بهره بگیرید. بسته به هدف، پالس HV یا روی پایه RST یا روی پایه UPDI اعمال خواهد شد.
.It Ar help
نمایش منوی راهنما و خروج.
.El
.It Ar Xplained Mini (ISP and UPDI)
.Bl -tag -offset indent -width indent
.It Ar suffer=VALUE, suffer
ثبات SUFFER به کاربر اجازه میدهد تا رفتار mEDBG روی برد را تغییر دهد. وضعیت کنونی را میتوان تنها با
.Ar -x suffer
خواند.
.Bl -tag -offset indent -width indent
.It Bit 7 ARDUINO:
افزودن کنترل LEDهای اضافه هنگامی که روی ۰ تنظیم شود
.It Bit 6..3:
رزروشده (باید روی ۱ تنظیم شود)
.It Bit 2 EOF:
کاهش توان مصرفی تهاجمی، رفتن به حالت خواب پس از ۵ ثانیه در صورت عدم شناسایی در USB هنگامی که روی ۰ تنظیم شود
.It Bit 1 LOWP:
اجبار اجرای mEDBG روی ۱ مگاهرتز هنگامی که بیت روی ۰ تنظیم شود
.It Bit 0 FUSE:
هنگامی که این بیت روی ۱ تنظیم شود، فیوزها با نقاب ایمن محافظت میشوند. هنگامی که روی ۰ تنظیم شود، فیوزها محافظتنشده هستند.
.El
.El
.Pp
.Bl -tag -offset indent -width indent
.It Ar vtarg_switch=VALUE, vtarg_switch
کلید ولتاژ هدف بر روی برد را میتوان با نوشتن یک ۱ یا یک ۰ روشن یا خاموش کرد. وضعیت کنونی را میتوان تنها با
.Ar -x vtarg_switch
خواند.
توجه داشته باشید که کلید تغذیه هدف همواره پس از چرخه قطع و وصل برق روشن خواهد بود.
همچنین توجه داشته باشید که بردهای کوچکتر Xplained Nano فاقد کلید تغذیه هدف هستند.
.It Ar help
نمایش منوی راهنما و خروج.
.El
.It Ar Curiosity Nano
.Bl -tag -offset indent -width indent
.It Ar vtarg=VALUE, vtarg
ولتاژ هدف تولیدشده بر روی برد را میتوان با مشخص کردن یک ولتاژ تازه تغییر داد.
ولتاژ تنظیمشده کنونی را میتوان تنها با
.Ar -x vtarg
خواند.
.It Ar help
نمایش منوی راهنما و خروج.
.El
.It Ar STK500
.It Ar STK600
.Bl -tag -offset indent -width indent
.It Ar vtarg=VALUE, vtarg
ولتاژ هدف تولیدشده بر روی برد را میتوان با مشخص کردن یک ولتاژ تازه تغییر داد.
ولتاژ تنظیمشده کنونی را میتوان تنها با
.Ar -x vtarg
خواند.
.It Ar fosc=VALUE[MHz|M|kHz|k|Hz|H], fosc
تنظیم بسامد نوسانساز برنامهپذیر. بسامد کنونی را میتوان تنها با
.Ar -x fosc
خواند.
.It Ar varef=VALUE, varef
ولتاژ مرجع قیاسی تولیدشده بر روی برد را میتوان با مشخص کردن یک ولتاژ مرجع تازه تغییر داد. ولتاژ مرجع کنونی را میتوان تنها با
.Ar -x varef
خواند.
.It Ar varef[0,1]=VALUE, varef[0,1]
.Nm تنها STK600
.sp 0.5
ولتاژ مرجع قیاسی تولیدشده بر روی برد برای کانال ۰ یا کانال ۱ را میتوان با مشخص کردن یک ولتاژ مرجع تازه تغییر داد.
ولتاژ مرجع کنونی را میتوان تنها با
.Ar -x varef0
یا
.Ar -x varef1
خواند.
.It Ar attemps[=<1..99>]
.Nm تنها STK500V1
.sp 0.5
مشخص کردن تعداد تلاشهای مجدد اتصال پیش از خروج.
در صورت عدم تعیین، پیشفرض ۱۰ است.
.It Ar xtal=VALUE[MHz|M|kHz|k|Hz|H]
بسامد XTAL برنامهریز را در صورتی که با ۷.۳۷۲۸ مگاهرتز STK500 اصلی تفاوت داشته باشد، تعیین میکند. توسط avrdude برای محاسبه درست fosc و sck به کار میرود.
.It Ar help
نمایش منوی راهنما و خروج.
.El
.It Ar AVR109
.Bl -tag -offset indent -width indent
.It Ar autoreset
تغییر وضعیت خطوط RTS/DTR هنگام باز کردن درگاه برای اعمال بازنشانی سختافزاری.
.It Ar help
نمایش منوی راهنما و خروج.
.El
.It Ar AVR910
.Bl -tag -offset indent -width indent
.It Ar devcode=VALUE
بازنویسی انتخاب کد دستگاه با بهکارگیری
.Ar VALUE
به عنوان کد دستگاه.
از برنامهریز برای دریافت فهرست کدهای دستگاه پشتیبانیشده پرسوجو نمیشود و
.Ar VALUE
مشخصشده اعتبارسنجی نمیشود بلکه مستقیماً در دستور
.Ql T
که به برنامهریز فرستاده میشود استفاده میگردد.
.Ar VALUE
را میتوان با نمادگذاری عددی مرسوم در زبان برنامهنویسی C مشخص کرد.
.El
.Bl -tag -offset indent -width indent
.It Ar no_blockmode
بررسی پیشفرض برای قابلیت انتقال بلوکی را غیرفعال میکند.
تنها در صورتی از
.Ar no_blockmode
استفاده کنید که برنامهریز
.Ar AVR910
شما در طول توالی آغازین خطا تولید میکند.
.It Ar help
نمایش منوی راهنما و خروج.
.El
.It Ar Arduino
.Bl -tag -offset indent -width indent
.It Ar attemps[=<1..99>]
مشخص کردن تعداد تلاشهای مجدد اتصال پیش از خروج.
در صورت عدم تعیین، پیشفرض ۱۰ است.
.It Ar noautoreset
خطوط RTS/DTR را هنگام باز کردن درگاه تغییر وضعیت نمیدهد تا از بازنشانی سختافزاری جلوگیری شود.
.It Ar help
نمایش منوی راهنما و خروج.
.El
.It Ar Urclock
.Bl -tag -offset indent -width indent
.It Ar showall
نمایش تمام اطلاعات مربوط به قطعه متصلشده و سپس خروج. گزینههای -x show...
در زیر میتوانند برای سرهمکردن پاسخی سفارشی شامل زیرمجموعهای
(یا تنها یک مورد) از تمام اطلاعات مرتبط موجود درباره
قطعه و بوتلودر متصل استفاده شوند.
.It Ar showid
نمایش شناسه یکتای Urclock ذخیرهشده در حافظه فلش یا EEPROM میکروکنترلر و سپس خروج.
.It Ar id=..
از نظر تاریخی، شناسه Urclock یک عدد ششبایتی یکتا با ترتیب بایت کمارزش (little-endian) بود
که در بردهای Urclock در نشانی ۲۵۷ حافظه EEPROM ذخیره میشد. محل این
عدد را میتوان با پارامتر گسترشیافته -x id=.. تعیین کرد. E
نشاندهنده EEPROM و F نشاندهنده فلش است. نشانی منفی addr به ترتیب از
انتهای EEPROM و فلش شمرده میشود. طول len مربوط به شناسه
Urclock میتواند بین ۱ تا ۸ بایت باشد.
.It Ar showdate
نمایش تاریخ واپسین تغییر فایل ورودی برای برنامه فلش و سپس خروج. اگر فایل ورودی stdin بوده باشد، تاریخ همان زمان برنامهریزی خواهد بود. تاریخ و نام فایل بخشی از فرادادهای هستند که برنامهریز urclock بهطور پیشفرض در بخش بالای حافظه فلش درست زیر بوتلودر ذخیره میکند؛ همچنین -x nometadata را ببینید.
.It Ar showfilename
نمایش نام فایل ورودی (یا عنوان) واپسین نشست نوشتن فلش و سپس خروج.
.It Ar title=
در صورت تعیین، به جای نام فایل ورودی استفاده خواهد شد. بیشینه
طول رشته برای فیلد عنوان/نامفایل، ۲۵۴ بایت شامل نویسه پایانی تهی (nul) است.
.It Ar showapp
نمایش اندازه برنامه نوشتهشده روی حافظه و سپس خروج.
.It Ar showstore
نمایش اندازه فلش استفادهنشده میان برنامه و فراداده و سپس خروج.
.It Ar showmeta
نمایش اندازه فراداده درست در زیر بوتلودر و سپس خروج.
.It Ar showboot
نمایش اندازه بوتلودر و سپس خروج.
.It Ar showversion
نمایش نسخه و قابلیتهای بوتلودر و سپس خروج.
.It Ar showvector
نمایش شماره بردار و نام بردار جدول وقفه که توسط
بوتلودر برای آغاز اجرای برنامه استفاده میشود و سپس خروج. برای بوتلودرهای
دارای پشتیبانی سختافزاری این بردار ۰ (Reset) خواهد بود، و برای بوتلودرهای برداری
هر شماره بردار دیگری از جدول بردار وقفه یا شکاف
درست پشت جدول بردار با نام VBL_ADDITIONAL_VECTOR خواهد بود.
.It Ar showpart
نمایش قطعهای که بوتلودر برای آن همگردانی شده است و سپس خروج.
.It Ar bootsize=
بازنویسی دستی اندازه بوتلودر. بوتلودرهای Urboot شمار
صفحههای استفادهشده بوتلودر را در جدولی در بالای بخش بوتلودر،
یعنی معمولاً بالای حافظه فلش قرار میدهند، تا برنامهریز urclock بتواند خود اندازه
بوتلودر را بیابد. در حالت سازگاری با گذشته، هنگام برنامهریزی
از طریق دیگر بوتلودرها، این گزینه میتواند برای اطلاعدادن اندازه و در نتیجه
محل بوتلودر به برنامهریز استفاده شود.
.It Ar vectornum=
بازنویسی دستی شماره بردار. بوتلودرهای Urboot شماره بردار
استفادهشده توسط یک بوتلودر برداری را در جدولی در بالای حافظه فلش قرار میدهند،
بنابراین این گزینه بهطور معمول برای بوتلودرهای urboot نیاز نیست. با این حال،
در حالت سازگاری با گذشته (یا هنگامی که بوتلودر urboot امکان خواندن فلش
را ارائه نمیدهد) مفید است. مشخص کردن شماره بردار در این شرایط بیانگر
یک بوتلودر برداری است در حالی که فرض پیشفرض یک بوتلودر دارای
پشتیبانی سختافزاری خواهد بود.
.It Ar eepromrw
بازنویسی دستی برای تأیید قابلیت خواندن/نوشتن EEPROM. معمولاً
برای بوتلودرهای urboot مورد نیاز نیست، اما در حالت سازگاری با گذشته
اگر بوتلودر امکان خواندن/نوشتن EEPROM را ارائه دهد مفید است.
.It Ar emulate_ce
اگر یک بوتلودر urboot دستور پاکسازی تراشه (chip erase) را ارائه ندهد، در طول
دستتکانی این موضوع را به برنامهریز urclock اعلام میکند. در این حالت برنامهریز
urclock در صورتی که گزینههای خط فرمان کاربر اقتضا کند، با پر کردن باقیمانده
فلش استفادهنشده زیر بوتلودر با 0xff، پاکسازی تراشه را شبیهسازی میکند.
اگر این گزینه مشخص شود، برنامهریز urclock فرض خواهد کرد که بوتلودر
نمیتواند خود تراشه را پاک کند. این گزینه برای بوتلودرهای سازگار با گذشته
که پاکسازی تراشه را پیادهسازی نکردهاند مفید است.
.It Ar restore
نوشتن فایلهای ورودی دستنخورده فلش و در صورت نیاز پیرایش زیر بوتلودر.
این گزینه بیش از همه زمانی کاربرد دارد که نسخهای پشتیبان از تمام فلش در دست است و
کاربر میخواهد آن را دوباره روی دستگاه بازنشانی کند. در این حالت هیچ فرادادهای
نوشته نمیشود و در صورت برداری بودن بوتلودر هیچ وصلهکاری برداری نیز صورت نمیگیرد.
با این حال، برای بوتلودرهای برداری، حتی تحت گزینه -x restore نیز
یک فایل ورودی بر روی AVR که بردار بازنشانی آن به بوتلودر برداری اشاره نمیکند
نوشته نخواهد شد. این به منظور جلوگیری از نوشتن فایل ورودی بر روی دستگاهی
است که موجب از کار افتادن بوتلودر برداری میشود، زیرا پس از بازنشانی در دسترس
نخواهد بود.
.It Ar initstore
هنگام نوشتن روی فلش، فضای ذخیرهسازی میان برنامه فلش و
بخش فراداده را با 0xff پر میکند.
.It Ar nofilename
هنگام نوشتن روی فلش، نام فایل ورودی برنامه (یا عنوان) را ذخیره نمیکند.
.It Ar nodate
هنگام نوشتن روی فلش، نه نام فایل ورودی برنامه (یا عنوان)
و نه تاریخ را ذخیره نمیکند.
.It Ar nostore
هنگام نوشتن روی فلش، فراداده را ذخیره نمیکند به جز بایت کد فراداده
0xff که بیانگر نبود فراداده است. بهویژه، هیچ چارچوب ذخیره دادهای
برنامهریزی نمیشود.
.It Ar noautoreset
هنگام باز کردن درگاه، خطوط RTS/DTR تغییر وضعیت داده نمیشوند تا از بازنشانی سختافزاری جلوگیری شود.
.It Ar nometadata
از هیچ فرادادهای پشتیبانی نمیکند. تمام حافظه فلش به جز بوتلودر در دسترس برنامه کاربردی قرار میگیرد. اگر برنامه کوچکتر از فضای موجود باشد، با این حال بایت کد فراداده 0xff ذخیره میشود تا نشان دهد فراداده بیشتری در دسترس نیست. در صورت عدم وجود
-x nometadata،
حالت پیشفرض برای برنامهریز urclock نوشتن بیشترین مقدار فراداده (نام پرونده، داده و اطلاعات ذخیرهسازی) تا اندازهای است که حجم برنامه و سایر گزینههای توسعهیافته اجازه میدهند. تفاوت ظریف میان
-x nometadata
و
-x nostore
در این است که مورد دوم همواره به صراحت در فلش ذخیره میکند که هیچ فراداده دیگری در دسترس نیست، به گونهای که چنین فلش آمادهشدهای را همواره میتوان با
.Nm
-x showall
پرسوجو کرد. در مقابل، نمیتوان تضمین کرد که پرسوجوی -x showall بر روی فلش آمادهشده با -x nometadata نتایج مفیدی به بار آورد.
.It Ar delay=
یک درنگ به میزان میلیثانیه پس از بازنشانی اضافه میکند. این میتواند زمانی مفید باشد که یک برد برای خروج از بازنشانی بیرونی به زمان بهویژه طولانی نیاز دارد. میتواند منفی باشد، که در این صورت درنگ پیشفرض ۱۲۰ میلیثانیه پس از صدور بازنشانی، به همان نسبت کوتاه میشود.
.It Ar strict
برنامهریز Urclock راهبردی سریعتر، اما کمی متفاوت با -c arduino برای همگامسازی با بوتلودر دارد؛ برخی بوتلودرهای stk500v1 نمیتوانند با این روش هماهنگ شوند و به گزینه -x strict نیاز دارند.
.It Ar help
منوی راهنما را نشان داده و خارج میشود.
.El
.It Ar buspirate
.Bl -tag -offset indent -width indent
.It Ar reset=cs,aux,aux2
پیکربندی پیشفرض فرض میکند که پایه خروجی CS از BusPirate به پایه RESET در سمت AVR متصل است. با این حال، امکان اتصال چندین AVR به یک BP یکسان با خطوط مشترک SDI، SDO و SCK برای همگی آنها وجود دارد. در چنین حالتی، پایه RESET یکی از AVRها باید به پایه
.Pa CS
دستگاه BusPirate متصل شود، پایه RESET مربوط به AVR دوم به پایه
.Pa AUX
دستگاه BusPirate وصل شود و اگر BusPirate شما دارای پایه
.Pa AUX2
باشد (تنها در BusPirate نسخه v1a با سفتافزار ۳.۰ یا جدیدتر موجود است) از آن برای فعالسازی RESET روی سومین AVR استفاده شود.
.Pp
شاید ایده خوبی باشد که با استفاده از یک بافر گذرگاه سهحالته (3-state bus buffer)، گذرگاههای SPI دستگاه BusPirate و AVR را از یکدیگر جداسازی کنید. برای نمونه 74HC125 یا 74HC244 گزینههای مناسبی هستند که لچهای آنها توسط پایه بازنشانی مربوطه (cs، aux یا aux2) راهاندازی میشوند. در غیر این صورت، ترافیک SPI در یک مدار فعال ممکن است با برنامهریزی AVR در مدار دیگر تداخل ایجاد کند.
.It Ar spifreq=<0..7>
سرعت SPI برای حالت باینری SPI در Bus Pirate:
.Bd -literal
0 .. 30 kHz (پیشفرض)
1 .. 125 kHz
2 .. 250 kHz
3 .. 1 MHz
4 .. 2 MHz
5 .. 2.6 MHz
6 .. 4 MHz
7 .. 8 MHz
.Ed
.It Ar rawfreq=<0..3>
سرعت SPI را تنظیم میکند و از حالت باینری "raw-wire" در Bus Pirate بهره میبرد:
.Bd -literal
0 .. 5 kHz
1 .. 50 kHz
2 .. 100 kHz (تنها سفتافزار +v4.2)
3 .. 400 kHz (v4.2+)
.Ed
.Pp
تنها مزیت حالت "raw-wire" بسامدهای متفاوت SPI در دسترس است. نوشتن صفحهای در این حالت پیادهسازی نشده است.
.It Ar ascii
تلاش برای استفاده از حالت ASCII حتی زمانی که سفتافزار از BinMode (حالت باینری) پشتیبانی میکند.
BinMode در سفتافزار ۲.۷ و جدیدتر پشتیبانی میشود؛ سفتافزارهای قدیمیتر یا فاقد BinMode هستند یا BinMode آنها اشکال دارد. حالت ASCII کندتر است و پارامترهای بالا یعنی
.Ar reset= , spifreq=
و
.Ar rawfreq=
را غیرقابل دسترس میکند. آگاه باشید که عملکرد حالت ASCII با نسخههای جدیدتر سفتافزار تضمین نمیشود، و تنها برای حفظ سازگاری با نسخههای قدیمی سفتافزار نگه داشته شده است.
.It Ar nopagedwrite
نسخههای سفتافزار ۵.۱۰ و جدیدتر از یک دستور باینری SPI پشتیبانی میکنند که نوشتن همزمان کل صفحات در حافظه فلش AVR را امکانپذیر میسازد، که به افزایش چشمگیر سرعت نوشتن میانجامد. اگر استفاده از این حالت به هر دلیلی مطلوب نباشد، این گزینه آن را غیرفعال میکند.
.It Ar nopagedread
نسخههای جدیدتر سفتافزار در دستور حالت باینری SPI از برخی دستورهای توسعهیافته AVR پشتیبانی میکنند. استفاده از "Bulk Memory Read from Flash" به افزایش چشمگیر سرعت خواندن میانجامد. اگر استفاده از این حالت به هر دلیلی مطلوب نباشد، این گزینه آن را غیرفعال میکند.
.It Ar cpufreq=<125..4000>
این گزینه پایه AUX را طوری تنظیم میکند که بسامدی برابر با
.Ar n
کیلوهرتز تولید کند. با اتصال پایه AUX به پایه XTAL1 میکروکنترلر، میتوانید کلاک آن را فراهم کنید؛ برای نمونه زمانی که به دلیل تنظیمات نادرست فیوزها به یک کلاک خارجی نیاز دارد. اطمینان حاصل کنید که بسامد CPU دستکم چهار برابر بسامد SPI باشد.
.It Ar serial_recv_timeout=<1...>
مهلت زمانی دریافت سریال را روی مقدار ارائهشده تنظیم میکند.
این مهلت زمانی هر بار که avrdude در انتظار اعلان (prompt) دستگاه BusPirate میماند رخ میدهد. بهویژه در حالت ascii این اتفاق بسیار مکرر میافتد، بنابراین تعیین یک مقدار کوچکتر میتواند سرعت برنامهریزی را بسیار افزایش دهد. مقدار پیشفرض ۱۰۰ میلیثانیه است. استفاده از ۱۰ میلیثانیه در بیشتر موارد ممکن است کارساز باشد.
.It Ar help
منوی راهنما را نشان داده و خارج میشود.
.El
.It Ar Micronucleus bootloader
.Bl -tag -offset indent -width indent
.It Ar wait[=]
اگر دستگاه متصل نباشد، منتظر وصل شدن دستگاه میماند. مقدار اختیاری
.Ar timeout
مهلت زمانی اتصال را بر حسب ثانیه مشخص میکند.
اگر هیچ مهلت زمانی تعیین نشود، AVRDUDE تا زمان وصل شدن دستگاه به صورت نامحدود در انتظار خواهد ماند.
.It Ar help
منوی راهنما را نشان داده و خارج میشود.
.El
.It Ar Teensy bootloader
.Bl -tag -offset indent -width indent
.It Ar wait[=]
اگر دستگاه متصل نباشد، منتظر وصل شدن دستگاه میماند. مقدار اختیاری
.Ar timeout
مهلت زمانی اتصال را بر حسب ثانیه مشخص میکند.
اگر هیچ مهلت زمانی تعیین نشود، AVRDUDE تا زمان وصل شدن دستگاه به صورت نامحدود در انتظار خواهد ماند.
.It Ar help
منوی راهنما را نشان داده و خارج میشود.
.El
.It Ar Wiring
هنگام استفاده از نوع برنامهریز Wiring، پارامترهای اختیاری توسعهیافته زیر پذیرفته میشوند:
.Bl -tag -offset indent -width indent
.It Ar snooze=
پس از انجام مرحله باز کردن درگاه، AVRDUDE به مدت
.Ar snooze
میلیثانیه پیش از ادامه به مرحله همگامسازی پروتکل درنگ/چرت (snooze) میکند. اگر
.Ar snooze
بزرگتر از ۰ باشد، هیچ تغییر وضعیتی روی خطوط DTR/RTS انجام نمیشود.
.It Ar delay=
یک درنگ به میزان میلیثانیه پس از بازنشانی قطعه از طریق تغییر وضعیت خطوط DTR/RTS اضافه میکند. این میتواند زمانی مفید باشد که یک برد برای خروج از بازنشانی بیرونی به زمان بهویژه طولانی نیاز دارد. میتواند منفی باشد، که در این صورت درنگ پیشفرض ۱۰۰ میلیثانیه پس از صدور بازنشانی، به همان نسبت کوتاه خواهد شد.
.It Ar noautoreset
هنگام باز کردن درگاه، خطوط RTS/DTR تغییر وضعیت داده نمیشوند تا از بازنشانی سختافزاری جلوگیری شود.
.It Ar help
منوی راهنما را نشان داده و خارج میشود.
.El
.It Ar PICkit2
اتصال به برنامهریز PICkit2:
.Bd -literal
(AVR) (PICkit2)
RST - VPP/MCLR (1)
VDD - VDD Target (2) -- در صورت تغذیه مستقل AVR احتمالاً اختیاری است
GND - GND (3)
SDI - PGD (4)
SCLK - PDC (5)
SDO - AUX (6)
.Ed
.Bl -tag -offset indent -width indent
.It Ar clockrate=
نرخ کلاکگذاری SPI را بر حسب هرتز تنظیم میکند (پیشفرض ۱۰۰ کیلوهرتز است). به عنوان جایگزین میتوان از گزینههای -B یا -i برای تنظیم دوره تناوب استفاده کرد.
.It Ar timeout=
مهلت زمانی خواندن و نوشتنهای USB را بر حسب میلیثانیه تنظیم میکند (پیشفرض ۱۵۰۰ میلیثانیه است).
.It Ar help
منوی راهنما را نشان داده و خارج میشود.
.El
.It Ar USBasp
.Bl -tag -offset indent -width indent
.It Ar section_config
برنامهریز با گزینه
.Fl e
(پاکسازی تراشه / chip erase)، به جای کل تراشه تنها بخش پیکربندی را پاک خواهد کرد.
تنها برای دستگاههای TPI (شامل ATtiny 4/5/9/10/20/40) کاربرد دارد.
.It Ar help
منوی راهنما را نشان داده و خارج میشود.
.El
.It Ar xbee
.Bl -tag -offset indent -width indent
.It Ar xbeeresetpin=<1..7>
پایه DIO<1..7> ماژول XBee را که به خط
.Ql /RESET
میکروکنترلر متصل است انتخاب میکند. برنامهریز باید بداند برای بازنشانی به بوتلودر از کدام پایه DIO استفاده کند. مقدار پیشفرض (3) پایه DIO3 (پایه ۱۷ از XBee) است، اما برخی محصولات تجاری از پایه متفاوتی از XBee استفاده میکنند.
.Pp
دو اتصال ضروری باقیمانده میان XBee و میکروکنترلر قابل انتخاب نیستند - پایه DOUT ماژول XBee (پایه ۲) باید به خط
.Ql RXD
میکروکنترلر، و پایه DIN ماژول XBee (پایه ۳) باید به خط
.Ql TXD
میکروکنترلر متصل شود.
.It Ar help
منوی راهنما را نشان داده و خارج میشود.
.El
.It Ar jtag2updi
.It Ar serialupdi
.Bl -tag -offset indent -width indent
.It Ar rtsdtr=low,high
خطوط RTS/DTR را مجبور میسازد تا در سراسر نشست برنامهریزی وضعیت low یا high
به خود بگیرند. برخی برنامهریزها ممکن است از این سیگنال برای نشان دادن
وضعیت برنامهریزی UPDI بهره ببرند، اما این امر کاملاً وابسته به
سختافزار است.
.Pp
در صورت تعیین نشدن، مقدار پیشفرض راهانداز/سیستمعامل استفاده خواهد شد.
.It Ar help
نمایش منوی راهنما و خروج.
.El
.It Ar linuxspi
.Bl -tag -offset indent -width indent
.It Ar disable_no_cs
اطمینان حاصل میکند که برنامهریز از بیت SPI_NO_CS برای راهانداز SPI
استفاده نکند. این پارامتر برای هستههایی سودمند است که از مدیریت خط CS در
بیرون از برنامه کاربردی پشتیبانی نمیکنند.
.It Ar help
نمایش منوی راهنما و خروج.
.El
.It Ar serprog
.Bl -tag -offset indent -width indent
.It Ar cs
خط انتخاب تراشه (CS) مورد استفاده را در برنامهریزهای پشتیبانیشده تنظیم میکند.
برنامهریزهایی که از فرمان 0x16 serprog پشتیبانی میکنند، میتوانند پایههای CS بیشتری نسبت به مقدار پیشفرض (0) داشته باشند.
این گزینه امکان انتخاب این پایههای CS اضافی (۱، ۲، ...) را برای برنامهریزی AVR فراهم میسازد.
.It Ar help
نمایش منوی راهنما و خروج.
.El
.El
.Ss "برنامهریزهایی که پارامتر exitspec را میپذیرند (Programmers accepting exitspec parameter)"
در حال حاضر، تنها برنامهریزهای flip2، linuxspi، linuxgpio، raspberry_pi_gpio،
pickit4_mplab، pickit5 و برنامهریزهای درگاه موازی سنتی مانند
stk200 و dapa از پارامتر exitspec پشتیبانی میکنند.
این پارامتر به کاربر امکان میدهد وضعیت پایههای برنامهریز را پس از پایان نشست برنامهریزی تعیین کند.
چندین گزینه exitspec را میتوان با ویرگول از یکدیگر جدا کرد.
.Bl -tag -offset indent -width indent
.It Ar flip2
.It Ar linuxspi
.It Ar linuxgpio
.It Ar raspberry_pi_gpio
.It "برنامهریزهای درگاه موازی (Parallel port programmers)"
.Bl -tag -offset indent -width indent
.It Ar help
نمایش منوی راهنما و خروج.
.It Ar reset
سیگنال
.Ql /RESET
هنگام خروج از برنامه فعال باقی خواهد ماند، بدین معنا که در وضعیت
.Em low
نگه داشته میشود تا MCU پس از آن در وضعیت ریست بماند. به ویژه توجه داشته باشید
که الگوریتم برنامهریزی برای قطعه AT90S1200 الزام میکند که سیگنال
.Ql /RESET
.Em پیش از
برقرسانی به MCU فعال باشد؛ بنابراین در صورتی که برای این نوع MCU از یک منبع تغذیه خارجی
استفاده شود، فراخوانی قبلی
.Nm
با تعیین این گزینه، یکی از راههای ممکن برای تضمین این شرایط است.
.It Ar noreset
خط
.Ql /RESET
هنگام خروج از برنامه غیرفعال خواهد شد و بدین ترتیب به برنامه موجود در MCU مقصد اجازه میدهد
در حالی که سختافزار برنامهریزی متصل باقی مانده است، اجرا شود.
.El
.It "برنامهریزهای درگاه موازی (Parallel port programmers)"
.Bl -tag -offset indent -width indent
.It Ar vcc
این گزینه آن دسته از پایههای درگاه موازی را فعال باقی میگذارد
.Pq یعنی Em high
که میتوانند برای تأمین توان
.Ql Vcc
میکروکنترلر (MCU) استفاده شوند.
.It Ar novcc
این گزینه پایههای
.Ql Vcc
درگاه موازی را هنگام خروج از برنامه در وضعیت پایین (pull down) قرار میدهد.
.It Ar d_high
این گزینه ۸ پایه داده روی درگاه موازی را فعال باقی میگذارد.
.Pq یعنی Em high
.It Ar d_low
این گزینه ۸ پایه داده روی درگاه موازی را غیرفعال میکند.
.Pq یعنی Em low
.El
.It Ar Pickit 4 (MPLAB)
.It Ar Pickit 5
.Bl -tag -offset indent -width indent
.It Ar vcc
این گزینه منبع تغذیه ارائهشده از سوی برنامهریز را پس از پایان عملیات avrdude فعال باقی میگذارد. به طور پیشفرض غیرفعال است.
.El
.El
.Sh "پروندهها (FILES)"
.Bl -tag -offset indent -width /dev/ppi0XXX
.It Pa /dev/ppi0
دستگاه پیشفرض مورد استفاده برای برقراری ارتباط با سختافزار
برنامهریزی
.It Pa avrdude.conf
پرونده پیکربندی برنامهریز و قطعات
.Pp
در سامانههای ویندوز (Windows)، این پرونده در همان پوشه پرونده اجرایی
جستجو میشود.
در تمامی سامانههای دیگر، این پرونده نخست در مسیر
.Pa ../etc/
نسبت به مسیر پرونده اجرایی، سپس در همان پوشه خود پرونده اجرایی،
و در پایان در مکان پیشفرض سامانه
.Pa ${PREFIX}/etc/avrdude.conf
جستجو میشود.
.It Pa ${XDG_CONFIG_HOME}/avrdude/avrdude.rc
پرونده محلی پیکربندی برنامهریز و قطعات (تنظیمات اختصاصی کاربر)؛ این پرونده از همان نحو
.Pa avrdude.conf
پیروی میکند. اگر متغیر محیطی
.Pa ${XDG_CONFIG_HOME}
تنظیم نشده یا خالی باشد، پوشه
.Pa ${HOME}/.config/
به جای آن استفاده میشود.
.It Pa ${HOME}/.avrduderc
مکان جایگزین پرونده پیکربندی کاربر در صورتی که پرونده بالا موجود نباشد
.It Pa ~/.inputrc
پرونده مقداردهی اولیه برای کتابخانه
.Xr readline 3
.It Pa /share/doc/avrdude/avrdude.pdf
راهنمای کاربر
.El
.\" .Sh "نمونهها (EXAMPLES)"
.Sh "پیامهای تشخیصی (DIAGNOSTICS)"
.Bd -literal
avrdude: jtagmkII_setparm(): bad response to set parameter command: RSP_FAILED
avrdude: jtagmkII_getsync(): ISP activation failed, trying debugWIRE
avrdude: Target prepared for ISP, signed off.
avrdude: Please restart avrdude without power-cycling the target.
.Ed
.Pp
اگر AVR هدف برای حالت debugWIRE تنظیم شده باشد (یعنی فیوز
.Em DWEN
برنامهریزی شده باشد)، تلاشهای عادی برای اتصال ISP با شکست مواجه خواهند شد زیرا پایه
.Em /RESET
در دسترس نیست.
هنگام استفاده از JTAG ICE mkII در حالت ISP، پیام نشاندادهشده بیانگر آن است که
.Nm
این وضعیت را حدس زده و تلاش کرده است یک بازنشانی debugWIRE را روی هدف اعمال کند.
در صورت موفقیت، این عمل AVR هدف را در وضعیتی قرار میدهد که بتواند دوباره به ارتباط عادی ISP پاسخ دهد (تا چرخه خاموش و روشن شدن بعدی منبع تغذیه).
بهطور معمول، همان دستور بلافاصله پس از آن دوباره تکرار میشود و سپس در اتصال به هدف با استفاده از ارتباط عادی ISP موفق خواهد شد.
.Sh "همچنین ببینید (SEE ALSO)"
.Xr avr-objcopy 1 ,
.Xr ppi 4 ,
.Xr libelf 3 ,
.Xr readline 3
.Pp
شرح محصولات میکروکنترلر AVR در نشانی زیر در دسترس است:
.Pp
.nf
https://www.microchip.com/en-us/products/microcontrollers-and-microprocessors/8-bit-mcus/avr-mcus
.fi
.\" .Sh HISTORY
.Sh "نویسندگان (AUTHORS)"
.Nm Avrdude
در ابتدا توسط Brian S. Dean نوشته شد.
.Pp
این صفحه راهنما توسط
.ie t J\(:org Wunsch
.el Joerg Wunsch
به همراه بهروزرسانیهایی از Hans Eirik Bull و Stefan R\(:uger
.el Stefan Rueger
و دیگران نگاشته شده است.
.Sh "اشکالات (BUGS)"
لطفاً اشکالات را از طریق نشانی زیر گزارش کنید:
.Dl "https://github.com/avrdudes/avrdude/issues"
.Pp
برنامهریزهای JTAG ICE در حال حاضر نمیتوانند حافظه ROM فلش را بهصورت تکبایتی بنویسند.
به همین دلیل، بهروزرسانی ROM فلش از حالت پایانه (terminal mode) کار نمیکند.
.Pp
برنامهریزی حالت صفحهای حافظه EEPROM از طریق JTAG (یعنی از طریق گزینه
.Fl U )
نیازمند پاکسازی پیشین تراشه (chip erase) است.
این یک ویژگی ذاتی از شیوه کارکرد برنامهریزی EEPROM با JTAG است.
این موضوع برای STK500 و STK600 در حالت برنامهریزی موازی نیز صدق میکند.
.Pp
درایورهای USBasp و USBtinyISP هیچ گزینهای برای تفکیک چندین دستگاه متصلشده بهطور همزمان ارائه نمیدهند، بنابراین عملاً تنها یک دستگاه پشتیبانی میشود.
.Pp
هنگام استفاده از USBtinyISP برای SPI مستقیم، پایه انتخاب تراشه (Chip Select) باید از بیرون در سطح پایین (low) نگه داشته شود و ارسال باید مضربی از چهار بایت باشد.
.Pp
درایور avrftdi امکان انتخاب دستگاههای مشخص را با استفاده از هر ترکیبی از vid,pid، شماره سریال (usbsn)، شرح سازنده (usbvendor) یا شرح قطعه (usbproduct) به صورتی که در lsusb یا هر ابزار دیگری برای مشاهده اطلاعات دستگاههای USB دیده میشود، فراهم میکند. چندین دستگاه میتوانند بهطور همزمان روی گذرگاه باشند. برای قطعات سری H که چندین رابط MPSSE دارند، رابط نیز میتواند انتخاب شود. این مقدار بهطور پیشفرض روی رابط 'A' قرار دارد.