.Net Micro Framework هي تقنية تتيح لك كتابة تطبيقات للمتحكم الدقيق باستخدام القوة الكاملة للشفرة المُدارة و Visual Studio. إنها موجودة لفترة طويلة وهي الآن تعاني من ولادة جديدة. تم تشكيل مشروع مفتوح المصدر حوله ، والذي انتقل مؤخرًا إلى GitHub. ومع ذلك ، هذا ليس منتج "محاصر" بعد. يتطلب العمل مع .Net Micro Framework مهارات معينة. و آخر مرة كتبت عن كيفية إنشاء وتشغيل بسيطة "مرحبا العالم" التطبيق على المحاكي ويندوز. الآن سنتحدث عن كيفية العمل مع .Net Micro Framework على الأجهزة الحقيقية - STM32F4Discovery debug board.الرسوم شائعة جدًا ويمكن شراؤها ، على سبيل المثال ، هنا . بدءًا من الإصدار 4.4 ، يتم تضمين المنفذ الخاص بهذه اللوحة في توزيع مترجم netmf. سابقا ، كانت موجودة كمشروع منفصل .على الإنترنت ، وعلى وجه الخصوص ، على المحور ، يمكنك العثور على مواد حول إطلاق .Net Micro Framework على هذه اللوحة ، ولكن أولاً يتحدثون عن الإصدار 4.3 ، وثانيًا ، يستخدمون بالفعل التجميع النهائي. سأتحدث عن كيفية الترجمة والتشغيل على STM32F4Discovery .Net Micro Framework الإصدار 4.4 بالتفصيل الكامل. ستكون المقالة طويلة ، حيث سيكون من الضروري إصلاح العديد من الأخطاء في مجموعة التوزيع وتنزيل وتثبيت العديد من الأدوات المساعدة وبرامج التشغيل.إعداد التجميع
توزيع
بادئ ذي بدء ، تحتاج إلى أن يكون التوزيع نفسه.المستودع هنا . يمكنك تنزيله كأرشيف مضغوط ، أو يمكنك الحصول عليه باستخدام git. يمكن العثور على تعليمات باللغة الإنجليزية حول كيفية الحصول على المستودع وجمع ملفات التثبيت منه هنا . بناء على هذه التعليمات ، تم كتابة مقال. يمكن تنزيل إصدارات المستودع المرتبطة بإصدارات محددة من الأرشيف المضغوط هنا .للحصول على المستودع باستخدام git ، عليك القيام بما يلي:- إنشاء نسخة عامة على حسابك على خوادم GitHub عن طريق الشوكة . يجب أن تأتي جميع طلبات السحب من مستودع GitHub العام.
- , clone. , :
git clone github.com/<your GitHub ID>/netmf-interpreter.git
: . , D:\NETMF\repo
, repo
— . .
- , Upstream. pull pull. Upstream :
git remote add upstream https:
هام : متطلبات المسار المحلي (يجب أن يكون هناك مجلد أصل واحد على الأقل - انظر القسم 2 من العمل باستخدام git) هي أيضًا ذات صلة عند تفريغ المستودع من الأرشيف.لسوء الحظ ، يحتوي إصدار .NET Micro Framework v4.4 Release To Web (RTW) على أخطاء لا تسمح لك بجمع ملفات التثبيت على الفور من المستودع. ومع ذلك ، يمكن تصحيح هذه الأخطاء ، وبعد ذلك سأخبرك بكيفية القيام بذلك.بعد نسخ المستودع إلى مجلد محلي بطريقة أو بأخرى ، تحتاج إلى القيام بما يلي:- تنزيل ملف مضغوط لأدوات ثنائية . يحتوي هذا الملف على الأدوات المساعدة اللازمة لإنشاء كل من ملفات التثبيت و "المنافذ" للأجهزة. في المستقبل ، من المخطط التخلي عن هذه المرافق ، ولكن هناك حاجة إليها حتى الآن.
- binary tools zip- .
D:\NETMF\repo
, repo
— , bin
tools
D:\NETMF
. - :
<repo folder>\Framework\Tools\BuildTasksInternal\BuildSigner\BuildSignerSpotBuild.csproj
37
<HintPath>$(MSBuildProgramFiles32)\Microsoft Internal\Codesign.Submitter\CODESIGN.Submitter.dll</HintPath>
<HintPath>$(SPOROOT)\tools\x86\CODESIGN\CODESIGN.Submitter.dll</HintPath>
. . , .Net Micro Framework open source , , , . .NET Micro Framework v4.4 Release To Web (RTW). . . - CMSIS
<repo folder>\MSIS.
, <repo folder>\MSIS\ReadMe.md.
CMSIS Cortex Microcontroller Software Interface Standart. Cortex-M, — ARM. “” .
.Net Micro Framework 4.4 CMSIS 4.3. zip- (CMSIS-SP-00300-r4p3-00rel0.zip). ARM. <repo folder>\MSIS
. - .Net Micro Framework Cryptographic Libraries. , . . , , , .
msi . ( <crypto install folder>
), , D:\NETMF\repo
D:\NETMF\repo_master
.
التوزيع هيكل معقد يحتوي على عدد كبير من المراجع التبادلية. دمج كل هذا مع مشروع MSBuild . تبدو ملفات المشاريع مثل ملفات sln و pro المألوفة لـ Visual Studio ، ولكن في الداخل يكون لها هيكل أكثر تعقيدًا. هذا هو السبب في فشل استخدام Visual Studio للتجميع.سأخبرك بالمزيد حول المكونات والعلاقات داخل التوزيع في المقالات التالية ، ولكنك الآن بحاجة إلى معرفة أن منفذ STM3F4Discovery موجود في المجلد<repo folder>\Solutions\STM32F4DISCOVERY
وستظهر الملفات الثنائية والسداسية المجمعة في المجلد<repo folder>\BuildOutput
استوديو مرئي
MSBuild جزء من Visual Studio. تشير وثائق مترجم .netmf 4.4 إلى أن إصدارات Visual Studio 2015 Community و Pro و Ultimate مدعومة ، لذا فأنت بحاجة إلى تثبيت أحدها لإنشاء المنفذ بنجاح.مترجم ARM
بعد ذلك ، أنت بحاجة إلى مترجم ARM . يتم توفير العمل مع مترجمين:مترجم RealView هو جزء من أداة تطوير Keil MDK . يحتوي الإصدار المجاني على حد 32 كيلوبايت من التعليمات البرمجية ، ولكن يحتوي المنفذ على حجم أكبر ، لذلك تحتاج بالتأكيد إلى ترخيص ، على سبيل المثال ، رخصة تجريبية لمدة 7 أيام MDK-Professional . يمكنك أن تقرأ عن تثبيت Keil MDK 5 هنا .يجب تثبيته بشكل افتراضي في المجلد C:\Keil_v5
.دول مجلس التعاون الخليجي مجانية ، لكن البرامج الثابتة التي تنتجها أكبر بنسبة 10٪ من تلك التي تم إنشاؤها بواسطة مترجم RealView. يمكن تنزيل GCC ARM Embedded كأرشيف وإلغاء ضغطه إلى أي مكان. المجلد الذي يحتوي على محتويات الأرشيف غير المعبأة سأدعو أكثر <gcc folder>
.ترجمة مع أدوات تجميع ARM RealView
قامت مجموعة التوزيع بالفعل بإعداد إعدادات الترجمة للإصدارات MDK 3.1 و 3.80a و 4.12 و 4.13 و 4.54 و 5.04 و 5.05. إذا كنت بحاجة إلى استخدام إصدار مختلف ، يمكنك إضافة عدة أسطر إلى الملف.<repo folder>\tools\Targets\Microsoft.Spot.system.mdk.targets
لقد استخدمت الإصدار 5.06. للقيام بذلك ، بعد السطور<CC Condition="'$(COMPILER_TOOL_VERSION)'=='MDK5.05'">"$(MDK_TOOL_PATH)\ARMCC\bin\armcc.exe"</CC>
<CPP Condition="'$(COMPILER_TOOL_VERSION)'=='MDK5.05'">"$(MDK_TOOL_PATH)\ARMCC\bin\armcc.exe"</CPP>
<AS Condition="'$(COMPILER_TOOL_VERSION)'=='MDK5.05'">"$(MDK_TOOL_PATH)\ARMCC\bin\armasm.exe"</AS>
<LINK Condition="'$(COMPILER_TOOL_VERSION)'=='MDK5.05'">"$(MDK_TOOL_PATH)\ARMCC\bin\armlink.exe"</LINK>
<AR Condition="'$(COMPILER_TOOL_VERSION)'=='MDK5.05'">"$(MDK_TOOL_PATH)\ARMCC\bin\armar.exe"</AR>
<FROMELF Condition="'$(COMPILER_TOOL_VERSION)'=='MDK5.05'">"$(MDK_TOOL_PATH)\ARMCC\bin\fromelf.exe"</FROMELF>
<MdkCrtLibLinkSwitch Condition="'$(COMPILER_TOOL_VERSION)'=='MDK5.05'">$(MdkCrtLibLinkSwitch) $(SWTC)libpath $(MDK_TOOL_PATH)\ARMCC\LIB</MdkCrtLibLinkSwitch>
أضفت الخطوط<CC Condition="'$(COMPILER_TOOL_VERSION)'=='MDK5.06'">"$(MDK_TOOL_PATH)\ARMCC\bin\armcc.exe"</CC>
<CPP Condition="'$(COMPILER_TOOL_VERSION)'=='MDK5.06'">"$(MDK_TOOL_PATH)\ARMCC\bin\armcc.exe"</CPP>
<AS Condition="'$(COMPILER_TOOL_VERSION)'=='MDK5.06'">"$(MDK_TOOL_PATH)\ARMCC\bin\armasm.exe"</AS>
<LINK Condition="'$(COMPILER_TOOL_VERSION)'=='MDK5.06'">"$(MDK_TOOL_PATH)\ARMCC\bin\armlink.exe"</LINK>
<AR Condition="'$(COMPILER_TOOL_VERSION)'=='MDK5.06'">"$(MDK_TOOL_PATH)\ARMCC\bin\armar.exe"</AR>
<FROMELF Condition="'$(COMPILER_TOOL_VERSION)'=='MDK5.06'">"$(MDK_TOOL_PATH)\ARMCC\bin\fromelf.exe"</FROMELF>
<MdkCrtLibLinkSwitch Condition="'$(COMPILER_TOOL_VERSION)'=='MDK5.06'">$(MdkCrtLibLinkSwitch) $(SWTC)libpath $(MDK_TOOL_PATH)\ARMCC\LIB</MdkCrtLibLinkSwitch>
الآن يمكنك البدء في تجميع. تحتاج إلى فتح سطر الأوامر والانتقال إلى المجلد الذي يحتوي على المستودع ، على سبيل المثال مثل هذا:cd /d D:\WORKDIR\NetMf\NetMFRepo\repo
ثم تحتاج إلى تعيين متغيرات البيئة عن طريق القيام بذلك:setenv_mdk 5.06
ثم انتقل إلى المجلد الذي يحتوي على المنفذ ( <repo folder>\Solutions\STM32F4DISCOVERY
). على سبيل المثال ، مثل هذا:cd /d D:\WORKDIR\NetMf\NetMFRepo\repo\Solutions\STM32F4DISCOVERY
الآن يمكنك بدء التجميع باستخدام ، على سبيل المثال ، الأمر التالي:msbuild dotnetmf.proj /p:flavor=release /fl
حيثmsbuild
- استدعاء لبدء التجميعdotnetmf.proj
- مشروع منفذ لـ STM32F4DISCOVERY/p:flavor=release
- نوع التجميع (debug / release / rtm)/fl
- كتابة سجل التجميع إلى ملف.سيكون ملف السجل في المجلد الحالي (في هذا المثال D:\WORKDIR\NetMf\NetMFRepo\repo\Solutions\STM32F4DISCOVERY
). إذا لم يكن السجل مطلوبًا ، /fl
فيمكنك إزالته.لمشاهدة كافة خيارات الترجمة ، تحتاج إلى تشغيل.msbuild /t:help
يستغرق هذا التجميع وقتًا طويلاً ويستغرق مني 10 دقائق:
ستكون النتيجة الكثير من الملفات التي ستحتاج منها:<repo folder>\BuildOutput\THUMB2FP\MDK5.06\le\FLASH\release\STM32F4DISCOVERY\bin\Tinybooter.hex\
<repo folder>\BuildOutput\THUMB2FP\MDK5.06\le\FLASH\release\STM32F4DISCOVERY\bin\tinyclr.hex\ER_CONFIG
<repo folder>\BuildOutput\THUMB2FP\MDK5.06\le\FLASH\release\STM32F4DISCOVERY\bin\tinyclr.hex\ER_FLASH
من أجل بناء نظيف ، قبل تنفيذ الأمر ،msbuild dotnetmf.proj /p:flavor=release /fl
تحتاج إلى تشغيل الأمرmsbuild /t:clean
أو حذف المجلد<repo folder>\BuildOutput

