ابزار حرفه ای avrdude برای پروگرام کردن AVR

0
302
ابزار حرفه ای avrdude برای پروگرام کردن AVR

شاید تا به حال برای پروگرام کردن میکروکنترلر AVR بارها به مشکلات بسیار زیادی برخورد کرده باشید. برای مثال، در پیدا کردن درایور یا نرم افزار فلش پروگرامر، یا اتصال آن به محیط برنامه نویسی به مشکل برخورده باشید. در این آموزش قصد داریم تا شما را با ابزاری به نام AVRDUDE معرفی کنیم که تا حد بسیار زیادی مشکلات شما را در ارتباط با پروگرامر بر طرف می‌سازد.

 

از avrprog تا AVRDUDE

AVRDUDE ابزاری برای بارگیری، بارگذاری و ویرایش محتوای ROM و EEPROM میکروکنترلرهای AVR با استفاده از تکنیک برنامه نویسی درون سیستم (ISP) است. AVRDUDE اولین بار توسط Brian S. Dean جهت پروگرام کردن میکروکنترلر های AVR ساخته شد. اصل این نرم افزار برای سیستم عامل FreeBSD و با نام avrprog ساخته شد. با گسترش نرم افزار و پورت شدن آن برای سیستم عامل‌های مختلف، توجهات و استقبال از این نرم افزار بیشتر و بیشتر شد، تا جایی که برایان تصمیم گرفت پروژه خود را به‌صورت عمومی در savannah.nongnu.org منتشر کند.

همچنین برایان نام آن را از avrprog به AVRDUDE تغییر داد، زیرا می‌خواست با avrprog.EXE که در اتمل استودیو وجود داشت، اشتباه نشود.

 

برخی ویژگی های AVRDUDE

  • تمام عملیات‌های آپلود، دانلود و حتی تغییر فیوز بیت‌ها با ساده‌ترین دستورات در رابط کاربری محیط کامند لاین قابل اجرا هستند. این امر به برنامه نویس اجازه می‌دهد تا آن را به راحتی درون makefile اضافه کنید و عملیات کامپایل و پروگرام به‌صورت خودکار صورت پذیرد.
  •   در حالت ترمینال شما به ویژگی‌های بسیار زیادی برای عملیات‌های خود دسترسی دارید. همچنین پارامترهای عملیاتی پروگرام STK500 مثل target voltage, VAref, master clock frequency و… برای شما در دسترس هستند.
  •  پشتیبانی از گستره بسیار بزرگی از پروگرامرها، مثل: usbASP، STK500، پروگرامرهای پارالل و…
  •   پشتیبانی از سیستم عامل‌های مختلف! همین امر باعث می‌شود کاربر تفاوت چندانی در کار میان سیستم عامل‌های مختلف احساس نکند.
  •   پشتیبانی از فرمت‌های مختلف فایل برای آپلود و دانلود، مثل Intel Hex, Motorola S-Record, binary files. همچنین فرمت فایلی که به عنوان ورودی به AVRDUDE داده شود، به‌طور خودکار تشخیص داده می‌شود.
  •   در حالت ترمینال، شما می‌توانید به مناطق مختلف حافظه (در صورت اجازه داشتن) دسترسی داشته باشید، آن‌ها را بخوانید، بنویسید و دست‌کاری کنید. حتی فیوز بیت‌ها و خانه‌های EEPROM را نیز می‌توانید تغییر دهید.

 

دانلود AVRDUDE

این ابزار پس از دانلود نیازی به نصب نداشته و در محیط کامندلاین قابل اجرا می‌باشد، اما باید آن را در path ویندوز اضافه کنید. بنابراین بهتر است محتویات دانلودی را در درایو C مثلاَ در مسیر C:\AVRDUDE ذخیره کنید.

AVRDUDE در WINAVR، ATMEL STUDIO، آردوینو و بسیاری از بسته های نرم افزاری معروف AVR وجود دارد. شما میتوانید AVRDUDE را بدون دانلود کردن، از مسیر نصب این نرم افزار ها نیز پیدا کنید. برای مثال، اگر نرم افزار آردوینو را نصب دارید، ممکن است در مسیر زیر، AVRDUDE را پیدا کنید. (آدرس محل نصب، ممکن است با توجه به نسخه نصبی و نوع ویندوز شما (64 بیت یا 32 بیت) متفاوت باشد.)

