Как все это работает

akis_t
Сб 16 мая 2015 г., 7:40
Привет, и извинения за долгий пост!

Меня отправили на эту доску с форумов Arduino, я искал небольшой, профессиональный мини -размер, Arduino с немного большей памятью, так как мои наброски достигли 32K... Но он должен быть маленьким, Pro Mini идеально подходит, Nano также хорош, хотя USB - это пустая трата после развертывания.

Итак, я пытался выяснить, как все это работает под капюшоном. Похоже, что Arduino IDE сильно основана на компиляторе Atmel AVR/Toolkit/SDK. Я узнал об этом, копаясь:

1) Компилятор Atmel AVR C и CRT и библиотеки:

C: \ arduino \ arduino-1.6.4 \ halpware \ инструменты \ avr
Например, этот объектный файл пытается найти «int main (...."C: \ arduino \ arduino-1.6.4 \ halpware \ tools \ avr \ avr \ lib \ avr5 \ crtm328p.о

2) Собственный код клея Arduino
C: \ arduino \ arduino-1.6.4 \ ardware \ arduino \ avr \ cores \ arduino, например, вот основной.Файл CPP

Странно: кажется, что IDE собирает все в этом каталоге, например, я переименовал »Main.CPP "Main - ха -ха -ха -ха.CPP "и он продолжал собирать его и использовать...

Установка ".CPP "заставляет его игнорировать, а затем работает, если вы предоставите" int main () "в своем эскизе


3) Некоторые базовые библиотеки Arduino
C: \ arduino \ arduino-1.6.4 \ ardware \ arduino \ avr \ библиотеки (например, eeprom, проволока)

4) ЗАГРУЗКИ ЗДЕСЬ
C: \ arduino \ arduino-1.6.4 \ hardware \ arduino \ avr \ bootloaders \ atmega


********************************

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

Теперь я скучаю по ссылке на другие процессоры. Как эта система будет поддержать руку или Intel, например,.

Когда я набирал это, и это стыдно удалить это теперь все, я обнаружил 1.6.4 IDE позволяет мне загрузить «поддержку» для других процессоров. Итак, я пошел вперед и скачал «Arduino Sam Boards с использованием ARM», он скачал 500 МБ !!! В «C: \ users \ akis \ appdata \ roaming \ arduino15» (серьезно? в роуминге?...) но у меня нет конкретной доски, чтобы попробовать это на. IDE ссылается на это как должное. Я даже не понял, что это значит.

Любое объяснение, как все это работает! Спасибо

Mrburnette
Сб 16 мая 2015 г. 14:26
@akis_t: Добро пожаловать!

Установка компилятора ARM в роуминг под Windows делает компилятор «пользователь»-централичный, а не глобальный. Версиян1.6.1 не сделал этого. Но Ардуино сейчас фрагментирован ... 1.7.3 версия, которую я использую в Ардуино.орг

Ряд преданных участников работал в течение нескольких месяцев, чтобы ослабить специфику относительно того, что нужно сделать, чтобы полностью поддерживать различные архитектуры UC, при теме, делая это плавным для GUI Arduino Gui. Пользователь Роджер (который размещает эти веб-сайты) скоординировал изменения и внедрил много изменений лично и был центральным в получении старого Leaflab Pre-1.0 ядро ​​модернизировано до того места, где он находится сегодня.

Как вы, наверное, знаете, GUI Arduino сканирует файловую систему при выполнении... это задержка, которая так очевидна во время открытия. Пользовательские библиотеки расположены и запоминаются (почему мы должны закрывать и открыть Arduino после добавления загруженных библиотек), но также во время этого сканирования профили для сторонних плат отсканируются в папке \ user \ documents \ arduino \. Доски.Файлы TXT должны быть правильно отформатированы для добавления в меню графического интерфейса. Поскольку графический интерфейс хранит эту информацию в течение времени, когда он активен, он «знает», как использовать ядро, библиотеки и включать файлы. Многое из того, что нужно знать, здесь
https: // github.com/arduino/arduino/wiki ... зацикция

По сути, мы работаем с существующими библиотеками и вносят изменения, чтобы они поддерживали семейство чипсов TGE STM32. Эти библиотеки хранятся отдельно от загруженных библиотек в ...\ Arduino \ библиотеки но В будущем авторы могут включить специфический код STM32 непосредственно в библиотеку, чтобы поддержать STM так же, как Due, поддерживается сегодня. Автор требуется просто немного времени, но означает, что сначала им нужна тестовая платформа.... Вот почему сначала заработал основные файлы, работая № 1.

