نرم افزار ST-LINK Utility یک نرم افزار رایگان ساخت شرکت STMicroelectronics برای پروگرام کردن میکروکنترلرهای STM32 است. این نرم افزار با نام های «نرم افزار STSW-LINK004» و «STM32 ST-LINK Utility» نیز شناخته می شود. STM32 ST-LINK Utility امکان برنامه ریزی میکروکنترلرهای STM32 را به صورت ISP سریع فراهم و پروگرامرهای ST-LINK و ST-LINK/V2 و ST-LINK/V3 را پشتیبانی می کند. نرم افزار ST-LINK Utility دارای محیط کارآمد با استفادۀ آسان برای خواندن، نوشتن و تأیید حافظۀ میکروکنترلرهای STM32 است. این نرم افزار بر خلاف ظاهر خلوتی که دارد، ویژگی ها و امکانات گسترده ای ارائه می دهد. این ویژگی ها و امکانات به طور کلی عبارتند از:
- پروگرام کردن حافظه های داخلی میکروکنترلرهای STM32، شامل حافظه های Flash و RAM و OPT و حافظه های خارجی؛
- تأیید محتوای برنامه ریزی، شامل چک کردن، تأیید هنگام یا بعد از پروگرام و مقایسه با محتوای فایل؛
- اتوماتیک کردن برنامه ریزی STM32؛
اگرچه نرم افزار Keil و نرم افزار STM32CubeIDE همانند اتمل استودیو قابلیت برنامه ریزی هم دارند، ولی ابزارها و ویژگی های مفید ST-LINK Uility می توانند دلیلی مهم برای کار با آن باشند. هدف این نوشته بیان مهم ترین ویژگی ها و ابزارهای این نرم افزار و همچنین آموزش کار با آن است. در نوشته های گذشته دربارۀ روش های پروگرام کردن STM32 صحبت کردیم. در این نوشته پس از بیان ویژگی های نرم افزار STM32 ST-LINK Utility، به پروگرام کردن میکروکنترلرهای STM32 با آن می پردازیم. مطالب این نوشته مربوط به نسخۀ 4.5.0 این نرم افزار است.
فیلم آموزش میکروکنترلرهای AVR مقدماتی
تصویر 1 – محیط نرم افزار پروگرام کردن STM32
ویژگی های کلیدی نرم افزار ST-LINK Utility
این نرم افزار علاوه بر رایگان بودن، ویژگی های دیگری دارد که عبارتند از:
- پشتیبانی از فرمت باینری و فرمت های Motorola S19 و Intel HEX؛
- باز کردن، ویرایش و ذخیرۀ فایل های اجرایی و فایل های داده ای که با Assembler/Linkerها یا کامپایلرهای C ساخته شده اند؛
- پاک کردن و پروگرام کردن حافظه و مشاهده و تأیید محتویات آن؛
- پروگرام کردن، پاک کردن و تأیید حافظه های خارجی با مثال هایی از لودرهای Flash خارجی، برای کاربرانی که لودر حافظه های خارجی خاص را توسعه می دهند.
- اتوماتیک کردن برنامه ریزی STM32، شامل پاک کردن، تأیید، پروگرام کردن، پیکربندی بایت های Option و چک کردن حافظه؛
- پروگرام کردن حافظه های OPT (مخفف One Time Programmable)؛
- پشتیبانی از پروگرام و پیکربندی بایت های Option؛
- ارائۀ یک رابط خط فرمان (CLI یا Command Line Interface)؛
- مقایسۀ فایل با محتویات حافظه؛
- مقایسۀ دو فایل با هم؛
- پشتیبانی از نمایش وضعیت حافظه و هسته در مد Live-update؛
- به روز رسانی Firmware پروگرامر ST-LINK/V2.
تصویر 2 – قابلیت به روز رسانی Firmware پروگرامر ST-LINK/V2
بخش های مختلف نرم افزار ST-LINK Utility
پنجرۀ اصلی این نرم افزار شامل منوها، آیکون ها، بخش Memory Display، بخش Device Information، بخش Memory Content و پنجرۀ وضعیت (Status Window) است. در تصویر زیر بخش های موجود در پنجرۀ اصلی این نرم افزار را می بینید. در این نرم افزار هفت منو (بخش 1 در تصویر زیر) وجود دارد که عبارتند از File و Edit و View و Target و ST-LINK و External Loader و Help. برخی از ابزارهای پر کاربرد این منوها در بخش آیکون ها قرار دارد (بخش 2). در بخش آیکون ها ابزارهای Open File و Save و Connect و Disconnect و Erase و Program و Settings و Serial Wire Viewer وجود دارد. در بخش Memory Display (بخش 3) نیز ابزاری برای یافتن و نمایش محتویات حافظۀ میکروکنترلر وجود دارد. در بخش Device Information (بخش 4) نیز اطلاعات میکروکنترلر روی پروگرامر ST-LINK نمایش داده می شود. بخش Memory Content (بخش 5) برای نمایش محتویات حافظۀ میکروکنترلر متصل به پروگرامر است. در این بخش محتویات فایل باز شدۀ دیگر نیز در یک تب جداگانه نمایش داده می شود. پنجرۀ وضعیت (بخش 6) نیز برای نمایش پیغام های نرم افزار است.
تصویر 3 – بخش های مختلف نرم افزار ST-LINK Utility
برنامه ریزی STM32 با نرم افزار ST-LINK Utility
برای برنامه ریزی میکروکنترلرهای STM32 با نرم افزار STM32 ST-LINK Utility ابتدا پروگرامر را به میکروکنترلر و از طرف دیگر به کامپیوتر متصل می کنیم. پیش از اقدام به پروگرام کردن باید درایور پروگرامر ST-LINK را نصب کرده باشیم. در این صورت اگر در نرم افزار در منوی Target روی Connect کلیک کنیم، محتویات حافظۀ میکروکنترلر در بخش Memory Content نمایش داده می شود (بخش 1 در تصویر زیر). همچنین در بخش Device Information، نام میکروکنترلر، Device ID و Revision ID و ظرفیت حافظۀ Flash آن نمایش داده می شود (2). در این هنگام می توان از منوی Target با کلیک روی Disconnect، ارتباط نرم افزار با میکروکنترلر را قطع کرد (3). همچنین می توان با کلیک روی Erase Chip و یا Erase Sectors، همه یا بخشی از حافظۀ Flash میکروکنترلر را پاک کرد (4). در همین منو دو نوع برنامه ریزی وجود دارد. اول برنامه ریزی بدون تأیید که با کلیک روی Program قابل انجام است (5). دوم برنامه ریزی با تأیید که با کلیک روی Program & Verify، پنجرۀ مربوط به آن باز می شود (6). در ادامه به بررسی نوع Program & Verify می پردازیم.
تصویر 4 – گزینه های مربوط به برنامه ریزی توسط ST-LINK Utility
مراحل پروگرام کردن با نرم افزار ST-LINK Utility
پس از اتصال پروگرامر به کامپیوتر، از منوی Target روی Connect کلیک می کنیم. نمایش اطلاعات میکروکنترلر در بخش Device Information و پنجرۀ وضعیت، به معنای صحیح بودن برقراری ارتباط است. پس از مشاهدۀ این اطلاعات از منوی Target روی Program & Verify کلیک می کنیم. اگر فایل HEX را پیش از این مراحل باز نکرده باشیم، پنجره ای برای جست و جوی آن باز می شود. که باید فایل HEX برنامه را در آن جست و جو و باز کنیم. پس از آن پنجرۀ Download باز می شود. در بخش File Path می توان فایل HEX را جست و جو کرد. در بخش Extra options دو چک باکس Skip Flash Erase و Skip Flash Protection verification وجود دارد. که اگر تیک آنها زده شود به ترتیب از پاک کردن و حفاظت حافظۀ Flash هنگام برنامه ریزی صرف نظر می شود. در بخش Verification دو گزینۀ Verify while programming و Verify after programming وجود دارد. که اگر اولی انتخاب شود، تأیید حافظه هنگام برنامه ریزی انجام می شود. اگر دومی انتخاب شود، تأیید پس از برنامه ریزی انجام می شود.در بخش After programming دو چک باکس Reset after programming و Full Flash memory Checksum وجود دارد. اگر تیک اولی زده شود، میکروکنترلر پس از برنامه ریزی، Reset می شود. اگر تیک دومی زده شود، بعد از برنامه ریزی، حافظه چک می شود. در پایان با کلیک روی دکمۀ Start عملیات پروگرام کردن شروع می شود. پس از اتمام برنامه ریزی باید از منوی Target روی Disconnect کلیک کرد. همچنین برای اجرای برنامه توسط میکروکنترلر ممکن است لازم باشد آن را Reset کنیم. در این مرحله برنامه ریزی میکروکنترلر STM32 با نرم افزار ST-LINK Utility به اتمام می رسد.
تصویر 5 – مراحل پروگرام کردن با ST-LINK Utility
نکته: در پروگرام کردن با استفاده از گزینۀ Program منوی Target، بخش Verification پنجرۀ Download غیر فعال است.
انجام اتوماتیک عملیات برنامه ریزی در ST-LINK Utility
اگر بخواهیم چند میکروکنترلر را مانند قبل با یک کد HEX پروگرام کنیم، زمانی صرف انجام مراحل آن می شود. در نرم افزار ST-LINK Utility عملیات برنامه ریزی می تواند اتوماتیک باشد. در این روش یک مرتبه کد HEX را انتخاب می کنیم و تنظیمات را انجام می دهیم. پس از آن با شروع برنامه ریزی اتوماتیک، کافی است میکروکنترلرها را روی پروگرامر قرار دهیم تا پروگرام شوند. بعد از پروگرام شدن، میکروکنترلر پروگرام شده را از پروگرامر جدا و میکروکنترلر جدید را به آن متصل می کنیم. میکروکنترلر جدید بدون این که نیاز باشد انتخاب فایل HEX و تنظیمات را از نو انجام دهیم، پروگرام می شود. با استفاده از این روش می توانیم چندین میکروکنترلر را پشت سر هم و با زمان کمتر برنامه ریزی کنیم.
برای این کار از منوی Target روی Automatic Mode کلیک می کنیم. پس از آن در پنجرۀ Automatic Mode در بخش File، فایل HEX را جست و جو و اضافه می کنیم. در بخش Actions نیز اعمالی را که نیاز است در برنامه ریزی انجام شود، تنظیم و در پایان روی Start کلیک می کنیم. اکنون برنامه ریزی اتوماتیک شروع می شود. پس از این که پیغام Please disconnect device را دریافت کردیم، میکروکنترلر پروگرام شده را از روی پروگرامر جدا می کنیم. در این لحظه پیغام Waiting for device ظاهر می شود. و باید میکروکنترلر جدید را روی پروگرامر قرار دهیم. عملیات برنامه ریزی به صورت اتوماتیک روی میکروکنترلر جدید نیز انجام می شود. همین روند تا زمانی که آخرین میکروکنترلر را پروگرام کردیم، ادامه پیدا می کند. در نهایت روی دکمۀ Stop کلیک و پنجرۀ Automatic Mode را می بندیم.
نکته: حین برنامه ریزی اتوماتیک، پنجرۀ Download به ازای هر بار برنامه ریزی باز و بسته می شود. هنگام برنامه ریزی نباید تنظیمات آن را تغییر داد.
تصویر 6 – برنامه ریزی به صورت اتوماتیک
کار با محتویات حافظه در ST-LINK Utility
در نرم افزار ST-LINK Utility می توان محتویات حافظه را به صورت دستی تغییر داد. برای مثال می توان به صورت دستی یک آدرس از حافظه را پاک کرد یا مقداری در آن قرار داد. برای این کار روی آن بخش از حافظه در Memory Content کلیک و مقدار جدید را تایپ می کنیم. در این صورت با زدن کلید Enter، تغییرات در آن بخش از حافظه قرار می گیرد. همچنین با کلیک راست کردن در هر بخش، می توان داده ها را کپی، انتقال، حذف و جست و جو کرد. عملکرد دیگری که با کلیک راست کردن قابل دسترسی است، Fill Memory است. با استفاده از این ابزار می توان محتویات همه یا بخشی از حافظۀ Flash را با مقداری جدید پر کرد. برای این کار ابتدا از منوی Target روی Connect کلیک می کنیم تا محتویات حافظۀ میکروکنترلر خوانده شود. سپس در بخش Memory Content کلیک راست و روی Fill Memory کلیک می کنیم. در پنجرۀ باز شده، در تکست باکس Start Address باید آدرس اولین جایی از حافظه و در تکست باکس Size باید مقدار حجم حافظه ای که می خواهد تغییر کند، قرار گیرد. در تکست باکس Data Value نیز مقداری که قرار است به آن بخش از حافظه بدهیم، قرار می گیرد. در نهایت روی دکمۀ Fill Memory کلیک می کنیم. در این لحظه محتویات حافظۀ میکروکنترلر شروع به تغییر می کند.
تصویر 7 – پر کردن بخش از حافظۀ Flash میکروکنترلر
آپدیت فریمور ST-LINK
آپدیت Firmware پروگرامر ST-LINK با نرم افزار ST-LINK Utility به راحتی انجام می شود. برای این کار پس از اتصال پروگرامر به کامپیوتر، از منوی ST-LINK روی Firmware update کلیک می کنیم. در پنجرۀ ST-Link Upgrade باز شده روی Device Connect کلیک می کنیم. در این مرحله اگر خطایی رخ داد، پروگرامر را یک بار از کامپیوتر قطع و دوباره وصل می کنیم. سپس مجدداً روی Device Connect کلیک می کنیم. پس از اتصال، ورژن قدیمی Firmware در زیر دکمۀ Device Connect و ورژن جدید آن در بالای دکمۀ Yes نمایش داده می شود. پس از آن روی Yes کلیک می کنیم. آپدیت Firmware پروگرامر ST-LINK شروع می شود. در پایان در پنجرۀ باز شده با کلیک روی OK به آپدیت Firmware پروگرامر خاتمه می دهیم.
نکته: آخرین نسخۀ Firmwareی که توسط ST-LINK Utility آپدیت می شود، ممکن است با آخرین نسخه ای که توسط نرم افزار Keil آپدیت می شود، متفاوت باشد. همچنین ممکن است پس از آپدیت Firmware توسط Keil، نرم افزار ST-LINK Utility نتواند به پروگرامر متصل شود. در این صورت باید Firmware توسط ST-LINK Utility آپدیت شود.
تصویر 8 – نحوه آپدیت Firmware پروگرامر ST-LINK
تنظیمات برنامه ریزی
در نرم افزار ST-LINK Utility برای مشاهده یا تغییر تنظیمات برنامه ریزی باید از منوی Target روی Settings کلیک کرد. در پنجرۀ Settings تنظیماتی از قبیل انتخاب پروگرامر از روی شماره سریال آن و نمایش ورژن Firmware (بخش 1 در تصویر زیر)، خانوادۀ میکروکنترلر روی پروگرامر و ولتاژ تغذیۀ آن (2)، تنظیمات اتصال از قبیل انتخاب رابط و فرکانس برنامه ریزی (3) و … وجود دارد. بخش Access Port در صورتی که میکروکنترلر دارای چند Access Port باشد، فعال خواهد بود. در بخش Mode نیز، مدهای اتصال (Normal و Hot Plug و Connect Under Reset) انتخاب می شوند. در بخش Reset Mode می توان مدهای Software System Reset و Core Reset و Hardware Reset را انتخاب کرد (4). در بخش Log File با تیک زدن Generate Trace LOG File، آنچه در پنجرۀ وضعیت نمایش داده می شود، در یک فایل txt ذخیره می شود. با کلیک روی دکمۀ Open Containing Folder، مسیر این فایل باز می شود (5).
تصویر 9 – پنجرۀ تنظیمات در نرم افزار ST-LINK Utility
ابزارهای کاربردی دیگر در نرم افزار ST-LINK Utility
نرم افزار ST-LINK Utility علاوه بر ویژگی ها و قابلیت های نام برده، عملکردهای دیگری دارد که در این نوشته مجال گفتن همۀ آنها نیست. برخی ابزارهای کاربردی دیگر این نرم افزار عبارتند از:
- مقایسۀ دو فایل: با این ویژگی می توان متن دو فایل قابل پشتیبانی نرم افزار را با هم مقایسه کرد. برای این کار کافی است از منوی File روی Compare two files کلیک کرد. سپس دو پنجره پشت سر هم باز می شود که می توان دو فایل را جست و جو کرد.
- مقایسۀ محتویات حافظه با یک فایل: با استفاده از این ابزار می توان دادۀ ذخیره شده در حافظه را با مقادیر یک فایل مقایسه کرد. در صورت وجود تفاوت، نتیجه در یک تب در بخش Memory Content نمایش داده می شود. این ابزار با نام Target memory compare with file در منوی Target قرار دارد.
- ابزار External Loader: این ابزار اجازه می دهد لودرهای خارجی را که توسط ST-LINK Utility استفاده می شوند، برای عملیات نوشتن، خواندن و پاک کردن حافظه های خارجی انتخاب کرد.
- مشاهدۀ محتویات هر آدرس حافظه: این کار با تایپ آدرس مورد نظر در تکست باکس Address در بخش Memory Display امکان پذیر است. همچنین با تعیین مقدار Size در تکست باکس آن در همین بخش، تعیین می کنیم که چه مقدار از محتویات حافظه نمایش داده شود. در همین بخش می توان نوع نمایش داده ها را روی 8 بیتی، 16 بیتی و 32 بیتی قرار داد.
- پاک کردن حافظه: با استفاده از گزینه های Erase Chip و Erase Sectors در منوی Target می توان همه یا بخشی از حافظه را پاک کرد.
- ابزار Blank Check: با این ابزار در منوی Target، خالی بودن حافظه بررسی می شود. در صورت وجود داده در حافظه، آدرس آن در یک پنجره به شکل اخطار نمایش داده می شود.
تصویر 10 – نتیجۀ Blank Check
در ادامه ویدئویی مربوط به پروگرام کردن STM32 با روش هاس JTAG و SWD ارائه شده است. که ویدئویی مربوط به آموزش های سالهای گذشته است. دیدن آن خالی از لطف نیست.
ویدئوی 1 – پروگرام کردن STM32
نتایج کار با نرم افزار ST-LINK Utility و برنامه ریزی STM32
- ST-LINK Utility را با نام های نرم افزار STM32 ST-LINK Utility و نرم افزار STSW-LINK004 و همچنین نام هایی از جمله نرم افزار پروگرامر STM32، نرم افزار پروگرامر ARM STM32 و نرم افزار کار با ST-LINK می شناسند.
- ویژگی ها و امکانات ST-LINK Utility به طور کلی عبارتند از: برنامه ریزی حافظه های داخلی میکروکنترلرهای STM32 (حافظه های Flash و RAM و OPT)، برنامه ریزی حافظه های خارجی، تأیید محتوای برنامه ریزی و اتوماتیک کردن عملیات برنامه ریزی.
- برخی ویژگی های مهم ST-LINK Utility عبارتند از: پشتیبانی از فایل های باینری و فرمت های Motorola S19 و Intel HEX، باز کردن و ویرایش و ذخیرۀ فایل های داده، پاک کردن و برنامه ریزی و تأیید حافظه های داخلی و خارجی و مشاهدۀ محتویات آنها، برنامه ریزی حافظه های OPT، مقایسۀ فایل با محتویات حافظه و به روز رسانی Firmware پروگرامر ST-LINK/V2.
- پنجرۀ اصلی ST-LINK Utility شامل شش بخش است که عبارتند از: بخش منوها، بخش آیکون ها، بخش Memory Display، بخش Device Information، بخش Memory Content و پنجرۀ وضعیت.
- مراحل برنامه ریزی STM32 به طور کلی عبارتند از: برقراری ارتباط از طریق کلیک روی Connect در منوی Target، جست و جوی فایل HEX، تنظیمات برنامه ریزی در پنجرۀ Download و قطع ارتباط پس از برنامه ریزی با کلیک روی Disconnect از منوی Target.
- مراحل برنامه ریزی اتوماتیک STM32 عبارتند از: باز کردن پنجرۀ Automatic Mode از منوی Target، جست و جوی فایل HEX و انجام تنظیمات این پنجره، شروع برنامه ریزی، قرار دادن میکروکنترلرها روی پروگرامر یکی پس از برنامه ریزی دیگری، کلیک روی Stop در پنجرۀ Automatic Mode پس از برنامه ریزی همۀ میکروکنترلرها.
- در ST-LINK Utility می توان با کلیک راست کردن در بخش Memory Content و یا گزینه های موجود در منوی Edit، داده های موجود در حافظه را ویرایش کرد و تغییر داد.
- آپدیت Firmware پروگرامر ST-LINK با کلیک روی Firmware update از منوی ST-LINK قابل انجام است.
- پنجرۀ تنظیمات ST-LINK Utility شامل نمایش و انتخاب پروگرامر، نمایش خانواده و ولتاژ میکروکنترلر تحت برنامه ریزی، تنظیمات اتصال، مدهای Reset و تنظیمات فایل LOG است.
- برخی ابزارهای کاربردی ST-LINK Utility عبارتند از: امکان مقایسۀ دو فایل با یکدیگر، مقایسۀ محتویات حافظه با محتویات یک فایل، ابزار External Loader، مشاهدۀ محتویات حافظه با وارد کردن آدرس، پاک کردن حافظه و ابزار Blank Check.
سلام
من پروگرمر ST LINK V2 دارم
زمانی که یه بورد Blue Pill متصل بود(و البته از USB کامپیوتر جدا بود) از طریق mini USB به بورد برق دادم. از همون موقع کامپیوتر پروگرمر رو شناسایی نمیکنه. آیا راهی برای نجات پروگرمر دارم؟
ممنون
سلام. من از اتصالاتی که بین پروگرمر و برد برقرار کردید اطلاعی ندارم. ممکنه زمین و VCC رو جا به جا متصل کردید و این باعث شده ولتاژ معکوس به پروگرمر داده بشه و آسیب ببینه. اما اگه اتصالات درست بوده باشه، ممکنه درایور پروگرمر خراب شده باشه. درایور پروگرمر توی ویندوز. درایورش رو دانلود و نصب کنید. به احتمال زیاد مشکل برطرف میشه. از سالم بودن کابل و اتصالات هم مطمئن بشید. خواهش میکنم.
سلام. ممنون از آموزشتون. من یه سوالی داشتم اینکه من st link رو با keil می خوام برنامه رو اجرا کنم خطای not a genuine st device میده میدونید برای رفع این ایراد باید چه کاری انجام بدم؟
سلام. خیلی ممنون. لطف دارید. این خطا رو قبلاً ندیده بودم. سرچ کردم دیدم این خطا برای میکروکنترلرهای Clone هستش. یعنی میکروکنترلرتون احتمالاً کپیه. باز هم تحقیق کنید. امیدوارم مشکلتون برطرف بشه
خدا خیرتون بدهد مهندس واقعا از مطالبتون استفاده کردم