Ядро F401 ветвь на GitHub SheepDoll

Sheepdoll
Ср. 03 июня 2015 г., 19:33
Поскольку мне нужно получить доступ к нему на удаленном компьютере, я подтолкнул текущее состояние работы, которую я выполняю, с ветвью SheepDoll на GitHub. Ветвь называется STM32F401_Testing. У этого есть только некоторые из первоначальных копий сценария обезьян на основе информации, которую я взял из STMCUBEMX и чтение существующего кода нуклео.

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

Я решил основать порт ядрево на дереве каталогов F1, потому что это стабильное и рабочее дерево для меня. Это может облегчить в будущем, кто хочет объединить F1 и F4. На данный момент я хочу держать их на отдельных деревьях. Хотя есть сходства, я также хочу отделить материал F2. У меня есть некоторые абстрактные мысли по этому поводу, которые более смоделированы в рабочем процессе AVR. В AVR вы начинаете с следа. Нуклео всегда будет иметь площадь 64 штифта. На данный момент выглядит так, как будто F2 и F4 материал предполагает большие следы и пинки. У меня есть доски, которые я изложил, чтобы использовать AVR 15 или около того года назад, которые я могу включить MEGA328 и использовать без изменения аппаратного обеспечения. Я думаю, это то, что нуклео пытается догнать. Что можно заменить F103RB на существующем макете с помощью F401RE. Есть гораздо больше, что я мог бы опубликовать здесь, но это превращается в стену текста, и я, вероятно, засыпал большинство читателей, поэтому, чтобы поднять к погоне ...


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

Единственный вопрос, который я бы задал в настоящее время, - это то, что такое различие в поведении между библиотечными цитатами, такими как #include "Libmaple/Libmaple.H "по сравнению с #include <Libmaple/Libmaple.час> Чтобы заставить заголовки компиляция, мне пришлось добавить «Libmaple/» во многие библиотеки включает в себя.

Я думаю, что пути определяются на платформах.TXT и, похоже, в дереве F1 они были перемещены в систему/, где компилятор, как ищет run, включает. Я не уверен, где платформы.TXT наследует включение путей.

Rogerclark
Чт, 04 июня 2015 г. 12:40
Я думаю, что взять F1, а затем сделать обновление, чтобы сделать его совместимым с F401 - лучший вариант.

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

я.E Там будет только одна библиотечная папка, и довольно часто библиотеки обеспечивают низкий уровень доступа к оборудованию (и очень часто даже не используют функции Pseudo HAL, которые находятся в Lib Maple E.глин. gpio_write_bit ()

Поэтому я думаю, что реально, лучший подход состоит в том, чтобы поддерживать 2 базы кода, которые практически идентичны, за исключением различий в библиотеках (E.глин. Я подозреваю, что у F4 изначально будет меньше библиотек, чем у F1)

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

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

Sheepdoll
Чт, 04 июня 2015 г., 7:30 утра
Я получил изменения F401, чтобы скомпилировать наброски Blink. Здесь немного опаздывает для подключения оборудования. Я также хочу больше проверить флаги сборки. Я также хочу узнать больше о том, где настройки часов.

Проблема был Включите пути в платформах, TXT я скопировал из папки варианта ucleo 103, так как я знаю инструменты загрузки в этой работе. Это пластики.TXT включал систему/ папку, а не ядра/ папка. На варианте F1, похоже, в системе и ядрах будет много дублирования. Я до сих пор неясен в <библиотека> по сравнению с «локальным» включают методы.

Большинство проблем, которые у меня возникают, связаны с небольшими штифтами, такими как ядро . Были ссылки на такие вещи, как Porte и SPI3 или 4, которые мне пришлось #idef.

У меня нет мнения о вещах F3. F4 кажется отдельным подразделением. В настоящее время я бы сказал, чтобы держать хотя бы папку F4 под arduino_stm, если она не сломана, то нет реальной необходимости исправлять ее. Я вижу преимущества наличия отдельных arduino_stmf1 и arduino_stmf4. Другой способ сделать это - по размеру чипсов, как это делает Atmel.

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

Rogerclark
Чт, 04 июня 2015 г. 8:29
Спасибо @sheepdoll

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

Вероятно, это то, что нужно разобраться в коде F1, но так как это не было сломано...

Я знаю, что Виктор также смотрит на некоторые дубликации функций С в ядрах. Ну, они не дубликаты, но есть .c и _f1.C в некоторых местах, и это, по -видимому, вызывает проблемы с популяцией Vector Table ISR

Итак, Виктор исследует слияние некоторых из xxx_f1.C с XXX.в

Причина, по которой я не проводил больше времени на уборку всего это, заключалась в том, что у нас, казалось, было больше насущных проблем на F1, и мне нужно было просто заставить вещи работать ;-)


КСТАТИ. Я думаю, что первоначальная идея разделения ядер системных форм заключается в том, что (1) она может разрешить различные процессоры в одной и той же кодовой базе, e.глин. Если были отдельные системы System_f1 и System_f4, так как это включает пути в платформе.TXT и может быть легко переключен и
(2) изолировать основной API Arduino от конкретного материала Patform.

Но, в конце концов, я думаю, что оба упали на обочине. я.E Я не думаю, что Leadlabs: Libmaple изолировал основные материалы Arduino от платформы.

В любом случае, спасибо за усилия, и дайте мне знать, когда вы подтолкнули что -нибудь к своему GitHub Repo (как бы это ни называлось), как я захочу проверить на F407 !

Rogerclark
Чт, 04 июня 2015 г., 10:30 утра
@sheepdoll

Я посмотрел на привлечение включения, но похоже, что это не легкая работа.

Мы можем снять папки STM32F2 из дерева STM32F1/System/Libmaple, поскольку их не следует использовать

Однако попытка объединить включить в меньшее количество папок займет немного больше времени, так как я немного обеспокоен тем, что может быть возможно переместить включение, которое не используется, если не требуется конкретная функция, и, следовательно, я не заметил, что я 'D что -то пропустил.

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

Sheepdoll
Чт, 04 июня 2015 г., 18:03
Rogerclark написал:@sheepdoll
...

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

Рик Кимбалл
Чт, 04 июня 2015 г., 18:17
Sheepdoll написал:Нет реального потока на уборке. Получение векторов ISR гораздо важнее.

Sheepdoll
Ср 10 июня 2015 г. 12:31
Я подтолкнул свои последние изменения в <https: // github.com/sheepdoll/arduino_stm32.git> Branch STM32F401_Testing для тех, кто может захотеть сыграть с кодом F401 в качестве доски Nucleo. Эскиз мигания будет компилироваться, но он не будет работать. Вероятно, существуют различия в картировании GPIO низкого уровня между F401 и F407.

Rogerclark
Ср 10 июня 2015 г. 12:34
Рик,

Я согласен, перемещение векторов ISR в C - хорошая идея.

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

Rogerclark
Ср 10 июня 2015 г. 1:01
@sheepdoll

Я не могу казаться каким -либо пособием с твоей вилкой репо (это могло бы я неправильно смотрю на это на GitHub)

https: // github.com/sheepdoll/arduino_stm32

Вы создали новую ветвь свою вилку?

Самое последнее обновление GitHub показывает мне Добавлена ​​общая поддержка STM32F103RC и начал работу над универсальным STM32F103R 13 дней назад

Рик Кимбалл
Ср 10 июня 2015 г. 1:10
Похоже, это может быть:

https: // github.com/sheepdoll/arduino_st ... 01_testing

Rogerclark
Ср 10 июня 2015 г. 1:43
ммм
Да. Похоже, изменения в этой ветке

Я хотя, что @sheeldoll делал другой подход.

т.е. просто изменение папки F4