Я понимаю, что ряд UC поддерживается под зонтиком GUI Arduino, в том числе чипсы от производителей TI, и те, которые перечислены здесь: http: // Playground.Ардуино.cc/main/ardui ... Атмелчипс И, конечно же, семья STM32, которая подавлена ​​здесь и другими локациями в Интернете. Теоретически, любая из этих чипов может быть использовано в Arduino, если бы ядра были разработаны:
http: // en.Википедия.org/wiki/gnu_compiler_collection

Многое из графического интерфейса Arduino "дым & зеркала "... Он находится на вершине реальных инструментов GCC, которые компилируются и ссылаются. Несмотря на значительное достижение, многие пользователи Arduino забывают, что все, сделанное Arduino, можно сделать некоторые из других систем GUI, которые поддерживают плагин Arduino: например, Eclipse: http: // en.Википедия.org/wiki/gnu_compiler_collection

Еще одна вещь, которую многие пользователи Arduino забывают, это то, что язык Arduino http: // en.Википедия.org/wiki/gnu_compiler_collection действительно просто код C/C ++, который был записан для выполнения необходимых функций нижнего уровня. Несмотря на то, что он не является технически правильным, можно представить эти ардуно-ориентированные языковые команды как «макросы», которые выполняются, которые затем выполняют другие собственные функции. Многие люди просто растут из зонтика Arduino и переходят к Pure C, C ++ для повышения эффективности и скорости.

Если вы решите перенести какой-то код в STM32 из 8-битных процессоров AVR, я думаю, вы обнаружите, что большая часть команд Arduino работает; Особенно все до-1.0 Команды. Могут быть некоторые грубые края, которые нуждаются. Библиотеки, однако, являются совершенно другим вопросом - порты делаются, поскольку мы можем добраться до них и часто выбираются самими рабочими членами для поддержки своих собственных проектов. Много работы выполнено, многое нужно сделать. На форуме есть раздел для запросов на перенос конкретной библиотеки - акцент на слово «запрос», так как время здесь является врагом. Я пытаюсь сказать, что вы единственный, кто может решить, подходит ли STM32 при Arduino вам и вашей текущей потребности. Но инвестиции очень малы, до 4 долларов США.С.Дюймовый. и поэтому риск тоже маленький.


Луча

akis_t
Сб 16 мая 2015 г. 20:35
Я читаю спасибо. Я еще не понимаю всю используемой терминологии, например, «ядро» и «вариант» и так далее.

Но думая глубже, я не уверен, что важно иметь возможность пересекать компиляцию эскизов arduino в руку или другие платформы. Arduino IDE не совсем велика, и у меня нет любовных родов с библиотеками Arduino. Для большинства внешних оборудования я все равно пишу свои собственные библиотеки. Все, что мне нужно, это компилятор C.

Итак, я говорю, что я был бы доволен тем, что доска «X» использует процессор «Y», который поставляется с собственной IDE и не нуждается в 1 миллион долларов «Совет по разработке», чтобы иметь возможность работать, он должен иметь возможность запрограммировать целевой чип через такие вещи, как FTDI или аналогичные. Дешево и весело.

Мадиас
Сб 16 мая 2015 г., 21:48
Суммируя:
"основной": The STM32 Series: Например, все серии F1 начинаются с STM32F1XXX, F4 с STM32F4XXX. В настоящее время серия F1 полностью поддерживается, следующий будет серию F4 (я думаю, так что так ;) )
"вариант": Это контейнер с более конкретными вещами:
A) MCU: более специфичный для серии, например: STM32F103RBT6 или STM32F103CB, STM32F103C8T6
b) Physical Dev Poard: Разгонки, специальная схема USB для режима загрузчика («Maple Mini»), конкретный светодиод на контакте XYZ, метод загрузки (серийный, ST-Link, нативный режим загрузчика), номер/выводы I2C, SPI, USART...
Итак, с «вариантом» вы можете создать свою собственную конкретную доску, связанную с серией.

Rogerclark
Солнце 17 мая 2015 г. 12:38
@akis_t

Существует общая промальная концепция, что все процессоры на основе ARM в основном одинаковы, однако это не так.

Что общего у процессоров ARM, это просто набор инструкций ассемблера, e.g Вещи, которые перемещают номера из регистра, в регистрацию, добавление, вычтите, умножьте, прыгайте, смотрят, храните вещи в памяти и т. Д

