پروگرامر J-Link (یا پروگرامر جی لینک) یک سخت افزار برنامه ریزی و دیباگ ساخت شرکت آلمانی SEGGER Microcontroller است. هر میکروکنترلر، میکروپروسسور یا SoC با هستۀ پردازنده ایی که پروگرامر J-Link پشتیبانی کند، قابل برنامه ریزی و دیباگ است. این ویژگی در کنار سایر ویژگی ها و همچنین انواع مختلف پروگرامر J-Link باعث شده این پروگرامر کاربردهای فراوانی در برنامه ریزی و دیباگ سیستم های برنامه پذیر داشته باشد. شرکت SEGGER سال هاست که این پروگرامر را توسعه داده و امروزه انواع پیشرفته ای با امکانات گسترده تولید می کند. به طوری که در لیست محصولات این شرکت پروگرامر J-Link با امکان اتصال به کامپیوتر از طریق وای فای و اترنت و همچنین پروگرامرهایی با سرعت بالا یافت می شود. ممکن است پروگرامر J-Link با عنوان پروگرامر میکروکنترلر ARM یا پروگرامر آرم نیز معرفی شود. این تعریف به دلیل پشتیبانی شدن هسته های مختلف ARM توسط این پروگرامر است. اما پروگرامر J-Link تنها برای برنامه ریزی میکروکنترلرهای ARM به کار نمی رود. بلکه برای پروگرام انواع حافظه های Flash و پردازنده های متعدد دیگر هم کاربرد دارد.
اکنون که دریافتیم J-Link چیست، در ادامه به منظور آشنایی بیشتر و نحوۀ کار با پروگرامر J-Link، پس از بیان ویژگی ها و معرفی نرم افزار آن، به پروگرام کردن میکروکنترلرهای روی برد توسعۀ STM32F10xVxxx و برد توسعۀ LPC1768 یوبرد می پردازیم. پروگرامر J-Link از پروتکل های ارتباطی JTAG و SWD پشتیبانی می کند. از طرفی با هر دوی این پروتکل ها می توان میکروکنترلرهای STM32F103VETx و LPC1768 را برنامه ریزی کرد. بنابراین در این نوشته توضیحاتی دربارۀ نحوۀ اتصالات JTAG و SWD داده می شود. همچنین در هر بار با یکی از این پروتکل های ارتباطی بردهای مذکور را پروگرام می کنیم.
فیلم آموزش میکروکنترلرهای AVR مقدماتی
تصویر 1 – یک مدل پروگرامر J-Link
هدف از این نوشته علاوه بر آموزش کار با پروگرامر J-Link و نرم افزار آن ، آشنایی خوانندگان با نحوۀ پروگرام از طریق JTAG و SWD به طور مختصر است. اهمیت نحوۀ استفاده از JTAG و SWD آنجایی ظاهر می شود که بخواهیم محصولی با قابلیت دیباگ بسازیم. بنابراین دانستن مباحث مربوط به این موضوع ضرورت فراوانی دارد. از طرفی صحبت دربارۀ این دو پروتکل ارتباطی به درازا می کشد و مطالب آن در این نوشته نمی گنجد. بنابراین به اندازۀ نیاز این نوشته که توضیح اتصالات آنهاست، صحبت خواهیم کرد. همچنین ممکن است در منابع مختلف روش های متعددی برای اتصالات JTAG و SWD ذکر شده باشد. پس ضروری است نحوۀ اتصالات صحیح را در کار با JTAG و SWD بدانیم. در این نوشته نحوۀ اتصال پایه های میکروکنترلر به کانکتور پروگرامر J-Link با JTAG و SWD توضیح داده شده است. هدف از این کار، شفاف سازی موضوع اتصال میکروکنترلرها از طریق این دو پروتکل به پروگرامر و دیباگر است.
از اهداف دیگر این نوشته، تکمیل مباحث پروگرام کردن میکروکنترلرهاست. در نوشته های پیشین دربارۀ نرم افزار ST-Link Utility، آموزش کار با نرم افزار ProgISP، نحوۀ نصب درایور USBasp و پروگرام کردن میکروکنترلرهای AVR صحبت کردیم. این نوشته نیز با موضوع و اهداف نوشته های مذکور است. (میکروکنترلرهای AVR)
نکته: منظور از عبارت “میکروکنترلرهای ARM” در این نوشته، میکروکنترلر با هستۀ پردازندۀ ARM است.
نکته: منظور از عبارت “المان تحت پروگرام” در اینجا، میکروکنترلر، حافظۀ Flash یا هر قطعۀ دیگری است که توسط پروگرامر J-Link پروگرام می شود.
نکته: پروگرام و دیباگ با JTAG و SWD روش های مختلفی دارد. در نکات ذکر شده برای اتصالات JTAG و SWD از پرداختن به این روش ها و نکات آنها صرف نظر شده است. نوشتۀ «روش های پروگرام کردن STM32» حاوی اطلاعات مفیدی در این زمینه است.
تصویر 2 – چند نمونه پروگرامر J-Link
پروگرامر J-Link از چه پردازنده هایی پشتیبانی می کند؟
این پروگرامر از هسته های پردازندۀ مختلفی از جمله ARM Cortex و Renesas RX و Microchip PIC پشتیبانی می کند. همچنین انواع مختلفی از حافظه های SPI Flash توسط این پروگرامر پشتیبانی می شوند. پردازنده هایی که توسط پروگرامر J-Link پشتیبانی می شوند عبارتند از:
- پردازنده های ARM Cortex و ARM Legacy
ARM Cortex-A/R 64bit | ARM Cortex-A/R 32bit | ARM Cortex-M | ARM Legacy |
Cortex-A53 | Cortex-A5 | Cortex-M0 | ARM720T |
Cortex-A72 | Cortex-A7 | Cortex-M0+ | ARM7TDMI |
Cortex-A8 | Cortex-M1 | ARM7TDMI-S | |
Cortex-A9 | Cortex-M23 | ARM920T | |
Cortex-A12 | Cortex-M3 | ARM922T | |
Cortex-A15 | Cortex-M33 | ARM926EJ-S | |
Cortex-A17 | Cortex-M4 | ARM946E-S | |
Cortex-R4 | Cortex-M7 | ARM966E-S | |
Cortex-R5 | ARM1136JF-S | ||
Cortex-R8 | ARM1136J-S | ||
ARM1156T2-S | |||
ARM1156T2F-S | |||
ARM1176JZ-S | |||
ARM1176JZF | |||
ARM1176JZF-S |
جدول 1 – لیست هسته های پردازندۀ ARM پشتیبانی شده توسط پروگرامر J-Link
- پردازنده های Renesas RX
Renesas RX110 | Renesas RX210 | Renesas RX23T | Renesas RX62G | Renesas RX631 | Renesas RX65N |
Renesas RX111 | Renesas RX21A | Renesas RX24T | Renesas RX62N | Renesas RX63N | Renesas RX651 |
Renesas RX113 | Renesas RX220 | Renesas RX610 | Renesas RX62T | Renesas RX63T | Renesas RX66T |
Renesas RX130 | Renesas RX231 | Renesas RX621 | Renesas RX630 | Renesas RX64M | Renesas RX71M |
جدول 2 – لیست پردازنده های Renesas RX پشتیبانی شده توسط پروگرامر J-Link
- پردازنده های Microchip PIC: که عبارتند از Microchip PIC32MX و Microchip PIC32MZ و Microchip PIC32WK؛
- پردازندۀ Silicon Lab 8051 که عبارت است از EFM8؛
- پردازنده های RISC-V که شامل RV32 و RV64 و AndesTech A25 و SiFive E31 هستند.
علاوه بر پردازنده هایی که ذکر شد، این پروگرامر تعداد زیادی حافظۀ SPI Flash را پشتیبانی می کند. لیست این حافظه ها که ساخت شرکت های Adesto Technologies و Eon و GigaDevice و ISSI و Macronix و STMicrielectronics و Microchip و … هستند، در سایت شرکت SEGGER آمده است.
تصویر 3 – پشتیبانی پروگرامر J-Link از میکروکنترلر و SPI Flash
انواع پروگرامر J-Link
پروگرامر J-Link انواع و نسخه های مختلفی دارد. هر کدام از آنها در برخی از ویژگی ها با دیگری متفاوت است. همچنین برخی از آنها تمامی پردازنده های ذکر شده را پشتیبانی نمی کنند. در سایت شرکت SEGGER تعدادی پروگرامر مختلف J-Link با یکدیگر مقایسه شده اند. این پروگرامرها عبارتند از:
- J-Link EDU: این مدل از پروگرامر J-Link ارزان قیمت و برای اهداف آموزشی است. J-Link EDU همان J-Link BASE است و عملکردی مشابه آن دارد. تفاوت آنها تنها در چند ویژگی نرم افزاری است. برخی ویژگی های مهم آن عبارتند از: پشتیبانی از طیف وسیعی از میکروکنترلرها، پشتیبانی از پردازنده های 8051 و ARM7/9/11 و ARM Cortex-M/R/A و PIC32 و Renesas RX و RISC-V، سرعت دانلود تا 1 مگابایت در ثانیه، پشتیبانی از تعداد نامحدود Breakpoint در حافظۀ Flash، قابلیت VCOM داخلی. (شمارۀ 1 در تصویر زیر)
- J-Link EDU Mini: یک نسخه از پروگرامر J-Link EDU است که نسبت به آن قابلیت های کمتری دارد. این پروگرامر عملکرد یکسانی با J-Link EDU دارد و برخی ویژگی های آن عبارتند از: ابعاد کوچک (18 در 50 میلی متر)، دارای عملکرد کامل J-Link، پشتیبانی از JTAG و SWD. (2)
- J-Link BASE (و J-Link BASE Compact): این نسخۀ پیشرو در بازار از طیف وسیعی از میکروکنترلرها پشتیبانی می کند. ویژگی های دیگر آن عبارتند از: پشتیبانی از پردازنده های 8051 و ARM7/9/11 و ARM Cortex-M/R/A و PIC32 و Renesas RX و RISC-V، سرعت دانلود تا 1 مگابایت در ثانیه، پشتیبانی از تعداد نامحدود Breakpoint در حافظۀ Flash، قابلیت VCOM داخلی. (3)
- J-Link PLUS (و J-Link PLUS Compact): که ساخته شده از پردازندۀ 32 بیتی RISC است. J-Link PLUS نسبت به J-Link BASE از ویژگی های نرم افزاری بیشتری برخوردار است. (4)
تصویر 4 – انواع پروگرامر J-Link
پروگرامرهای J-Link پیشرفته تر
پروگرامر J-Link انواع پیشرفته تر دیگری نیز دارد که عبارتند از J-Link WiFi و J-Link ULTRA+ و J-Link PRO. پروگرامر J-Link WiFi دارای رابط کاربری WLAN/WiFi است و از این طریق به کامپیوتر متصل می شود. این پروگرامر که برای المان های تحت پروگرام متحرک مناسب است، تغذیۀ خود را از طریق یک کابل USB می گیرد. J-Link WiFi به غیر از ویژگی وای فای، در دیگر مشخصات سخت افزاری مشابه J-Link BASE و J-Link PLUS و از لحاظ ویژگی های نرم افزاری مانند J-Link PLUS است. همچنین از نظر پردازنده های تحت پشتیبانی تفاوتی با دو نوع مذکور ندارد. لازم به ذکر است رابط USB در این پروگرامر برای پیکربندی نیز استفاده می شود. J-Link ULTRA+ نیز یک پروگرامر فوق سریع است و سرعت دانلود آن به 3 مگابایت بر ثانیه می رسد. همچنین این پروگرامر به طور کامل با پروگرامر J-Link PLUS سازگار است و تنها تفاوت آن سرعت بالاتر است. علت سرعت بالای این پروگرامر استفاده از TCP/IP به جای USB است. J-Link PRO نیز یکی دیگر از پروگرامرهای پیشرفتۀ SEGGER است. این پروگرامر علاوه بر USB دارای رابط Ethernet است و سرعت دانلود آن مانند J-Link ULTRA+ است. همچنین دارای ویژگی های سخت افزاری دیگر مشابه J-Link ULTRA+ (و نتیجتاً J-Link PLUS) است. با توجه به وجود اترنت، ایجاد ارتباط بین کامپیوتر و پروگرامر در مسافت های طولانی امکان پذیر است. در تصویر زیر سه پروگرامر J-Link WiFi و J-Link ULTRA+ و J-Link PRO را مشاهده می کنید.
نکته: پروگرامرهای J-Link دیگری در سایت شرکت SEGGER آورده شده اند. از جمله پروگرامر J-Link OB که قابل مونتاژ روی بردهای دیگر است (حروف OB مخفف On-board) و پروگرامرهای مدل Lite که خود چند نوع هستند.
تصویر 5 – پروگرامرهای پیشرفتۀ J-Link
ویژگی های پروگرامر J-Link
در بخش قبل تا حدودی دربارۀ ویژگی های پروگرامر J-Link صحبت کردیم. در این بخش به بیان برخی ویژگی های مشترک انواع پروگرامرهای J-Link می پردازیم. این ویژگی ها عبارتند از:
- وجود رابط USB؛
- پشتیبانی از هسته های ARM7/ARM9/ARM11 و Cortex-A5/A7/A8/A9/A12/A17 و Cortex-M0/M1/M3/M4/M7/M23/M33 و Cortex-R4/R5؛
- تشخیص خودکار هسته؛
- حداکثر فرکانس ارتباط با المان تحت پروگرام (بسته به مدل پروگرامر) 15 یا 50 مگاهرتز؛
- ادغام یکپارچه در IDEهای اصلی (مانند SEGGER Embedded Studio و emIDE و Eclips و اتمل استودیو و Keil و …)؛
- بدون نیاز به منبع تغذیۀ جداگانه؛
- پشتیبانی از زمان بندی تطبیقی (Adaptive Clocking)؛
- قابلیت مانیتور تمامی سیگنال های JTAG و همچنین اندازه گیری ولتاژ المان تحت پروگرام؛
- پشتیبانی از Multiple devices (برای پروگرام کردن چند المان روی یک برد)؛
- Plug and play کاملاً سازگار؛
- دارای کانکتور 20 پین JTAG/SWD، کانکتور 19 پین Trace و JTAG/SWD و کانکتور 38 پین JTAG+Trace استاندارد؛
- شامل کابل USB و کابل فلت 20 پین؛
- قابلیت مشاهدۀ محتویات حافظه (J-Mem)؛
- قابلیت Remote server، که امکان استفادۀ J-Trace را از طریق شبکه های TCP/IP فراهم می آورد؛
- وجود رابط RDI، که امکان استفادۀ پروگرامر J-Link را با نرم افزارهای سازگار با RDI فراهم می کند؛
- امکان استفاده با نرم افزار J-Flash (نرم افزار پروگرامر J-Link).
تصویر 6 – نرم افزار J-Flash و پروگرامر J-Link
نرم افزار J-Flash چیست؟
شرکت SEGGER برای راه اندازی J-Link یک مجموعۀ نرم افزاری به نام نرم افزار J-Link دارد. یکی از نرم افزارهای این مجموعه، نرم افزار J-Flash است. از J-Flash برای برنامه ریزی حافظه های Flash داخلی و خارجی میکروکنترلرها با پروگرامر J-Link یا Flasher استفاده می شود. نرم افزار J-Flash سازگار با ویندوزهای 2000 به بعد و همچنین قابل اجرا در لینوکس و macOS است. از ویژگی های این نرم افزار پشتیبانی از اغلب قطعات/ هسته های Cortex-A/R/M و RX و PowerPC است. همچنین حافظه های Flash داخلی و خارجی که J-Flash پشتیبانی می کند، عبارتند از:
- حافظه های Flash داخلی اغلب میکروکنترلرهای محبوب؛
- حافظه های NOR falsh سازگار با CFI (انواع p1x8 و p2x8 و p2x8 و p2x16)؛
- اغلب حافظه های NOR flash غیر سازگار با CFI (انواع p1x8 و p2x8 و p2x8 و p2x16)؛
- حافظه های SPI NOR flash؛
- حافظه های NAND flsh.
همانند نرم افزار ST-Link Utility که در گذشته بررسی کردیم، J-Flash نیز قابلیت پاک کردن، نمایش محتویات و تأیید حافظه را دارد. همچنین ابزار Check Blank و قابلیت خواندن محتویات حافظه در این نرم افزار نیز موجود است. برای دانلود نرم افزار J-Link، در سایت SEGGER از بخش Downloads روی J-Link/J-Trace کلیک می کنیم. سپس در صفحۀ باز شده در بخش J-Link Software and Documentation Pack روی Click for downloads کلیک می کنیم. بعد از آن در جدول ظاهر شده، مجموعۀ نرم افزاری J-Link را متناسب با سیستم عامل خود دانلود می کنیم. گفتنی است که نرم افزار J-Flash Lite این مجموعه، نرم افزاری با امکانات کم برای پروگرام کردن با پروگرامر J-Link است. در ادامه روش کار با J-Flash و J-Flash Lite شرح داده خواهد شد.
نکته: J-Flash با عبارت “نرم افزار پروگرام ARM” نیز شناخته می شود.
تصویر 7 – دانلود نرم افزار J-Flash و مجموعه نرم افزار J-Link
اتصالات J-Link برای پروگرام کردن میکروکنترلرهای ARM
ترتیب پایه های کانکتور 20 پین IDC پروگرامر J-Link برای JTAG و SWD در تصویر زیر آورده شده است. همچنین جدول زیر راهنمایی برای اتصال پایه های میکروکنترلر STM32F103VETx و LPC1768 به پروگرامر J-Link است.
جدول 3 – پایه های مربوط به JTAG و SWD در پروگرامر J-Link و میکروکنترلرهای STM32F103VETx و LPC1768
تصویر 8 – ترتیب پایه های کانکتور IDC پروگرامر J-Link
نکاتی دربارۀ اتصالات در JTAG و SWD در پروگرام کردن با J-Link
- پروگرام با JTAG در دو حالت 4 پین و 5 پین انجام می شود. در حالت چهار پین تنها پایه های TDI و TMS و TCK و TDO نیاز است. در حالت پنج پین علاوه بر چهار پایۀ مذکور، به پایۀ nTRST نیز نیاز داریم.
- پایه های nTRST و RTCK ممکن است در برخی المان ها موجود و یا در دسترس نباشند. در المان هایی که پایۀ RTCK وجود ندارد، این پایه از پروگرامر J-Link باید زمین شود.
- اتصال پایۀ تغذیه، یعنی 5v-Supply اختیاری است. از این پایه به عنوان تغذیۀ اصلی سیستم تحت پروگرام استفاده می شود. اما پایۀ VTrefباید به پایه (های) VCC المان تحت پروگرام متصل باشد.
- پایۀ DBGRQ در پروگرام کردن با پروگرامر J-Link استفاده نمی شود.
- در پروگرام با SWD تنها به دو پایۀ SWDIO و SWCLK نیاز داریم.
- پایه هایی که در تصویر بالا در کنار آنها علامت * وجود دارد، در برخی از مدل های J-Link برای اکستنشن های Firmware رزرو شده اند. در حالت عادی می توان آنها را بدون اتصال رها و یا به زمین متصل کرد. نباید فرض شود که این پین ها از داخل پروگرامر به زمین متصل هستند.
- در ارتباط JTAG باید پایه های TMS و TDI با مقاومت 100 کیلو اهم، پول آپ و پایۀ TCK با مقاومت 100 کیلو اهم، پول دون شود.
- در ارتباط SWD باید پایۀ SWDIO را پول آپ و پایۀ SWCLK را پول دون کنیم. مقدار مقاومت پول آپ و پول دون نیز می تواند 100 کیلو اهم باشد.
- مقاومت پول آپ باید به VCC المان تحت پروگرام وصل شود نه پایۀ 5v-Supply.
در تصویر زیر نحوۀ اتصال پروگرامر J-Link به المان تحت پروگرام برای JTAG و SWD (بدون مقاومت های پول آپ و پول دون) نمایش داده شده است.
تصویر 9 – اتصال پایه های پروگرامر J-Link به المان تحت پروگرام
پروگرام کردن با نرم افزار J-Flash و پروگرامر J-Link
برای کار با J-Flash باید ابتدا یک پروژه بسازیم. پس از اجرای نرم افزار J-Flash پنجرۀ Welcome to J-Flash ظاهر می شود. در این پنجره می توان انتخاب کرد که پروژه های قبلی باز شوند و یا پروژۀ جدید ایجاد شود. گزینۀ Create new project را برای ایجاد پروژۀ جدید انتخاب و روی Start J-Flash کلیک می کنیم (1 و 2). در صورتی که پنجرۀ Welcome to J-Flash باز نشد، از منوی File گزینۀ New Project را انتخاب می کنیم. بدین شکل پنجرۀ New Project باز می شود. در این پنجره روی Browse کلیک (3) و میکروکنترلر خود را انتخاب می کنیم. برای این کار باید از پنجرۀ باز شده (پنجرۀ Target Device Setting) در ستون Device، میکروکنترلر خود را جست و جو کنیم (4). بعد از کلیک روی میکروکنترلر مورد نظر و OK، این پنجره بسته می شود (5). در پنجرۀ Create New Project در قسمت Target interface و Speed، پروتکل ارتباطی مورد نظر و فرکانس آن را انتخاب و یا تایپ می کنیم (6). در نهایت روی دکمۀ OK کلیک می کنیم (7).
تصویر 10 – مراحل ساخت پروژه در نرم افزار J-Flash
در این مرحله پنجرۀ اصلی J-Flash باز می شود. در سمت چپ در پنجرۀ Project information اطلاعات پروژۀ حاضر دسته بندی و نمایش داده شده است. می توان روی هر کدام از موارد نمایش داده شده کلیک کرد و تنظیمات را تغییر داد. به این صورت که ابتدا روی یکی از آنها کلیک می کنیم، سپس با کلیک روی دکمۀ Browse جلوی آن، پنجرۀ تنظیمات مربوط را باز می کنیم. در قسمت پایین نرم افزار نیز پنجرۀ Log وجود دارد. این قسمت اطلاعات مربوط به عملیات انجام شده در نرم افزار و پروگرامر J-Link را نمایش می دهد. در ادامه نحوۀ پروگرام کردن میکروکنترلر STM32F103VETx موجود روی برد توسعۀ STM32F10xVxxx یوبرد با نرم افزار J-Flash و پروگرامر J-Link شرح داده می شود.
تصویر 11 – محیط نرم افزار J-Flash پس از ساخت پروژه
پروگرام کردن با نرم افزار J-Flash
برای پروگرام کردن میکروکنترلر STM32F103VETx باید پایه های آن را به کانکتور پروگرامر J-Link با ارتباط JTAG یا SWD متصل کنیم. این کار را با توجه به مطالب گفته شده در بخش اتصالات J-Link انجام می دهیم. توجه شود که اتصالات، مطابق با نوع ارتباطی باشد که در مراحل ساخت پروژه انتخاب کردیم (JTAG یا SWD). پس از اتصال پروگرامر به کامپیوتر، برای اطمینان از صحیح بودن اتصالات، از منوی Target روی Connect کلیک می کنیم (1). در صورتی که اتصالات صحیح نباشد، در نرم افزار پیغام خطایی ظاهر می شود. در غیر این صورت، اتصال به درستی انجام شده و در قسمت Log پیام Connected successfully نمایش داده می شود (2). برای افزودن فایل HEX به پروژه، از منوی File روی Open data file کلیک (3) و فایل HEX را جست و جو و باز می کنیم (4).
تصویر 12 – افزودن فایل HEX در نرم افزار J-Flash
با این کار در قسمت خالی نرم افزار پنجره ای با محتویات فایل باز شده، ظاهر می شود (1). برای پروگرام کردن کافی است از منوی Target روی Production Programming کلیک کنیم (2). پس از پروگرام شدن، در پنجرۀ Log پیغامی شامل عملیات انجام شده ظاهر می شود (3). همچنین پنجره ای با موضوع موفقیت آمیز بودن عملیات پروگرام باز می شود. با کلیک روی دکمۀ OK آن را می بندیم (4). عملیاتی را که در این بخش توضیح داده شد، می توان در تنظیمات تعیین کرد. می توان در تنظیمات، تیک Program و Verify را برداشت و حافظۀ میکروکنترلر را Erase کرد. نکتۀ مهم این است که در صورت تنظیم برای یک یا دو عملیات، پیغامی که پس از عملیات نمایش داده می شود، به اشتباه بیانگر Erase، پروگرام و Verify شدن حافظه است. در صورتی که باید تنها بیان کنندۀ عملیات تعیین شده باشد. در بخش بعدی تنظیمات مربوط به پروگرام کردن توضیح داده می شود.
تصویر 13 – پروگرام کردن با نرم افزار J-Flash و پروگرامر J-Link
منوها و تنظیمات نرم افزار J-Flash
در این بخش به طور مختصر به شرح منوها و تنظیمات کاربردی J-Flash برای پروگرام کردن با پروگرامر J-Link می پردازیم. در منوی File گزینه هایی برای ساخت، ذخیره و باز کردن پروژه های J-Flash وجود دارد. همچنین در این منو گزینه هایی برای باز کردن و ذخیرۀ فایل موجود است (1). از این منو برای ساخت و ذخیرۀ پروژه و فایل استفاده می کنیم. در منوی Edit ابزارهایی برای ویرایش فایل موجود است (2). منوی Target شامل عملیات اتصال و قطع و همچنین ابزارهایی برای کار روی حافظۀ میکروکنترلر است (3). منوی Options شامل تنظیمات پروژه و تنظیمات عمومی نرم افزار است (4). در منوی View نیز با تیک روی Show project information و Show log، پنجره های مربوط در صورت بسته بودن، باز می شوند (5).
تصویر 14 – منوهای نرم افزار J-Flash
برای انجام تنظیمات مربوط به پروگرام کردن، از منوی Options روی Project Settings کلیک می کنیم. در تصویر زیر بخش های مهم پنجرۀ تنظیمات نمایش داده شده است. موارد موجود در بخش Target Interface برای تنظیم نوع و مشخصات ارتباط پروگرامر J-Link با میکروکنترلر است (1). در این بخش می توانیم JTAG، SWD یا … را به عنوان پروتکل ارتباطی بین پروگرامر و میکروکنترلر انتخاب کنیم. در بخش MCU می توان المان تحت پروگرام را تعیین کرد (2 و 3). در بخش Production نیز تنظیماتی از قبیل فعال کردن ولتاژ 5v-Supply و تعیین عملیات حین پروگرام وجود دارد. در صورت قرار دادن Power source روی VCC5V، ولتاژ 5 ولت پایۀ 19 پروگرامر پس از Connect شدن فعال می شود (5). در بخش Actions performed by ‘Production programming’ نیز با تیک زدن هر کدام از گزینه ها، عملیات مربوط به آن، پس از کلیک روی گزینۀ Production programming منوی Target، طی پروگرام کردن انجام می شود (6).
تصویر 15 – تنظیمات مهم نرم افزار J-Flash برای کار با پروگرامر J-Link
منوی Target
در این منو می توانیم عملیات پروگرام و دیگر عملیات مربوط به حافظۀ Flash را انجام دهیم. برای انجام هر عملیاتی باید ابتدا روی Connect کلیک کنیم. همان طور که مشاهده می کنید گزینه های Connect و Disconnect در منوی Target هستند (1). در منوی Target ابزای وجود دارد که با آن می توان یک فایل تست ساخت. برای ایجاد یک فایل تست از گزینۀ Test (شمارۀ 2) روی Generate test data کلیک می کنیم. در این صورت می توان فایل تست ایجاد شده را به حافظۀ المان تحت پروگرام، منتقل کرد. گزینۀ بعد Production Programming است که در بخش های بعدی دربارۀ آن و تنظیم عملیات آن صحبت کردیم (3). آخرین گزینۀ منوی Target که Manual Programming نام دارد، برای انجام عملیات مختلف روی حافظه است (4). در بخشی از این منو (5) ابزار Check Blank قرار گرفته است. با استفاده از این ابزار می توان از خالی بودن حافظه اطمینان حاصل کرد. عملیات پاک کردن با استفاده از Erase Sectors و Erase Chip نیز در همین بخش (5) قرار گرفته است. در بخش بعدی Program و Program & Verify وجود دارد (6). با استفاده از این ابزار ها می توان المان تحت پروگرام را برنامه ریزی کرد. اگر روی Program کلیک کنیم، المان تحت پروگرام تنها پروگرام می شود. اگر روی Program and Verify کلیک کنیم، هم پروگرام و هم محتویات حافظۀ آن تأیید (Verify) می شود. در بخش بعدی ابزارهای Verify و Read back قرار گرفته است (7). با ابزار Verify محتویات حافظه تأیید و با ابزار Read back حافظۀ المان تحت پروگرام خوانده و محتویات آن در محیط نرم افزار نمایش داده می شود. می توان با استفاده از گزینه های Save data file این محتویات را در چند فرمت مختلف ذخیره کرد.
تصویر 16 – منوی Target در نرم افزار J-Flash از ملزومات کار با پروگرامر J-Link
پروگرام کردن با J-Flash Lite و پروگرامر J-Link
همان طور که بیان کردیم، نرم J-Flash Lite یک نرم افزار با امکانات کم در بستۀ نرم افزار J-Link است. در این نرم افزار تنها می توان حافظۀ مرد نظر را Erase و Program کرد. پس از اجرای نرم افزار J-Flash Lite پنجره ای باز می شود که در آن المان تحت پروگرام، نوع ارتباط و فرکانس ارتباط را تعیین (1 و 2 و 3) می کنیم. نوع ارتباط را در این نرم افزار می توانیم روی JTAG و SWD و … قرار دهیم. پس از این مراحل روی OK کلیک می کنیم (4). در مرحلۀ بعد محیط J-Flash Lite نمایش داده می شود. در این محیط باید از قسمت Data file، فایل مورد نظر را جست و جو و باز کنیم (5). بعد از آن اگر روی Erase Chip کلیک کنیم، حافظۀ المان تحت پروگرام پاک می شود (6). اگر روی دکمۀ Program Device کلیک کنیم، المان متصل به پروگرامر J-Link برنامه ریزی می شود (7). در محیط این نرم افزار در قسمت Log نیز می توان پیغام ها و شرح عملیات را مشاهده کرد (8).
تصویر 17 – پروگرام کردن با نرم افزار J-Flash Lite و پروگرامر J-Link
پروگرام کردن با نرم افزار Keil و پروگرامر J-Link
در بخش ویژگی ها اشاره ای به IDEهایی کردیم که از پروگرامر J-Link پشتیبانی می کنند. یکی از این IDEها Keil است که سهم چشمگیری در برنامه نویسی میکروکنترلرهای ARM دارد. در این بخش به برنامه ریزی میکروکنترلرهای ARM با نرم افزار Keil و پروگرامر J-Link می پردازیم. پروژه ای که در این بخش در نظر گرفته شده، برنامه ای برای میکروکنترلر LPC1768 است. میکروکنترلر LPC1768 را مطابق یکی از اتصالات JTAG یا SWD به پروگرامر متصل می کنیم. پس از باز کردن Keil، با کلیک روی آیکون Options for Target، پنجرۀ آن را باز می کنیم (1). سپس از تب Debug گزینۀ Use … را فعال می کنیم (2). در جلوی آن J-LINK / J-TRACW Cortex را انتخاب (3) و روی دکمۀ Settings کلیک می کنیم (4).
تصویر 18 – انتخاب پروگرامر J-Link در Keil
از تب Debug تنظیمات و مشخصات ارتباط بین پروگرامر و میکروکنترلر قابل مشاهده است. در بخش J-Link / J-Trace Adapter مشخصات پروگرامر، فرم ور آن و نوع ارتباط مشاهده می شود (1). از این بخش می توان نوع ارتباط را بین JTAG و SWD (یا SW) انتخاب و سرعت آن را نیز تعیین کرد. در بخش Device میکروکنترلر متصل به پروگرامر نمایش داده می شود (2). در بخش Connect & Reset Options نیز تنظیماتی برای اتصال و ریست وجود دارد (3). ما در این بخش تنظیمات پیش فرض را تغییر نمی دهیم. در تب Flash Download گزینه های پروگرام وجود دارد (4). در این بخش می توان نوع Erase حافظه را تعیین کرد. همچنین می توان عملیات پروگرام و تأیید را فعال یا غیر فعال کرد. پس از انجام این تنظیمات، با کلیک روی دکمۀ OK در پنجره های باز شده، آنها را می بندیم. بعد از کامپایل برنامۀ نوشته شده و ایجاد فایل HEX آن، با کلیک روی آیکون Download، میکروکنترلر پروگرام می شود (5).
تصویر 19 – تنظیمات پروگرامر J-Link در Keil
نکاتی دربارۀ پروگرامر J-Link و کار با آن
- اتصالات JTAG و SWD که توضیح داده شد، ملزومات این دو ارتباط هستند. در پروگرامر J-Link علاوه بر آنها باید VTref به VCC و همچنین GND آن به GND میکروکنترلر متصل باشد.
- مقدار مقاومت های پول آپ و پول دون استفاده شده در اتصالات ممکن است در منابع مختلف، متفاوت باشد.
- ترتیب پایه های کانکتور IDC برای JTAG و SWD در همۀ پروگرامرها و دیباگرها مشابه یکدیگر نیست. این موضوع در طراحی سخت افزار سازگار با JTAG و SWD حائز اهمیت است.
- درست است که J-Link در اتمل استودیو پشتیبانی می شود. اما این بدان معنا نیست که می تواند همۀ میکروکنترلرهای Microchip را پروگرام کند. برای مثال میکروکنترلرهای AVR خانوادۀ ATmega به طور معمول با J-Link قابل برنامه ریزی نیستند.
- پروگرامرهای J-Link غیر اصلی گاهی حین کار دچار مشکلاتی می شوند. روش های رفع مشکلات پروگرامر J-Link غیر اصلی در سطح اینترنت موجود است. این مشکلات نقص عملکرد درایور پروگرامر J-Link، توقف عملکرد فرم ور آن و … هستند.
- در این نوشته از دو برد توسعۀ STM3210xVxxx و LPC1768یوبرد استفاده شد. در تصویر زیر این دو برد را مشاهده می کنید. همان طور که مشاهده می شود، کانکتور IDC منطبق با پروگرامر J-Link روی برد LPC1768 موجود است. برد STM32F10xVxxx فاقد این کانکتور است و برای اتصال J-Link به STM32 روی آن، باید پایه ها با سیم متصل شوند.
تصویر 20 – بردهای توسعۀ میکروکنترلرهای ARM یوبرد
نتایج پروگرامر J-Link و برنامه ریزی میکروکنترلرهای ARM
- J-Link یک پروگرامر و دیباگر ساخت شرکت SEGGER Micricontroller است. این شرکت مدل های مختلف J-Link را توسعه داده و امروزه مدل های پیشرفته تری را در لیست محصولات خود دارد.
- در J-Link از پروتکل های JTAG و SWD پشتیبانی می شود.
- J-Link از هسته های پردازندۀ ARM Cortec و ARM Legacy و Renesas RX و Microchip PIC و Silicon Lab 8051 و RISC-V و همچنین تعداد زیادی حافظۀ SPI Flash پشتیبانی می کند.
- انواع مدل های J-Link عبارتند از: J-Link EDU و J-Link EDU Mini و J-Link BASE و J-Link BASE Compact و J-Link PLUS و J-Link PLUS Compact و J-Link WiFi و J-Link ULTRA+ و J-Link PRO و J-Link OB و J-Link Lite و … .
- ویژگی های مهم J-Link عبارتند از: پشتیبانی از طیف وسیعی از هسته های پردازنده و SPI Flash، فرکانس بالا در ارتباط با المان تحت کنترل، پشتیبانی IDEهای اصلی از آن، وجود منبع تغذیۀ داخلی، قابلیت مانیتور سیگتال های JTAG و ولتاژ تغذیۀ المان تحت پروگرام، پشتیبانی از پروگرام چند المان متصل به هم، پشتیبانی از رابط های JTAG و SWD، قابلیت مشاهدۀ محتویات حافظه و … .
- J-Flash یکی از نرم افزارهای مجموعۀ نرم افزاری J-Link است که برای پروگرام کردن و کار با محتویات حافظۀ المان تحت پروگرام به کار می رود.
- برای ارتباط JTAG حداقل 4 پین (به جز تغذیه، زمین و Reset) مورد نیاز است. برای ارتباط SWD این تعداد 2 پین است.
- در اتصالات JTAG و SWD تعدادی مقاومت پول آپ و پول دون نیاز است.
- مراحل کار با J-Flash به طور کلی عبارتند از: ساخت پروژه، اضافه کردن فایل داده، انجام تنظیمات، عملیات روی حافظۀ المان تحت پروگرام و (در صورت نیاز) ذخیره کردن پروژۀ J-Flash.
- برای فعال شدن ولتاژ 5v-Supply (پایۀ 19 پروگرامر) باید در تنظیمات J-Flash در بخش Production، مقدار Power Supply را روی VCC5V قرار داد. در این صورت پس از اتصال، این ولتاژ فعال می شود.
- J-Flash Lite یک نرم افزار ساده با امکانات محدود برای پروگرام کردن با J-Link است. در این نرم افزار تنها عملیات Erase و Program وجود دارد.
- یکی از IDEهایی که J-Link را پشتیبانی می کنند، Keil است. تنظیمات J-Link و عملیات روی المان تحت پروگرام از پنجرۀ Options for Target در تب Debug قابل دستیابی و تغییر است.
سلام. واقعا توی دنیای الکترونیک جزء محدود سایت هایی هستید که نوشته های شما ارزش خوندن رو داره و واقعا مطالب پربار و بی نظیری زحمت میکشید و می نویسید. سوالی داشتم از خدمتتون آقای بداغی، پروگرمر jlink بهتره یا stlink ؟
سلام. خیلی ممنون از نظرتون. لطف دارید. بنده تشکر میکنم از شما به خاطر مطالعه تون. این دو پروگرمر تفاوتهایی با هم دارن که چند مورد رو خدمتتون عرض میکنم و خودتون تصمیم بگیرید. پروگرمر جیلینک سخت افزار پیچیده تری داره و گران تر هست. از طرفی سرعت بیشتری در پروگرم کردن داره. همچنین طیف وسیعی از میکروکنترلرها رو پوشش میده. از طرفی پروگرمر stlink ساده تر و ارزانتر هست. از طرفی صرفاً میکروکنترلرهای STM32 و STM8 رو پشتیبانی می کنه.
سلام. ممنون بابت این پست. این که کیل از پروگرمر jlink پشتیبانی میکنه عالیه
سلام. خواهش میکنم. Keil عالیه
با سلام .از مطالب مفیدتون خیلی استفاده کردم.به سوالی خدمتتون داشتم.من یه برد دارم با میکروSTM32F103RET6 میخواستم بدونم میشه با پروگرم J-LINK حافظه فلش اونوREAD کرد.اگه راهنمایی بفرمایید ممنون میشم.
سلام. ممنون از نظرتون. لطف دارید. بله میشه. توی بخش منوی Target توضیح داده شده. البته اگه برنامۀ روی میکروکنترلر در برابر خوندن محافظت نشده باشه.
سلام وقت بخیر ، آیا از بروگرامر tnm که خروجی پین IDC ۱۰ دارد میشود بجای پروگرامر J LINK استفاده کرد . با تشکر
سلام. خیلی ممنون. مشخصات پروگرمری رو که میخواید دربیارید. دو تا ویژگی باید داشته باشه. اول این که پروتکل های ارتباطی JTAG و SWD و … رو که J-link پشتیبانی میکنه، باید پشتیبانی کنه. دوم این که اون میکروکنترلر یا آی سی که میخواید پروگرم کنید، باید توسط این پروگرمر پشتیبانی بشه. یه مورد دیگه این که با J-Link میشه دیباگ هم کرد. ببینید که با TNM هم میشه یا نه
با سلام وخسته نباشید خدمت استاد گرامی،وهمچنین تبریک وشادباش سال نو خدمت جناب عالی
سئوال بنده از حضورتون اینه که من با کدوم j-linkمیتونم آیسی۱۶ پین spansion fl064p رو پروگرام کنم این آیسی از نسل 25×× است ،البته شما استادید،من یه سرچ کردم دیدم اکثر این پروگرام های LINKاین آیسی رو پشتیبانی میکنند،اما خیلی ممنون میشم راهنمایی م کنید وعلاوه براین پروگرام به چه اقلام جانبی برای اتصال به این ایسی نیاز دارم وباید آیسی رو در بیارم یا نیاز نیست بسیار سپاس گذارم
سلام. وقتتون بخیر. سال نو شما هم مبارک. ان شاءالله سال خوبی داشته باشید. با توجه به این که توی سایت شرکت سازنده به این موضوع اشاره نشده که کدوم پروگرمر J-Link قابلیت پروگرم کردن این حافظه ها رو دارن، به نظر میاد که همۀ این پروگرمرها قابلیت برنامه ریزی حافظه های SPI Flash رو دارن. توی لیست حافظه هایی که توسط J-Link پشتیبانی میشن، این حافظه اومده و پروگرمرهای J-Link میتونن اون رو پروگرم کنن. برای پروگرم کردن نیاز به چیزی ندارید. پایه های پروگرمر رو به آی سی متصل می کنید و نیاز نیست که آی سی رو از روی برد دربیارید. البته این صحبت ها دربارۀ پروگرمرهای اصله. دربارۀ پروگرمرهای غیر اصل توی بازار هم بهتره که از فروشنده این موارد رو بپرسید. خواهش میکنم. موفق باشید.
سلام
ازشما ممنونم که به سئوال بنده جواب دادین.
استاد من چطور میتونم ازقیمت ولیست پروگرامر سایت شما مطلع بشم،وچطور میتونم از اصل بودن پروگرامر اطمینان حاصل کنم
سپاس
سلام. خواهش میکنم. ما توی محصولاتمون پروگرامر نداریم. فقط تعدادی برد توسعه و برد آموزشی داریم که اونا هم فعلاً ناموجود هستن. خواهش میکنم.
سلام
این پروگرامر در آیسی r5f523t5adfm از خانواده renesas کاربرد دارد
سلام. در لینک موردنظر شرکت سازنده و خانوادۀ آیسی موردنظر را جستجو کنید.
https://www.segger.com/supported-devices/jlink/