ARM, Keil, آموزش های متنی

آموزش دیباگ با استفاده از RTT از Jlink

آموزش دیباگ با استفاده از RTT از Jlink

با قابلیت RTT که برای دیباگرJlink هست آشنایی دارید؟ یکی از راه های دیباگ کردن برنامه استفاده از واحد USART است، البته این روش 2 پایه از میکروکنترلر را درگیر می کند و همینطور استفاده از یک مبدل USB به سریال مورد نیاز است. در این مقاله قصد دارم یک روش جایگزین عالی معرفی کنم، و برای این منظور از میکروکنترلر STM32F103 و نرم افزار Keil استفاده کرده ام. پس تا پایان مقاله همراه ما باشید.

قابلیت RTT چیست و چه مزایایی دارد؟

همانطور که می دانید JLink ساخت شرکت Segger است. زمانی که Jlink را نصب می کنید، برنامه های زیادی در کنار درایور Jlink نصب می شود. یکی از قابلیت های دیباگر Jlink قابلیت RTT هست که در ادامه این ویژگی را بررسی می کنیم.

با استفاده از این قابلیت بدون استفاده از واحد USART و مبدل USB به سریال قادر خواهید بود، با استفاده از یک ترمینال سمت PC و یا محیط خود نرم افزار Jlink RTT Viewer که همراه با پکیج Jlink نصب می شود، بین کامپیوتر و میکروکنترلر تبادل اطلاعات داشته باشید. به عبارت دیگر امکان ارسال اطلاعات سمت میکروکنترلر وجود دارد و همینطور در جهت بلعکس، از میکروکنترلر به کامپیوتر نیز این تبادل اطلاعات امکان پذیر است. بنابراین بدون اینکه نیاز به پیکربندی واحد UART از میکروکنترلر مورد استفاده داشته باشید، می توانید به امر دیباگ کردن بپردازید و این درحالی است که 2 پایه از میکروکنترلر نیز صرفه جویی می شود، در شرایطی که پایه های میکروکنترلر نیز درگیر است و پایه ی اضافه ای در دسترس نیست نیز استفاده از RTT بسیار معقول به نظر می رسد.

همانطور که احتمالا تا الان متوجه شده اید، این قابلیت وابسته به میکروکنترلر نیست و خبر خوب این است که به راحتی کار پیکربندی این قابلیت در هر محیط توسعه ای امکان پذیر است و از آنجایی که جزء قابلیت های Jlink است نگرانی ای در مورد میکروکنترلر مورد استفاده وجود ندارد.

برای شروع فایل زیر را دانلود کنید و به پروژه Keil اضافه کنید. این فایل شامل 2 فایل با پسوند c. و 2 فایل با پسوند h. می باشد. فایل های .c را مشابه سایر کتابخانه ها به لیست سورس های پروژه اضافه کنید. فایل های h. را مشابه تصویر زیر از بخش option for target در دید Linker قرار دهید. به این ترتیب در زمان کامپایل پروژه خطایی به وجود نمی آید.

لینک دانلود کتابخانه RTT

حال تکه کد زیر را در حلقه بینهایت تابع main قرار دهید.

SEGGER_RTT_WriteString(0, "Hello World\n");		
HAL_Delay(500);

دقت کنید که برای استفاده از توابع RTT در فایل main.c نیاز است که کتابخانه ی مربوطه را در main.c نیز اضافه کنید.

#include "SEGGER_RTT.h"

حالا پروژه را کامپایل کنید. در صورتی که تمام مراحل را درست انجام داده باشید، برنامه بعد از کامپایل نباید خطایی داشته باشد. حال، میکروکنترلر را پروگرام کنید.

فایل پروژه را مطابق آنچه تا این مرحله گفته شد می توانید از لینک زیر دریافت و به عنوان راهنما استفاده کنید.

در گام بعدی نرم افزار J-Link RTT Viewer را اجرا کنید. این نرم افزار در زمان نصب پکیج J-Link نصب می شود و برای اجرای این نرم افزار کافیست به مسیر نصب Jlink بروید و این نرم افزار را انتخاب کنید و یا در منوی Start نام نرم افزار را جستو و جو کنید.

بعد از اینکه نرم افزار اجرا شد، نیاز است که مدل میکروکنترلر هدف خود را انتخاب کنید، مطابق تصویر زیر میکرو STM32F103 که در این مقاله استفاده شده است را از لیست انتخاب کنید و دکمه ی OK را بزنید.

مشاهده خواهید کرد که نتیجه در محیط ترمینال مربوط به نرم افزار RTT Viewer چاپ می شود! خبر خوب دیگر این است که در این روش نیازی به تعیین Baud Rate مشابه UART نیز وجود ندارد! نتیجه در تصویر زیر قابل مشاهده است.

منابع پیشنهادی جهت یادگیری بیشتر STM32

می توانید در دوره آموزش STM32 در لینک زیر شرکت کنید.


لینک های مفید

پروگرام کردن میکروکنترلر STM32 با استفاده از Jlink

پروگرام کردن میکروکنترلر STM32 با ST-Link در Keil

پروگرام کردن میکروکنترلر STM32 با STM32 ST-Link Utility


اگر سوال، پیشنهاد، نظر و یا … دارید، از قسمت نظرات در پایین همین صفحه، می تونید با ما و بقیه ی خوانندگان درمیان بگذارید.

author-avatar

درباره مرتضی زندی

خلق کردن شماره 1 علاقه مندی های من هست. برنامه نویسی بهترین ابزاری بوده که تا الان برای این کار پیدا کردم. بیس الکترونیک دارم و دستی بر آتش در دنیای رشته های مجاور. تجربه سال ها فعالیت در تیم های R&D رو دارم، در این بین در حوزه ی امبدد سیستم ها فعالیتم پررنگ تر هست. عاشق یادگیری و یاد دادن هستم و تلاش می کنم تجربیاتم رو به زبانی ساده از طریق EasyMCU.org به نحوی کاربردی و موثر با علاقه مندان این حوزه به اشتراک بذارم.

4 نظر در “آموزش دیباگ با استفاده از RTT از Jlink

  1. somaye گفت:

    با عرض سلام و احترام
    آیا این روش که دراین پست توضیح داده شده در مورد freeRTOS هم صدق میکنه؟ یا تنظیمات خاصی داره؟ چون بنده با freeRTOS تست کردم اما در ترمینال چیزی ندیدم… میشه لطفا برای RTOS هم راهنمایی بفرمایید

    1. درود بر شما.
      تفاوتی نداره و برای FreeRTOS هم میتونید استفاده بفرمایید و تنظیمات اضافه ای نداره.
      از فایل پروژه همراه با مقاله استفاده بفرمایید و اول از روش برمتال جواب بگیرید. اگر این گام رو تونستید جواب بگیرید، همین مثال رو تبدیل به روش FreeRTOS کنید و مجدد نتیجه رو چک کنید.
      اگر از RTOS جواب نگرفتید احتمالا اصول پایه ای برنامه نویسی RTOS رو رعایت نمی کنید و نیاز هست دانشتون رو در زمینه FreeRTOS و برنامه نویسی و دنیا بینی سیستم عامل بیشتر کنید.
      در زمینه RTOS در سایت آموزش های زیادی وجود داره و میتونید استفاده بفرمایید.
      با آرزوی بهترین ها.

  2. اشکان گفت:

    ممنون از شما آقای زندی مطلب مفیدی بود

    1. درود. خواهش می کنم.
      خوشحالم مفید بوده.
      با آرزوی موفقیت.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

This site uses Akismet to reduce spam. Learn how your comment data is processed.