Я думаю, что лучшим вариантом будет попытка преобразовать папку F1 для работы с F4, так как в папке F1 есть много изменений и исправлений, которых нет в F4 . Не только изменилось, которое я изначально сделал в Libmaple, но изменения в Leaflabs, сделанные в Libmaple после того, как народ Aeroquad взял свою копию (2 или 3 года назад)

Sheepdoll
Ср 10 июня 2015 г., 3:16
Rogerclark написал:ммм


Я думаю, что лучшим вариантом будет попытка преобразовать папку F1 для работы с F4, так как в папке F1 есть много изменений и исправлений, которых нет в F4 . Не только изменилось, которое я изначально сделал в Libmaple, но изменения в Leaflabs, сделанные в Libmaple после того, как народ Aeroquad взял свою копию (2 или 3 года назад)

Rogerclark
Ср 10 июня 2015 г., 3:22
@sheepdoll

Спасибо за обновление.

Я вижу, что вы имеете в виду, что нет простого способа сделать это :-(

Я не знал о OpenStm32, (выглядит интересно)

Я зарегистрировался на собственном форуме сообщества STM32, но не получил достойных ответов на мои вопросы. Хотя у них есть парень, который называет себя «Клайвом», который, кажется, знает все, и публикует тысячи ответов. Я подозреваю, что он STM или команда людей STM ;-)

Re: Ограничительная лицензия в файле LD

Сгенерируется ли он кубом STM32 ?

Sheepdoll
Ср 10 июня 2015 г., 4:29
Rogerclark написал:
Re: Ограничительная лицензия в файле LD

Сгенерируется ли он кубом STM32 ?

Rogerclark
Ср 10 июня 2015 г., 4:35
Я бы не сталкивался с сценариями линкеров, пока не посмотрел на материал STM32, и все это выглядит как иероглифики для меня ;-)

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

Sheepdoll
Ср 10 июня 2015 г., 6:24
Rogerclark написал:Я бы не сталкивался с сценариями линкеров, пока не посмотрел на материал STM32, и все это выглядит как иероглифики для меня ;-)

Rogerclark
Ср 10 июня 2015 г., 6:36
@sheepdoll
Любопытно, я всегда предполагал, что ардуино/проводка действительно называется Make, как и многие другие идентификаторы скрытым образом. Я думаю, что было предложено, чтобы Arduino IDE переключился на использование Makefile и просто запустить, но это не то, что он делает в данный момент.

Похоже, что он создает список файлов, которые необходимы для составления, просто итерация файловой системы рассматриваемого ядра.

Похоже, что он анализирует эскиз в поисках библиотеки, а затем добавляет их в начале списка файлов, которые необходимы для составления

В настоящее время я не могу быть в замешательстве о том, как это на самом деле связывает файлы, потому что Victor имеет предложенное решение проблемы Vector ISR, которая включает в себя слияние кода из 2 файлов в 1. Исправление работает, но не имеет смысла, если не будет что -то странное, что происходит с порядком, в котором он связывает эти два файла.
Но он собирает их один за другим, и не имеет значения, в каком файле находится код, если весь код находится на одном файле, а код не разделен по 2 файлам. (Я тоже не вижу никакой зависимости в коде в двух файлах)
очень странно...

Так что дайте мне знать, если вы выясните, как IDE на самом деле связывает все файлы объектов вместе

Sheepdoll
Чт 11 июня 2015 г., 4:21
Более дополнительное успех.

Я сделал новую группу и частного филиала, чтобы проверить библиотеки STM32Cubemx в. https: // github.com/sheepdoll/arduino_st ... Mx_testing Как моя работа с F4 в Nucleo F4.TXT и платформа.текст. На этот раз я изменил некоторые из компилятора определить переключатели и включил пути для составления шаблона, генерируемого STM32Cubemx. Один файл должен был быть перемещен/переименован из -за чувствительности к случаю 'startup_stm32f401xe.S '

В настоящее время у меня есть вещи Arduino. Мне было любопытно, как файлы включены/построены. Это, как сказал Роджер, IDE строит все, что видит.

Я заметил, что Koduino также использует таблетку яда *.LD Script Script. Поскольку один и тот же сценарий появляется в местах мульпле с разными авторскими правами, я подозреваю, что это просто разрезание и вставленная шаблон, которая застряла на нем.

Я посмотрел на *.Карта, которая была в каталоге TMP. На самом деле в каталоге TMP сохранено много полезных отчетов. Все они удаляются, когда Arduino IDE закрыт. Теоретически можно указать GDB на файл ELF и посмотреть, как загружается код. Я заметил, что, поскольку этот код в основном загрязняет, что многие поля обнуляются. Это может объяснить, почему векторы исчезают в некоторых комбинациях. Использование существующих сценариев линкера включает для обработки общих вещей. Они также должны быть точно настроены на фактический чип.

Следующий шаг - увидеть, какой набор библиотеки Arduino Maple или Koduino лучше всего будет плавать поверх кода CSMIS.

Rogerclark
Чт 11 июня 2015 г., 4:28
@sheeldoll

Вы можете посмотреть https: // github.com/makerlabme/stm32_arduino_cores также

Поскольку это может быть еще одним кандидатом на предоставление наложения API ARDUINO

Редактировать.

Глядя на файлы arduino's markerlabme, они немного устарели, но они должны быть, по крайней мере, в Arduino 1.0 Уровень API

Sheepdoll
Пт 12 июня 2015 г., 7:45
Более дополнительное успех. Ну, на самом деле первая веха.

Я начал переносить часть Ардуино.CC 1.6.4 SAM F4 Core над Framework Cubemx HAL. Столкнулись с некоторыми конфликтами, так как Ардуино и Хэл пытались использовать некоторые идентичные имена по -разному. Потратил большую часть дня, написав обертки для функций Digitalio.

Абстрактно Хэл и Ардуино похожи. Обеспечение базового доступа к базовому оборудованию. Мои обертки потерпели неудачу, в той же точке, что у меня было с перемещением F1 до F4. Альтернативная таблица вывода функций. Затем я понял, что Cubemx устанавливает их как часть кода запуска в main (). Поэтому я откинул обертки и попробовал более прямой подход.

