STM32Duino - Вопросы архитектуры

Стекор
Солнце 29 января 2017 г. 20:00
Прежде всего, большое спасибо! Для работы здесь. Как бывший пользователь AVR, я узнаю значительный скачок сложности между корой и 8-битным AVR, и вы заставляете платформу Arduino работать с STMS-это чистое чудо. На самом деле, первые тесты, которые я провел, чтобы соответствовать, доски работают, используемые Std32duino.

Вы могли бы сказать, что мой опыт работы с Arduino ограничен, и это правда, так как я в основном работал с Winavr и Studio... Я всегда обнаруживал, что Ардуино не хватает (маскировка доступа к периферийным устройствам, используя однофоточный подход E.глин. Системный таймер с использованием Timer0) с простыми контроллерами, такими как 8-битный AVRS.

Приезжая в STM32Duino, я задал несколько вопросов, связанных с архитектурой:
1. Что можно сделать, чтобы управлять тем, какой код генерируется по умолчанию (мглый эскиз компилируется около 12K, тогда как при GCC-Arm-Eclipse требуется меньше 2K). Я понимаю, что код, поддерживающий USB VCP. Я немного времени пытаюсь понять протирку.H и доски, но включения настолько рекурсивны, что, честно говоря, вы потеряли меня.

2. Можете ли вы предложить другой подход к использованию функций Arduino, таких как DigitalWrite, Analogread и т. Д., Не переходя вниз по уровню регистрации? Библиотеки SPL от ST, на мой взгляд, более сбалансированы...

3. Планируете ли вы обновление редактора? Хотя редактор Arduino достаточно для простых проектов, я считаю, что ему не хватает более сложных...

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

5. Как насчет отладка- внутри IDE? Опять же, для простой (AVR) отладки с помощью светодиодов и сериала, вероятно, адекватная, но для сложных проектов это действительно хорошая особенность, чтобы иметь.

Спасибо и сопоставимы, если это дублированные вопросы.
Стефан

Рик Кимбалл
Солнце 29 января 2017 г. 8:12 вечера
Все эти вопросы были заданы и ответили. Вы можете использовать Google:

например:

http: // bfy.TW/9lir

Rogerclark
Солнце 29 января 2017 г. 9:40 вечера
Re: 1
Это обсуждалось много раз на форуме. Есть различные причины, по которым размер кода больше, чем вы можете себе представить.
Это включает в себя такие вещи, как поддержка USB, и способ работы 32 -битного компилятора.

Здесь не стоит повторять, что подробно обсуждалось в других темах

Re: 2

Для Spl

Видеть https: // github.com/avikde/koduino

Для HAL

Видеть https: // github.com/stm32duino


Re: вопросы 3,4 и 5

Мы используем стандартную Arduino IDE (обычно в последней версии релиза); Так..Нет, у нас нет дополнительных функций IDE.

Кодовая база - это просто «стороннее ядро», как определено сами Ардуино. https: // github.com/arduino/arduino/wiki ... зацикция

victor_pv
Пн 30 января 2017 г. 18:21
Просто чтобы добавить, что в отношении 3 4 и 5, поиск на форумах и вики, и вы найдете сообщения некоторых людей, использует Eclipse, вы можете попробовать его.

Я полагаю, что есть посты об использовании Visual Micro тоже.

Sheepdoll
Пн 30 января 2017 г. 22:49
victor_pv написал:Просто чтобы добавить, что в отношении 3 4 и 5, поиск на форумах и вики, и вы найдете сообщения некоторых людей, использует Eclipse, вы можете попробовать его.

Я полагаю, что есть посты об использовании Visual Micro тоже.

Стекор
Вт 31 января 2017 г. 10:33
Спасибо всем за то, что нашли время, чтобы прочитать и дать отзывы о моих очках.

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

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

Я также думаю, что это не случайность, что, например, доски Nucleo принимают заголовки Arduino Pinout, а также некоторые поставщики IDE (E.g Аттолит) решил открыть
вверх по их системам бесплатно...Я думаю, что это все происходит, потому что Ардуино изменил способ, которым все делается &видимый. Все, что я сейчас говорю, это то, что, может быть, вы могли бы приспособиться к подходу Arduino STM32 в соответствии с...

Еще раз спасибо, и наилучшие пожелания
Стефан

