Вопросы программирования электронных компонентов - PullRequest
9 голосов
/ 08 ноября 2011

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

  1. Я предполагаю, что есть ПЗУ и некоторые микросхемы ЦП, где хранится программное обеспечение, управляющее деталями.Теперь это программное обеспечение обычно написано на Java или на низком уровне C (++?) Или даже ниже?

  2. Существуют ли какие-либо библиотеки, обычно используемые для такого рода вещей?Или микросхемы поставляются с предварительно запрограммированными этими и, возможно, некоторыми базовыми операционными системами?

  3. как этот чип запрограммирован с помощью программного обеспечения?Существует ли какое-то устройство для записи в ПЗУ, не так ли?

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

Кто-нибудь сможет указать мне ресурсы, где я мог бы прочитать больше об этом?Я пытаюсь получить общее представление о том, как это работает, как вовлекать это и какие навыки кому-то понадобятся, чтобы заставить это работать.Я понимаю, что это огромная тема, но я хочу получить представление о том, как это делается, и хотя я сам не смогу сделать что-то подобное, я хотел бы понять процесс и его участие

Опять же, есливопросы и мои объяснения сбивают с толку, я прошу прощения.Мне было очень трудно объяснить

Ответы [ 9 ]

7 голосов
/ 08 ноября 2011

Внимательно посмотрите на Arduino. Это хорошее введение в использование микроконтроллеров Atmel ATMega. Он написан на языке, похожем на C ++, называемом Processing

Примеры команд:

Проверьте, нажата ли кнопка, и если она есть, включите светодиод. Кнопка находится на контакте 3 (на земле), 4 на светодиодном индикаторе.

if(digitalRead(3) == HIGH){
   digitalWrite(4, HIGH);
}

мигать светодиодом. (Контакт 13)

while(1){
   digitalWrite(13, HIGH);
   delay(100);
   digitalWrite(13, LOW);
   delay(100);
}

Arduino программирует микроконтроллер через USB, используя встроенный адаптер USB-последовательный порт. С ним вы можете управлять чем угодно - предположим, вы хотите переключить адаптер переменного тока на 110 В. Вы можете просто подключить реле, которое запускает катушку 5 В, чтобы включить его. Вы также можете прочитать в переключателях, датчиках температуры, датчиках света, магнитных датчиках, акселерометрах, последовательном, TTL, SPI, 1-проводном и т. Д. ... Как только вы начнете, единственное, что остановит вас, будет ваш бюджет!

1 голос
/ 09 ноября 2011

Я предполагаю, что есть программное обеспечение и некоторые чипы процессора, где программное обеспечение управление частями сохраняется.

Да. Программное обеспечение во всех встроенных системах выполняется из ROM (флэш), а не из RAM, как на вашем ПК. Данные, которые необходимо сохранить, также хранятся в ПЗУ (eeprom / flash).

Теперь это программное обеспечение обычно написано на Java или на низком уровне C (++?) Или даже ниже?

Все современные разработки автомобильных прошивок, скорее всего, выполняются на языке C. Старые прошивки, скорее всего, написаны на ассемблере. C ++ используется в некоторых редких случаях. Java вообще не используется.

Существуют ли какие-либо библиотеки, обычно используемые для такого рода вещей? Или чипы поставляются заранее запрограммированными с этими и, возможно, с некоторыми основными операционными системами?

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

как этот чип запрограммирован программно? Существует ли какое-то устройство для записи в ПЗУ, не так ли?

Да. У вас есть «стручок», который записывает вывод вашего компоновщика в ПЗУ. Самым распространенным промышленным интерфейсом де-факто является JTAG , но в дополнение к этому каждый производитель MCU также имеет собственные нестандартные решения.

это то, что можно было бы поиграть дома через мой ноутбук, и если да, какое оборудование мне понадобилось бы в дополнение к ноутбуку?