ترجمة مع ARM GCC GCC
قد يتطلب استخدام دول مجلس التعاون الخليجي مراجعة أخرى. في الملف: تحتاج إلى الإضافة<repo folder>\Solutions\STM32F4DISCOVERY\STM32F4DISCOVERY.settings
بعد السطر. يؤدي هذا إلى إصلاح الخطأ "NNNN.a يستخدم وسيطات تسجيل VFP" . اقرأ المزيد هنا . ومع ذلك ، قد لا يحدث هذا الخطأ إذا كنت تستخدم بنية "نظيفة". للحصول على بنية نظيفة ، قبل تنفيذ الأمر ، تحتاج إلى تشغيل الأمر أو حذف المجلد. لذلك ، لتجميع المنفذ ، افتح سطر الأوامر وانتقل إلى المجلد الذي يحتوي على المستودع ، على سبيل المثال مثل هذا: ثم تحتاج إلى تعيين متغيرات البيئة عن طريق القيام: حيث يكون إصدار gcc هو المسار حيث يوجد GCC ARM مضمن قد يبدو الأمر كما يلي:<NO_BOOTLOADER_COMPRESSION>true</NO_BOOTLOADER_COMPRESSION>
<PLATFORM_EMULATED_FLOATINGPOINT Condition="'$(COMPILER_TOOL)'=='GCC'">true</PLATFORM_EMULATED_FLOATINGPOINT>
msbuild dotnetmf.proj /p:flavor=release /fl
msbuild /t:clean
<repo folder>\BuildOutput

