لذلك ، كان الدافع وراء عمل هذا mandrigal هو الغياب شبه الكامل لتعليمات خطوة بخطوة باستخدام الأدوات المعتادة التي تقدمها STMicroelectronics.
إن العدد الكبير من محمل الإقلاع الموجود على الشبكة ، والذي يكون مشغولًا جدًا في بعض الأحيان ، يتم "شحذه" للأسف لأي بلورة معينة.
تحتوي المادة المقترحة على الإجراء الخاص باستخدام حزمة CubeMX ، و "أداة تحميل التشغيل" DfuSeDemo ، والأداة المساعدة لإعداد البرامج الثابتة لمدير Dfu ، أي أننا نستخلص قائمة الأمنيات لدينا من الأجهزة ، وننسى سامح مجمع الماكرو ومعلم ورقة البيانات.
طهي البيئة ...
نحتاج إلى CubeMX نفسه ، تنزيل DfuSeDemo + Dfu file manager ، كلها في نفس الحزمة ، STM32 ST-LINK Utility ، نجد كل شيء على موقع STMicroelectronics مجانًا.
لدينا عصا تجريبية مع رقاقة العم STY32F103C8T6 العم لياو

ومبرمج ST-Link من هناك.

حسنًا ، IDE المفضل لديك ، في هذا العرض التقديمي المحدد ، نستخدم KEIL ، إعدادات التجميع في IDEs الأخرى ليست مختلفة تمامًا.
لذلك دعونا نذهب ...
إطلاق CubeMX وحدد الكريستال الخاص بك ...

احتفل بقائمة الامنيات الخاصة بك ...

في هذه المهمة المحددة ، نقوم بتنشيط جهاز USB → Device FS ، وبناءً على ذلك ، فئة USB Device → DownLoad Update Firmware ، و RCC → High Speed Clock التي لا تنسى ، مثل Cristal / Ceramic Resonator.
بعد ذلك ، حدد مفتاح الوضع bootloader-a ، في هذا المثال ، استخدم مجرد وصلة boot1 الموجودة.

ننظر إلى المخطط الصغير ، ووفقًا لذلك ، يتم إقلاع boot1 بساق PB2 ، لذلك نستخدمه في وضع GPIO_Input.
تم ، قم بتنشيط علامة التبويب تكوين الساعة وابدأ تشغيل جهاز اختيار التكوين.

انتقل إلى علامة التبويب Cofiguration ...

حدد زر GPIO ...

وفي المجال ...

اكتب تسمية مخصصة ، فليكن boot1.
بعد ذلك ، قم بإعداد المشروع ...

اختر مشروع → الإعداد ...

اختيار وملء ....

وفقًا لذلك ، نختار IDE Cub الذي سنقوم بإنشاء المشروع ، في حالتنا ، MDK-ARM V5.
ستبقى علامة التبويب Code Generator في هذا النموذج كما هي دون تغيير ...

حسنًا ، هذا كل شيء ، نبدأ في توليد المشروع Project → Generate Code

في النهاية ، سيطالبك Cub بإطلاق IDE الخاص بك على الفور ... ما يجب عليك فعله.


نبدأ في تجميع وتجميع والتحميل في الكريستال ... F7 ، F8 ...

النتيجة النهائية ...
نحول المسامير الموجودة على لوحنا إلى وضع التشغيل وتوصيل كابل USB ...


افتح لوحة التحكم في نظام Windows → ← إدارة الأجهزة ← وحدة تحكم USB. وانظر إلى قائمة الأجهزة ، سيقوم Windows بالصدأ قليلاً وتثبيت جهاز STM في برنامج تشغيل وضع DFU (إذا لم يكن بالفعل).
لذلك ، نهض السائق وقرر ، بدء "التمهيد" DfuSeDemo ...

نحن ننظر إلى ما اشتعلنا جهاز DFU وانقر نقرًا مزدوجًا على حقل تحديد الهدف ...

نحن ننظر بعناية ونتعجب من أن الفلاش حتى العنوان 0x0800C000 مغلق للكتابة ونحن نكتب هذا العنوان ، نحتاجه ...
بالمناسبة ، جربتها على STM32F407VE ، حيث تكون الذاكرة مفتوحة للتسجيل من 0x08000000 ، أي منذ البداية ... لماذا ، في نسختنا ، ليست واضحة ، لا يتم حفرها ، يتم دفنها في مكان ما ، لكن من الواضح أنها غير مكتوبة ، لا يوجد أي خطأ لأن قطعة كبيرة تختفي بدون مالك ... ربما يخبرك شخص ما بحفره ...
لذلك ، "بدأ حلاقة الشعر للتو" ...
نحن بحاجة فقط اثنين من الملفات المصدر ...

