زنگ

کسانی هستند که این خبر را قبل از شما می خوانند.
برای دریافت مطالب تازه مشترک شوید.
پست الکترونیک
نام
نام خانوادگی
چگونه می خواهید The Bell را بخوانید
بدون اسپم

این کلون آردوینو بوت لودر ویژه ای را ارائه می دهد که به شما امکان می دهد سیستم عامل را از طریق USB بارگذاری کنید ، بدون استفاده از اجزای خارجی مانند آداپتور ST-Link یا USB-UART.

امروز باید با یک کنترلر لخت از زیر CooCox و بدون stm32duino کار کنم. اما در اینجا مشکل است. حتی یک لامپ چشمک زن ساده که از طریق این bootloader ریخته می شود کار نمی کند.

بیایید درستش کنیم شاید به نظر برخی محاسبات من امری عادی باشد. اما من تازه شروع به مطالعه کنترل های STM32 کردم و حداقل نیمی از روز را کشته ام تا مشکل را پیدا کنم. ناگهان ، این مقاله زمان توسعه را برای کسی کوتاه می کند.

من هیچ کاری در مقابل ST-Link و سایر اشکال زدایی ها ندارم. اما در دستگاه تمام شده من اینگونه نخواهد بود ، اما قطعاً USB وجود خواهد داشت. چرا بلافاصله امکان به روزرسانی سیستم عامل از طریق USB فراهم نیست؟ من شخصاً این روش را راحت می دانم. به هر حال ، من قبلاً سیمی وصل کرده ام که برق و سریال USB به آن وصل شده است.

بیایید ببینیم که چگونه bootloader کار می کند. برای شروع با مثال کنترلرهای AVR. چرا او را به یاد آوردم؟ من از آردوینو تغییر کردم و ناخودآگاه انتظار رفتاری مشابهم را داشتم. اما در STM32 همه چیز متفاوت شد. بنابراین ، من می خواهم در مورد تفاوت این دو میکروکنترلر صحبت کنم.

بنابراین. در میکروکنترلرهای AVeg ATMega می توان مقدار خاصی از حافظه را برای بوت لودر در نزدیکی انتهای فلاش رزرو کرد. با استفاده از بیت فیوز ، می توانید کنترل کنید که آدرس از چه برنامه شروع می شود. در صورت عدم وجود بوت لودر ، برنامه از آدرس 0x0000 شروع می شود. اگر یک bootloader وجود داشته باشد ، از برخی آدرسهای دیگر شروع می شود (مثلاً در ATMega32 با 0x3C00 ، اگر اندازه bootloader 2k باشد).

وقتی bootloader کار خود را انجام داده است ، کنترل را از آدرس 0x0000 به برنامه اصلی منتقل می کند. آن برنامه همیشه از 0x0000 شروع می شود. کامپایلر و لینک دهنده با این واقعیت کار می کنند که کد در ابتدای فضای آدرس قرار دارد.

در میکروکنترلرهای STM32 ، اینگونه نیست. همه برنامه ها از آدرس 0x0800000 شروع می شوند. یک bootloader چندان ویژه نیست. این همان برنامه ای است که از همان آدرس شروع شده شروع می شود. در این فرآیند ، bootloader می تواند سیستم عامل را دریافت کند (از طریق USB یا UART ، از طریق فلش درایو USB بخواند ، از ماهواره دریافت کند ، آن را از یک فضای فرعی ، هر آنچه که… دریافت کند) و آن را برای آدرس های بالاتر از خود bootloader بنویسد. و البته در پایان کار خود ، کنترل را به برنامه اصلی منتقل کنید.


بنابراین هنگام گردآوری سیستم عامل باید بدانید که بوت لودر سیستم عامل را کجا بنویسد و آدرس ها را مطابق آن تنظیم کند.

این همه با تئوری است. بیایید به تمرین بپردازیم. در زیر یک دستورالعمل گام به گام در مورد چگونگی اتصال بوت لودر USB به میکروکنترلرهای سری STM32F1xx و شاید برای برخی دیگر نیز ارائه شده است.

