Pull to refresh

Запускаем .NET MicroFramework на STM32F4Discovery (перевод)

Reading time 4 min
Views 35K
image
Несколько месяцев назад STMicroelectronics бесплатно раздавали отладочную плату STM32F4 Discovery. Я стал одним из тех, кому повезло получить ее бесплатно. Последний семестр я использовал плату для моего проекта (realtime и embedded OS) с применением Keil. У меня так-же есть отладочная плата Netduino, которая является моим фаворитом среди моих отладочных плат потому что я могу использовать Visual Studio и C#. Я знаю об ограничениях управляемого кода, связанных с расходами ресурсов на CLR, но моя программа не является программой реального времени. В последнюю неделю я случайно наткнулся на сайт netmf4stm32.codeplex.com и был приятно удивлен тем, что .NET MicroFramework был портирован на отладочные платы STM32F4. Так почему-бы не попробовать? Одновременно я описывал весь процесс, разбавляя текст скриншотами. Источником этой работы стал пост netmf4stm32.codeplex.com/discussions/400293. Благодарю LouisCPro и членов netmf4stm32.codeplex.com/team/view. Все это отняло у меня не более 2 часов (включая установку Visual C# Express 2010). Начнем…

Нам понадобится следующее

После того, как Вы все установили (пожалуйста, установите все), подсоедините кабель MiniUSB.

Подключение кабеля MiniUSB к STM32F4
(У меня была установлена другая прошивка, поэтому все легко запустилось)
Как только вы подключите карту, начнется поиск драйверов. Если вы уже установили утилиту STLink, драйвера будут установлены автоматически. Если-же вы пропустили это, пожалуйста установите ее. Запустите STLink (по умолчанию STM32 ST-LINK Utility.exe расположена в папке C:\Program Files (x86)\STMicroelectronics\STM32 ST-LINK Utility\ST-LINK Utility\)
image
STLink подключена к плате
После подключения к утилите очистите STM32F4 (не пугайтесь, вы не получите кирпич) следуя скриншотам ниже (по очереди запустите Erase Chip и Erase Sectors...)
image
Меню очистки
image
Очищение секторов
Сейчас чип очищен. Помните пункт 4 вначале, где указаны ссылки на два архива zip? Распакуйте их в удобное место (мы будем использовать их). В stm32f4discovery.zip вы увидите 3 файла: Tinybooter.hex, ER_Flash.hex and ER_Config.hex. Используя утилиту ST Link загрузите Tinybooter.hex в чип (следуйте указаниям на скриншоте ниже)
image
Раздел Program
image
Tinibooter.hex
Затем нажмите кнопку Reset на плате (или вытащите и вставьте кабель usb). После того, как вы загрузили Tinibooter.hex, кабель MiniUSB будет действовать только в качестве источника питания для нашего проекта. После перезагрузки вашей платы подключите кабель Micro USB (другой кабель). Я использовал кабель для зарядки своего смартфона.
image
Micro и Mini USB кабели подключены
Как только вы подключите кабель Micro USB, система запустит поиск драйверов и не найдет их. Установите драйвер, который находится в другом файле с именем «STM32_WinUSB_drivers_(for evaluation purposes only).zip». Руководствуйтесь скриншотами ниже, если вы не знаете как это сделать.
Перейдите в Devices and Printers (Устройства и принтеры) из меню Пуск, а затем
image
Нажмите правой кнопкой мыши на ярлык STM32.Net Test
image
Свойства -> Изменить настройки
image
Поиск нового драйвера
image
Игнорируйте предупреждение (как обычно )))
image
Сейчас ошибок нет!
Теперь MFDeploy должна быть в состоянии обнаружить плату. MFDeploy это MicroFramework Deployer. С помощью этой программы мы установим CLR, на котором будет работать наш .net код. Отлично, запустите MFDeploy.exe (вы найдете его в папке C:\Program Files (x86)\Microsoft .NET Micro Framework\v4.2\Tools\), который у вас должен появится после установки SDK. Что-бы убедиться, что MFDeploy видит плату, сделайте как показано ниже.
image
MFDeploy ping
Если вы видите ответ, значит все сделано правильно. Загрузите 2 других .hex файла (ER_Config.hex and ER_Flash.hex), распакованных из stm32f4discovery.zip в плату иcпользуя MFDeploy как показано далее
image
Нажмите Browse для загрузки hex файлов
image
Установите их в любой последовательности
Перезагрузите плату.
Поздравляю! У вас теперь есть плата с .NET Microframework!
Сейчас необходимо протестировать нашу плату. Откройте Visual C# Express/Visual Studio. Я уверен, что вы уже установили Microframework SDK. Выберите тип проекта
image
Проект MicroFramework
Теперь нам нужно изменить свойства так, что-бы Visual Express/Studio загружал проект в нашу плату. Настройте так, как показано ниже
image
Настройки
image
С помощью USB
Теперь нам нужно добавить класс что-бы мы смогли поморгать светодиодами.
image
Добавляем класс
image
Microsoft.SPOT.Hardware
Мой тестовый код

using System;
using System.Threading;
using Microsoft.SPOT;
using Microsoft.SPOT.Hardware;

namespace STM32F_Test
{
    public class Program
    {
        public static void Main()
        {
            OutputPort led = new OutputPort(Cpu.Pin.GPIO_Pin1, false); //PA1 on discovery board

            while (true)
            {
                led.Write(true);
                Thread.Sleep(500);
                led.Write(false);
                Thread.Sleep(500);
            }
        }
    }
}

Узнать карту пинов платы можно в этом файле “C:\MicroFrameworkPK_v4_2\DeviceCode\Targets\Native\STM32\ManagedCode\Hardware\CPU.cs” который вы найдете, если установили комплект портирования (не включены в список свыше).
Оригинал статьи: singularengineer.wordpress.com/category/electronics
Tags:
Hubs:
+49
Comments 14
Comments Comments 14

Articles