victor_pv
Вт 31 января 2017 г. 14:57
Стефан, мы все согласны, например, отладка, например, необходима, но, поскольку этот форум не о самой IDE, а в поддержке плат STM32 в Arduino IDE, он приводит к тому, что разные люди используют разные IDE, когда Arduino One не покрывает потребности.

Лично я только что установил Eclipse с плагином arduino v4. Рик и другие люди опубликовали несколько довольно хороших советов о том, как настроить его, чтобы использовать наше ядро.

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

Если вам не нужна какая-либо совместимость с Arduino, поскольку вы упомянули, что атоллический бесплатный, а у Segger есть IDE, которая бесплатна для некоммерческого использования, а затем есть затмение. Cubemx - отличный инструмент для создания файлов конфигурации и периферийных библиотек.

Но если вы хотите, чтобы простота Arduino работала, тогда все материалы LWO -уровня должны быть абстрагированы, и это приводит к этим 12 КБ базового кода. Настройка USB, 2x I2C, 2/3 SPI, 8 таймеров, часы для всех этих, настройки вспышки, частота ядра и т. Д.
На форуме было проведено несколько дискуссий по сокращению количества вспышки и оперативной памяти, используемой для основных вещей, и мы добились некоторого прогресса, но есть лимит.
STM разрабатывает новое ядро ​​Arduino, основанное на их HAL, и занимает гораздо больше оперативной памяти и вспышки, чтобы просто мигать светодиодом. Это стоимость абстракции.
Вы, конечно, можете изменить свое ядро, поэтому, например, если вы не планируете использовать I2C и SPI, периферийные устройства не инициализируются.

Все еще используя 12 КБ на MCU с 128 КБ, оставляет вам более 100 КБ для кода, и если этого недостаточно, вы можете купить плату STM32F103RCT6 с 256 КБ (фактические 512 КБ в большинстве случаев). Взяв это в Acount, стоимость 12 КБ использовалась для красивой инициализации всего для вас, не кажется большой стоимостью.

Олли
Вт 31 января 2017 г. 15:39
Два моих любимых IDE - Arduino и Embitz. Arduino предназначен для быстрого разработки небольших проектов для разнообразных досок, включая ESP8266 и ESP32. Embitz для разработки STM32, включая F4XX и F7XX. Проекты STM32 больше и имеют более строгие требования к времени. Настоящий отладчик необходим для тех.

Основываясь на моем опыте работы с Eclipse, я рекомендую Embitz для его более высокой скорости и отладки, таких как живое представление о переменных, символический доступ к периферийным регистрам и EB Monitor. Как и Eclipse, Embitz бесплатный.

Стивестронг
Вт 31 января 2017 г. 15:41
victor_pv написал: Eclipse с плагином arduino v4.

Willfly1
Вт 31 января 2017 г. 15:55
Я добавлю в свой выбор IDE - это текстовый редактор под названием Notepad++. С помощью плагина Nppexec можно скомпилировать наброски изнутри самого редактора, при этом получить мощный текстовый редактор и возможности выделения синтаксиса.

Стивестронг
Вт 31 января 2017 г. 15:57
Willfly1 написал:С помощью плагина Nppexec можно скомпилировать наброски изнутри самого редактора, при этом получить мощный текстовый редактор и возможности выделения синтаксиса.

Стивестронг
Вт 31 января 2017 г. 15:58
Олли написал:Embitz для разработки STM32, включая F4XX и F7XX. Проекты STM32 больше и имеют более строгие требования к времени. Настоящий отладчик необходим для тех.

victor_pv
Вт 31 января 2017 г., 17:28
Стивестронг написал:Willfly1 написал:С помощью плагина Nppexec можно скомпилировать наброски изнутри самого редактора, при этом получить мощный текстовый редактор и возможности выделения синтаксиса.

Беннебой
Вт 31 января 2017 г., 19:31
+2

Rogerclark
Вторник 31 января 2017 г. 8:15 вечера
Стивестронг написал:Willfly1 написал:С помощью плагина Nppexec можно скомпилировать наброски изнутри самого редактора, при этом получить мощный текстовый редактор и возможности выделения синтаксиса.

Стекор
Вт 31 января 2017 г. 22:07
victor_pv написал:Стефан, мы все согласны, например, отладка, например, необходима, но, поскольку этот форум не о самой IDE, а в поддержке плат STM32 в Arduino IDE, он приводит к тому, что разные люди используют разные IDE, когда Arduino One не покрывает потребности. Да, именно - вот почему я вбивал. Много хорошего кода и примеров, тогда вы либо переносите его, либо переписываете, потому что это слишком хлопотно для строительства в пределах ограничений IDE, налагаемых интерфейсом Arduino