cd /d D:\WORKDIR\NetMf\NetMFRepo\repo
setenv_gcc <gcc ver> <gcc folder>
<gcc ver>
<gcc folder>
setenv_gcc 4.9.3 D:\WORKDIR\NetMf\gcc_4_9_3
ثم انتقل إلى المجلد الذي يحتوي على المنفذ ( <repo folder>\Solutions\STM32F4DISCOVERY
). على سبيل المثال ، مثل هذا:cd /d D:\WORKDIR\NetMf\NetMFRepo\repo\Solutions\STM32F4DISCOVERY
يمكن بدء التجميع باستخدام ، على سبيل المثال ، الأمر التالي:msbuild dotnetmf.proj /p:flavor=release /fl
أينmsbuild
- دعوة لبدء التجميعdotnetmf.proj
- تصميم منفذ STM32F4DISCOVERY/p:flavor=release
- نوع البناء (تصحيح / تحرير / rtm)/fl
- كتابة سجل التجميع في ملف.
سيكون ملف السجل في المجلد الحالي (في هذا المثال D:\WORKDIR\NetMf\NetMFRepo\repo\Solutions\STM32F4DISCOVERY
). إذا لم يكن السجل مطلوبًا ، /fl
فيمكنك إزالته.لرؤية جميع خيارات التجميع ، تحتاج إلى القيام بذلك.msbuild /t:help
يستغرق التجميع وقتًا طويلاً ويستغرق 10 دقائق:
ستكون النتيجة الكثير من الملفات التي ستحتاج منها:<repo folder>\BuildOutput\THUMB2FP\GCC4.9\le\FLASH\release\STM32F4DISCOVERY\bin\Tinybooter.hex
<repo folder>\BuildOutput\THUMB2FP\GCC4.9\le\FLASH\release\STM32F4DISCOVERY\bin\tinyclr.hex\ER_CONFIG
<repo folder>\BuildOutput\THUMB2FP\GCC4.9\le\FLASH\release\STM32F4DISCOVERY\bin\tinyclr.hex\ER_FLASH
البرامج الثابتة للوحة
وبالتالي، هناك 3 ملفات:Tinybooter.hex, ER_CONFIG ER_FLASH
.Tinybooter
هو محمل إقلاع. يتم استخدامها لبرامج CLR الثابتة. ER_CONFIG
و ER_FLASH
هذا هو CLR نفسها.من أجل وميض اللوحة ، نحتاج إلى برامج إضافية:- أداة STM32 ST-LINK - مبرمج لفلاش TinyBooter.
- تم تثبيت MicroFraimworkSDK.MSI و NetMFVS14.vsix - يحتوي الأول على المكتبات والمرافق الضرورية ، والثاني يحتوي على .Net Micro Fraimwork قوالب مشاريع لبرنامج Visual Studio.
- مطلوب برنامج تشغيل USB للأدوات المساعدة من MicroFraimworkSDK لرؤية اللوحة (غير مطلوب لـ Windows 10).
وميض اللوحة ، قم بما يلي:- قم بتوصيل اللوحة بالكمبيوتر عبر سلك miniUSB:

