Я - разработчик программного обеспечения. Я программировал на высокоуровневых языках в течение нескольких лет.
Я хотел бы знать, как сделать мой первый шаг в программирование аппаратных средств. Не что-то сумасшедшее усложнило, но возможно некоторое обычное устройство CE? Принятие, вместе с которым я не должен помещать PCB, варьируется компоненты, но только программировать крошечный CPU?
Как низкий уровень я должен пойти? ASM? C? управление регистрами? или действительно ли dev набор является довольно высоким уровнем теперь? Находится Java даже в изображении? Кодирование OO в аппаратных средствах, которые являются даже мечтой или действительностью? Нужна проверка в реальных условиях.
Я также склонен учиться лучше с книгами или сайтами, которые записаны в учебном формате. Что-то, что ведет путь ко мне от чего-то простого до чего-то более сложного. Какие-либо рекомендации? Возможно, что-то, что представит меня распространенному оборудованию (микропроцессор/микроконтроллер), доступный сегодня?
Очень ценивший, поблагодарите Вас все.
Фактическое программирование не имеет большого значения. Разочарование, раздражающая часть - это настройка вашей среды разработки и получение рабочих инструментов. Как только вы сделали это, вы сделали половину.
Я бы предложил покупать комплект разработки («Dev kit»), который имеет USB встроенный и работает с выбранной вами ОС. Получите эту работу, и вы на полпути сделали.
Если вы пропустите знания, также важно знать основы того, как работает процессор. Вы будете программировать на гораздо более низком уровне, чем любое другое программирование, поэтому основы немного важнее.
Если вы знаете C, то это всего лишь вопрос изучения шагов цепи инструментов для загрузки кода.
Простое место для начала (дешевое оборудование / программное обеспечение) http://www.arduino.cc/en/guide/homepage
Пытались ли вы уволить первого ответчика, когда текст становится неактивным, а не когда он становится активным?
-121--3414234-char * oldname = new char[strlen(name) + 1];
//memcpy(oldname,name,strlen(name) + 1);
strcpy(oldname,name);
name = new char[strlen(oldname) + strlen(r.name) + 1];
//memset(name, '\0', strlen(name));
name[0] = '\0';
strcat(name,oldname);
strcat(name," ");
strcat(name,r.name);
Я понимаю это сейчас, просто хотел вставить этот код для всех будущих посетителей Закомментированные строки эквивалентны незакомментированным под ними. C комментирует, C++ не комментирует.
-121--3796803-Также существует Microsoft Robotics Studio . Они поддерживают довольно много аппаратных плат (в том числе CE), и с их помощью довольно легко запустить и запустить небольшой робот. И что более классного в том, чтобы научиться встроенному программированию?
Все это хорошо интегрируется в Visual Studio (express) и их devkit также поставляется с бесплатным экспресс-выпуском.
Получить бойлит. Дешевые, много пользователей (поддержка сообщества будет ключом), многие варианты ОС. http://belegleboard.org/
Я был кодирован в C как в качестве хобби, так и профессионально в течение примерно 16 лет, но всегда для Code UserLand (I.E., программы, не ядра или драйверы). Большинство моих рабочих мест вовлекли языки высокого уровня (я сделал много Perl и Ruby Programming, со случайной Java, Python и Shell Scripting между ними). Я много разрабатывал для MS-DOS (который, вероятно, был как можно ближе к голым металлуржевым программированию, поскольку вы получите на машине X86), но моя последняя работа вовлекла 5 лет Perl и Ruby on Rails Web.
Это говорит, что я сейчас старший инженер для встроенного развития Linux, развивающиеся драйверы (включая эмулятор для устаревшего простого микропроцессора внутри модуля ядра) для UCLinux на Blackfin Платформа. Бывают времена, когда мой неопытность с проблемами, связанными с аппаратным обеспечением (то есть, плавающие уровни сигнала из-за отсутствия подтягивания / выдвигающегося на булавке), но это было в основном очень приятным и захватывающим опытом. Как указано другими, понимание ваших инструментов имеет важное значение - для UCLinux, что означало набора инструментов , который, к счастью, я уже знакомился с моим фоном на технологиях FOSS.
Черныйфин вряд ли является микропроцессором начального уровня (в частности, он не имеет MMU , который имеет некоторые соответствующие эффекты на развитие Linux ), но как уже говорилось, Вы можете купить Beagleboard для около 200 долларов со всеми необходимыми аксессуарами и начните возиться с ним всего за несколько дней. Если вы хотите что-то более проще, есть много Arduino arduino .
После того, как вам комфортно с вашими инструментами, вы можете потратить немного денег на входном эмуляторе (или лед). Это, как правило, очень специфичные платформы (как с точки зрения целевой архитектуры, так и в среде разработки), но настоятельно рекомендуются для чего-либо, за пределами обычных примеров пресс-пресс-пресс-пресс-пресс-прессования миганий, я уверен, что вы быстро вытесните.
Через несколько месяцев вы окажетесь созданием пользовательских изображений для Halkable Customer Comparents , используя BuildRoot и много веселья. Все, что я могу сказать, - это, пойти на это, это очень захватывающее, а не особенно дорого, чтобы сделать в настоящее время.
Ну, если вы хотите знать, что вы делаете, вам нужно понимать язык ассемблера процессора и его архитектуру.
Чтобы быть компетентным в микроконтроллерах, вам нужно выучить C. Обходного пути нет.
На встраиваемых системах есть несколько языков VM-уровня. Время от времени я вижу исключение Java вне памяти на моем мобильном телефоне(, что также помогает мне составить четкое мнение о языках VM-уровня во встраиваемых системах).
ARM имеет некоторую поддержку байткодов Java на аппаратном уровне.
Лучший вариант - взять что-нибудь вроде PIC или чипов Atmel и начать с ними взламывать.
Если вы хотите сделать это с существующим аппаратным обеспечением, достаньте гипервизор для вашего ПК и начните писать базовое ядро.