Например TDA7294

Форум РадиоКот :: Просмотр темы - Заливка прошивки в ОЗУ STM32 для отладки
Форум РадиоКот
https://radiokot.ru/forum/

Заливка прошивки в ОЗУ STM32 для отладки
https://radiokot.ru/forum/viewtopic.php?f=59&t=159164
Страница 1 из 4

Автор:  DENIS451 [ Сб дек 01, 2018 22:02:00 ]
Заголовок сообщения:  Заливка прошивки в ОЗУ STM32 для отладки

Кто пробовал заливать прошивку в ОЗУ чипов STM32 для экономии ресурса флэша, какие результаты?

Например, присматриваюсь к чипу STM32F105RBT6, там 64k оперативки - больше чем бесплатный лимит Keil.

Интересует мнение людей кто реально пробовал так делать, насколько это сложно сделать для ST-link v2 +
Keil 5.26?

Автор:  Мурик [ Сб дек 01, 2018 23:40:10 ]
Заголовок сообщения:  Re: Заливка прошивки в ОЗУ STM32 для отладки

DENIS451 писал(а):
STM32F105RBT6
USB хост нужен? Если нет, лучше взять STM32F103RET6.
Или STM32F407VGT6. Оперативки в нем 192 КБ.

Автор:  AndTer [ Вс дек 02, 2018 00:08:40 ]
Заголовок сообщения:  Re: Заливка прошивки в ОЗУ STM32 для отладки

лучше взять

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

Но ничего что ТС хочет(перехочет) просто сэкономить ресурс флеша(как будто его мало) и заодно обойти ограничение бесплатного использования кейла в 32кб флеша(как будто нет других способов).
Спрашивает как сделать.

Автор:  DENIS451 [ Вс дек 02, 2018 00:12:59 ]
Заголовок сообщения:  Re: Заливка прошивки в ОЗУ STM32 для отладки

Я пока не придумал, куда девать 64k памяти прошивки, а просто так покупать -
в Чип-и-Дип
STM32F103RET6 - 300р.
STM32F407VGT6 - 620p.
дорого!

Автор:  Reflector [ Вс дек 02, 2018 00:16:18 ]
Заголовок сообщения:  Re: Заливка прошивки в ОЗУ STM32 для отладки

STM32F103RET6 - 300р.

STM32F103RCT6 на ebay по $1.85, реально там тоже 64K RAM.

Автор:  DENIS451 [ Вс дек 02, 2018 00:19:39 ]
Заголовок сообщения:  Re: Заливка прошивки в ОЗУ STM32 для отладки

Насчёт Keil вы не поняли, я не ради этого делаю, и таким методом обойти ограничение всё равно не получиться!

Просто я осознал, что отладка заливкой в ресурсоограниченый флэш меня неприемлемо нервирует, и доводы типа
можно 2 года заливать по 14 раз в день не помогают!

Автор:  a5021 [ Вс дек 02, 2018 03:36:34 ]
Заголовок сообщения:  Re: Заливка прошивки в ОЗУ STM32 для отладки

Серьезные проблемы у вас явно не технического характера.

Автор:  240265 [ Вс дек 02, 2018 05:25:09 ]
Заголовок сообщения:  Re: Заливка прошивки в ОЗУ STM32 для отладки

:)))

Автор:  VladislavS [ Вс дек 02, 2018 05:50:35 ]
Заголовок сообщения:  Re: Заливка прошивки в ОЗУ STM32 для отладки

Кто пробовал заливать прошивку в ОЗУ чипов STM32 для экономии ресурса флэша, какие результаты?
Постоянно так делаю. Не для экономии флэшь, конечно же. Ветка debug в SRAM, а release во флэшь. Главное VTOR не забыть перенастроить (на cortex-m0 ремап сделать). Из подводных камней - скорость работы кода из SRAM отличается от работы из FLASH. А так, что-то быстро попробовать не убивая прошивку чипа - самое то.

Автор:  AlanDrakes [ Вс дек 02, 2018 10:42:19 ]
Заголовок сообщения:  Re: Заливка прошивки в ОЗУ STM32 для отладки

Не совсем из Keil'а, но тем не менее, успешно работает.
Разве что в linux системах проще собрать проект через Makefile, или подсунуть его же в Eclipse для сборки.
Программирование - через утилиту st-flash. Загрузка почти мгновенная (во всяком случае, проект на 50+кБ кода загружается в RAM очень быстро).

Автор:  Z_h_e [ Вс дек 02, 2018 12:13:16 ]
Заголовок сообщения:  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, main

4. В закладке Debug подсунуть этот файл проггеру.
5. Там же нажимаем Setting
6. В закладке flash dnld добавляем программин алгоритм и правим у него адреса.
7. И там же указываем область ОЗУ RAM for algoritm например 0x20002800 0x2800 , т.е. область где нет программы.