Я установил / * пользовательский код * / in main () для вызова suTup () и loop (). Очевидно, что модель HAL уже предоставила то, что в значительной степени является идентичной абстракцией, как Ардуино что -то делает. Похоже на то, как маркетинг поместил несколько бесполезных заголовков щита на доску Nucleo. Понимая, что эскиз теперь имеет прямой доступ к функциям HAL на высоком уровне, я помещаю те же самые из ядров STM32 в эскиз, как таковой void setup() { // put your setup code here, to run once: /* there is no setup code, STM32CubeMX sets the gpio as part of code generation */ } void loop() { // put your main code here, to run repeatedly: HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5); /* Insert delay 100 ms */ HAL_Delay(100); }

Rogerclark
Пт 12 июня 2015 г. 8:39
Ух ты

Это удивительный прогресс

Я сейчас клонирую твое репо.

Я лучше скачиваю куб STM, так как моя версия несколько устарела.

Редактировать. Вы используете куб STM или Cube MX

Редактировать..

Возможно, куб называется cubemx, и я не осознавал

Я проверю, что на моей другой машине, так как я уверен, что у меня уже что -то установлено ,..... Где-то.....

Rogerclark
Пт 12 июня 2015 г. 12:01
@sheepdoll

Как вы создали свой g_apindescription ?

Это не похоже на то, что он используется, но он собирается, поэтому использование вашего файла на F103 не сработала для меня (не удивительно, поскольку его ссылаются на вещи, которых у 103 нет)

Кроме того, мне удалось получить компиляцию F103.

КСТАТИ.
Есть что -то странное с .S файлы. Я должен был сделать startup_stm32f103xe.S intorp_stm32f103xe.S я.E Верхний корпус S, и Windows не должно быть чувствительными к корпусу.


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

Но когда я снова загрузил, он перестал работать.

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

В любом случае, если это работало... У меня есть проблема с HAL_DELAY, так как она намного медленнее, чем 100 мс, больше, чем 2 или 3 секунды на цикл.

Рик Кимбалл
Пт 12 июня 2015 г. 12:43
Rogerclark написал:... Есть что -то странное с .S файлы. Я должен был сделать startup_stm32f103xe.S intorp_stm32f103xe.S я.E Верхний корпус S, и Windows не должно быть чувствительными к корпусу.

Sheepdoll
Пт 12 июня 2015 г., 18:10
Я попытался изменить большой S в Platforrms.рецепт TXT к маленькому S. Не сработал, поэтому я изменил само имя файла.

Я бы не ожидал, что моя филиал тестирования будет работать напрямую на ядро ​​F103. MXNUCLEOF401.МОК настроен для F104, с большинством альтернативных функций включено. Я не проверял, имеет ли код HAL, сгенерированный 103 IOC, имеет тот же API. Конфигурация часов выполняется в Cubemx, поэтому использование кода HAL из одной настройки процессора не будет работать без изменений на другом. Я думаю, что для F103 понадобится второй вариант и планируйте сделать один ... в конце концов ...

В настоящее время существующий STM32Duino Maple Lib хорошо работает на доске F103. Я хочу что -то, что сработало бы с ядром F401 и в конечном итоге Discovery F429I.

Этот эксперимент по -прежнему находится на большой работе. Я впервые пытался использовать его в качестве флагов, не изменяя arduino.H от 1.6.4 папки SAM. Слишком много атмел -специфических регистров были вызваны. Поэтому я временно отказался от этой части и положил код HAL в эскиз, чтобы увидеть, работает ли она. Это так и я был счастлив.

Есть много маленьких вещей. Я настраивал G_APindescription вручную, чтобы соответствовать коду запуска (см. Код, сгенерированный в GPIO.C и UART.C под папками Cubemx создано. У каждого есть свой собственный код HAL_INITXXX, который называется MAIN (), прежде чем я вызову API API API ARDUINO (). Задержка периферийной настройки с помощью G_APindescription Разрывает модель Arduino, когда Cubemx используется для конфигурации. Я также не совсем уверен в том, чтобы сделать стойку из двух стойков, одна из которых указан, а другая прямая заполняет массив правильно. Одна из причин, по которой я хотел попробовать GDB, чтобы я мог сбросить таблицы символов. G_Apindescription также определяется как постоянная, поэтому сделает его нелетучим для заполнения из кода настройки HAL.

В конечном итоге API Arduino/обработка необходимо будет отобразить из штифта обратно в порт. Массив кажется хорошим способом сделать это. Код HAL, кажется, используйте статический для хранения структурных данных для конфигурации PIN. Я подозреваю, что дизайнеры считали, что не было необходимости держать конфигурации PIN -кода, как только он был установлен. Чтение документации HAL, должны быть аксессуры для чтения текущего состояния конфигурации.

Rogerclark
Пт 12 июня 2015 г., 22:42
@sheepdoll

ОК в массиве карт штифтов. Он выглядел сгенерированным на машине, но я не мог найти его на выходе Cubemx.

КСТАТИ
Я не использовал ваш вариант нуклео.

Я получил куб для создания кода для F103C8 и сделал новый вариант.
Затем я изменил некоторые вещи, чтобы заставить его скомпилировать обоих вариантов, добавив сборку.Параметр HAL в плате.TXT, чтобы установить имена папок HAL в пути включения.
Я должен был поставить Ifdef в Arduino.H из -за разницы в HAL верхнего уровня включает файл, и я изменил мастер -часы в варианте.H, чтобы использовать значение процессора, которое косвенно определяется в досках.текст

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

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

Интересно, стоит ли поместить этот материал в отдельном репо, чтобы люди могли поиграть с ? я.E Есть несколько других людей с досками F4, а также другая группа (на Gibhub), которые были заинтересованы в использовании HAL с Libmaple (хотя это не совсем то, что вы делаете)

Что мне нужно сделать, так это клонировать ваше репо в мою аппаратную папку к другому имени папки «SheepDoll», чтобы я мог оставить свою исходную папку Arduino_stm32, а затем удалить папки F1, F3 и F4 из вашего репо.

Тогда оба будут существовать.

Однако я не хочу наступать на носки, репостируя модифицированную версию вашей работы на GitHub под другим именем репо.

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

Sheepdoll
Пт 12 июня 2015 г., 11:12
Rogerclark написал:
Что мне нужно сделать, так это клонировать ваше репо в мою аппаратную папку к другому имени папки «SheepDoll», чтобы я мог оставить свою исходную папку Arduino_stm32, а затем удалить папки F1, F3 и F4 из вашего репо.

Тогда оба будут существовать.

Однако я не хочу наступать на носки, репостируя модифицированную версию вашей работы на GitHub под другим именем репо.

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

Rogerclark
Пт 12 июня 2015 г., 23:36
В командной строке GIT, если вы

git add -a

После удаления других папок...

Тогда сделайте GIT Commit -am «Ваше сообщение здесь»

затем

git push


Тем не менее, я не смогу вытащить из вашего репо, если эти файлы будут удалены, так как они удалили бы их из моего репозиции :-(

Наверное, лучше всего просто сделать новую репо для этого материала

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

КСТАТИ. Я нахожу самый простой способ начать новую репо, - это просто создать пустой (просто readme и, возможно, лицензия), на git hub.

Затем клонируйте это репо своей местной машине.

Затем скопируйте все файлы, которые у вас уже есть, в этот репо (примечание не копируйте скрытые .GIT папки)

Затем добавьте эти файлы

git add -a

git commit -am "Первоначальный коммит"
git push



КСТАТИ.
Я просто старался не перемещать сценарий линкера, и он работает даже с пространствами на пути

В досках.текст
STM32F103CB.build.ldscript=SW4STM32/STM32F103CB Configuration/STM32F103CBTx_FLASH.ld

Rogerclark
SAT 13 июня 2015 г. 1:21
Обновлять.

Мне кажется, мне не хватает заголовков верхнего уровня для GPIO.H и т. Д.

Они выглядят так, как будто они были созданы машиной кубиком, но, похоже, у меня нет в моем экспорте :-(

Я попробую открыть ваш проект 401 и посмотрю, смогу ли я выяснить какие -либо различия в настройках

Редактировать.

ХОРОШО.
Похоже, вам нужно перейти в графический пользовательский интерфейс и определить некоторые булавки, чтобы он мог создать любой GPIO.H и т. Д

Раздражая, он, кажется, всегда выводит примеры и материал DSP, даже если я выбираю «копировать только необходимые файлы библиотеки» . Оба из которых заставляют компилятор повесить по какой -то причине.

КСТАТИ.

Если я хочу поместить код в другой адрес начала e.глин. 0x8002000, чтобы я мог использовать загрузчик, как вы думаете, единственное, что мне нужно изменить, - это сценарий линкера, или вы заметили что -нибудь еще в файлах HAL, которые указывают базовый адрес кода ??

Спасибо

Sheepdoll
SAT 13 июня 2015 г., 3:17
Не уверен, что хотел бы нести ответственность за поддержание репо. Мои сайты несколько лет без обновления. Рад внести свой вклад и когда я могу. Этот текущий этап имеет мой интерес, так как я хотел использовать это оборудование примерно так же долго. У меня достаточно проектов, чтобы занять меня около 500 лет. Это только один из них.

Я сделал кучу различий на машине XP, используя Windiff для сравнения каталогов. Папки HAL высокого уровня, которые папки SRC и HDR в значительной степени такие же, как у Inclate, и некоторые конкретные устройства.

«Скопируйте только необходимые библиотечные файлы» и «генерировать периферические инициализации как пара.C/.H 'файлы на IP "необходимо выбрать. Не уверен, откуда поступает материал DSP LIB. У меня этого нет. Когда библиотеки SDK загружаются в меню справки, они устанавливают массу материала в каталоге пользователей в папке STM32Cube/Repository, включая множество демонстраций и шаблонов вместе с загруженными Zips. Некоторые из них кажутся старше, чем авто, сгенерированные SDK. Я подозреваю, что это такая же работа, что и на стороне, так и на нашей. Особенно на стороне Mac OS X. Некоторые параметры под Windows, такие как изменение состояний Push Pull and Pull Up Pins на вкладке «Конфигурация», не работают на версии OS X. Несмотря на то, что версия 4 версии 4.8.0 то же самое.

Rogerclark
SAT 13 июня 2015 г., 3:26 утра
Не беспокойся

Я сделаю новую репо и скопирую свой F103 и ваш ucleof401.

КСТАТИ.
Я помню, как @Westw (GitHub) говорил, что куб, кажется, находится в стадии разработки, но это было несколько месяцев назад.

Я заметил, когда я изначально пытался экспортировать файлы F103 HAL, которые куб должен загрузить ZIP, который, как я предполагаю, имеет в нем Covererplate F103.
И теперь я вижу, есть меню обновления до меню помощи. Так что я думаю, они могут время от времени обновлять либера.

Экспорт F103, по -видимому, содержит dsplib, который мне пришлось полностью удалить, в противном случае IDE пытается построить все это, включая примеры, которые, кажется, висят компилятором GCC.


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

Rogerclark
SAT 13 июня 2015 г., 3:45
@sheepdoll

ХОРОШО.

У меня есть, по крайней мере, ваш базовый мигающий эскиз !

По какой-то причине булавки SWD (STLINK) в настоящее время пропускаются.

Я бы подумал, что если бы часы и линии данных PA14 и PA15 не были настроены, они по умолчанию будут SWD, но это не так уж и имеет место для меня в настоящее время :-(

Sheepdoll
SAT 13 июня 2015 г., 4:12
Rogerclark написал:@sheepdoll

ХОРОШО.

У меня есть, по крайней мере, ваш базовый мигающий эскиз !

По какой-то причине булавки SWD (STLINK) в настоящее время пропускаются.

Я бы подумал, что если бы часы и линии данных PA14 и PA15 не были настроены, они по умолчанию будут SWD, но это не так уж и имеет место для меня в настоящее время :-(

Rogerclark
SAT 13 июня 2015 г., 4:30
Спасибо за совет о "Sys"

Это исправило мою проблему SWD :-)


Извините за то, что продолжал задавать вопросы, но вы взяли основные файлы из Arduino Sam и конвертировали функции в заглушки, удалив код внутри функций ?

Я замечаю, что не все файлы присутствуют. Я предполагаю, что это потому, что это работа в процессе.

КСТАТИ. Я думал, что посмотрю, что сделал Авик, и по какой -то причине он решил не использовать ядро ​​Сэма в качестве базы, и вместо этого написал свои собственные файлы e.глин. GPIO.c, я не уверен, что логика в этом - я посмотрю, смогу ли я связаться с ним


Кроме того, я знаю, что заинтересован в том, чтобы F103 продолжался, а также F4, но мне интересно, является ли HAL API для F103 и F4 идентичен.

я.e Если мы напишем функции для Pinmode в ядре, вызовет вызовы в HAL, мне интересно, будет ли это хорошо для всего или просто таких вещей, как GPIO

Я посмотрел на основные вещи, такие как Pinmode, и кажется, что это то же самое, но мне интересно, будет ли SPI и т. Д. я.в идеале они будут такими же

В любом случае.

Я думаю, что я могу начать новую репо и позволить всем пользователям F103 играть, по крайней мере, мигает светодиод, используя куб и HAL ;-)

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

КСТАТИ. Я пытался включить материал USB -устройства, но это не скомпилировалось, так как, кажется, что -то не хватает. Это может быть просто ошибкой в ​​сборке Arduino, но я не удивлюсь, если бы это была проблема в экспортируемых файлах куба.

Sheepdoll
SAT 13 июня 2015 г. 5:10 утра
Rogerclark написал:Спасибо за совет о "Sys"

Это исправило мою проблему SWD :-)


Извините за то, что продолжал задавать вопросы, но вы взяли основные файлы из Arduino Sam и конвертировали функции в заглушки, удалив код внутри функций ?

Rogerclark
SAT 13 июня 2015 г. 10:26 утра
Спасибо за всю информацию.

Я отследил док F1 HAL здесь

http: // www.ул.com/st-web-ui/static/acti ... 154093.PDF

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

КСТАТИ.
Я вижу, откуда у тебя карта булавки от... Это от Сэма.

Я думаю, что нам может быть лучше, просто взять материал PIN_MAP от Libmaple. Единственное, что должно быть прямо с самого начала, это то, что мы должны убедиться, что PIN_MAP собирается во Flash, в противном случае у нас была бы проблема, которую Libmaple в данный момент, когда PIN_MAP не инициализируется, когда глобальные VAR (и, следовательно, в настоящее время Классовые конструкторы) инициализируются, и мы получим некоторые библиотеки, которые не работают

Но я почти уверен, что у нас есть исправление для этого в Libmaple, но я боролся с кодом, который Виктор написал, чтобы исправить это, и мне не удалось заставить его работать на меня. :-(


В любом случае. Я думаю, что лучшее, что я могу сделать, это добавить папку HALMX на том же уровне в моем репо, как папки STM32F1, F3 и F4, чтобы папка HALMX могла тогда обмениваться инструментами и т. Д.

Я не совсем уверен в плане привязанности (я уверен, что другие люди вставят), но GPIO будет безусловно самым простым, а затем, вероятно, заставят USARTS работать.

Затем SPI, затем i2c (мы всегда можем использовать биту -избитую реализацию, которую Libmaple использует для i2c, поскольку он просто использует GPIO)

Я также хотел бы заставить его работать с загрузчиком, но это должно просто нужно небольшое изменение, чтобы перенести его на 0x8002000 - однако использование USB Maple будет немного больше работы.
Я не уверен, стоит ли использовать USB -материал Cube или нет. В настоящее время я не могу заставить его компилировать, и даже если бы я это сделал, я не уверен, какой драйвер понадобится.
Но плюс точка с CubeUSB заключается в том, что есть варианты запуска в виде HID, аудио или массового хранилища, а не виртуального последовательного.
Однако, похоже, у него нет возможности сделать больше, чем на типе USB одновременно. (в отличие от Leonardo / Pro Micro, который может работать как виртуальный сериал и одновременно спрятать - я думаю)
(На самом деле, никто не упомянул, что до сих пор вообще спрятала, что немного удивительно, так как устройство имеет нативную USB)

В любом случае, я не уверен, что сегодня гораздо больше.

Я могу перейти на перемещение его на 0x8002000 и использую загрузчик (только для загрузки) - просто чтобы увидеть, как сложно изменить вещь

Ваше здоровье

Роджер

Редактировать.

Я только что вспомнил лицензию сценария линкера (Arrggghhhhhhhhhhh).

Я кто -то умный, е.глин. Рик.. Мог бы переписать сценарий.

Это действительно не похоже на что -то особенное. Интересно, можно ли изменить сценарий Libmaple Linker, чтобы выполнить ту же работу.

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

Другой вариант - опубликовать на форуме сообщества ST, чтобы запросить разъяснения. я.e Почему они перераспределяют этот файл вне системного рабочего стола.

мммм. Раздражает, но не непреодолимый

Редактировать.

Скрипт Libmaple Linker не является хорошим без модификации, он имеет внешние ссылки, которых нет в HAL или CODE E.глин. __начинать__
Однако, если вы Google некоторых частей сг.глин

http: // sourceforge.net/p/stm32/code-0/9 ... 2F407VG.лд

который может быть «адаптирован» к работе, и которые, похоже, не имеют никаких лицензионных положений.

Фактически. Я взял один из Sourceforge, и просто должен был изменить размер вспышки и оперативной памяти, и это сработало для меня ;-)
(См. Удар)

Есть некоторые различия, размер кучи ссылки, а также нет " .РУКА.атрибуты 0: { *(.РУКА.атрибуты)} "

Но я боюсь, что понятия не имею, что делает большая часть этого материала. (Опять, возможно, Рик может помочь)

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

ENTRY(Reset_Handler) MEMORY { FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 128K RAM (rwx) : ORIGIN = 0x20000000, LENGTH = 20K } _estack = ORIGIN(RAM) + LENGTH(RAM); MIN_HEAP_SIZE = 0; MIN_STACK_SIZE = 256; SECTIONS { /* Interrupt vector table */ .isr_vector : { . = ALIGN(4); KEEP(*(.isr_vector)) . = ALIGN(4); } >FLASH /* The program code and other data goes into FLASH */ .text : { . = ALIGN(4); /* Code */ *(.text) *(.text*) /* Constants */ *(.rodata) *(.rodata*) /* ARM->Thumb and Thumb->ARM glue code */ *(.glue_7) *(.glue_7t) KEEP (*(.init)) KEEP (*(.fini)) . = ALIGN(4); _etext = .; } >FLASH .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH .ARM : { __exidx_start = .; *(.ARM.exidx*) __exidx_end = .; } >FLASH .ARM.attributes : { *(.ARM.attributes) } > FLASH .preinit_array : { PROVIDE_HIDDEN (__preinit_array_start = .); KEEP (*(.preinit_array*)) PROVIDE_HIDDEN (__preinit_array_end = .); } >FLASH .init_array : { PROVIDE_HIDDEN (__init_array_start = .); KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array*)) PROVIDE_HIDDEN (__init_array_end = .); } >FLASH .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(.fini_array*)) KEEP (*(SORT(.fini_array.*))) PROVIDE_HIDDEN (__fini_array_end = .); } >FLASH _sidata = .; /* Initialized data */ .data : AT ( _sidata ) { . = ALIGN(4); _sdata = .; /* create a global symbol at data start */ *(.data) *(.data*) . = ALIGN(4); _edata = .; /* define a global symbol at data end */ } >RAM /* Uninitialized data */ . = ALIGN(4); .bss : { /* This is used by the startup in order to initialize the .bss secion */ _sbss = .; /* define a global symbol at bss start */ __bss_start__ = _sbss; *(.bss) *(.bss*) *(COMMON) . = ALIGN(4); _ebss = .; /* define a global symbol at bss end */ __bss_end__ = _ebss; } >RAM PROVIDE(end = _ebss); PROVIDE(_end = _ebss); /* User_heap_stack section, used to check that there is enough RAM left */ ._user_heap_stack : { . = ALIGN(4); . = . + MIN_HEAP_SIZE; . = . + MIN_STACK_SIZE; . = ALIGN(4); } >RAM /DISCARD/ : { libc.a(*) libm.a(*) libgcc.a(*) } }

