реклама на сайте
подробности

 
 
> Memory Management в условиях дефицита RAM
RCray
сообщение Mar 22 2011, 10:00
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 170
Регистрация: 14-09-05
Из: Suwon
Пользователь №: 8 548



Есть дефицит RAM и в наличии большая внешняя последовательная FLASH.
Теоретически пользовательское приложение может затребовать массив данных или кусок кода, который в данный момент не помещается в RAM целиком. Напрашивается какой-то механизм загрузки-выгрузки подобных блоков.

Как в разных ОСях (в идеале embedded) организован механизм выполнения пользовательского приложения в таких условиях?
По каким ключевым словам искать механизмы в сети?

P.S. кстати FLASH NOR m25p32, т.е. в уже стёртый сектор можно записывать по 256 байт, но если значение нужно изменить, то необходимо стереть сначала весь сектор (64 кбайта).

P.S.S. И на сколько это оправдано при циклах перезаписи 100.000 (может более). Наверно использовать резервирование например половины FLASH'и и в случае появление bad-блоков уже работать с другой областью.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
sasamy
сообщение Mar 22 2011, 12:16
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858



Цитата(RCray @ Mar 22 2011, 13:00) *
Как в разных ОСях (в идеале embedded) организован механизм выполнения пользовательского приложения в таких условиях?


Execute in place (XIP) - но ограничено типом флеш, в Linux и вроде в хBSD можно в RAM огранизовать область запись/чтение из которой архивируется "налету" и используют в качестве свапа.

Сообщение отредактировал sasamy - Mar 22 2011, 12:23
Go to the top of the page
 
+Quote Post
RCray
сообщение Mar 27 2011, 17:44
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 170
Регистрация: 14-09-05
Из: Suwon
Пользователь №: 8 548



Цитата(sasamy @ Mar 22 2011, 16:16) *
Execute in place (XIP) - но ограничено типом флеш, в Linux и вроде в хBSD можно в RAM огранизовать область запись/чтение из которой архивируется "налету" и используют в качестве свапа.


Насколько эта система применима для NOR последовательных флеш (M25P32) с частотой доступа 25-50 Мбит и как происходит внедрение системы, нужен какой-то порт?

Цитата(follow_me @ Mar 22 2011, 14:47) *
для начала стоит попробовать оптимизировать код для наименьших затрат памяти.

Использование flash , ИМХО, не оправдано , всё будет тормозить ужасно - лучше докупите памяти, по возможности

А пользовательских приложений у вас много работает или только одно ?


Сейчас я на стадии описания системы и составления архитектуры, т.е. мне уже сейчас нужно заложить эту возможность или отказаться от неё вовсе. Т.к. если я задекларирую этот компонент в системе, то потом придётся его делать. Не хотелось бы попасть в ситуацию, когда потом окажется, что это физически не возможно или реализация не будет отвечать ожиданиям ("будет всё тормозить").

Первый пример, который приходит на ум - пользователь через GUI отключает интерфейсный модуль, который ему сейчас не нужен, например UART. И менеджер памяти выгружает программный код, данные, которые относятся к этому модулю, на FLASH. Тем самым освобождается память RAM.

Каждое приложение в моём понимании это поток, таких потоков порядка 10.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 27th July 2025 - 23:50
Рейтинг@Mail.ru


Страница сгенерированна за 0.01368 секунд с 7
ELECTRONIX ©2004-2016