Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить

Re: Контролер програмируемый без ПК

Пн фев 27, 2017 15:48:54

Удалось (с некоторыми заглушками в коде) скомпилировать ArduinoBASIC для STM32F103C8T6:
Скетч использует 61 896 байт (94%) памяти устройства. Всего доступно 65 536 байт.
Глобальные переменные используют 5 576 байт динамической памяти.

Т.е. с доступной для Basic программ памятью, как и ожидалось, дело обстоит значительно лучше, чем на UNO.

P.S. В чип пока не заливал, нужно еще поковырять код...

Добавлено after 7 hours 1 minute 9 seconds:
Дополнение
Увеличил доступную память под Basic программу с 1024 до 15000, залил, попробовал - местами (кроме нерешенных вопросов) даже работает :) (см. картинку)
Нужна оптимизация кода, поскольку вычерпаны почти все ресурсы МК по памяти,
Код:
Скетч использует 61 888 байт (94%) памяти устройства. Всего доступно 65 536 байт.
Глобальные переменные используют 19 552 байт динамической памяти.

а еще хотелось бы сохранять и загружать программы: отвык я уже с клавы их каждый раз набирать :)))
СпойлерИзображение

Re: Контролер програмируемый без ПК

Вт мар 07, 2017 16:23:36

bolek писал(а):Нужна оптимизация кода, поскольку вычерпаны почти все ресурсы МК по памяти
У МК 128 КБ Flash (кристалл от STM32F103CBT6), т. е. еще много свободной памяти. :)))

Re: Контролер програмируемый без ПК

Вт мар 07, 2017 17:14:09

Это я уже проверил: действительно, в МК на моей платке можно шить код размером больше 64 К, но, это дело случая.
Кстати, может кто знает простую реализацию функции dtostre для STM32F103? Или ее аналог? Это осталось, вроде, единственным куском кода, который нужно переделать.

Re: Контролер програмируемый без ПК

Вт мар 07, 2017 18:38:51

bolek писал(а):это дело случая.
У F103C8 и F103CB один и тот же кристалл, но в первом случае производителем протестировано 64 КБ, а во втором случае 128 КБ Falsh. :)
Точнее даже у F101C8/B, F102C8/B и F103C8/B идентичные кристаллы. Этим китайцы пользуются ставя в ST-Link STM32F101CBT6 вместо STM32F103C8T6 и все работает, несмотря на то что по документации в F101 нет USB. :)))


Цитата сообщения bolek
Спойлер
bolek писал(а):Результаты компиляции примера SSD1306ShowFont:
Код:
 плата           размер кода   использовано ОЗУ
Arduino UNO          3490             28 
Arduino Leonardo     6960            168
STM32F103C8T6       15028           2824

Результат не радует: несмотря на "всё больше" в STM32F103C8T6, видимо, сказывается неоптимальная генерация кода (использовано ОЗУ) и разрядность (код в памяти программ).
Даже не знаю, стоит ли продолжать рыть дальше...

Upd:
Подумал, ещё поковырял и, вроде, не все так грустно, как сначала показалось:
Изображение
"Пустышка" - это фактически только код инициализации МК и пустой цикл:
Код:
void setup() {}
void loop() {}

Из таблицы видно, что инициализация STM32 съедает значительно больше ресурсов, но зато "полезный" код отъедает меньше ресурсов.
Пожалуй, следует STM32 поковырять ещё...
Не компилируйте в ArduinoIDE для STM32F103C8T6. "Пустышка" должна занимать около 1 КБ flash и не больше сотни байт ОЗУ.
Как-то так (результат компиляции кода мигающего светодиодом с использованием SPL).
Program size (bytes): 764
Data size (bytes): 0
BSS size (bytes): 0

Total size (bytes): 764 (R/W Memory: 0)
Вложения
Blink.zip
(1.49 KiB) Скачиваний: 187

Re: Контролер програмируемый без ПК

Ср мар 08, 2017 04:01:14

Мурик писал(а):Не компилируйте в ArduinoIDE для STM32F103C8T6. "Пустышка" должна занимать около 1 КБ flash и не больше сотни байт ОЗУ.
Как-то так (результат компиляции кода мигающего светодиодом с использованием SPL).
Да это понятно, можно и не в ардуиносреде сгенерить большой код, например, использовать HAL.
Весь смысл затеи и был в том, чтобы это было сделано a-la ардуино. Не думаю, что переписать код из ino на С большая проблема, но это уже будет не то, к тому же потащит за собой адаптацию или замену библиотек, wire, например. Проще будет начать новый проект...

Re: Контролер програмируемый без ПК

Ср мар 08, 2017 11:38:13

bolek писал(а):например, использовать HAL.
HAL имеет смысл использовать для F4 и F7, а для F0 и F1 ее применение нецелесообразно, по моему мнению.
Ответить