C Обучение работе с 16-битными микроконтроллерами

Моя компания переходит с микроконтроллеров с кодировкой сборки на C. Мы рассматриваем Microchip, Atmel, Renasas и др. al. для будущих проектов с использованием кода C. Есть ли хорошие учебные ресурсы, чтобы наши инженеры могли быстро освоить C? Семинары, инструкторы, классы и т. д. Уровень опыта инженеров варьируется от отсутствия подготовки до определенных знаний.

Ключевое слово volatile - ваш друг.

mseery 23.11.2008 23:21
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
1
2 166
11

Ответы 11

Первое, что приходит в голову, - это документация по написанию драйверов устройств Linux. Это слабо связано с тем, что вас интересует, но кодирование для 16-битных устройств описано в книге это О'Рейли по программированию драйверов. В общем, должно быть, по крайней мере, несколько полезных соглашений о стилях кодирования.

Добро пожаловать в 80-е. :) Начните либо с классической книги K&R C, либо с моей любимой C: Справочное руководство от Harbinson & Steel, если сможете. Я работаю с PIC, и есть несколько полезных книг по программированию PIC. Я уже был знаком с C по работе с ПК, я не нашел их полезными в этом отношении.

C позволяет вам быть ближе к ассемблеру, и большинство компиляторов включают его встроенным, поэтому он так же близок к ассемблеру, как любой язык высокого уровня. Думаю, ты скоро станешь счастливым и дома.

Если вы заинтересованы в том, чтобы прыгнуть на несколько десятилетий вперед;>), возможно, вам стоит подумать о компиляторе Microchip C. Я собираюсь заняться этим в ближайшее время, и есть хорошая книга по Практические диаграммы состояний на C / C++.

Для начала я бы предложил MPLAB от Microchip и "Студенческую" версию компилятора C.

Компилятор C запускается без оптимизации по истечении срока действия.

MPLAB имеет встроенный симулятор для запуска программ. Вы можете покрутить выходные контакты, чтобы увидеть, как все движется.

Хорошая новость заключается в том, что если ваши инженеры имеют опыт сборки, некоторые концепции языка C, такие как указатели и массивы, не составит труда понять (и, надеюсь, освоить).

Что касается вашего конкретного вопроса о встроенном обучении C, Нетрино предлагает несколько курсов по встроенному обучению, включая написание встроенного кода на C и C++.

Кроме того, конференции по встраиваемым системам (только что прошла в Бостоне пару недель назад, следующая, я думаю, состоится в Кремниевой долине следующей весной) всегда полны курсов по разработке встраиваемых систем и различным языкам. Но у вас, вероятно, нет роскоши ждать 6 месяцев.

Если ваши сотрудники больше относятся к типу "книжников", эти книги могут быть интересны:

Этого должно хватить, чтобы пережевать немного.

Книга микрочипов, вероятно, о 8-битных PIC.

Marco van de Voort 08.05.2009 14:25

Есть много книг по изучению программирования на C, особенно для упомянутых вами архитектур. Проверьте Amazon с поиском «микроконтроллер».

Кроме того, у Microchip есть много семинаров / классов для их конкретных компиляторов и чипов - они обычно недорогие, и в США есть несколько учебных центров. Поскольку многие инженеры нуждаются в обучении, вы можете подумать о том, чтобы напрямую связаться с Microchip и узнать, сколько будет стоить обучение на дому.

-Адам

Msp430 - один из лучших микропроцессоров для C. Но лучше всего просто использовать ARM, они скоро сотрут оставшееся соревнование. Microchip захватила 32-битное ядро, чтобы конкурировать, но я думаю, что они в конечном итоге также будут запущены. С 32-битными ARM, которые соответствуют цене устаревших 8-битных микросхем (таких как PIC и 8051 и z80), кроме msp, вам следует избегать останавливаться на чем-либо ниже 32-битного ядра.

Это не лучший и не самый эффективный компилятор, но цена подходящая, и ни один другой компилятор не имеет такой поддержки, как gcc. Относительно легко собрать или загрузить предварительно созданный gcc для ряда платформ. Я бы не стал втягиваться во все, что требует от производителя IDE и инструментов. Эти инструменты хороши и в некоторых случаях требуются для начала работы с микро, но в долгосрочной перспективе вы можете захотеть изучить плюсы и минусы альтернатив.