Конечно, все, что вам нужно, это «стартовый набор» от поставщика MCU. Как правило, они включают готовую оценочную плату, модуль программирования и компилятор. Я не обязательно согласился бы с нынешней шумихой на рынке, я действительно не понимаю, как Atmel или ARM были бы более дружественными для новичков, чем что-либо еще. Если вы заинтересованы в определенной конкретной модели автомобиля, вы должны выяснить, какой MCU использует эта модель, и выбрать ту же. Я считаю, что Renesas / NEC и Freescale занимают большую часть автомобильного рынка микроконтроллеров, хотя я не могу привести ни одного отчета. Эти двое, безусловно, имеют лучшую репутацию автомобильных микроконтроллеров.

Кто-нибудь сможет указать мне ресурсы, где я мог бы прочитать больше об этом

Руководство для начинающих по программированию на C на MCU / встроенных системах можно найти здесь . Он использует устаревший автомобильный MCU 68HC12 от Motorola / Freescale, но принципы универсальны для любого MCU.

1 голос
/ 08 ноября 2011

Проверьте микроконтроллер PIC от Microchip.Вам понадобится какой-нибудь программист или совет по разработке.Они обычно подключаются к ПК через USB для программирования.Есть много компиляторов для PIC.Наиболее популярные из них реализуют язык, подобный C.

Здесь - это каталог, в котором перечислены комплекты разработки для PIC от CCS.

1 голос
/ 08 ноября 2011

Более общие ответы:

Обычно там есть флеш-память для хранения.Может быть крошечное ПЗУ с загрузчиком.

Java редко используется по разным причинам;C / C ++ довольно распространен.Я предпочитаю Forth, Scheme и т. Д., Потому что они более интерактивны, и все же довольно быстры, но C в порядке.Сборка все еще используется, но, как правило, редко, а затем обычно для низкоуровневых, критичных ко времени вещей.

ОС повсюду.В зависимости от потребностей, некоторые из них будут ОСРВ (ОС реального времени, когда все должно быть детерминированным).Это может быть маленькое ядро ​​Linux, OS-9, uCos, home-spun, вы его называете.

Есть несколько универсальных встроенных библиотек или уровней абстракции, но много встроенных системочень специализированы, делая такие вещи не такими полезными.Производители SOC (системы на чипе) обычно имеют SDK, который облегчает взаимодействие с их конкретным оборудованием.

В наши дни чипы обычно прошиваются через USB / и т. Д.

Arduino уже упоминалось.Есть миллион разных маленьких крошечных компьютеров;проверьте любую проблему Подвал Circuit для достаточного количества объявлений, чтобы вызвать у вас головокружение.Некоторые из них более увлекательны, чем другие, например система разработчиков TI Watch или крошечные машины размером с USB-порт.

Робототехника - это отличное место для начала, потому что она объединяет практически всевстроенная система должна быть в одном увлекательном пакете, просто ожидающем, чтобы захватить весь мир.

1 голос
/ 08 ноября 2011

Начните с чего-то простого и постройте его.Вы задали очень широкий вопрос.

Начните здесь: Управление реальным миром с помощью компьютеров

И: Используйте правильный инструмент для работы: встроенное программирование

0 голосов
/ 09 ноября 2011

Я предполагаю, что в ПЗУ и некоторых микросхемах ЦП хранится программное обеспечение, управляющее частями.

Во многих встроенных системах используется микроконтроллер (MCU) или система на кристалле (SoC) , они включают в себя на одном кристалле одно или несколько ядер ЦП, а также ПЗУ (обычно флэш-память), ОЗУ и выбор периферийных устройств и интерфейсов, таких как UART, USB, GPIO, АЦП, ЦАП, SPI, I2C, таймер / счетчики, Контроллер Ethernet, CAN, SDIO, контроллер LCD и многое другое. Из-за ограниченного пространства на кристалле и относительной низкой плотности Flash и SRAM MCU также может иметь внешнее ПЗУ или ОЗУ и иметь контроллер SDRAM, позволяющий использовать высокоплотную и недорогую SDRAM.

Часто код хранится во встроенной флэш-памяти или OTP-ПЗУ (одноразовое программируемое ПЗУ), но может использоваться внешняя память. Некоторые системы выполняют код непосредственно из ПЗУ, другие копируют образ ПЗУ в ОЗУ для выполнения (что часто происходит быстрее, а образ ПЗУ может быть сжат для уменьшения занимаемой площади). Если код не выполняется из ПЗУ, но копируется в ОЗУ, его можно сохранить в дешевой NAND Flash с высокой плотностью.

