Заливка прошивки в ОЗУ STM32 для отладки
Заливка прошивки в ОЗУ STM32 для отладки
Кто пробовал заливать прошивку в ОЗУ чипов STM32 для экономии ресурса флэша, какие результаты?
Например, присматриваюсь к чипу STM32F105RBT6, там 64k оперативки - больше чем бесплатный лимит Keil.
Интересует мнение людей кто реально пробовал так делать, насколько это сложно сделать для ST-link v2 +
Keil 5.26?
Например, присматриваюсь к чипу STM32F105RBT6, там 64k оперативки - больше чем бесплатный лимит Keil.
Интересует мнение людей кто реально пробовал так делать, насколько это сложно сделать для ST-link v2 +
Keil 5.26?
- Реклама
Re: Заливка прошивки в ОЗУ STM32 для отладки
USB хост нужен? Если нет, лучше взять STM32F103RET6.DENIS451 писал(а):STM32F105RBT6
Или STM32F407VGT6. Оперативки в нем 192 КБ.
Re: Заливка прошивки в ОЗУ STM32 для отладки
[uquote="Мурик",url="/forum/viewtopic.php?p=3517510#p3517510"]лучше взять[/uquote]
Ты забыл ещё написать, что взять какой то там битц. Ты везде это предлагаешь, даже когда вопрос про мигалку на аттини.
Но ничего что ТС хочет(перехочет) просто сэкономить ресурс флеша(как будто его мало) и заодно обойти ограничение бесплатного использования кейла в 32кб флеша(как будто нет других способов).
Спрашивает как сделать.
Ты забыл ещё написать, что взять какой то там битц. Ты везде это предлагаешь, даже когда вопрос про мигалку на аттини.
Но ничего что ТС хочет(перехочет) просто сэкономить ресурс флеша(как будто его мало) и заодно обойти ограничение бесплатного использования кейла в 32кб флеша(как будто нет других способов).
Спрашивает как сделать.
Глупый не задает вопросы. Глупый и так все знает.
Re: Заливка прошивки в ОЗУ STM32 для отладки
Я пока не придумал, куда девать 64k памяти прошивки, а просто так покупать -
в Чип-и-Дип
STM32F103RET6 - 300р.
STM32F407VGT6 - 620p.
дорого!
в Чип-и-Дип
STM32F103RET6 - 300р.
STM32F407VGT6 - 620p.
дорого!
Re: Заливка прошивки в ОЗУ STM32 для отладки
[uquote="DENIS451",url="/forum/viewtopic.php?p=3517535#p3517535"]STM32F103RET6 - 300р.[/uquote]
STM32F103RCT6 на ebay по $1.85, реально там тоже 64K RAM.
STM32F103RCT6 на ebay по $1.85, реально там тоже 64K RAM.
- Реклама
Re: Заливка прошивки в ОЗУ STM32 для отладки
Насчёт Keil вы не поняли, я не ради этого делаю, и таким методом обойти ограничение всё равно не получиться!
Просто я осознал, что отладка заливкой в ресурсоограниченый флэш меня неприемлемо нервирует, и доводы типа
можно 2 года заливать по 14 раз в день не помогают!
Просто я осознал, что отладка заливкой в ресурсоограниченый флэш меня неприемлемо нервирует, и доводы типа
можно 2 года заливать по 14 раз в день не помогают!
Re: Заливка прошивки в ОЗУ STM32 для отладки
Серьезные проблемы у вас явно не технического характера.
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: Заливка прошивки в ОЗУ STM32 для отладки
[uquote="DENIS451",url="/forum/viewtopic.php?p=3517438#p3517438"]Кто пробовал заливать прошивку в ОЗУ чипов STM32 для экономии ресурса флэша, какие результаты?[/uquote]Постоянно так делаю. Не для экономии флэшь, конечно же. Ветка debug в SRAM, а release во флэшь. Главное VTOR не забыть перенастроить (на cortex-m0 ремап сделать). Из подводных камней - скорость работы кода из SRAM отличается от работы из FLASH. А так, что-то быстро попробовать не убивая прошивку чипа - самое то.
- AlanDrakes
- Прорезались зубы
- Сообщения: 236
- Зарегистрирован: Пн июл 04, 2016 16:51:22
- Откуда: Россия, Омск
Re: Заливка прошивки в ОЗУ STM32 для отладки
Не совсем из Keil'а, но тем не менее, успешно работает.
Разве что в linux системах проще собрать проект через Makefile, или подсунуть его же в Eclipse для сборки.
Программирование - через утилиту st-flash. Загрузка почти мгновенная (во всяком случае, проект на 50+кБ кода загружается в RAM очень быстро).
Разве что в linux системах проще собрать проект через Makefile, или подсунуть его же в Eclipse для сборки.
Программирование - через утилиту st-flash. Загрузка почти мгновенная (во всяком случае, проект на 50+кБ кода загружается в RAM очень быстро).
- Z_h_e
- Собутыльник Кота
- Сообщения: 2708
- Зарегистрирован: Сб май 14, 2011 21:16:04
- Откуда: г. Чайковский
Re: Заливка прошивки в ОЗУ STM32 для отладки
В опициях таргета.DENIS451 писал(а):Кто пробовал заливать прошивку в ОЗУ чипов STM32 для экономии ресурса флэша, какие результаты?
1. Target - выделить под флеш ОЗУ, например первую пловину и само собой тогда откусить размер RAM
2. На закладке LINKER сделать тоже самое, т.е. указать базовые новые адреса или создать свой скаттер-файл.
3. Создать ini файл
Спойлер
Код: Выделить всё
/*----------------------------------------------------------------------------
* Name: Dbg_RAM.ini
* Purpose: RAM Debug Initialization File
* Note(s):
*----------------------------------------------------------------------------*/
/*----------------------------------------------------------------------------
Setup() configure PC & SP for RAM Debug
*----------------------------------------------------------------------------*/
FUNC void Setup (void) {
SP = _RDWORD(0x20000000); // Setup Stack Pointer
PC = _RDWORD(0x20000004); // Setup Program Counter
_WDWORD(0xE000ED08, 0x20000000); // Setup Vector Table Offset Register
}
load %L incremental
Setup(); // Setup for Running
g, main5. Там же нажимаем Setting
6. В закладке flash dnld добавляем программин алгоритм и правим у него адреса.
7. И там же указываем область ОЗУ RAM for algoritm например 0x20002800 0x2800 , т.е. область где нет программы.
Не забываем перенести вектора, но для пробы с банальнейшим кодом можно и этого не делать, если не используются прерывания и не делить на ноль
У меня так работает, но такое ощущение не совсем корректно, например если нажать RESET что в IDE, что на реальном на МК, светодиод уже "не мигает". Типа второй раз прошивка не запускается в ОЗУ. Или где-то что-то не допонял или одно из двух.
Re: Заливка прошивки в ОЗУ STM32 для отладки
[uquote="DENIS451",url="/forum/viewtopic.php?p=3517438#p3517438"]там 64k оперативки - больше чем бесплатный лимит Keil.[/uquote]
Этот недуг излечим
Этот недуг излечим
Иван Сусанин - первый полупроводник 
- Z_h_e
- Собутыльник Кота
- Сообщения: 2708
- Зарегистрирован: Сб май 14, 2011 21:16:04
- Откуда: г. Чайковский
Re: Заливка прошивки в ОЗУ STM32 для отладки
У меня анттивирус, собака такая, кейген дезитегрировал куда-тоMyp3ik писал(а):Этот недуг излечим
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: Заливка прошивки в ОЗУ STM32 для отладки
[uquote="Z_h_e",url="/forum/viewtopic.php?p=3517768#p3517768"]1. Target - выделить под флеш ОЗУ, например первую пловину и само собой тогда откусить размер RAM[/uquote]Зачем? У тебя есть один кусок памяти SRAM, просто скажи линкеру, что всё надо размешать в нём. Он всё сам сделает. Дальше. Когда у тебя классическая схема со стартом из FLASH, то глобальные инициализированные переменные инициализируются копированием из FLASH в RAM. Если у тебя всё в RAM, то копия этих данных не нужна, ты просто экономишь в размере прошивки, которая в SRAM и так лезет впритык.
Достаточно правильный скрипт линкера сделать
А вот он же для SRAM
Как говорится, найди 10 отличий. У других линкеров язык скриптов отличается, но смысл от этого не меняется.
[uquote="Z_h_e",url="/forum/viewtopic.php?p=3517768#p3517768"]У меня так работает[/uquote]Как-то перемудрено.
[uquote="Z_h_e",url="/forum/viewtopic.php?p=3517768#p3517768"]например если нажать RESET что в IDE, что на реальном на МК, светодиод уже "не мигает".[/uquote]Ну а что бы ему мигать, если проц с FLASH стартует?
Достаточно правильный скрипт линкера сделать
Спойлер
Вот классический скрипт линкера IAR для FLASHКод: Выделить всё
define symbol __ICFEDIT_intvec_start__ = 0x08000000;
/*-Memory Regions-*/
define symbol __ICFEDIT_region_ROM_start__ = 0x08000000;
define symbol __ICFEDIT_region_ROM_end__ = 0x0801FFFF;
define symbol __ICFEDIT_region_RAM_start__ = 0x20000000;
define symbol __ICFEDIT_region_RAM_end__ = 0x20004FFF;
/*-Sizes-*/
define symbol __ICFEDIT_size_cstack__ = 0x400;
define symbol __ICFEDIT_size_heap__ = 0x000;
define memory mem with size = 4G;
define region ROM_region = mem:[from __ICFEDIT_region_ROM_start__ to __ICFEDIT_region_ROM_end__];
define region RAM_region = mem:[from __ICFEDIT_region_RAM_start__ to __ICFEDIT_region_RAM_end__];
define block CSTACK with alignment = 8, size = __ICFEDIT_size_cstack__ { };
define block HEAP with alignment = 8, size = __ICFEDIT_size_heap__ { };
initialize by copy { readwrite };
do not initialize { section .noinit };
place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec };
place in ROM_region { readonly };
place in RAM_region { readwrite, block CSTACK, block HEAP };
Код: Выделить всё
define symbol __ICFEDIT_intvec_start__ = 0x20000000;
/*-Memory Regions-*/
define symbol __ICFEDIT_region_ROM_start__ = 0x08000000;
define symbol __ICFEDIT_region_ROM_end__ = 0x0801FFFF;
define symbol __ICFEDIT_region_RAM_start__ = 0x20000000;
define symbol __ICFEDIT_region_RAM_end__ = 0x20004FFF;
/*-Sizes-*/
define symbol __ICFEDIT_size_cstack__ = 0x400;
define symbol __ICFEDIT_size_heap__ = 0x000;
define memory mem with size = 4G;
//define region ROM_region = mem:[from __ICFEDIT_region_ROM_start__ to __ICFEDIT_region_ROM_end__];
define region RAM_region = mem:[from __ICFEDIT_region_RAM_start__ to __ICFEDIT_region_RAM_end__];
define block CSTACK with alignment = 8, size = __ICFEDIT_size_cstack__ { };
define block HEAP with alignment = 8, size = __ICFEDIT_size_heap__ { };
//initialize by copy { readwrite };
do not initialize { section .noinit };
place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec };
place in RAM_region { readonly, readwrite, block CSTACK, block HEAP };
[uquote="Z_h_e",url="/forum/viewtopic.php?p=3517768#p3517768"]например если нажать RESET что в IDE, что на реальном на МК, светодиод уже "не мигает".[/uquote]Ну а что бы ему мигать, если проц с FLASH стартует?
Последний раз редактировалось VladislavS Вс дек 02, 2018 13:07:48, всего редактировалось 1 раз.
- Z_h_e
- Собутыльник Кота
- Сообщения: 2708
- Зарегистрирован: Сб май 14, 2011 21:16:04
- Откуда: г. Чайковский
Re: Заливка прошивки в ОЗУ STM32 для отладки
Нет.VladislavS писал(а):проц с FLASH стартует?
Re: Заливка прошивки в ОЗУ STM32 для отладки
[uquote="Z_h_e",url="/forum/viewtopic.php?p=3517791#p3517791"]
[/uquote]
Сообщи CID завтра сгенерю. И весьма странно дрвеб не ругаеться на кейген, хотя это еще тот параноик.
У меня анттивирус, собака такая, кейген дезитегрировал куда-тоMyp3ik писал(а):Этот недуг излечим
Сообщи CID завтра сгенерю. И весьма странно дрвеб не ругаеться на кейген, хотя это еще тот параноик.
- Z_h_e
- Собутыльник Кота
- Сообщения: 2708
- Зарегистрирован: Сб май 14, 2011 21:16:04
- Откуда: г. Чайковский
Re: Заливка прошивки в ОЗУ STM32 для отладки
Спасибо, не надо. Скачать не проблема вроде. Я так, поболтать... Если вдруг не найду при необходимости, обращусь.dosikus писал(а):Сообщи CID завтра сгенерю.
Re: Заливка прошивки в ОЗУ STM32 для отладки
Спасибо за ответы, закажу STM32F105RBT6, дождусь с али макетные платы, попробую применить на практике.
Я кстати, придумал ещё один повод научится отлаживать код в оперативке - можно же ведь забацать проект который загружает
c SDHC карточки хексы в память, и передаёт им управление.
Я знаю, лекарство от Keil 5.24a подходит для 5.26Этот недуг излечим
Я кстати, придумал ещё один повод научится отлаживать код в оперативке - можно же ведь забацать проект который загружает
c SDHC карточки хексы в память, и передаёт им управление.
Re: Заливка прошивки в ОЗУ STM32 для отладки
В теме пишут не про него, но он поддерживает отладку в ОЗУ.AndTer писал(а):Ты забыл ещё написать, что взять какой то там битц.
Спойлер

В Китае стоит 115 рублей (1.7$). https://ru.aliexpress.com/item/1PCS-STM ... 93591.htmlDENIS451 писал(а):Я пока не придумал, куда девать 64k памяти прошивки, а просто так покупать -
в Чип-и-Дип
STM32F103RET6 - 300р.
Отлаживать как собираетесь? Подключаясь к работающей программе?DENIS451 писал(а):забацать проект который загружает c SDHC карточки хексы в память