[...]
Если вам не нужна какая-либо совместимость с Arduino, поскольку вы упомянули, что атоллический бесплатный, а у Segger есть IDE, которая бесплатна для некоммерческого использования, а затем есть затмение. Cubemx - отличный инструмент для создания файлов конфигурации и периферийных библиотек. На самом деле я использую ST-Link V2 (и у меня есть два нуклеоса, у которых есть свои собственные ST-Link). Работает лечение под AC6, GNU-Arm-Eclipse, Attotic. Может быть, другие тоже...

С кубом... Ну, я использую его для планирования распиновки и намеков на часы, но в остальном я избегаю Хэла : mrgreen: Я парень спл... Может, я когда -нибудь переключись на Хэл, а не просто, хотя.
Но если вы хотите, чтобы простота Arduino работала, тогда все материалы LWO -уровня должны быть абстрагированы, и это приводит к этим 12 КБ базового кода. Настройка USB, 2x I2C, 2/3 SPI, 8 таймеров, часы для всех этих, настройки вспышки, частота ядра и т. Д. Вы знаете, я всегда задавался вопросом, что не так с использованием #includes и Peripheralinit () вместо того, чтобы его заранее определенные и скрытые... Кто все равно использует все * перифы на чипе? Не говоря уже о том, что, например, с SPI (который в настоящее время очень удобен), открывая несколько портов - или общение с разными рабами на разных скоростях и настройках - может сделать улучшения, особенно при предварительно определенной настройке... Только мое мнение, конечно ;)
STM разрабатывает новое ядро ​​Arduino, основанное на их HAL, и занимает гораздо больше оперативной памяти и вспышки, чтобы просто мигать светодиодом. Это стоимость абстракции. Не так уверенно насчет ОЗУ, но одно отличие с Хэл, которое я мог видеть, это то, что HAL выполняет более «полные» функции (E.глин. inits) по сравнению с SPL. Например, инициация SPL USART требует включения часов, настройки GPIO, периферийной настройки, возможно, переработки булавки. Под HAL это всего лишь одна функция. Однако я предпочитаю путь SPL и для критических разделах, прямой доступ к регистрации... Улучшения производительности там довольно выражены.

Если вы спросите меня, основной драйвер для HAL внедряет лучшие практики, когда дело доходит до управления исключениями. Кроме того, облегчает программисту, не читая обширную документацию по чипсу... Которые связаны с стоимостью ненужных потраченных циклов... Я до сих пор помню «старые времена», когда программисты сборки, где кодовые обезьяны высокого уровня, из-за потраченных впустую ресурсов. Мы все знаем, как это закончилось, но я чувствую, что Хэл немного превышает мои потребности - по крайней мере на данный момент...
Вы, конечно, можете изменить свое ядро, поэтому, например, если вы не планируете использовать I2C и SPI, периферийные устройства не инициализируются. Что я попытался и обнаружил, что слишком вовлечен, и это неверный подход - он должен идти - мне это нужно, я включил его, а не наоборот... Слишком много HW, вы видите... :)
Все еще используя 12 КБ на MCU с 128 КБ, оставляет вам более 100 КБ для кода, и если этого недостаточно, вы можете купить плату STM32F103RCT6 с 256 КБ (фактические 512 КБ в большинстве случаев). Взяв это в Acount, стоимость 12 КБ использовалась для красивой инициализации всего для вас, не кажется большой стоимостью.

victor_pv
Ср. 01 февраля 2017 г. 12:25
Вы знаете, я всегда задавался вопросом, что не так с использованием #includes и Peripheralinit () вместо того, чтобы его заранее определенные и скрытые... Кто все равно использует все * перифы на чипе? Не говоря уже о том, что, например, с SPI (который в настоящее время очень удобен), открывая несколько портов - или общение с разными рабами на разных скоростях и настройках - может сделать улучшения, особенно при предварительно определенной настройке... Только мое мнение, конечно ;) Для вас нет ничего плохого, и для многих других людей. Но Arduino в основном обращается к людям, которые не обязательно должны знать, как инициализировать порт SPI, несколько таймеров, часы процессора и т. Д. Это целая цель или arduino, и это то, о чем в основном это ядро, хотя вы все равно можете иметь низкий уровень доступа ко всему, что хотите.