Rogerclark
SAT 13 июня 2015 г., 11:40
Обновлять

Я подтолкнул все свои файлы в новое репо

https: // github.com/rogerclarkmelbourne/ ... uino_stm32

Это не содержит инструментов, это просто файлы для папки HALMX, которые должны перейти внутрь папки arduino_stm32

Похоже, он работает для меня с использованием STM32F103C8 (хотя я экспортировал куб в качестве F103CB (поскольку это только размер вспышки, которая отличается)

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

(ммм. Мышление... У меня есть ядро ​​F3, так что, возможно, стоит посмотреть, работает ли он, и у меня также есть F407, так что его также стоит экспортировать куб для этого)

Во всяком случае, это то, чем играть.

Примечайте всем, кто читает это, а не весь ветка.

Ни один из API Arduino еще не присутствует. Я просто использую этот эскиз для тестирования Blink (который работает) - загрузка через Stlink (хотя последовательная загрузка может быть сделана для работы)
void setup() { // put your setup code here, to run once: } void loop() { HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13); HAL_Delay(100);/* Insert delay 200 ms */ }

Rogerclark
Сб 13 июня 2015 г. 22:10
Re: Вариации между F1 и F4 HAL и т. Д.

Я посмотрел на makerlabme wiring_digital.в

https: // github.com/makerlabme/stm32_ard ... _цифровой.в

И, похоже, нужно много IFDEF, чтобы поддержать различные процессоры.

Похоже, это в основном из -за того, что PinMode нуждается в настройке часов GPIO, которые различны на F1 и F4.

Мне нужно будет прочитать документы HAL, так как кажется странным, что HAL не абстрагирует это. Но я подозреваю, что, возможно, это не так. Или, возможно, когда Энди из Makermabme начал свои вещи, HAL был старше и не сделал этого.

Рано сказать момент

Редактировать

MakerLabme не использует HAL, насколько я могу судить.

И это не похоже на то, что Кодуино использует HAL (насколько я вижу)

Sheepdoll
Солнце 14 июня 2015 г., 4:07
Я наконец получил стандартный эскиз Blinkey для бега на https: // github.com/sheepdoll/arduino_st ... Ting/halmx. Это использует макросы для определения Millis () как hal_gettick () и dower () как hal_delay (). Не уверен, что делать с micros (), когда HAL устанавливает миллисекундный таймер. Многое из моего кода AVR использует время микросекунды. В конечном итоге захочет, что я использую разрешение от 24 до 25 пользователей в основном цикле для частоты кадров. Есть много вещей, которые можно прочитать на настройке таймера, которая, вероятно, находится вниз по пути здесь... Я действительно хочу получить часть серийного обратного канала.

Нужно любить препроцессор C ++. Я забыл и оставил заглушку для Mills () {}, чтобы светодиод включился, а не мигает. GDB показал мне, что код прыгнул в заглушку. Поэтому, когда вы делаете две функции идентичными через #define. Они действительно идентичны. Вероятно, все экземпляры мельницы были заменены HAL_GETTICK.

Удивительно, но в проталкиваемом коде это не так много, чтобы приклеить цифровой io на HAL. На данный момент не так много проверок для неправильного настройки булавок. Код Arduino SAM проверяет массив картирования PIN -код на периферийные устройства, которые блокируют. Поскольку этот массив является статичным во вспышке, позволяя встроенному периферийному устройству как часть установки Arduino может вести себя непредсказуемо, если пользователь произвольно решит изменить Pinmode.

Мне либо нужно будет следить за периферическими картами чем -то, что можно помещать в переключатель, либо сравнить, либо найти и найти аксессов в верхних уровнях, если слой абстракции. В основном это делает влиять на часы режима штифта. На F4XXX они установлены в GPIO.c Раздел init () CALE из Main (). Это работает, если PIN определяется в Cubemx, и в комплекте заголовок включен. Если в Main настройка необработанного чипа в Cubemx, и в основном нет стартапа GPIO, то PinMode () не удастся, так как нет часов. Скорее всего, PinMode () выйдет из строя при компиляции в качестве GPIO.H заголовки не включены, и символы оставлены неопределенными.

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

На данный момент я собираюсь остаться в песочнице HALMX I Sette. Это может затруднить автоматическое обновление https: // github.com/rogerclarkmelbourne/ ... uino_stm32 филиал, кроме опции копировать изменения.

Rogerclark
Солнце 14 июня 2015 г., 4:29
Re: задержка ();

Я не уверен, почему мы не можем использовать hal_delay () для задержки () ? Они оба в миллисекундах.

Я немного считывал фон вокруг микросекундных синхронизации, используя SYS Tick, но базового кода HAL не будет достаточно, чтобы сделать это, потребуются некоторые конкретные обратные вызовы таймера.

КСТАТИ. Я также нашел код, который выглядит так, как будто он будет обрабатывать серийные коммунальные компании

http: // Stackoverflow.COM/Вопросы/2487 ... HAL-DRIVER

Re: Включение часов GPIO.

Поскольку это на порту по порту, все, что я делал в загрузчике, включено все часы GPIO для всех возможных портов, от A до E в случае F103, это, похоже, не вызвало никаких проблем, поэтому я подозреваю то же самое вещь возможно в GPIO.c (куб уже написал код, включающий все часы GPIO, даже если я не думаю, что в Pin Gio Thing я использовал все порты.

Sheepdoll
Солнце 14 июня 2015 г., 6:35 утра
Rogerclark написал:Re: задержка ();

Я не уверен, почему мы не можем использовать hal_delay () для задержки () ? Они оба в миллисекундах.

Рик Кимбалл
Солнце 14 июня 2015 г., 17:05
Я не на самом деле копался в деталях реализации HAL по сравнению с стандартной периферийной библиотекой. Я думал, что прочитал, что коды HAL использовали стандартную периферийную библиотеку .. Но теперь я понимаю, что у кода HAL есть своя версия Stdperipheral, называемые HAL Standard Peripheral. О, и это несовместимо со старым стандартным периферийным кодом.

Блех и Блех

Sheepdoll
Солнце 14 июня 2015 г., 18:04
Мне на самом деле нравится новый код, который выплевывает Cubemx. Наверное, так как мне не придется иметь дело с багажом старых устаревших вещей.

Ничто из этого не имеет значения, самая важная концепция в программировании «не изобретена здесь."Так старый код от Приора ;)

Рик Кимбалл
Солнце 14 июня 2015 г. 18:19
Я считаю, что этот новый HAL -материал кажется одинаковым, но другим. Я думал, что старая версия раздута, и я не вижу ничего меняющегося. Единственное преимущество, которое у него было, заключалась в том, что для него была написана куча кода, который вы могли бы использовать в качестве образцов. Я предполагаю, что если цель состоит в том, чтобы предоставить слой ARDUINO API слою ST HAL, то что это действительно имеет значение :) Раздувать при раздутии.

Единственное, что я удивлен, чтобы не увидеть, - это некоторые усилия со стороны St, чтобы воспользоваться преимуществами битовых банков. Я не очень люблю техасский инструмент HAL API -слой, однако, по крайней мере, они использовали биту, где бы они ни были. Другое преимущество, которое Ti Tivaware имеет в этом материале, заключается в том, что они сжигают его в ПЗУ, так что у него нет проблем с ожиданием состояния. Код ПЗУ - это состояние ожидания.
Sheepdoll написал: ... Самая важная концепция в программировании - «не изобретена здесь."Так старый код из предыдущих команд имеет действительно короткий срок годности, так как предыдущая команда никогда не может быть хорошей, как нынешняя ;)

Mrburnette
Солнце 14 июня 2015 г., 19:35
Sheepdoll написал:Мне на самом деле нравится новый код, который выплевывает Cubemx. Наверное, так как мне не придется иметь дело с багажом старых устаревших вещей.

Рик Кимбалл
Солнце 14 июня 2015 г., 20:00
http: // www.Eevblog.com/forum/microcontr ... #msg571671

Этот пост / нить рассказывает о некоторых багажах .. И как они действительно не исправляли. Итак, что -то, что раньше было очевидным, скажем, установление PIN -кода для работы с GPIO_SPEED_50MHZ теперь является тупым GPIO_SPEED_HIGH.

Код CMSIS должен абстрагировать все эти вещи .. Но вместо этого ST ставит слой на то, что имитирует материал CMSIS (например, для материала NVIC), и он действительно одинаковый, но другой и не дает значения.

Что меня раздражает в этих поставщиках рук, таких как ST и Ti и NXP, так это то, что у них есть немного слоя дерьма с реальной целью - зафиксировать вас в их способе занятия, чтобы вы не могли легко переключиться на другого поставщика. Чего они не видят. Это не похоже на мой код для работы с регистрами TI GPIO будет работать над другими поставщиками GPIO Peripheral. Идея о том, что они добавляют ценность, предоставляя некоторую абстракцию слоев и что это полезное, - это просто нагрузка дерьма. Они просто скрывают то, что мне нужно знать.

-рик

Mrburnette
Солнце 14 июня 2015 г. 8:04 вечера
Рик Кимбалл написал:<...>
Что меня раздражает в этих поставщиках рук, таких как ST и Ti и NXP У всех них есть немного слоя дерьма с реальной целью - заблокировать вас в своем способе делать вещи, чтобы вы не могли легко переключиться на другого поставщика. Чего они не видят. Это не похоже на мой код для работы с регистрами TI GPIO будет работать над другими поставщиками GPIO Peripheral. Идея о том, что они добавляют ценность, предоставляя некоторую абстракцию слоев и что это полезное, - это просто нагрузка дерьма. Они просто скрывают то, что мне нужно знать.

-рик

Рик Кимбалл
Солнце 14 июня 2015 г., 8:12 вечера
Хех и со всем этим разглагольствованием . :) .. Я с нетерпением жду, как это получится. Это может, по крайней мере, в нашем маленьком маленьком мире обеспечить достаточную абстракцию, чтобы использовать один и тот же код с F103. F303 и F4XX

Продолжайте в том же духе, @sheepdoll !

-рик

Rogerclark
Солнце 14 июня 2015 г., 22:58
Рик,

Спасибо за ссылку Eevblog.

То, как я читал его, кто -то начал разрабатывать свой продукт при использовании периферийной либерации STD, и когда ST выпустил версию HAL, он переименовал некоторые вещи, так что вы не можете просто использовать версию HAL в качестве падения замены.

ИМХО, такие изменения довольно распространены во всех отраслях индустрии программного обеспечения.

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

Re: Хэл, зафиксируя вас к одному производителю

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

Например. Я не могу себе представить, что Cypress пытается разработать PSOC вокруг HAL, который работает на доски STM.


Преимущества использования STMS HAL будут

Поддержка различных поколений устройств STM32 и более легкий доступ к новым устройствам E.G F7
Не нужно писать код с нуля для периферийных устройств, таких как CAN, I2S, SDIO и т. Д
Проще получить поддержку через Форум сообщества поддержки ST, так как большинство людей либо используют периферийную либерацию ЗППП


Все это сказано...

Я понятия не имею, насколько портативна HAL во всем семействе процессоров STM, или качество и эффективность кода HAL и т. Д

Но я не думаю, что людям приносит ущерб, чтобы исследовать HAL как вариант

Mrburnette
Солнце 14 июня 2015 11:15 вечера
Rogerclark написал:<...>
Но я не думаю, что людям приносит ущерб, чтобы исследовать HAL как вариант

Rogerclark
Солнце 14 июня 2015 11:50 вечера
Привет, Рэй,

Mrburnette написал:Sheepdoll уже превысил то, что я бы изначально ожидал.

Sheepdoll
Пн 15 июня 2015 г. 12:51
У меня есть материал USART, чтобы компилировать. Это был порядок #includes. Все еще работая над крючками в библиотеках печати потока.

В то же время я попытался сделать этот тест, чтобы узнать, правильно ли у меня настройка HAL. Он просто вызывает сериал HAL прямо из эскиза
void setup() { // put your setup code here, to run once: // Hardware setup done as part of HAL init code through STM32CubeMX. } void loop() { // put your main code here, to run repeatedly: uint8_t wakeywakey[8] = "wakeup."; HAL_UART_Transmit(&huart6, wakeywakey, 7, 0xFFFF); delay(100); }

Rogerclark
Пн 15 июня 2015 г. 1:04
@sheepdoll

Спасибо за обновление

Использование HAL для доступа к UART, вероятно, поможет мне отладить вещи на данный момент. Так что спасибо за этот совет !

Rogerclark
Пн 15 июня 2015 г., 4:30 утра
КСТАТИ.

Вы, наверное, уже написали это самостоятельно, но здесь это Wiring_digital.в

Примечание. Моя карта штифтов определяется только как

typedef struct _pindescription
{
const gpio_typedef *gpioport;
const uint32_t pin;
}

эн.глин.
extern const PinDescription g_APinDescription[]= { {GPIOA,GPIO_PIN_0}, {GPIOA,GPIO_PIN_1}, {GPIOA,GPIO_PIN_2}, {GPIOA,GPIO_PIN_3}, ...etc etc etc

Sheepdoll
Пн 15 июня 2015 г., 4:36 утра
Как раз когда вы думали, что было безопасно идти после наступления темноты ...

Серийный поток записи (серийный.Печать) вроде как реализован. Я попробовал это с модифицированным эскизом на основе одного @madias, опубликованного здесь. Я также вставил в соединения Syscall, которые теоретически позволят printf (). Делает эскиз в 3 раза больше, когда называется printf (), но в серийном мониторе не вывозится данные. Быстрый поиск в режиме онлайн указывает, что это распространенная проблема. Мне не хочется отслеживать это. Я положил тот же самый звонок HAL в uart Stream Write, и, к моему удивлению, он на самом деле сработал.

Теоретически Serial1 должен работать, как это связано с USART2. Я не видел никаких данных, когда подключил линии к этому порту. USART1 имеет булавки в двух разных частях доски. Он включен на уровне HAL, но не в коде варианта.

Обратные вызовы прерывания все еще загрязнены. Это означает, что буфер кольца не используется.

Также загрязнено код имитации класса UART и настройка. Это фактически делается STM32Cubemx. Мне пришлось уйти в сериале.Begin () вызов, чтобы он найдет серийный поток. Скорость передачи и другие параметры игнорируются. Код SAM использовал параметры регистра Atmel для полей. Они должны быть нанесены на карту с абстракциями HAL_UART.

Пока нет чтения. Может быть возможно адаптировать код Brinir для выполнения чтения через прерывания DMA. Я прошел всю ночь вчера вечером, делая такую ​​работу, так что могу немного сделать перерыв. По мере того, как остается большая часть кода кольцевого буфера, чтение должно быть довольно простым предложением, но проблемы с компиляцией прошлой ночи могут предположить иное.

Обновления были опубликованы https: // github.com/sheepdoll/arduino_st ... Ting/halmx Это, конечно, образовательное подтверждение концепции филиала. Не гарантировано работать ни на что. Все еще много загрязняется, и любой реальный эскиз будет вести себя непредсказуемо.

Я на самом деле поражен, что это вообще работает.

/* simple serial sketch based on one by @madias */ #define ledpin 13 boolean flip=0; void setup() { /* currently setup is done by STM32CubeMX */ Serial.begin(9600); Serial1.begin(9600); pinMode(ledpin,OUTPUT); } void loop() { flip=!flip; digitalWrite(ledpin,flip); Serial.println("Port: Serial0"); delay(100); Serial1.println("Port: Serial1"); delay(100); // delay in between writes for stability }

Rogerclark
Пн 15 июня 2015 г., 4:53
@sheepdoll

Сделать перерыв.

Завтра это рабочий день (ну, уже завтра здесь, и было целую вечность, но это вина международной линии свиданий ;-) )

Я скачаю ваш код сегодня вечером и посмотрю.

Я должен признать, что я был немного удивлен тем, как структурировано материал UART в Сэм Корре. Я не знаю почему, но я представлял, что буфер кольца будет над UART в классе Heirarchy, но это не совсем.

ДМА -материал будет очень круто, я.е не делай то, что Сэм не делает. Но я не уверен, как вы отслеживаете, где находится указатель DMA Prise (я думаю, вы можете прочитать его из регламента)

В любом случае...

Сделать перерыв , Все еще будет там завтра, а на следующий день и т. Д ;-)

Rogerclark
Пн 15 июня 2015 г. 10:05
Несовместимость между F4 и F1 HAL

Ваша Winding_digital.C не компилировал для меня

GPIO_SPEED_FAST не определен для F1 HAL

Можете ли вы изменить это для gpio_speed_high, так как у обоих HAL есть это

Из того, что я вижу высоко, самое быстрое на F1 и F4.

Еще одна очень незначительная вещь.
Вы можете изменить свой чип.H, поэтому он включает F1 из F4 HAL в зависимости от определения в досках.текст
#if defined(STM32F401xE) #include "stm32f4xx_hal.h" /* Ideally this is defined in variant */ #elif defined(STM32F103xE ) #include "stm32f1xx_hal.h" #else #error "Device not supported" #endif

Rogerclark
Пн 15 июня 2015 г., 11:41
Обновлять.

Я просто подумал, что посмотрю, смогу ли я использовать версию HAL с загрузчиком.

Ну ответ да и нет...

Основная проблема заключается в том, что HAL должен быть изменен :-(

Каждый из верхнего уровня включает файлы (i.e Один вариант процессора) (e.глин. STM32F103XE.h) содержит такую ​​ссылку.
#define FLASH_BASE ((uint32_t)0x08000000) /*!< FLASH base address in the alias region */

Rogerclark
Пн 15 июня 2015 г. 11:21 вечера
Обновлять

К сожалению

Nvic_setVectortable (nvic_vecttab_flash, user_prog_offset);

Кажется, не в HAL API :-(

Ну, ничто с SetVectortable кажется в HAL

единственная команда NVIC кажется

9.1.3 hal_nvic_setpriorityGrouping
9.1.4 hal_nvic_setpriority
9.1.5 hal_nvic_enableirq
9.1.6 hal_nvic_disableirq
9.1.7 hal_nvic_systemreset
9.1.9 hal_nvic_getpriorityGrouping
9.1.10 hal_nvic_getpriority
9.1.11 hal_nvic_setpendingirq
9.1.12 hal_nvic_getpendingirq
9.1.13 hal_nvic_clearpendingirq
9.1.14 hal_nvic_getactive

Я опубликовал вопрос на собственном форуме St

https: // my.ул.com/public/ste2ecommuniti ... Entviews = 0

Я думаю, что обстановка обстановка

SCB->Визит

в основном до того, как hal_init () вызывается, но у меня не было времени подтвердить это

Sheepdoll
Вт 16 июня 2015 г. 12:29
Я сыграл немного больше с Cubemx и платформами.txt/poard.TXT файлы. Я не собирался делать это, но одна вещь осталась на другую, и я хотел продвинуть изменения в свой ноутбук.

Несколько заметок. Включает чип.H, вероятно, больше сродни борту.час. Я переместил это в папку вариантов. Таким образом, мне не нужно, чтобы я#ifdefs для типа доски. Такое уже обрабатывается через файлы конфигурации HAL. Поскольку у меня есть около полудюжины досок STM32. Похоже, это также может работать с демо -досками L0 и F0, которые у меня есть. Я еще не добавил их в репо онлайн, так как не хочу загромождать это. Папка F429i Discovery Cubemx есть, так как я играл с настройкой картирования. (В F429i это многое, это в основном набор для мобильного телефона без модема GSM. Но я отступаю...)

Чтобы заставить последовательный поток работать над моим ядром F103RB, мне пришлось изменить пути включения в платформу.TXT, чтобы не жестко кодировать пути F4. Итак, я добавил несколько ключей в досках.TXT, чтобы сделать это.

Настройка новой платы с кубом была на удивление. Я практикую это было намного проще, чем записать.
Запустите STM32Cubemx и
Выберите вкладку Selecter платы в меню Cubemx и нажмите «Параметры», чтобы установить все IP на по умолчанию.
Настройка меню настроек
Укажите путь настройки на варианты. Создать *.Проект МОК в папке (это станет именем варианта)
Установите инструмент на SWSTM32
Убедитесь, что периферийный initi настроен на сочетание .в .H файлы

Мне пришлось сначала сделать копию всех подержанных библиотек, чтобы привести к появлению папки GCC
Создать проект, который должен заполнить папку вариантов, вы можете открыть папку из меню «Завершение».
Удалить любые демонстрационные примеры и переименовать правильные *.S файл в *.S для безопасности я удалил другие.

Вернуться в окно карты штифта изменить инициализации контакта порта. (Примечание: я не делал этого в первый раз и не получил карту USART3 на контакты Morpho. Я смог восстановить проект, повторно составить его, и он работал без изменения кода.)

Проверьте меню настройки S. Скопируйте только необходимые файлы библиотеки. Повторно создать проект.

На этом этапе дерево проекта должно быть на месте в папке вариантов.

Скопируйте файлы STM32Duino из рабочего варианта в новый вариант. Это будет чип.H и вариант.H Вариант.Файлы CPP.

Используйте дифференцирующий редактор, такой как Textwrangler (или BBEDIT), чтобы сравнить рабочую главную.C в рабочем варианте к основному.C в новой папке варианта. Ищите вызовы на Setup () и Loop, они должны находиться в комментариях кода пользователя. Я отметил, что простые изменения в Cubemx Do сохраняют код внутри комментариев кода пользователя.

На этом этапе клонированный вариант готов редактировать вариант.CPP. Единственное реальное изменение, которое я должен был внести между F401RE и F103RB, состояло в том, чтобы изменить USART6 на USART3 (и не забудьте проверить картирование альтернативного вывода функций.)

Я также заметил опцию в версии Mac STM32Cubemx, которого нет в версии Windows. Это для создания .CSV -файл всех ссылок на PIN -код. Скорее всего, пользователям потребуется только создать новую таблицу STM для Arduino Pin Table. Этот .CSV может быть наиболее полезным для таких.

Существуют также проблемы с некоторыми из не портативных параметров в GPIO, такие как стихи gpio_speed_fast gpio_speed_high. Мне также пришлось перенести __io_putChar () из класса UART в вариант, так как мне было трудно назвать серийный код записи. Теоретически это должно позволить printf () подключиться к последовательному порту, но в настоящее время он не работает для меня. Я больше не пробовал это.


Эти обновления были опубликованы https: // github.com/sheepdoll/arduino_st ... Ting/halmx

PS: Лично меня не очень заинтересованы в загрузчиках, как почти все платы, которые я содержал. Изменение автоматических сгенерированных файлов разбивает мою модель для этого эксперимента, который должен увидеть, насколько они совместимы. Конечно, если бы это было реальное проект.
Настоящий проект, вероятно, также создаст свои собственные файлы загрузки линкера. Интересно, как откроется заглушка для генератора файлов инструментов внутри Cubemc?

Rogerclark
Вт 16 июня 2015 г. 12:45
@sheepdoll

Спасибо. Я посмотрю.

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

Я мог бы сойти с рук с 1 параметром, но я вижу, что использование 2 параметров обеспечивает большую гибкость в случае, если именование папки не совсем соответствует тому же соглашению о именовании.

Я думаю, что многие пользователи F103 захотят использовать загрузчик. Но это очень небольшое изменение одного из файлов «шаблона» в HAL, или, возможно, просто дополнительную строку в начале Main () - хотя я не проверял изменение базового адреса векторного таблицы в main ().

Мне нужно будет посмотреть на исправление материала USB Libmaple в источник, вероятно, добавив код в папку Maple_usb внутри ядра (просто к тому, что это кленовый материал, а не Hal USB)
Конечно, мне нужно убедиться, что USB -часы настроены.

Я также предпочтительно должен использовать HAL -вызовы для USB, а не прямого доступа к регистрации, что Libmaple, без сомнения, использует


В любом случае

Еще раз спасибо за то, что поделились

Sheepdoll
Вт 16 июня 2015 г. 1:22
Re: Bootloader, возможно, мы должны сделать отдельный поток для этого. Этот становится довольно полным.

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

Rogerclark
Вт 16 июня 2015 г. 1:46
ХОРОШО

Я начну новую ветку

Рик Кимбалл
Вт 16 июня 2015 г. 1:48
Sheepdoll написал: ... Своего рода быстрый способ сделать эти вещи полезными ...

Rogerclark
Вт 16 июня 2015 г. 1:56 утра
Я создал новую ветку

ViewTopic.PHP?F = 42&t = 328


Вещи в моем Hal Repo теперь устарели, поэтому мне нужно будет привлечь из репо @sheeldoll и скопировать файлы, а затем обновить мои файлы F103CB и оттолкнуть их все в GitHub (не то, чем я буду способен делать до этого вечера)

Sheepdoll
Вт 16 июня 2015 г., 6:14
Рик Кимбалл написал:Sheepdoll написал: ... Своего рода быстрый способ сделать эти вещи полезными ...

Rogerclark
Вт 16 июня 2015 г., 6:33
Кто -то должен будет проверить скорость регистрации данных на Maple Mini + SD за 5 долларов США.
Вероятно, общая стоимость 10 долларов + стоимость SD -карты.

Однако я подозреваю, что узкое место - это интерфейс SPI для SD.

Доски F103VET и ZET за 15 долларов имеют SDIO, который может быть использован вашим новым ядром на основе HAL. Но они больше и, возможно, тяжелее.

Но я действительно зависит от того, почему AVR считаются слишком медленными.

Sheepdoll
Вт 16 июня 2015 г., 23:44
Rogerclark написал: Но я действительно зависит от того, почему AVR считаются слишком медленными.

Rogerclark
Ср 17 июня 2015 г. 12:03
@sheepdoll

Я думаю, что вы будете использовать STM Midi Stuff, но есть порт либерапл, который просто делает MIDI. (Я думаю, что Матиас перенес/ обновил версию Libmaple, которая делает это)

Re: Хранение данных

Я знаю, что у вас нет этих досок, но на доске F103VE и F103ZE от eBay в основном есть I2C EEPROM и SRAM, встроенные на плату.
Я думаю, что это было что -то вроде 4 мбах (не цитируйте меня).

Так что это будет зависеть от того, сколько данных вы хотите хранить, будь то использование. Я также предполагаю, что вам нужно определить, является ли необходимость в плате регистрации данных функциональными при посадке (чтобы вы могли извлечь данные), практической, или вероятность повреждения была высокой - следовательно, используя SD -карту, которая будет Вы можете извлечь и поместить в ПК или Mac и т. Д.

victor_pv
Пт 19 июня 2015 г. 12:36
Rogerclark написал:Кто -то должен будет проверить скорость регистрации данных на Maple Mini + SD за 5 долларов США.
Вероятно, общая стоимость 10 долларов + стоимость SD -карты.

Однако я подозреваю, что узкое место - это интерфейс SPI для SD.

Доски F103VET и ZET за 15 долларов имеют SDIO, который может быть использован вашим новым ядром на основе HAL. Но они больше и, возможно, тяжелее.

Но я действительно зависит от того, почему AVR считаются слишком медленными.

NetDuino 2 Plus