نفتح لهم في IDE ونحن تصحيح ، نضيف ...
نحن نأخذ في الاعتبار أن CubeMX لا تجتمع عند تجديد الإدراج بين بداية كود المستخدم و USER CODE END ... هناك سنقوم بإضافاتنا ...
لنبدأ مع main.c
typedef void (*pFunction)(void); pFunction JumpToApplication; uint32_t JumpAddress; . . . uint32_t AddressMyApplicationBegin = 0x0800C000; uint32_t AddressMyApplicationEnd = 0x0800FBFC; . . . if(HAL_GPIO_ReadPin(boot1_GPIO_Port, boot1_Pin ) == GPIO_PIN_SET) { if (((*(__IO uint32_t *) USBD_DFU_APP_DEFAULT_ADD) & 0x2FFE0000) == 0x20000000) { JumpAddress = *(__IO uint32_t *) (USBD_DFU_APP_DEFAULT_ADD + 4); JumpToApplication = (pFunction) JumpAddress; __set_MSP(*(__IO uint32_t *) USBD_DFU_APP_DEFAULT_ADD); JumpToApplication(); } } MX_USB_DEVICE_Init(); . . .
هذا كل شيء مع main.c ...
انتقل إلى usbd_conf.h وإلى
#define USBD_DFU_APP_DEFAULT_ADD 0x0800000
تذكرني ...
#define USBD_DFU_APP_DEFAULT_ADD 0x080C000
نمر إلى usbd_dfu_it.c ، هنا المزيد ....
. . . extern uint32_t AddressMyApplicationBegin; extern uint32_t AddressMyApplicationEnd; . . . #define FLASH_ERASE_TIME (uint16_t)50 #define FLASH_PROGRAM_TIME (uint16_t)50 . . . , «» … uint16_t MEM_If_Init_FS(void) { HAL_StatusTypeDef flash_ok = HAL_ERROR;
في الواقع هذا كل شيء ...
نحن نربط المبرمج ، ورمي لاعبا في وضع البرمجة ، يتم تسجيل F7 ، F8 و botloader ...
هل يمكنني استخدام ...
الآن سنقوم بإعداد طلبنا للتحميل عبر bootloder ...
سوف التطبيق المفضل وميض LED ...
نقوم بإعداد التطبيق وتصحيحه ، وتغيير الأماكن الفردية في برنامج التحويل البرمجي وهيئة البرنامج لتغيير عنوان إطلاق البرنامج ومقاطعة المتجهات ...
وهي في KEIL → تكوين → أدوات فلاش

تغيير عنوان بداية البرنامج ...

نقول لإنشاء ملف HEX

وتغيير عنوان جدول المتجهات ...
جمع برنامج F7 ...
تحويل HEX المستلمة إلى ملف dfo باستخدام الأداة المساعدة Dfu file manager ...

حدد ملف HEX الخاص بنا باستخدام الزر S19 أو HEX ... وانقر فوق إنشاء ...

نحصل على ملف dfu.
في الواقع ، كل شيء جاهز.
جارٍ التحميل في وحدة التحكم ...
نقوم بتوصيل لوحة تجريبية لدينا مع محمل botloader الذي تم تحميله بالفعل إلى USB ، بعد ضبط وصلات العبور على وضع DFU.

يمكنك التحكم في مظهر جهاز STM في وضع DFU في قائمة الأجهزة.
تشغيل "بووتلوأدر".

أخبرها ملف dfu ...

نضغط Upgrade ونلاحظ نتيجة التحميل ... للثقة ، نضغط على check.

كل شيء ناجح ... يمكنك تشغيل ...
إذا خرج الخطأ ، فهذا يعني أن هناك دعامة في مكان ما ...

على سبيل المثال ...
لذلك ، سوف نفترض أن كل شيء ناجح ... بدّل العبور إلى وضع التطبيق

والتمتع الصمام الثنائي الوامض ...
...
اهوه الكثير من bukoffff. تعبت من نسخ الصور :-)
شكرا لكم جميعا على اهتمامكم ...