NET Micro Framework

advertisement
.NET Micro Framework – это реализация методологии разработки
программного обеспечения .NET, предназначенная для 32-разрадных
микроконтроллеров.
Основная идея .NET MF – предоставить разработчикам компактных и даже
карманных устройств возможность использовать современный язык
программирования C# совместно с мощной библиотекой классов,
предоставляющей широкие возможности работы с различными
устройствами, файловыми системами, аппаратными интерфейсами, сетью и
многим другим.
За счёт этого программисты могут сконцентрироваться на решении
функциональных задач разрабатываемого устройства и не беспокоиться о
том, например, как реализовать стек протоколов TCP/IP или алгоритм
рисования закрашенных полупрозрачных эллипсов на экране.
А самое главное – благодаря .NET Micro Framework можно гораздо быстрее
получить нужный результат, проверить идею, перейти к промышленному
производству.
Hardware Layer
Этот слой содержит микропроцессор и другие компоненты, из которых
состоит ваша аппаратная платформа. На текущий момент .NET Micro
Framework может быть запущен на процессорах таких архитектур, как
ARM7, ARM9, Cortex, XScale, ARC и ADI Blackfin.
Runtime Component Layer
Этот слой состоит из 3-х компонентов:
• .NET Micro Framework common language runtime (CLR);
• Hardware abstraction layer (HAL);
• Platform abstraction layer (PAL).
CLR
Среда исполнения .NET Micro Framework CLR (TinyCLR) является
подмножеством .NET Framework CLR. TinyCLR отличается от «большой»
CLR тем, что она была специально переработана для использования в
небольших встраиваемых устройствах. .Net Micro Framework Porting Kit
поставляется вместе с исходными кодами TinyCLR. Данные коды
представляют собой аппаратно-независимую библиотеку, которая может
быть скомпилирована разными компиляторами для разных архитектур.
HAL и PAL
TinyCLR взаимодействует с нижележащей аппаратной частью через HAL и
PAL. Как HAL, так и PAL состоят из набора функций, вызываемых из
TinyCLR. Эти функции написаны на C++. Вполне понятно, что функции HAL
очень тесно связаны с «железом». Функции, входящие в PAL, наоборот,
спроектированы так, чтобы
Class Library Layer
Библиотека классов .NET Micro Framework представляет собой объектноориентированную коллекцию типов, которые разработчики используют при
написании встраиваемых приложений. Сюда могут быть включены и
сторонние типы. Например, разработчики отладочных плат добавляют сюда
классы для работы с периферийными устройствами, расположенными на
этих платах.
Application Layer
Этот уровень содержит приложения, которые вы создаете для своих
устройств. На сегодняшний день единственным языком разработки таких
приложений является C#. Таким образом, основной задачей портирования
является написание функций и конфигураций уровня HAL. Теперь
посмотрим, каким образом это делается.
Solutions в .NET Micro Framework Porting Kit
Каждый порт в рамках .Net Micro Framework Porting Kit представляет собой
Solution. Solution в свою очередь состоит из нескольких Project’ов. Всего
существует 5 видов Project’ов:
• NativeSample
• PortBooter
• TinyBooter
• TinyBooterDecompressor
• TinyCLR
NativeSample — это простой «Hello, World» проект. Основной задачей при
его реализации является написание достаточного количества функций HAL,
чтобы вывести строку «Hello, World» в отладочную консоль.
TinyCLR – собственно, сама среда исполнения. Получение работоспособной
TinyCLR и есть цель портирования. В процессе работы над этим проектом
дописываются оставшиеся функции HAL. TinyCLR включает в себя
TinyBooter.
TinyBooter — это загрузчик .NET Micro Framework. В момент подачи
питания он производит всю необходимую инициализацию и запускает
TinyCLR. Кроме того он позволяет прошивать новые версии TinyCLR. В
процессе реализации этого проекта в HAL добавляется еще несколько новых
функций.
TinyBooterDecompressor — это специальная надстройка, призванная
минимизировать физический размер TinyBooter. TinyBooter хранится в
заархивированном виде и при включении питания распаковывается и
загружается с помощью TinyBooterDecompressor.
PortBooter – загрузчик порта. Он позволяет прошивать новые версии
TinyCLR в процессе разработки и отладки порта. Реализации этого проекта
требует добавления новых функций HAL к уже написанным для
NativeSample. Это переходный проект для подготовки к реализации
следующих проектов.
Таким образом, реализовывая эти проекты по очереди, вы создаете слой
HAL.
Плата FEZ Panda II содержит встроенный в плату светодиод (впрочем как и
Arduino). Данная демо-программа просто заставляет мигать данный
светодиод с периодичностью 500 мс.
Download