C:\Program Files\arduino\arduino-1.8.11\hardware\tools\avr\bin
پوشه ابزار ها آردوینو (شامل AVRDUDE)

همچنین می‌توانید از طریق این لینک بسته avrdude را دانلود کنید.

 

افزودن به path

بعد از دانلود AVRDUDE، برای این که محیط‌های برنامه نویسی مختلف بتوانند از آن استفاده کنند، لازم است تا محل فولدر آن را در path ویندوز اضافه کنید. برای این کار بر روی this PC کلیک راست کرده و properties را بزنید.

افزودن به path
thisPC-properties

سپس بر روی Advances Envirenment setting کلیک کنید.

ویندوزAdvanced system setting

 

از پنجره system properties و از تب Advanced، ‏Envirenment Variables را انتخاب کنید.

system properties

سپس متغیر PATH را ویرایش کنید:

Envirenment Variables

در پنجره‌ای که باز شد، گزینه NEW را بزنید تا بتوانید مسیر AVRDUDE را در path اضافه کنید:

edit environment variables

پس از اضافه کردن مسیر، در تمام پنجره هایی که باز کردید، بر روی کلید OK کلیک کنید.

برای بررسی این که آیا به صورت صحیح PATH را وارد کردید، کامند لاین را باز کنید و درون آن دستور زیر را تایپ کنید: (اگر از قبل باز است، آن را بسته و مجدداَ باز کنید)

avrdude

و اگر همه چیز درست باشد، خروجی زیر را دریافت خواهید کرد:

Usage: avrdude [options]
Options:
-p <partno> Required. Specify AVR device.
-b <baudrate> Override RS-232 baud rate.
-B <bitclock> Specify JTAG/STK500v2 bit clock period (us).
-C <config-file> Specify location of configuration file.
-c <programmer> Specify programmer type.
-D Disable auto erase for flash memory
-i <delay> ISP Clock Delay [in microseconds]
-P <port> Specify connection port.
-F Override invalid signature check.
-e Perform a chip erase.
-O Perform RC oscillator calibration (see AVR053).
-U <memtype>:r|w|v:<filename>[:format]
Memory operation specification.
Multiple -U options are allowed, each request
is performed in the order specified.
-n Do not write anything to the device.
-V Do not verify.
-u Disable safemode, default when running from a script.
-s Silent safemode operation, will not ask you if
fuses should be changed back.
-t Enter terminal mode.
-E <exitspec>[,<exitspec>] List programmer exit specifications.
-x <extended_param> Pass <extended_param> to programmer.
-y Count # erase cycles in EEPROM.
-Y <number> Initialize erase cycle # in EEPROM.
-v Verbose output. -v -v for more.
-q Quell progress output. -q -q for less.
-l logfile Use logfile rather than stderr for diagnostics.
-? Display this usage.

گزینه (آپشن) های AVRDUDE

همان طور که در خروجی دستور بالا هم می‌بینید، گزینه یا آپشن های بسیاری برای سفارشی سازی و کار با AVRDUDE وجود دارد.

 

برخی از آپشن های مهم:

-p: شما به وسیله این پارامتر می‌توانید نوع میکروکنترلر AVR خود را مشخص کنید. برای مثال، میروکنترلر ATmega32 با کد اختصاری m32 مشخص می‌شود. لیست کل میکروکنترلرها و علامت اختصاری آن را می‌توانید از اینجا ببینید. پس، این آپشن به‌صورت زیر به دستور ما اضافه می‌شود:

-p m32

-P: دقت داشته باشید، AVRDUDE به حروف کوچک و بزرگ حساس است، بنابراین P بزرگ، برای تعیین پورت پروگرامر استفاده می‌شود. برای مثال، اگر پروگرامر خود را از طریق پورت usb متصل کرده باشید، به این صورت بکار می‌رود:

-P usb

-c: (با حرف کوچک) نوع پروگرامر را مشخص می‌کند. برای مثال، اگر از پروگرامر usbasp استفاده می‌کنید، باید دستور زیر را وارد کنید:

-c usbasp

برای دریافت لیست کامل پروگرامر هایی که توسط AVRDUDE پشتیبانی می‌شوند، می‌توانید از دستور زیر استفاده کنید:

avrdude -c ?