Что касается изучения C, хорошо, если вы знаете ассемблер, чем любой другой язык, включая ассемблер, это просто синтаксис. Я уверен, что все, что вам нужно, вы можете найти в Интернете с помощью Google. После того, как вы выберете плату eval и микро (у stellaris есть несколько хороших вещей), начните с изучения их примеров программ, затем используйте Google, чтобы найти другие примеры программ, и продолжайте дальше. В частности, с микроконтроллерами, но в целом вы хотите избежать особенностей любого языка, придерживаясь простых, базовых вещей, вещей, которые одинаковы для любого языка программирования. Компиляторы, с которыми вы сталкиваетесь, особенно специализированные компиляторы для micro, не собираются обрабатывать угловые случаи, такие как, скажем, gcc, microsoft или borland. Это также сделает ваш код более переносимым для использования на других микросхемах или других языках (хотя я бы избегал всего, что выше asm и C, особенно для микросхем). Если у вас должна быть книга, возьмите K&R или что-то еще, что используется вместо нее. Обратите внимание, что K&R C, прямо из книги первого издания, на самом деле нигде не компилируется. Но он придерживается основ и удерживает вас от проблемных областей языка.

Драйверы устройств Linux чрезвычайно высокого уровня (почти на уровне приложений, основная часть кода не имеет ничего общего с «металлом»). Вы не собираетесь запускать Linux на микроконтроллере или даже на микропроцессоре, изучение драйверов устройств Linux - хорошее упражнение для других целей, но не для этой. Вы хотите избежать использования операционной системы любой ценой, особенно Linux и Windows, вы хотите изучить программирование на языке C, отличном от операционной системы. Посмотрите на примеры WINARM. (включая ОСРВ).

Однозначно стоит проверить http://arduino.cc:

http://arduino.cc/en/Tutorial/HomePage

HTH

Почему вы упомянули 16 бит?

Если это потому, что вы думаете, что 8-битный формат - это 20 век, вы правы. Но так и 16-битный. Сегодняшние 32-битные контроллеры (особенно ARM) мощнее и часто дешевле 16-битных контроллеров. Дешевле, потому что в некоторых 16-битных машинах используются устаревшие процессы с большим размером элемента и, следовательно, с более крупными матрицами.

На самом деле я думаю, что некоторые 8-битные контроллеры будут иметь более длительный срок службы, чем их 16-битные аналоги. Преимущество первого перед 16- или 32-разрядными контроллерами может заключаться в размере. Вы не можете поместить контроллер ARM в корпус SOT23 размером 2,9x1,3 мм. К тому же 8-битные контроллеры меньшего размера по-прежнему дешевле самых маленьких ARM.

Для меня единственная причина использовать 16-битные контроллеры - это установленный код, но поскольку вы упомянули некоторые бренды, которые «рассматриваете», я предполагаю, что вы не используете их в данный момент.

Я бы посмотрел на ARM. ARM7TDMI стабилен и доступен во множестве конфигураций от нескольких поставщиков. Могу порекомендовать NXP LPC2000. От 1,50 доллара США, неплохо для 32-разрядного контроллера.

Исправьте до части ARM, перейдите непосредственно к MCU на базе Arm Cortex.

Johan 14.03.2009 01:24

Are there good training resources to bring our engineers up to speed with C?

Для начала, очень хорошее и довольно полное введение в семейство языков программирования C предоставлено бесплатно Брюса Эккеля Мультимедийный курс «Мышление на С». (размер закачки порядка 100 мегабайт, а сам курс во флеше).

Для изображений с 16-битными микросхемами есть

http://www.amazon.com/Programming-16-Bit-PIC-Microcontrollers-Technology/dp/0750682922

IIRC, это было прилично, но они довольно сильно сосредоточены на том, чтобы делать что-то одно на каждом чипе. Наши приложения мультиплексируют множество операций ввода-вывода, и для этого примеры / исследования в книге (которые предполагали исключительное использование) было трудно применить на практике.

Когда я начинал работать с этой архитектурой, мне действительно помогал готовый образец платы (от Microchip, диапазон от 50 до 100 долларов), особенно если вы ориентируетесь примерно на тот же вариант, что и образец платы.

Это потому, что он предлагал простую проверку, связана ли проблема с аппаратным или программным обеспечением, запустив ее на тестовой плате.

Есть компании, которые специализируются на обучении C для встраиваемых систем, например Feabhas в Великобритании или Нетрино в США. Посмотрите в Интернете.

В дополнение к процессорам, упомянутым в других сообщениях, стоит обратить внимание на семейство STM32 от ST. Они 32-битные, чрезвычайно рентабельные и поставляются в большом количестве пакетов.

ST, похоже, прилагает реальные усилия, чтобы люди быстро освоили свой продукт, предлагая оборудование для разработки, такое как STM32 Круг.

Другие вопросы по теме