Однако каждый микроконтроллер с сердечником руки может иметь совершенно разные способы физического доступа к GPIO (E.глин. Установка отдельных контактов на высокие или низкие или отправляющие данные с помощью протокола SPI и т. Д.)

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

Поэтому, если бы вы нашли другое устройство, у которого было ядро ​​руки, которое вы хотите написать, используя Arduino IDE и компилятор ARM, вам нужно будет написать тысячи строк кода, чтобы поддержать конкретное оборудование на этом устройстве.
Некоторые производители выпускают исходный код, чтобы сделать его немного проще, поскольку они стандартизируют функции более низкого уровня в API более высокого уровня, но этот API не API ARDUINO API.

Что использует Arduino IDE, так это API «проводка», поэтому вам нужно будет написать обертку между API ARDUINO и аппаратным обеспечением, а также написание нагрузки другого кода запуска и управления памятью, специфичных для рассматриваемого процессора.

Если вы хотите написать свое собственное ядро ​​с нуля, я бы посоветовал вам отложить в сторону несколько месяцев своей жизни, чтобы сделать это, и связаться с некоторыми, как Paul @ pjrc, который сделал это для Teensy, или Avik de, который сделал Реализация F3, как я уверен, они могут уточнить, насколько это тяжелая работа

Mrburnette
Солнце 17 мая 2015 г. 1:12
@akis_t:

Поэтому моя рекомендация, если вы хотите двигаться вперед, состоит в том, чтобы заказать как минимум 2 из мини -досок Maple; от ebay или aliexpress... Здесь есть отдельные темы на форуме об опыте с eBay и опытом с AliexPress. Эти 2 нити говорят о поставщиках, затратах, доставке и т. Д.

Maple Mini похож на Pro Micro: он запрограммирован и отлаживается над USB. У него есть на борту 3.3V регулятор как чип 3.3 В, но ряд булавок терпимым 5 В, поэтому для большинства проектов изменение уровня не требуется. Большинство датчиков прошли 3.3V в любом случае, и дисплеи GLCD и OLED 3.3В.

Проведите некоторые исследования, проверьте некоторые проекты и задайте здесь вопросы, если вам нужно... Если вы напишете свои собственные библиотеки, вы будете прямо дома - есть много примеров, чтобы исследовать SND, обычно обычно требуется несколько изменений; За исключением инструкций сборки.

Луча

akis_t
Солнце 17 мая 2015 г. 12:56
Я ищу. Я также приземлился на Teensy V3.1. Это выглядит круто с большим количеством функциональности, хотя и в 10 раз больше цены на Maple Mini STM32. Итак, я покупаю несколько Maple Mini, чтобы посмотреть.

Mrburnette
Солнце 17 мая 2015 г. 15:13
akis_t написал:Я ищу. Я также приземлился на Teensy V3.1. Это выглядит круто с большим количеством функциональности, хотя и в 10 раз больше цены на Maple Mini STM32. Итак, я покупаю несколько Maple Mini, чтобы посмотреть.

Ахулл
Сб 23 мая 2015 г. 13:42
Просто краткая заметка о аспекте «Как это работает».

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

Например.. extern "C" { #include "sprintf2.h" }

Rogerclark
Сб 23 мая 2015 г., 21:50
Энди

К сожалению, пользовательские либера.

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

Их рассуждение заключается в том, что LIBS - это «пользовательские» либера

Я полагаю, это в некотором роде имеет смысл, но без возможности добавить AVR Libs в папку AVR Adplaware Cores, это ошибочная логика IMHO

В итоге я переименовал OneWire в OneWiRestm, чтобы обойти эту проблему, но это не идеальное решение.

Однако на данный момент стороннее оборудование не является приоритетом команды IDE

Рик Кимбалл
Сб 23 мая 2015 г., 22:59
Rogerclark написал:Энди
Я полагаю, это в некотором роде имеет смысл, но без возможности добавить AVR Libs в папку AVR Adplaware Cores, это ошибочная логика IMHO

Rogerclark
Сб 23 мая 2015 г., 23:27
Рик

Я не уверен, что свойства библиотеки имеют какое -либо отношение к этому. У нас их есть для многих наших либеров, но я не думаю, что это имеет какое -либо значение.

Ребята IDE Dev сказали мне, что нет никакого способа остановить папку библиотеки пользователей, переопределяющую аппаратные либера