Добавление настраиваемых вопросов/отзывов

tomvdb
Вт 18 июля 2017 г. 9:35 утра
Привет,

Спасибо за всю работу на ядре STM для Arduino. Это круто.

В нашем местном Makerspace мы собираем мини -контроллер Mini Robot на основе STM32. Он использует STM32F042P6. Идея использования Arduino для программирования его обращается со многими нашими членами.

Изображение

Я провел некоторое время, следуя https: // github.com/stm32duino/wiki/wiki ... nt- (доска) Чтобы добавить нашу плату, измененные файлы здесь:https: // github.com/tomvdb/edubot

Мне удалось добавить его и собрать мигание, которое работает : D Мне все еще нужно проверить другие ферипералы.

Одна из проблем, которые у меня были на пути, была с шагом 5, добавив конфигурацию системных часов. Сгенерированная система SystemClock_config вызывает функцию error_handler, если есть проблема. Эта функция не является частью STM32Core, поэтому она не выполняет компиляцию. Я удалил ссылку на это из SystemClock_Config, и она работала нормально. Просто что -то, что нужно принять к сведению.
void SystemClock_Config(void) { RCC_OscInitTypeDef RCC_OscInitStruct; RCC_ClkInitTypeDef RCC_ClkInitStruct; RCC_PeriphCLKInitTypeDef PeriphClkInit; /**Initializes the CPU, AHB and APB busses clocks */ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI|RCC_OSCILLATORTYPE_HSI14; RCC_OscInitStruct.HSIState = RCC_HSI_ON; RCC_OscInitStruct.HSI14State = RCC_HSI14_ON; RCC_OscInitStruct.HSICalibrationValue = 16; RCC_OscInitStruct.HSI14CalibrationValue = 16; RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE; if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) { Error_Handler(); } /**Initializes the CPU, AHB and APB busses clocks */ RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK |RCC_CLOCKTYPE_PCLK1; RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI; RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1; if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK) { Error_Handler(); } PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_I2C1; PeriphClkInit.I2c1ClockSelection = RCC_I2C1CLKSOURCE_HSI; if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) { Error_Handler(); } /**Configure the Systick interrupt time */ HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000); /**Configure the Systick */ HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK); /* SysTick_IRQn interrupt configuration */ HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0); }

tomvdb
Вт 18 июля 2017 г. 11:05
Хорошо, мне удалось взломать погрузчик DFU вместе. Это не красиво, но работает:

Я использовал это https: // chackaday.IO/Project/4139-STM32- ... -конвертер Чтобы преобразовать файл HEX в файл DFU, а затем использовал инструмент командной строки DFUSE.

Мне пришлось сменить платформы.TXT для генерации шестнадцатеричного файла вместо файла bin, а также добавить следующее раздел загрузки DFU:
# dfu upload tools.dfu_upload.cmd=dfu_upload tools.dfu_upload.cmd.windows=dfu_upload.bat tools.dfu_upload.path.windows={runtime.tools.STM32Tools.path}/tools/win tools.dfu_upload.path.macosx={runtime.tools.STM32Tools.path}/tools/macosx tools.dfu_upload.path.linux={runtime.tools.STM32Tools.path}/tools/linux tools.dfu_upload.path.linux64={runtime.tools.STM32Tools.path}/tools/linux64 tools.dfu_upload.upload.params.verbose=-d tools.dfu_upload.upload.params.quiet= tools.dfu_upload.upload.pattern="{path}/{cmd}" "{build.path}/{build.project_name}.hex" "{build.path}/{build.project_name}.dfu"

Wi6labs
Вт 18 июля 2017 г. 11:55 утра
Привет, tomvdb,

Спасибо, что использовали ядро ​​STM32 для Arduino.
Мне нравится видеть, что все работает для вас.
Одна из проблем, которые у меня были на пути, была с шагом 5, добавив конфигурацию системных часов. Сгенерированная система SystemClock_config вызывает функцию error_handler, если есть проблема. Эта функция не является частью STM32Core, поэтому она не выполняет компиляцию. Я удалил ссылку на это из SystemClock_Config, и она работала нормально. Просто что -то, что нужно принять к сведению. Это уверен, что чего -то не хватает на шаге 5. Я увижу с ST, если мы должны добавить error_handler или предложение внутри вики.
Хорошо, мне удалось взломать погрузчик DFU вместе. Это не красиво, но это работает Отличная работа. Это правда, нативное ядро ​​STM32 не поддерживает (пока?) режим DFU. Вы видели PR #61?
Вы можете открыть запрос на привлечение, чтобы предложить свою работу. Сообщество может помочь вам сделать его более красивым ;)