Valid programmers are:
2232HIO = FT2232H based generic programmer
4232h = FT4232H based generic programmer
89isp = Atmel at89isp cable
abcmini = ABCmini Board, aka Dick Smith HOTCHIP
alf = Nightshade ALF-PgmAVR, http://nightshade.homeip.net/
arduino = Arduino
arduino-ft232r = Arduino: FT232R connected to ISP
atisp = AT-ISP V1.1 programming cable for AVR-SDK1 from <http://micro-research.co.th/>
atmelice = Atmel-ICE (ARM/AVR) in JTAG mode
atmelice_dw = Atmel-ICE (ARM/AVR) in debugWIRE mode
atmelice_isp = Atmel-ICE (ARM/AVR) in ISP mode
atmelice_pdi = Atmel-ICE (ARM/AVR) in PDI mode
avr109 = Atmel AppNote AVR109 Boot Loader
avr910 = Atmel Low Cost Serial Programmer
avr911 = Atmel AppNote AVR911 AVROSP
avrftdi = FT2232D based generic programmer
avrisp = Atmel AVR ISP
avrisp2 = Atmel AVR ISP mkII
avrispmkII = Atmel AVR ISP mkII
avrispv2 = Atmel AVR ISP V2
bascom = Bascom SAMPLE programming cable
blaster = Altera ByteBlaster
bsd = Brian Dean's Programmer, http://www.bsdhome.com/avrdude/
buspirate = The Bus Pirate
buspirate_bb = The Bus Pirate (bitbang interface, supports TPI)
butterfly = Atmel Butterfly Development Board
butterfly_mk = Mikrokopter.de Butterfly
bwmega = BitWizard ftdi_atmega builtin programmer
C232HM = FT232H based module from FTDI and Glyn.com.au
c2n232i = serial port banging, reset=dtr sck=!rts mosi=!txd miso=!cts
dapa = Direct AVR Parallel Access cable
dasa = serial port banging, reset=rts sck=dtr mosi=txd miso=cts
dasa3 = serial port banging, reset=!dtr sck=rts mosi=txd miso=cts
diecimila = alias for arduino-ft232r
dragon_dw = Atmel AVR Dragon in debugWire mode
dragon_hvsp = Atmel AVR Dragon in HVSP mode
dragon_isp = Atmel AVR Dragon in ISP mode
dragon_jtag = Atmel AVR Dragon in JTAG mode
dragon_pdi = Atmel AVR Dragon in PDI mode
dragon_pp = Atmel AVR Dragon in PP mode
dt006 = Dontronics DT006
ere-isp-avr = ERE ISP-AVR <http://www.ere.co.th/download/sch050713.pdf>
flip1 = FLIP USB DFU protocol version 1 (doc7618)
flip2 = FLIP USB DFU protocol version 2 (AVR4023)
frank-stk200 = Frank STK200
ft232r = FT232R Synchronous BitBang
ft245r = FT245R Synchronous BitBang
futurlec = Futurlec.com programming cable.
jtag1 = Atmel JTAG ICE (mkI)
jtag1slow = Atmel JTAG ICE (mkI)
jtag2 = Atmel JTAG ICE mkII
jtag2avr32 = Atmel JTAG ICE mkII im AVR32 mode
jtag2dw = Atmel JTAG ICE mkII in debugWire mode
jtag2fast = Atmel JTAG ICE mkII
jtag2isp = Atmel JTAG ICE mkII in ISP mode
jtag2pdi = Atmel JTAG ICE mkII PDI mode
jtag2slow = Atmel JTAG ICE mkII
jtag3 = Atmel AVR JTAGICE3 in JTAG mode
jtag3dw = Atmel AVR JTAGICE3 in debugWIRE mode
jtag3isp = Atmel AVR JTAGICE3 in ISP mode
jtag3pdi = Atmel AVR JTAGICE3 in PDI mode
jtagkey = Amontec JTAGKey, JTAGKey-Tiny and JTAGKey2
jtagmkI = Atmel JTAG ICE (mkI)
jtagmkII = Atmel JTAG ICE mkII
jtagmkII_avr32 = Atmel JTAG ICE mkII im AVR32 mode
lm3s811 = Luminary Micro LM3S811 Eval Board (Rev. A)
mib510 = Crossbow MIB510 programming board
mkbutterfly = Mikrokopter.de Butterfly
nibobee = NIBObee
o-link = O-Link, OpenJTAG from www.100ask.net
openmoko = Openmoko debug board (v3)
pavr = Jason Kyle's pAVR Serial Programmer
pickit2 = MicroChip's PICkit2 Programmer
picoweb = Picoweb Programming Cable, http://www.picoweb.net/
pony-stk200 = Pony Prog STK200
ponyser = design ponyprog serial, reset=!txd sck=rts mosi=dtr miso=cts
siprog = Lancos SI-Prog <http://www.lancos.com/siprogsch.html>
sp12 = Steve Bolt's Programmer
stk200 = STK200
stk500 = Atmel STK500
stk500hvsp = Atmel STK500 V2 in high-voltage serial programming mode
stk500pp = Atmel STK500 V2 in parallel programming mode
stk500v1 = Atmel STK500 Version 1.x firmware
stk500v2 = Atmel STK500 Version 2.x firmware
stk600 = Atmel STK600
stk600hvsp = Atmel STK600 in high-voltage serial programming mode
stk600pp = Atmel STK600 in parallel programming mode
ttl232r = FTDI TTL232R-5V with ICSP adapter
tumpa = TIAO USB Multi-Protocol Adapter
UM232H = FT232H based module from FTDI and Glyn.com.au
uncompatino = uncompatino with all pairs of pins shorted
usbasp = USBasp, http://www.fischl.de/usbasp/
usbasp-clone = Any usbasp clone with correct VID/PID
usbtiny = USBtiny simple USB programmer, http://www.ladyada.net/make/usbtinyisp/
wiring = Wiring
xil = Xilinx JTAG cable
xplainedmini = Atmel AVR XplainedMini in ISP mode
xplainedmini_dw = Atmel AVR XplainedMini in debugWIRE mode
xplainedpro = Atmel AVR XplainedPro in JTAG mode

