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

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
bolek
Сверлит текстолит когтями
Сообщения: 1179
Зарегистрирован: Пт авг 21, 2009 03:22:12

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

Сообщение bolek »

Удалось (с некоторыми заглушками в коде) скомпилировать 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 байт динамической памяти.
а еще хотелось бы сохранять и загружать программы: отвык я уже с клавы их каждый раз набирать :)))
СпойлерИзображение
Реклама
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

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

Сообщение Мурик »

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

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

Сообщение bolek »

Это я уже проверил: действительно, в МК на моей платке можно шить код размером больше 64 К, но, это дело случая.
Кстати, может кто знает простую реализацию функции dtostre для STM32F103? Или ее аналог? Это осталось, вроде, единственным куском кода, который нужно переделать.
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

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

Сообщение Мурик »

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 КБ) 195 скачиваний
Реклама
Эиком - электронные компоненты и радиодетали
bolek
Сверлит текстолит когтями
Сообщения: 1179
Зарегистрирован: Пт авг 21, 2009 03:22:12

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

Сообщение bolek »

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

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

Сообщение Мурик »

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

Вернуться в «Разные вопросы по МК»