tomvdb
Вт 18 июля 2017 г. 12:29
Это выглядит очень хорошо. Очень счастлив от моей стороны. Я протестировал ШИМ и аналоговые входы. Все кажется хорошо. Я нашел ошибку в pins_arduino.h В отношении макроса цифрового типа. Не хватало скобок. Исправлена ​​это, и теперь мое прерывание работает.

Получить запрос на исправление

https: // github.com/stm32duino/arduino_c ... 32/тяга/65
Отличная работа. Это правда, нативное ядро ​​STM32 не поддерживает (пока?) режим DFU. Вы видели PR #61?
Вы можете открыть запрос на привлечение, чтобы предложить свою работу. Сообщество может помочь вам сделать его более красивым
Я зарекомендовалсь #61. Я скопировал различные файлы из других проектов, чтобы заставить его работать, поэтому я не уверен, что могу просто добавить их в. Кроме того, у него нет двоичных файлов Linux/Mac. Все еще будет играть с этим.

Очевидно, я хотел бы, чтобы наши другие участники Makerspace тоже играли с этим. Но наличие пользовательской платы это означало бы, что им необходимо вносить модификации и т. Д. Для STM32 Arduino Core. Короче говоря, можем ли мы сделать запрос на привлечение для добавления пользовательских плат ? или что было бы лучшим способом справиться с этим?

Wi6labs
Ср. 19 июля 2017 г. 9:20 утра
Во -первых, спасибо за исправление.

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

У меня нет последнего слова. Вы открываете реальную дискуссию об этой теме.

tomvdb
Ср. 19 июля 2017 г., 11:28
В идеале можно было бы использовать менеджер совета директоров для создания варианта из моей пользовательской платы, который зависит от ядра STM32-Aduino. Таким образом, пользователю нужно сначала установить STM32-ядер, а затем моя пользовательская плата (которая по сути добавляет вариант).

Обычно пользовательская плата не должна изменять какие -либо файлы на ядро, за исключением следующего:
Edit cores/arduino/stm32/stm32_def_build.h and add the CMSIS_STARTUP_FILE definition.

tomvdb
Ср. 19 июля 2017 г. 13:42
Итак, мне удалось выяснить, как добавить вариант, не возившись с ядром (за одним исключением). Я в основном создал свой собственный пакет для своей доски. Это включает в себя создание файла JSON с информацией о загрузке пакета.

Мой расположен здесь:
https://www.binaryspace.co.za/edubot/package_edubot_index.json

Rogerclark
Ср. 19 июля 2017 г., 21:55
Спасибо.

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

Я посмотрю на ваши файлы, как будто мы сможем разделить доски на разные файлы JSON, это будет просто количество вариантов в основном репо

Мы также могли бы делать такие вещи, как испечь файлы json для синей таблетки, черной таблетки и т. Д

Wi6labs
Чт 20 июля 2017 г. 13:06
tomvdb,
Единственное изменение, которое я все еще должен был сделать в исходном ядре, было добавить правильное определение файла запуска CMSIS в Cores/arduino/STM32/STM32_DEF_BUILD.H, но, поскольку это общее Partnumber и не связано с конкретной платой, я думаю, что это нормально, поскольку ее нужно добавить только один раз для каждой части (и может быть добавлен в ядро ​​с помощью запроса на вытяжение или просто добавив все возможности за один раз). Планируется полностью завершить STM32_DEF_BUILD.H Файл. Но пиар тоже работает ;)

Роджер,

Это будет здорово, если это возможно. Я открою проблему об этой функции.

tomvdb
Пт 21 июля 2017 г. 11:21
Мы играли с ним вчера вечером на нашей встрече MakerSpace, и это отлично сработало. Каждый мог просто установить ядро ​​STM32 Arduino, используя BoardsManager, а затем мой вариант Edubot (также используя BoardsManager). Все прошло гладко без проблем, и у нас все запустили за несколько минут :)

fpistm
Пн 31 июля 2017 г. 15:56
Привет, Том,

Спасибо за ваш отзыв/вклад.
Ваш пиар объединен.

Чтобы добавить пользовательский вариант, вы приняли правильный подход, как описано в сторонней спецификации оборудования Arduino:
https: // github.com/arduino/arduino/wiki ... NT-OR-TOOL

О DFU планируется добавить его. Это было уже добавлено в другом репо и должно быть совместимым. Но я проверю вашу реализацию ;)