Не забываем перенести вектора, но для пробы с банальнейшим кодом можно и этого не делать, если не используются прерывания и не делить на ноль ;).

У меня так работает, но такое ощущение не совсем корректно, например если нажать RESET что в IDE, что на реальном на МК, светодиод уже "не мигает". Типа второй раз прошивка не запускается в ОЗУ. Или где-то что-то не допонял или одно из двух.

Автор:  Myp3ik [ Вс дек 02, 2018 12:40:52 ]
Заголовок сообщения:  Re: Заливка прошивки в ОЗУ STM32 для отладки

там 64k оперативки - больше чем бесплатный лимит Keil.


Этот недуг излечим :)))

Автор:  Z_h_e [ Вс дек 02, 2018 12:45:19 ]
Заголовок сообщения:  Re: Заливка прошивки в ОЗУ STM32 для отладки

Myp3ik писал(а):
Этот недуг излечим
У меня анттивирус, собака такая, кейген дезитегрировал куда-то :)

Автор:  VladislavS [ Вс дек 02, 2018 13:04:19 ]
Заголовок сообщения:  Re: Заливка прошивки в ОЗУ STM32 для отладки

1. Target - выделить под флеш ОЗУ, например первую пловину и само собой тогда откусить размер RAM
Зачем? У тебя есть один кусок памяти SRAM, просто скажи линкеру, что всё надо размешать в нём. Он всё сам сделает. Дальше. Когда у тебя классическая схема со стартом из FLASH, то глобальные инициализированные переменные инициализируются копированием из FLASH в RAM. Если у тебя всё в RAM, то копия этих данных не нужна, ты просто экономишь в размере прошивки, которая в SRAM и так лезет впритык.

Достаточно правильный скрипт линкера сделать
СпойлерВот классический скрипт линкера 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 };

А вот он же для SRAM
Код:
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 };

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

У меня так работает
Как-то перемудрено.

например если нажать RESET что в IDE, что на реальном на МК, светодиод уже "не мигает".
Ну а что бы ему мигать, если проц с FLASH стартует?

Автор:  Z_h_e [ Вс дек 02, 2018 13:06:45 ]
Заголовок сообщения:  Re: Заливка прошивки в ОЗУ STM32 для отладки

VladislavS писал(а):
проц с FLASH стартует?
Нет.

Автор:  dosikus [ Вс дек 02, 2018 13:18:22 ]
Заголовок сообщения:  Re: Заливка прошивки в ОЗУ STM32 для отладки

Myp3ik писал(а):
Этот недуг излечим
У меня анттивирус, собака такая, кейген дезитегрировал куда-то :)

Сообщи CID завтра сгенерю. И весьма странно дрвеб не ругаеться на кейген, хотя это еще тот параноик.

Автор:  Z_h_e [ Вс дек 02, 2018 13:23:50 ]
Заголовок сообщения:  Re: Заливка прошивки в ОЗУ STM32 для отладки

dosikus писал(а):
Сообщи CID завтра сгенерю.
Спасибо, не надо. Скачать не проблема вроде. Я так, поболтать... Если вдруг не найду при необходимости, обращусь.

Автор:  MikhailSh [ Вс дек 02, 2018 16:28:29 ]
Заголовок сообщения:  Re: Заливка прошивки в ОЗУ STM32 для отладки

Может чем поможет:
http://kazus.ru/forums/showthread.php?t ... %F3&page=4

Автор:  DENIS451 [ Вс дек 02, 2018 17:09:36 ]
Заголовок сообщения:  Re: Заливка прошивки в ОЗУ STM32 для отладки

Спасибо за ответы, закажу STM32F105RBT6, дождусь с али макетные платы, попробую применить на практике.

Цитата:
Этот недуг излечим

Я знаю, лекарство от Keil 5.24a подходит для 5.26 :wink:

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

Автор:  Мурик [ Вс дек 02, 2018 17:19:35 ]
Заголовок сообщения:  Re: Заливка прошивки в ОЗУ STM32 для отладки

AndTer писал(а):
Ты забыл ещё написать, что взять какой то там битц.
В теме пишут не про него, но он поддерживает отладку в ОЗУ.
СпойлерИзображение

DENIS451 писал(а):
Я пока не придумал, куда девать 64k памяти прошивки, а просто так покупать -
в Чип-и-Дип
STM32F103RET6 - 300р.
В Китае стоит 115 рублей (1.7$). https://ru.aliexpress.com/item/1PCS-STM ... 93591.html

DENIS451 писал(а):
забацать проект который загружает c SDHC карточки хексы в память
Отлаживать как собираетесь? Подключаясь к работающей программе?

Страница 1 из 4 Часовой пояс: UTC + 3 часа
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/