Теперь это программное обеспечение обычно написано на Java или на низком уровне C (++?) Или даже ниже?

Для запуска Java требуется JVM и обычно ОС. Телефонные приложения и приложения Android часто пишутся на языке Java, но это не язык системного уровня. Основная ОС и сама JVM будут написаны на низкоуровневом языке. Некоторые микросхемы включают частичное выполнение байт-кода Java в аппаратном обеспечении (например, в модуле Jazelle ARM), но это предназначено для ускорения выполнения Java, а не для непосредственной реализации полной JVM в аппаратном обеспечении.

C является наиболее часто используемым языком систем и прикладного уровня в глубоко встроенных системах, все чаще используется C ++, особенно в больших системах. Код на ассемблере чаще всего используется только для кода начальной загрузки и кода инициализации; после создания среды выполнения C языки более высокого уровня становятся более распространенными. Некоторые очень маленькие 8-битные системы все еще могут быть полностью закодированы на ассемблере. Хотя, если ваша система достаточно велика для запуска Linux, например, она может даже использовать языки сценариев для некоторых элементов приложения. Многие критичные ко времени функции DSP также часто кодируются на ассемблере, хотя общие стандартные функции и алгоритмы обычно предоставляются в виде библиотек для языка более высокого уровня либо поставщиком инструмента, либо производителем микросхемы (которые иногда совпадают).

Существуют ли какие-либо библиотеки, обычно используемые для такого рода вещей? Или чипы поставляются запрограммированными с этими и, возможно, с некоторыми основными операционными системами?

Существует обширная экосистема библиотек встроенных систем, как коммерческих, так и с открытым исходным кодом. Они могут включать ядра RTOS, полные операционные системы, файловые системы и периферийные библиотеки. Зачастую производитель чипов предоставляет библиотеку драйверов или встроенных периферийных устройств. Эти драйверы обычно бывают «голыми» (то есть не зависят от ОС), предоставляются в виде исходного кода и обычно являются низкоуровневыми. Если вы используете их в ОС, вам, как правило, придется использовать их для создания драйвера более высокого уровня и более дружественного к ОС.

Обычно устройства не запрограммированы заранее. Некоторое оборудование для разработки и оценки может быть предварительно запрограммировано с помощью демонстрационного кода, более крупное оборудование для оценки может быть предварительно загружено с Linux или WinCE.

как этот чип запрограммирован программно? Существует ли какое-то устройство для записи в ПЗУ, верно?

Есть разные способы. Многие современные микроконтроллеры включают в себя аппаратное обеспечение для отладки и программирования на кристалле (обычно это интерфейс JTAG, хотя проприетарные интерфейсы также являются обычными), это позволяет программировать на кристалле и во многих случаях запрограммировать внешнюю флэш-память с хоста ПК с использованием JTAG. отладчик или программист.

Чтобы разрешить программирование без часто дорогостоящих JTAG-программистов, многие микроконтроллеры имеют предварительно запрограммированный загрузчик. Это небольшая программа, которая позволяет загружать и выполнять код через интерфейс, такой как UART (последовательный) или USB. Bootrom может включать в себя программный код Flash или может быть даже проще, и требовать загрузки и выполнения вторичного загрузчика в RAM и иметь эту программу Flash.

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

это то, что можно было бы играть дома через мой ноутбук, и если да, то какое оборудование мне понадобилось бы в дополнение к ноутбуку?

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

Кто-нибудь сможет указать мне ресурсы, где я мог бы прочитать больше об этом?

Профессиональным ресурсом является Embedded.Com (теперь переименованный, но не так легко запоминающийся как EETimes Embedded), но это было бы неплохо, начиная с глубокого конца! Вам может быть удобнее что-то вроде сравнительно простого проекта Arduino или более мощного проекта BeagleBoard .

Отличным ресурсом для любителей, если вы выбираете микроконтроллеры Atmel AVR, является AVR Freaks . AVR имеет то преимущество, что я думаю, что это единственное 8-битное устройство, поддерживаемое компилятором GNU.