Олли
Ср. 01 февраля 2017 г. 2:08
Стивестронг написал:Олли написал:Embitz для разработки STM32, включая F4XX и F7XX. Проекты STM32 больше и имеют более строгие требования к времени. Настоящий отладчик необходим для тех.

Стивестронг
Ср. 01 февраля 2017 г. 9:37
Олли написал:Приложения не могут быть перенесены между этими двумя IDE из -за разных библиотек.

Racemaniac
Ср. 01 февраля 2017 г. 10:22
Когда мы говорим о архитектуре: я хотел бы увидеть еще немного внимания к предложению некоторых библиотек DMA DMA :). Вот где истинная сила этих маленьких парней, и придерживаясь API Arduino API, мы полностью пропускаем его >_<.

Также по многим причинам, упомянутым в этой теме, я в настоящее время работаю в Visual Studio с VisualGDB & Генератор кода Cubemx. Я получил отличную отладку, могу создать код для любого STM32, гораздо лучше IDE, ...
Но я очень благодарен, этот порт Arduino существует за то, что сделал простые вещи, и это было также то, что позволило мне начать со всего этого со :).

Grumpyoldpizza
Ср. 01 февраля 2017 г. 12:25
Реданьяк написал:Когда мы говорим о архитектуре: я хотел бы увидеть еще немного внимания к предложению некоторых библиотек DMA DMA :). Вот где истинная сила этих маленьких парней, и придерживаясь API Arduino API, мы полностью пропускаем его >_<.

Также по многим причинам, упомянутым в этой теме, я в настоящее время работаю в Visual Studio с VisualGDB & Генератор кода Cubemx. Я получил отличную отладку, могу создать код для любого STM32, гораздо лучше IDE, ...
Но я очень благодарен, этот порт Arduino существует за то, что сделал простые вещи, и это было также то, что позволило мне начать со всего этого со :).

Олли
Ср. 01 февраля 2017 г., 17:09
Стивестронг написал:Олли написал:Приложения не могут быть перенесены между этими двумя IDE из -за разных библиотек.

Олли
Ср. 01 февраля 2017 г., 17:11
Grumpyoldpizza написал: Некоторые люди, которых я знаю, используют «Visual Micro», который интегрирует OpenOCD/GDB. Таким образом, отладка также должна быть возможна там. Не пробовал сам, я парень Unix ...

Willfly1
Сб 04 февраля 2017 г. 15:58
Извините за поздний ответ - вот как я строю, используя NPP. По сути, это вызывает arduino_debug.exe и пройти параметры командной строки, как составление программы Java и т. Д.

1. Установите плагин NPPEXEC
2. Добавить следующие команды:
Скомпиляция эскиза //Port data |D7 |D6 |D5 |D4 |D3 |D2 |D1 |D0 | //Pin stm32 |PB15|PB14|PB13|PB12|PB11|PB10|PB9|PB8| //Control pins |RD |WR |RS |CS |RST| //Pin stm32 |PA0|PA1|PA2|PA3|PA8| #define TFT_CNTRL GPIOA #define TFT_DATA GPIOB #define TFT_RD PA0 #define TFT_WR PA1 #define TFT_RS PA2 #define TFT_CS PA3 #define TFT_RST PA8

Беннебой
Сб 04 февраля 2017 г., 17:31
Блестящий, спасибо, запустил это.

Нужно выяснить, как переключить IDE между типами целевых устройств сейчас, хотя : D

Rogerclark
Сб 04 февраля 2017 г. 20:04
Bennehboy ​​написал:Блестящий, спасибо, запустил это.

Нужно выяснить, как переключить IDE между типами целевых устройств сейчас, хотя : D

Sheepdoll
Сб 04 февраля 2017 г. 20:08
Я только что опубликовал свой сценарий Makefile в этой теме ViewTopic.PHP?F = 42&t = 337&начало = 10#p23322

Беннебой
Сб 04 февраля 2017 г., 21:04
Rogerclark написал: Вероятно, излишний, но есть система автоматизации сценариев для Windows, которая называется Autoit, которую вы можете использовать для изменения параметров меню в IDE, и может запустить эти сценарии из АЭС.

