Перейти к содержанию
    

RAM vs FLASH

Начал изучать серию С2000 на примере tms320f28027. Появился вопрос. В чем принципиальная разница запуска программы из RAM и Flash?

Хотелось бы узнать в чем преимущества и недостатки каждого способа. Если есть на примете "умные книги", где это разъясняется, просьба поделиться.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если есть на примете "умные книги", где это разъясняется, просьба поделиться.

посмотри книгу из сообщения по ссылке

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

посмотри книгу из сообщения по ссылке

 

Да, книга хорошая, но в ней не объясняется почему есть необходимость выгружать код в ОЗУ. Из общих представлений я понимаю, что время доступа будет меньше, если функция крутится в ОЗУ. Хотелось бы понять концептуально в каких случаях программу нужно компилировать в CCS под FLASH или RAM.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

мое мнение: это атавизм из прошлого... ядро довольно древнее, флешки были тогда не долговечные + были популярны однократно программируемые чипы

PS. код из ОЗУ не всегда быстрее выполняется

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Из собственного опыта:

1. Код из флэшки не нужно копировать в ОЗУ для последующего выполнения при включении микроконтроллера, время запуска будет меньше;

2. Код из флэшки более помехоустойчив, чем из ОЗУ, даже внутреннего;

3. Код из флэшки выполняется примерно в три раза медленнее, чем из внутреннего ОЗУ;

4. Флэш-памяти программ и данных просто в разы больше, чем внутреннего ОЗУ. Из флэшки можно выполнять более объемные программы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В чем принципиальная разница запуска программы из RAM и Flash?

Хотелось бы узнать в чем преимущества и недостатки каждого способа.

Когда важно время выполнения (а для таких процов это важно чуть менее чем всегда), использование ОЗУ очень рекомендуется.

Как уже написали выше, разница по скорости в несколько раз.

 

На работе обычно делаем все алгоритмы вычислений в ОЗУ, во флешке оставляем только функции инициализации и прочие некритичные вещи.

 

Очень важно при этом размещать математические библиотеки в ОЗУ, такие как FPUfastRTS, IQmath и CLAmath.

Библиотека math.h тоже по-умолчанию выполняется из флешки, поэтому очень медленно.

 

 

P.S. Но вообще говоря, разница очень сильно зависит от тактовой частоты ядра. Если для 150МГц она огромна, то для частоты скажем 50МГц всё уже не так очевидно, поскольку там будут меняться тайминги работы Flash памяти.

Посмотрите для понимания сути табличку под названием "Minimum Required Flash/OTP Wait-States at Different Frequencies" в даташите на свой проц.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Большое спасибо за ответы.

 

Извините если вопрос покажется глупым, но для чего именно нужна эта функция?

Необходимо ли ее использовать при написания собственной программы?

 

// External symbols created by the linker cmd file

// DSP28 examples will use these to relocate code from one LOAD location

// in Flash to a different RUN location in internal RAM

 

extern Uint16 RamfuncsLoadStart;

extern Uint16 RamfuncsLoadSize;

extern Uint16 RamfuncsRunStart;

 

 

// If running from flash copy RAM only functions to RAM

#ifdef _FLASH

memcpy(&RamfuncsRunStart, &RamfuncsLoadStart, (size_t)&RamfuncsLoadSize);

#endif

 

Turnaev Sergey, спасибо, очень доходчиво.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну как известно, ничего в ОЗУ само не появляется, поэтому исполняемая в ОЗУ функция сначала в неё копируется из Flash.

И функция memcpy как раз для этих целей используется.

 

Что конкретно копировать, задаётся в файле CMD, в документации например на библиотеку FPUfastRTS описывается, как это сделать.

 

Чтобы свои функции разместить в ОЗУ необходимо использовать pragma вида:

 

#pragma CODE_SECTION(myRAMfunc, "ramfuncs");

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...