Еще один ресурс, если вы хотите разрабатывать проекты с использованием инструментов с открытым исходным кодом на платформе ARM (или их много), для Windows - это превосходный сайт ARM-Projects Мартина Томаса. Он ведет свой собственный дистрибутив инструментов GNU, но также имеет ссылки на другие, которые могут быть более современными и поддерживаемыми.

Я пытаюсь получить общее представление о том, как это работает, как вовлекать это и какие навыки кому-то понадобятся, чтобы заставить это работать.

Может потребоваться некоторое время, чтобы самостоятельно создать что-нибудь интересное, но есть много примеров и примечаний к приложению с кодом, которые помогут вам получить более быстрое удовлетворение. Знание электроники полезно. Хотя большинство плат разработки и оценки имеют ряд интерфейсов, переключателей, кнопок, индикаторов, а иногда и ЖК-дисплеев или других устройств, они, как правило, в первую очередь предназначены для взаимодействия с конкретными аппаратными средствами, которые вы можете создать самостоятельно. Это особенно актуально для мехатронных систем, где вам потребуется дополнительное оборудование для управления и контроля сильноточных устройств, таких как двигатели и исполнительные механизмы, или для взаимодействия с датчиками.

0 голосов
/ 09 ноября 2011

Часть с пользовательским интерфейсом (головное устройство) не должна быть той, которая выполняет работу, это могут быть разные блоки, соединенные шиной (большую часть времени в автомобиле это CAN, но есть и более дешевые и проще LIN и некоторые другие). В современном автомобиле много маленьких компьютеров (скажем, 50).

  1. Большинство из них содержат микроконтроллеры со встроенной флэш-памятью и оперативной памятью, более крупные также имеют внешнюю память. Он начинается с нескольких КБ и достигает десятков или сотен МБ. Большую часть времени они запрограммированы на C или C ++ для больших вещей, таких как головное устройство. Java существует , но встречается редко, хотя некоторые люди сейчас работают на головных устройствах с Android .

  2. Это беспорядок. У самых маленьких нет особой ОС, о которой можно говорить, или, может быть, у ОСЭК, у более крупных - какая-то операционная система реального времени (RTOS, я знаю VxWorks, QNX, µItron) или не очень ОС реального времени (Linux). , Windows CE, Android). Что касается библиотек, многое написано с нуля из-за нехватки ресурсов (особенно памяти) или из-за особых потребностей, некоторый код (например, ОС, кодеки) лицензирован или даже с открытым исходным кодом.

  3. Это беспорядок. Устройства обычно содержат флэш-память, но у каждого производителя или даже каждого семейства устройств есть свой особый метод программирования, часто с помощью отладчиков, которые часто используют JTAG. Или через загрузчики, подключенные к последовательному порту. Или USB. Или FTP через Ethernet через USB-адаптер. Зачастую вам нужно сделать несколько забавных движений в правильной последовательности для программирования (нажатие кнопок, ввод команд через различные интерфейсы, перезагрузка).

  4. Arduino - это приятное и щадящее начало, и вы также можете запрограммировать базовый AVR на C позже, если хотите. Следующим логическим шагом после 8-битного AVR станет недорогая плата для разработчиков с 32-битным ARM Cortex M3, например Olimex LPC-P1343 . Хотя, по моему опыту, в автомобильной промышленности используется много контроллеров Renesas, которые как любитель получить несколько сложнее. Но для начала работы со встроенным программированием это не имеет большого значения.

0 голосов
/ 08 ноября 2011

Вам понадобится микроконтроллер автомобильного класса.Есть много продавцов и ароматов.Да, они включают в себя вспышку и некоторый баран какой-то.Вы записываете программу в rom различными способами, иногда специальным программистом, или jtag, или существует последовательный загрузчик.

Звучит так, будто вы не очень знакомы с этой средой, начинайте медленно, мигаете светодиодом, пробуете кнопку, переходите к ЖК-панелям и т. Д., А затем беспокоитесь о полном приложении, таком как контроллер, о котором вы говорите.около.Не беспокойтесь о получении автомобильной комплектации и не беспокойтесь о создании собственной платы, есть тонна электронных плат стоимостью менее 50 долларов и менее чем 25 долларов.