Rogerclark
Сб 04 февраля 2017 г. 9:09 вечера
Bennehboy ​​написал:Rogerclark написал: Вероятно, излишний, но есть система автоматизации сценариев для Windows, которая называется Autoit, которую вы можете использовать для изменения параметров меню в IDE, и может запустить эти сценарии из АЭС.

Беннебой
Сб 04 февраля 2017 г. 9:16 вечера
И настройка порта COM:
#define LCD_RST PA8 #define LCD_CS PA3 #define LCD_RS PA2 #define LCD_WR PA1 #define LCD_RD PA0 #define LCD_D0 PB8 #define LCD_D1 PB9 #define LCD_D2 PB10 #define LCD_D3 PB11 #define LCD_D4 PB12 #define LCD_D5 PB13 #define LCD_D6 PB14 #define LCD_D7 PB15

Беннебой
Сб 04 февраля 2017 г. 9:20 вечера
Не благодари меня слишком быстро, наброски загрузки сбой для Maple,

Ява.io.IoException: не может запустить программу »{время выполнения.аппаратное обеспечение.PATH}/Tools/Win/Maple_upload.BAT ": CreateProcess error = 2, система не может найти указанный файл

Еще немного разжигают и, надеюсь, сортируют это.

Willfly1
Сб 04 февраля 2017 г. 9:45 вечера
Rogerclark написал: Кто -нибудь использует любой из инструментов C для АЭС, который позволяет вам искать, где определяется функция, и просматривать ее и т. Д.

Беннебой
Сб 04 февраля 2017 г., 21:52
Это работает только в том случае, если вы скажете NPP, что язык сначала C ++

Я еще не понял, как сказать, что Ап .Ино следует рассматривать как c ++, если у кого -то есть, пожалуйста, дайте мне знать

Rogerclark
Сб 04 февраля 2017 г. 22:02
Willfly1 написал:Rogerclark написал: Кто -нибудь использует любой из инструментов C для АЭС, который позволяет вам искать, где определяется функция, и просматривать ее и т. Д.

Беннебой
Сб 04 февраля 2017 г. 22:07
Автозаполнение встроено, вам просто нужно включить его...
... #elif defined(ARDUINO_GENERIC_STM32F103C) || defined(ARDUINO_NUCLEO_F103C8) || defined(ARDUINO_BLUEPILL_F103C8) #warning Uno Shield on BLUEPILL #define RD_PORT GPIOB #define RD_PIN 5 //#define RD_PIN 0 //hardware mod to Adapter. Allows use of PB5 for SD Card #define WR_PORT GPIOB #define WR_PIN 6 #define CD_PORT GPIOB #define CD_PIN 7 #define CS_PORT GPIOB #define CS_PIN 8 #define RESET_PORT GPIOB #define RESET_PIN 9 // configure macros for the data pins #define write_8(d) { GPIOA->REGS(BSRR) = 0x00FF << 16; GPIOA->REGS(BSRR) = (d) & 0xFF; } #define read_8() (GPIOA->REGS(IDR) & 0xFF) // PA7 ..PA0 #define setWriteDir() {GP_OUT(GPIOA, CRL, 0xFFFFFFFF); } #define setReadDir() {GP_INP(GPIOA, CRL, 0xFFFFFFFF); } ...

Rogerclark
Солнце 05 февраля 2017 г. 1:14
Bennehboy ​​написал:Автозаполнение встроено, вам просто нужно включить его...
gpio_write_bit(PIN_PORT, PIN_BIT, HIGH (or) LOW);

Беннебой
Солнце 05 февраля 2017 г. 13:11
Bennehboy ​​написал:Ява.io.IoException: не может запустить программу »{время выполнения.аппаратное обеспечение.PATH}/Tools/Win/Maple_upload.BAT ": CreateProcess error = 2, система не может найти указанный файл

Беннебой
Солнце 05 февраля 2017 г. 15:03
Еще одна полезная команда:
//#define RD_PIN 5 #define RD_PIN 0 //hardware mod to Adapter. Allows use of PB5 for SD Card

Беннебой
Солнце 05 февраля 2017 г. 15:27
Я понимаю, что снял эту ветку по теме, извиняюсь.

Я создам поток конфигурации NPP и все перенеслю все.

Rogerclark
Солнце 05 февраля 2017 г. 20:01
Bennehboy ​​написал:Я понимаю, что снял эту ветку по теме, извиняюсь.

Я создам поток конфигурации NPP и все перенеслю все.

Linux на F4 и F7

RTOS Вопрос