-b: با حرف کوچک، در صورتی که از پورت سریال برای پروگرامر استفاده می‌کنید، سرعت buadRate را مشخص می‌کند.

  -U <memtype>:r|w|v:<filename>[:format]

شما به وسیله آپشن U می‌توانید عملیات حافظه را انجام دهید. برای مقدار دهی به این آپشن، اولین عبارت یا پارامتر، نوع حافظه (مثلاً flash) را وارد می‌کنید، دومین پارامتر نوع عملیات (Read, Write, Verify)، سومین عبارت آدرس فایل و چهارمین عبارت نوع فایل (هگز دسیمال، اینتل هگز، خام و…) می‌باشد.

برای مثال، فرض کنید می‌خواهید فایل diag.hex را که در کنار AVRDUDE قرار دارد را به وسیله پروگرامر stk500 بر روی حافظه فلش تراشه stk500 بنویسید!

گزاره بالا در حالت دستوری، به شکل زیر در می‌آید:

avrdude -p m128 -c stk500 -e -U flash:w:diag.hex

آپشن های دیگر AVRDUDE را می‌توانید از طریق help و یا مستندات آن مطالعه کنید. همچنین مثال‌های دیگر را می‌توانید اینجا مشاهده کنید.

آموزش نصب درایور USBASB را نیز در این آموزش می توانید ببینید.

 

رابط گرافیکی AVRDUDE GUI

اگر جزء افرادی هستید که از محیط ترمینال فراری هستید، خبر خوب اینکه رابط گرافیکی مختلفی نیز وجود دارد که شما با استفاده از چند کلیک، می‌توانید عملیات پروگرام کردن و تنظیم فیوزبیت های AVR را به راحتی انجام دهید. برای مثال، AVRDUDE GUI نیز متن باز بوده و می‌توانید آن را از اینجا دانلود کنید.

AVRDUDE GUI

همچنین کار با رابط گرافیکی BitBurner نیز بسیار راحت و ساده است.

اتصال AVRDUDE به IDE

AVRDUDE را می‌توانید به سادگی به بسیاری از محیط‌های برنامه نویسی یکپارچه (IDE) متصل کنید. قبلاً ، مقالاتی در این زمینه منتشر شده است:
آماده سازی محیط Eclips برای برنامه نویسی میکروکنترلر های  AVR (توصیه شده)
آماده سازی محیط VSCODE برای برنامه نویسی AVR
برنامه‌نویسی میکروکنترلر AVR در محیط ویژوال استودیو (جلسه سوم)

 

منبع:سیسوگ

مطلب قبلیآموزش STM32 با توابع LL قسمت دوازدهم: Timer-TimeBase
مطلب بعدیآماده سازی محیط Eclips برای برنامه نویسی میکروکنترلر های AVR

پاسخ دهید

لطفا نظر خود را وارد کنید!
لطفا نام خود را در اینجا وارد کنید