msp430 от TI хорош, они отдают их, додо 3 за заказ по $ 4,30, с этим не поспоришь, все, что тебе нужно, дешевле пяти баксов (плюс бесплатные загрузки).PIC от микрочипа был очень популярен, но большинство из них прошло мимо, вероятно, у них самые дешевые одноразовые программируемые программы, так как процессора так мало.Некоторое время назад avr из atmel пользуется огромной популярностью среди любителей.Они были популярны до выхода Arduino, но теперь, когда это произошло, это дало им новый толчок.Есть много вкусов.Я думаю, что у Uno есть все на борту, некоторые другие, хотя вы хотите купить маленький серийник на основе ftdi для usb, который подключается сбоку.У sparkfun есть пара комплектов оснастки, версия lillypad и, возможно, версия arduino pro mini или что-то в этом роде.о, кроме msp430 от ti и некоторых других, sparkfun.com - отличный источник для многих из этих плат.Вы также можете получить плату панели запуска msp430 за чуть более пяти баксов.В любом случае, вы смотрите на 40-40 долларов, чтобы попасть в Arduino.Существует бесплатная песочница, с которой можно поиграть, если вы в нее верите, или вы можете написать код более низкого уровня, а не застрять в песочнице.ARM берет на себя все, у них есть хорошая основа для строительства.Вы можете только помочь своей карьере, узнав кое-что о процессорах ARM.Они могут конкурировать на этом рынке, а также на высоком уровне, а также доминировать на рынке батарей с питанием (телефоны, камеры, mp3-плееры и т. Д.).Лошадиная сила к цене и размеру, и, как говорится, сила, вы не можете конкурироватьболее старые из них основаны на arm7, множество плат для заголовков olimex в sparkfun и в других местах по всему миру, sam7, например, продается по цене около 20 долларов, lpc и другие.Серия cortex-m берет на себя руки размером с микроконтроллер, и у вас есть такие вещи, как stellaris обратно в ti (капает со всеми интересующими вас вещами для вашего контроллера A / C за $ 50-100) или семейство stm32 от stи некоторые lpcs.Плата mbed2, продаваемая в sparkfun и других компаниях, очень проста в использовании, на основе lpc, от 45 до 50 долларов, без платы lpcxpresso, кстати.Вы можете получить плату на основе stm32 примерно за 10 долларов за серию стоимостных линий stm32, их несколько, не путайте это с открытием стоимостной линии stm8.

У меня есть постоянно растущий список плат и примеров программ низкого уровня (моргайте светодиодами, отправляйте несколько байтов из уарта, промокайте ноги, чтобы вы могли без страха делать следующий шаг) на github.com/ dwelch67.У меня также есть пара симуляторов, чтобы вы могли играть с инструментами и программированием, не вкладывая деньги.первый шаг - сборка и запуск вашей программы; второй шаг - это простой ввод-вывод, а затем много знаний о различных интерфейсах (spi, i2c и т. д.) и периферийных устройствах (таймеры, контроллеры lcd, pwm и т. д.).Затем вы можете рассмотреть полное заявление, подобное тому, о котором вы говорите.

0 голосов
/ 08 ноября 2011

Вы задали довольно широкий вопрос - как правило, это не хорошая форма для SO, но разбиение его на более мелкие части, вероятно, не улучшит ответов , поэтому я отвечу на него как есть.

Многие встраиваемые устройства EEPROM -программируемые.Вы можете купить свои собственные инструменты для записи EEPROM.Некоторые встраиваемые устройства представляют собой микросхемы ASIC , которые представляют собой недорогой способ получения специально запрограммированных микросхем, которые предлагают хорошую настройку с помощью языка программирования , несколько более дешевую, чем CPU ,который может потребовать гораздо больше памяти для размещения чего-то похожего на ОС и среду программирования.

В свое время я понимаю, что FORTH был обычным выбором для встраиваемых сред, поскольку это не так.Многое не дало и мало просило - все было довольно просто.C - еще один хороший выбор, так как языковая среда выполнения не требует много и может быть урезана очень далеко, не теряя слишком много тонкостей.(Динамическое распределение памяти часто недоступно.)

Некоторые небольшие чипы разработаны специально для Java - но я не знаю, насколько хорошо это сохранилось в современной промышленности.

...