با این حال ، محدودیت هایی برای مدار وجود دارد. در اینجا ، متأسفانه ، من قوی نیستم. ITP برای درگاه PA12 (با نام USB D +) به مقاومت مقاومت در برابر فشار 1.5k نیاز دارد. این به بوت لودر اجازه می دهد تا در زمان مناسب از USB متصل و قطع شود.

  • اکنون میکروکنترلر آماده است تا از طریق USB bootloader چشمک بزند. اما هنوز باید خود سیستم عامل را تعمیر کنید. و شما باید 2 کار انجام دهید:
    • آدرس شروع لینک دهنده را مشخص کنید. در CooCox ، این کار در تنظیمات پروژه ، تب لینک ، بخش Memory Areas ، IROM1 Start Address انجام می شود. بوت لودر 8 کیلوبایت اول را می گیرد ، به این معنی که آدرس شروع سیستم عامل 0x0800000 + 0x2000 \u003d 0x08002000 خواهد بود. زمینه اندازه ، احتمالاً ، باید 8k نیز کاهش یابد.
    • در جایی از ابتدای برنامه ، قبل از شروع مناطق ، یک تماس بگیرید

      جدول NVIC_SetVectorT (NVIC_VectTab_FLASH ، 0x2000)؛

      به روز رسانی 05/17/2018: هیچ عملکرد NVIC_SetVectorTable () در نسخه مدرن STM32Cube وجود ندارد. درعوض ، می توانید نقص VECT_TAB_OFFSET را در پرونده system_stm32f1xx.c برطرف کنید (یا مشابه میکروکنترلر دیگر)

  • پر کردن سیستم عامل را می توان از پروژه stm32duino برداشت. در فهرست ابزارها ، به دنبال اسکریپتی بنام Maple_upload باشید. من فقط از نسخه ویندوز استفاده کردم - maple_upload.bat.
  • مثل این اجرا کنید:

    "maple_upload.bat" COM20 2 1EAF: 0003 "مسیر \\ به \\ Firmware.bin"
    به جای COM20 ، باید پورت خود را که میکروکنترلر در آن قرار دارد جایگزین کنید.

    پوره یک چیز خیلی لطیف است ، مسیرهای نسبی را دوست ندارد. بنابراین باید مسیر سیستم عامل کاملاً مشخص شود.

    1EAF: 0003 VID و PID است

    2 - این پارامتر AltID است ، که نشان می دهد که سیستم عامل باید با 0x08002000 بارگذاری شود (بخوانید).

  • کمی دیگر از تفاوت های ظریف. قبل از آپلود سیستم عامل ، باید bootloader را اجرا کنید. ساده ترین راه فشار دادن دکمه تنظیم مجدد است. پس از آن ، bootloader شروع می شود و چند ثانیه برای سیستم عامل منتظر می ماند. اگر در آن لحظه کسی Maple_upload را شروع نکرد ، بوت لودر کنترل را به سیستم عامل اصلی منتقل می کند.

    این ممکن است باعث ناراحتی شود. اگر میکروکنترلر خاموش و آویزان شود ، دیگر گوش به پورت گوش نمی دهد. بنابراین ، او نمی تواند دنباله کلیدی را بشنود و از راه اندازی مجدد در bootloader استفاده کند. سپس فقط برای کمک کردن مجدداً تنظیم مجدد کنید.

    این همه امیدوارم مقاله من به نحوه کار بوت لودر در STM32 و نحوه بارگیری سیستم عامل از طریق درگاه USB روشن شود. متأسفانه ، آستانه ورود هنوز بالاست ، اما ناگهان مقاله من به کسی در غلبه بر آن کمک خواهد کرد.

    هر میکروکنترلر stm32 را می توان از طریق فلش کرد USART_1 و رابط های دیگر ، جزئیات را در اینجا ببینید. برای این کار ، MK دارای یک بوت لودر مخصوص سیستم است که به صورت سیم کشی شده است حافظه سیستم (منطقه حافظه ویژه) در مرحله تولید ، نمی توان آنرا حذف یا تغییر داد. این بوت لودر با "کشیدن" پین BOOT_0 به "plus" آغاز می شود ، پس از آن انتظار می رود که سیستم عامل وارد شود.

    از طریق USART ، می توانید پرونده های .bin یا .hex را بارگیری کنید.

    توضیحات به عنوان نمونه صفحه آبی قرص ساخته شده است ، با این حال ، هر آنچه گفته شد برای هر stm32 صحیح است.

    تابلوهای شرکتی مانند Discovery و Nucleo می توانند از طریق USART چشمک بزنند.

    برای کار ، به مبدل USB به UART نیاز دارید ...

    اگر چنین چیزی وجود نداشته باشد ، دو گزینه برای تبدیل آردوین به مبدل وجود دارد ...

    پیچ

    1 . بستن بازنشانی روی GND (ممکن است سوار نشود).
    2 . در اینجا چنین طرح ساده ای را بارگیری کنید:

    Void setup () (pinMode (0، INPUT)؛ pinMode (1، ورودی)؛) حلقه خالی () ()

    برای بررسی اینکه آیا arduin به عنوان مبدل کار می کند ، RX و TX را ببندید ، هر شخصیت را باز کرده و ارسال کنید. اگر آنها بازگشتند ، پس همه چیز کار می کند.

    قبل از چشمک زدن لازم است که پین \u200b\u200bBOOT0 را به "plus" محکم کنید ، این کار MK را در حالت "bootloader system" قرار می دهد. در صفحه شرح داده شده ، این کار با حرکت بلوز انجام می شود ...

    اگر تابلو مارک دار باشد

    روی تابلوهای مارک دار (Discovery ، Nucleo) ، شما همچنین باید پین BOOT0 را به همراه آن بکشید ، اما این فقط کار نخواهد کرد. مدار تابلوی خود را بگیرید و پرش های مربوطه را در آنجا پیدا کنید ...

    شما باید به دنبال چیزی شبیه به این باشید:

    من به یاد نمی آورم این مدار از کجا باشد ، اما اصل این است: در این حالت ، پین BOOT_0 از طریق مقاومت R16 و بلوز SB16 به سمت "منهای" کشیده شد. اگر بلوز SB16 را بردارید ، پین از طریق مقاومت R17 به "پلاس" کشیده می شود و می توانید آن را چشمک بزنید. پس از سیستم عامل ، باید همه چیز را به جای خود برگردانید.

    بلوز ممکن است مانند مقاومت به نظر برسد.

    ما مبدل و STM را به صورت زیر وصل می کنیم ...

    تصویر

    مبدل Rx <-> PA9 STM
    مبدل TX <-> PA10 STM
    مبدل GND <-> GND STM

    ... و مبدل و STM را به کامپیوتر وصل کنید.

    دستورالعمل های سیستم عامل برای

    در صورت تمایل می توانید ST را از سایت (در پایین صفحه) بگیرید.

    روی بازنشانی روی صفحه کلیک کنید

    به پوشه بروید تظاهرات کننده لودر فلش و اجرا Flash Loader Demonstrator.exe

    پورت COM مبدل را انتخاب کرده و کلیک کنید بعد...

    هشدار محافظت را حذف کنید

    چنین پیامی ...

    ... یعنی تخته قفل شده است. هیچ مشکلی نیست ، فقط محافظت را با دکمه حذف کنید محافظت را بردارید و سپس کلیک کنید خوب.

    حفاظت حذف شد.


    اگر هنوز خطایی ایجاد می کند ، بازنشانی یا چیزی را با مبدل فشار دهید.

    اگر چراغ راهنمایی چراغ سبز می دهد ، کلیک کنید بعد...

    کلیک بعد...

    در مرحله بارگیری به دستگاه مسیر مربوط به پرونده .bin یا .hex مورد نظر را مشخص کرده و کلیک کنید بعد...

    همه چیز آماده است ، بلوز را به وضعیت اصلی خود برگردانید و Reset را فشار دهید.

    دستورالعمل های سیستم عامل برای

    در جایی بارگیری و از حالت فشرده خارج شوید.

    از پوشه مربوط به سیستم عامل خود ، پرونده stm32flash را در پوشه خانه خود کپی کنید.

    این ابزار در شلغم اوبونتو است ، من در سایر دزدگیرها نمی دانم ، بنابراین ارسال می کنم.

    قبل از چشمک زن ، همیشه تنظیم مجدد را روی صفحه فشار دهید.

    در ترمینال ، دستور دهید:

    ./stm32flash -w /home/dima/myfile.bin -v -g 0x0 / dev / ttyUSB0
    نام و مسیری که در پرونده خود خواهید داشت. فایلهای HEX همچنین با این ابزار قابل چشمک زدن هستند.

    اگر او به حق سوگند یاد کرد ، پس دستور دهید ...

    سودو chmod 777 / dev / ttyUSB0

    ... یا برنامه را از طریق سودو اجرا کنید.

    نوشتن حفاظت

    اگر چنین پیامی ظاهر شود ...

    ... سپس دو دستور به نوبه خود بدهید:

    ./stm32flash -u / dev / ttyUSB0 ./stm32flash -k / dev / ttyUSB0

    اول محافظت از نوشتن ، دوم خواندن را حذف می کند.

    اگر شما یک بوت لودر Arduin داشتید ، آنرا رونویسی می کنید ، برای بازگرداندن آن ، فقط با روش فوق پر کنید

    فرض کنید دستگاه خود را در بازار راه اندازی کرده اید و می ترسید که کسی شروع به کپی کردن آن کند ... در واقع ، فقط برنامه نویس را به دستگاه ما وصل کنید و سیستم عامل را به عنوان مثال از طریق نرم افزار ST-Link بخوانید ( هدفوصل کنید).

    البته ، شما به سادگی می توانید پاهای میکروکنترلر را پاره کنید ... اما توسعه دهندگان ST Microelectronic جایگزین بهتری را ارائه می دهند. همه MK ها دارای سیستم محافظت هستند (محافظت از آن را بخوانید). ذات آن بسیار ساده است - اگر مقدار مشخصی در یک رجیستر ویژه (گزینه بایت) تنظیم شده باشد ، امکان اشکال زدایی و خواندن سیستم عامل غیرفعال است. در این حالت امکان چشمک زدن MK را نیز از دست خواهید داد. البته می توان با تغییر مقدار در رجیستری گزینه های بایت ، این محافظت را غیرفعال کرد ، اما در این حالت حافظه برنامه رونویسی می شود ، به این معنی که هیچ کس نمی تواند آن را کپی کند.

    شما می توانید با استفاده از همان ابزار ST-Link ، مقدار موجود در ثبت را تغییر دهید. هدفگزینه های Bytes ...محافظت کنیدفعال کردن.


    غیرفعال کردن ، به ترتیب ، می تواند به روشی مشابه انجام شود. اگر دستگاه های زیادی وجود دارد ، این خیلی راحت نیست. می توانید برنامه را بطور برنامه ای محافظت کنید.

    برای اجرای حفاظت ، استفاده از کتابخانه استاندارد محیطی مناسب است ، به طور خاص stm32f10x_flash.c شامل عملکردی است که ما به آن نیاز داریم. خود ثبت نام و همچنین کار با فلش مموری در سند توضیح داده شده است. با این حال ، قبل از این ما به یاد می آوریم که چگونه از محافظت از درج چندگانه پرونده های هدر استفاده می شود. ما از دستورالعمل های پیش پردازنده استفاده کرده ایم:

    • #define - بخشنامه به پیش پردازنده می گوید که خط را در پرونده جایگزین کند ، اما اگر آرگومان (آنچه در پایان است) شناسه را مشخص نمی کند (پس از آن در وسط) در سیستم باقی می ماند و می تواند توسط سایر بخشنامه ها بررسی شود (یعنی می توانید یک شرط بنویسید ، با کد خاص اجرا خواهد شد یا برعکس)؛
    • #ifndef - بخشنامه را می توان "به طور قطع" خواند ، اما #ifdef دیگری - "اگر قطعاً" برای ما مناسب تر است.
    • #endif بخشنامه ای است که نشانگر پایان یک شرط است.

    شناسه ای را ایجاد کنید که بگوید این مجمع نهایی است. در حالی که این خط کاملاً تفسیر شده است - کدی که بین #ifdef و #endif قرار دارد اجرا نمی شود.

    // # RELEASE را تعریف کنید

    در مونتاژ نهایی فقط کافی است خط را نادیده بگیرید و دستگاه را چشمک بزنید.

    #ifdef RELEASE // code here #endif

    و اکنون به ذات. ما قبلاً فهمیدیم که چگونه می توان با فلش مموری داخلی میکروکنترلر کار کرد. قبل از نوشتن بیت های محافظ ، باید دسترسی به حافظه را باز کنید ، سپس باید اقدامات لازم را انجام داده و دسترسی مجدد را مسدود کنید. به شرح زیر است:

    #ifdef RELEASE # هشدار "حفاظت روشن است. اشکال زدایی خاموش است" اگر (FLASH_GetReadOutProtectionStatus () \u003d\u003d RESET) (FLASH_Unlock ()؛ FLASH_ReadOutProtection (Enable)؛ FLASH_Lock ()؛) #endif

    امروز ما از فریمور موجود در stm32 در برابر خواندن هکرهای جالب محافظت خواهیم کرد. برای اینکه لاستیک را نکشید ، در اینجا یک تکه کد وجود دارد:

    #ifdef NDEBUG اگر (FLASH_GetReadOutProtectionStatus () \u003d\u003d RESET) (FLASH_Unlock ()؛ FLASH_ReadOutProtection (Enable)؛ FLASH_Lock ()؛) #endif

    همانطور که ممکن است حدس بزنید ، این قطعه از stm از کتابخانه استفاده می کند. استفاده از چنین قطعه کد بسیار راحت است - کنترلر خود محافظت از خود را در اولین شروع تنظیم می کند ، و اولین شروع به راحتی پس از سیستم عامل سازماندهی می شود. اینجاست ، آزادی از استبداد فیوزها!

    بله ، من درباره holivor در مورد "کتابخانه در مقابل دسترسی مستقیم به ثبت ها" می دانم. موقعیت من در اینجا این است - اگر به سرعت بیشتری نیاز دارید ، یا حافظه بسیار کمی باقی مانده است ، اما شما نیاز به دسترسی مستقیم به رجیسترها دارید. اگر سرعت مهم نیست و حافظه زیادی وجود دارد ، بهتر است از کتابخانه استفاده کنید - از این طریق برنامه سریعتر و خواندنی تر نوشته می شود.

    محافظت را بردارید
    کنترل کننده ای که ما محافظت کردیم. اما مشکل اینجاست - ما باید برنامه خود را تعمیر کنیم و با نصب نصب شده ، هیچ کاری با کنترلر انجام نمی شود - نه بخوانید و نه بنویسید. چگونه حفاظت را از بین ببریم؟ من بلافاصله به شما هشدار می دهم - بچه های ST همه کار درست را انجام داده اند و تمام سیستم عامل به همراه محافظت از بین می رود.

    برای از بین بردن حفاظت ، به برنامه ابزار st-link نیاز داریم. می توانید آن را بارگیری کنید.

    ما برنامه را شروع می کنیم و این مورد را انتخاب می کنیم ، یا فقط ctrl-b را فشار دهید:

    در قسمت "وضعیت حفاظت ، بخوانید ، را انتخاب کنید." و روی دکمه Apply کلیک کنید:

    همراه با بیت محافظت ، کل حافظه نیز پاک می شود:

    از خود دفاع کنیم ، ما برای جاسازی ایمن هستیم.



    در پروژه من از میکروکنترلر STM32F103C8 و چارچوب stm32duino استفاده می کنم. این کلون آردوینو بوت لودر ویژه ای را ارائه می دهد که به شما امکان می دهد سیستم عامل را از طریق USB بارگذاری کنید ، بدون استفاده از اجزای خارجی مانند آداپتور ST-Link یا USB-UART.

    امروز باید با یک کنترلر لخت از زیر CooCox و بدون stm32duino کار کنم. اما در اینجا مشکل است. حتی یک لامپ چشمک زن ساده که از طریق این bootloader ریخته می شود کار نمی کند.

    بیایید درستش کنیم شاید به نظر برخی محاسبات من امری عادی باشد. اما من تازه شروع به مطالعه کنترل های STM32 کردم و حداقل نیمی از روز را کشته ام تا مشکل را پیدا کنم. ناگهان ، این مقاله زمان توسعه را برای کسی کوتاه می کند.

    من هیچ کاری در مقابل ST-Link و سایر اشکال زدایی ها ندارم. اما در دستگاه تمام شده من اینگونه نخواهد بود ، اما قطعاً USB وجود خواهد داشت. چرا بلافاصله امکان به روزرسانی سیستم عامل از طریق USB فراهم نیست؟ من شخصاً این روش را راحت می دانم. به هر حال ، من قبلاً سیمی وصل کرده ام که برق و سریال USB به آن وصل شده است.

    بیایید ببینیم که چگونه bootloader کار می کند. برای شروع با مثال کنترلرهای AVR. چرا او را به یاد آوردم؟ من از آردوینو تغییر کردم و ناخودآگاه انتظار رفتاری مشابهم را داشتم. اما در STM32 همه چیز متفاوت شد. بنابراین ، من می خواهم در مورد تفاوت این دو میکروکنترلر صحبت کنم.

    بنابراین. در میکروکنترلرهای AVeg ATMega می توان مقدار خاصی از حافظه را برای بوت لودر در نزدیکی انتهای فلاش رزرو کرد. با استفاده از بیت فیوز ، می توانید کنترل کنید که آدرس از چه برنامه شروع می شود. در صورت عدم وجود بوت لودر ، برنامه از آدرس 0x0000 شروع می شود. اگر یک bootloader وجود داشته باشد ، از برخی آدرسهای دیگر شروع می شود (مثلاً در ATMega32 با 0x3C00 ، اگر اندازه bootloader 2k باشد).


    وقتی bootloader کار خود را انجام داده است ، کنترل را از آدرس 0x0000 به برنامه اصلی منتقل می کند. آن برنامه همیشه از 0x0000 شروع می شود. کامپایلر و لینک دهنده با این واقعیت کار می کنند که کد در ابتدای فضای آدرس قرار دارد.

    در میکروکنترلرهای STM32 ، اینگونه نیست. همه برنامه ها از آدرس 0x0800000 شروع می شوند. یک bootloader چندان ویژه نیست. این همان برنامه ای است که از همان آدرس شروع شده شروع می شود. در این فرآیند ، bootloader می تواند سیستم عامل را دریافت کند (از طریق USB یا UART ، از طریق فلش درایو USB بخواند ، از ماهواره دریافت کند ، آن را از یک فضای فرعی ، هر آنچه که… دریافت کند) و آن را برای آدرس های بالاتر از خود bootloader بنویسد. و البته در پایان کار خود ، کنترل را به برنامه اصلی منتقل کنید.


    بنابراین هنگام گردآوری سیستم عامل باید بدانید که بوت لودر سیستم عامل را کجا بنویسد و آدرس ها را مطابق آن تنظیم کند.

    این همه با تئوری است. بیایید به تمرین بپردازیم. در زیر یک دستورالعمل گام به گام در مورد چگونگی اتصال بوت لودر USB به میکروکنترلرهای سری STM32F1xx و شاید برای برخی دیگر نیز ارائه شده است.

    با این حال ، محدودیت هایی برای مدار وجود دارد. در اینجا ، متأسفانه ، من قوی نیستم. ITP برای درگاه PA12 (با نام USB D +) به مقاومت مقاومت در برابر فشار 1.5k نیاز دارد. این به بوت لودر اجازه می دهد تا در زمان مناسب از USB متصل و قطع شود.

  • اکنون میکروکنترلر آماده است تا از طریق USB bootloader چشمک بزند. اما هنوز باید خود سیستم عامل را تعمیر کنید. و شما باید 2 کار انجام دهید:
    • آدرس شروع لینک دهنده را مشخص کنید. در CooCox ، این کار در تنظیمات پروژه ، تب لینک ، بخش Memory Areas ، IROM1 Start Address انجام می شود. بوت لودر 8 کیلوبایت اول را می گیرد ، به این معنی که آدرس شروع سیستم عامل 0x0800000 + 0x2000 \u003d 0x08002000 خواهد بود. زمینه اندازه ، احتمالاً ، باید 8k نیز کاهش یابد.
    • در جایی از ابتدای برنامه ، قبل از شروع مناطق ، یک تماس بگیرید

      جدول NVIC_SetVectorT (NVIC_VectTab_FLASH ، 0x2000)؛

  • پر کردن سیستم عامل را می توان از پروژه stm32duino برداشت. در فهرست ابزارها ، به دنبال اسکریپتی بنام Maple_upload باشید. من فقط از نسخه ویندوز استفاده کردم - maple_upload.bat.
  • مثل این اجرا کنید:

    "maple_upload.bat" COM20 2 1EAF: 0003 "مسیر \\ به \\ Firmware.bin"
    به جای COM20 ، باید پورت خود را که میکروکنترلر در آن قرار دارد جایگزین کنید.

    پوره یک چیز خیلی لطیف است ، مسیرهای نسبی را دوست ندارد. بنابراین باید مسیر سیستم عامل کاملاً مشخص شود.

    1EAF: 0003 VID و PID است

    2 - این پارامتر AltID است ، که نشان می دهد که سیستم عامل باید با 0x08002000 بارگذاری شود (بخوانید).

  • کمی دیگر از تفاوت های ظریف. قبل از آپلود سیستم عامل ، باید bootloader را اجرا کنید. ساده ترین راه فشار دادن دکمه تنظیم مجدد است. پس از آن ، bootloader شروع می شود و چند ثانیه برای سیستم عامل منتظر می ماند. اگر در آن لحظه کسی Maple_upload را شروع نکرد ، بوت لودر کنترل را به سیستم عامل اصلی منتقل می کند.

    این ممکن است باعث ناراحتی شود. اگر میکروکنترلر خاموش و آویزان شود ، دیگر گوش به پورت گوش نمی دهد. بنابراین ، او نمی تواند دنباله کلیدی را بشنود و از راه اندازی مجدد در bootloader استفاده کند. سپس فقط برای کمک کردن مجدداً تنظیم مجدد کنید.

    این همه امیدوارم مقاله من به نحوه کار بوت لودر در STM32 و نحوه بارگیری سیستم عامل از طریق درگاه USB روشن شود. متأسفانه ، آستانه ورود هنوز بالاست ، اما ناگهان مقاله من به کسی در غلبه بر آن کمک خواهد کرد.

    زنگ

    کسانی هستند که این خبر را قبل از شما می خوانند.
    برای دریافت مطالب تازه مشترک شوید.
    پست الکترونیک
    نام
    نام خانوادگی
    چگونه می خواهید The Bell را بخوانید
    بدون اسپم