- قم بتشغيل STM32 ST-LINK Utility وحدد القائمة Target-> Connect:

بعد الاتصال بلوحة STM32 ، ستبدو ST-LINK Utility على النحو التالي :

- Target->Erase Sectors...:

Select All Apply:

flash :

STM32 ST-LINK Utility :

- TinyBooter.hex Target-> Program & Verify...:

tinybooter.hex Start:

STM32 ST-LINK Utility :

- miniUsb Reset
- microUSB :

STM32 ST-LINK Utility . miniUsb .
- Windows 10 , USB :

- .NET Micro Framework Deployment Tool.
MicroFrameworkSDK:
C:\Program Files (x86)\Microsoft .NET Micro Framework\v4.4\Tools\MFDeploy.exe
Serial USB:

. TinyBooter Ping. Pinigng… TinyBooter

- .NET Micro Framework Deployment Tool 2 ER_CONFIG ER_FLASH. Browse…

Deploy:

Ping CLR :

, .
Visual Studio
يمكنك الآن إنشاء المشروع وتشغيله في Visual Studio. دعونا نجعل مشروعًا بسيطًا وامضًا ، ومضات LED.نبدأ Visual Studio
وننشئ مشروعًا جديدًا: إذا تم إكمال تثبيت SDK و vsix بشكل صحيح ، فسيظهر قالب مشروع Micro Framework جديد. حدد تطبيق وحدة التحكم:
بعد إنشاء الحل ، يمكنك الانتقال إلى خصائص المشروع:
في إعدادات المشروع في علامة التبويب .NET Micro Framework ، في مجال النقل ، حدد USB. بعد ذلك ، يجب أن يظهر اسم اللوحة في حقل الجهاز:
حفظ وإغلاق الإعدادات.بعد ذلك ، أضف Refresh إلى التجميع في:C:\Program Files (x86)\Microsoft .NET Micro Framework\v4.4\Assemblies\le\Microsoft.SPOT.Hardware.dll
والخطوة الأخيرة هي استبدال الشفرة program.cs
بهذا:using System;
using System.Threading;
using Microsoft.SPOT;
using Microsoft.SPOT.Hardware;
namespace STM32F4DISC_Test
{
public class Program
{
public static void Main()
{
OutputPort ledGreen = new OutputPort((Cpu.Pin)60, false);
OutputPort ledYellow = new OutputPort((Cpu.Pin)61, false);
OutputPort ledRed = new OutputPort((Cpu.Pin)62, false);
OutputPort ledBlue = new OutputPort((Cpu.Pin)63, false);
while (true)
{
ledGreen.Write(true);
Thread.Sleep(500);
ledYellow.Write(true);
Thread.Sleep(500);
ledRed.Write(true);
Thread.Sleep(500);
ledBlue.Write(true);
Thread.Sleep(500);
ledGreen.Write(false);
ledYellow.Write(false);
ledRed.Write(false);
ledBlue.Write(false);
Thread.Sleep(500);
}
}
}
}
نبدأ المشروع:
وبعد بضع ثوانٍ ، تبدأ مصابيح LED الموجودة على اللوحة في الوميض.استنتاج
.NET Micro Fraimwork هو مشروع معقد إلى حد ما. في الوقت الحالي ، لا يزال يتطلب مهارات ومعرفة معينة ، خاصة عند العمل مع المستودع. في هذه المقالة ، تحدثت على وجه التحديد بأكبر قدر ممكن من التفاصيل حول ما يجب عليك التعامل معه عند تجميع المنافذ ، لأن هذه المعلومات ستكون مفيدة عند تطوير حلول للمجالس الخاصة بك.ومع ذلك ، يمكن أن يكون تشغيل .NET Micro Fraimwork على STM32F4Discovery أبسط وأسرع من خلال أخذ ملفات Tinybooter.hex و ER_CONFIG و ER_FLASH الجاهزة. يمكنك تنزيلها هنا .