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

 
 
 
Reply to this topicStart new topic
> 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
follow_me
сообщение Mar 22 2011, 10:47
Сообщение #2


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

Группа: Участник
Сообщений: 182
Регистрация: 4-11-10
Пользователь №: 60 646



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


В ОСях память разбивается на странички когда страничек не остается менеджер редкоиспользуемые сбрасывает на диск (свопит)
если снова не осталось - out of memory exception


для начала стоит попробовать оптимизировать код для наименьших затрат памяти.

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

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

Сообщение отредактировал follow_me - Mar 22 2011, 10:52
Go to the top of the page
 
+Quote Post
sasamy
сообщение Mar 22 2011, 12:16
Сообщение #3


Знающий
****

Группа: Участник
Сообщений: 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
Сообщение #4


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

Группа: Свой
Сообщений: 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
aaarrr
сообщение Mar 27 2011, 17:59
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(RCray @ Mar 27 2011, 20:44) *
Насколько эта система применима для NOR последовательных флеш (M25P32) с частотой доступа 25-50 Мбит и как происходит внедрение системы, нужен какой-то порт?

Совершенно неприменима: XIP расшифровывается как Execute In Place, а последнее в данном случае попросту отсутствует.

Цитата(RCray @ Mar 27 2011, 20:44) *
Сейчас я на стадии описания системы и составления архитектуры, т.е. мне уже сейчас нужно заложить эту возможность или отказаться от неё вовсе. Т.к. если я задекларирую этот компонент в системе, то потом придётся его делать. Не хотелось бы попасть в ситуацию, когда потом окажется, что это физически не возможно или реализация не будет отвечать ожиданиям ("будет всё тормозить").

Тогда лучше просто добавьте RAM - в конечном счете это обойдется гораздо дешевле чем извраты со свапом.
Go to the top of the page
 
+Quote Post
RCray
сообщение Mar 28 2011, 06:51
Сообщение #6


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

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



Ясно. Спасибо. Буду думать. Только процессор такой, что у него нет интерфейса внешней SRAM =) Только внутренняя.
Go to the top of the page
 
+Quote Post
kurtis
сообщение Mar 28 2011, 07:16
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 466
Регистрация: 21-06-05
Пользователь №: 6 205



Может вам как-то SPI RAM поможет? Поставить ее вместо NOR памяти (если корпус позволяет), или рядом (если есть возможность переразвести плату).
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Mar 28 2011, 10:22
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(RCray @ Mar 28 2011, 09:51) *
Только процессор такой, что у него нет интерфейса внешней SRAM =) Только внутренняя.

Так поменяйте его. Если задача объективно требует много RAM, значит надо обеспечить это требование, причем стандартными средствами.
Go to the top of the page
 
+Quote Post
DpInRock
сообщение Mar 28 2011, 13:42
Сообщение #9


Гуру
******

Группа: Участник
Сообщений: 2 254
Регистрация: 4-05-07
Из: Moscow
Пользователь №: 27 515



Цитата
Только процессор такой, что у него нет интерфейса внешней SRAM

Выглядит так, как будто человек ставит Win95 на микроконтроллер от стиральной машины.

Цитата
пользователь через GUI отключает интерфейсный модуль, который ему сейчас не нужен, например UART.

Программные затраты на реализацию такой менюшки в GUI будут во много раз превосходить код UART. Во много.

Кроме того, пользователь должен работать менеджером памяти вашего контроллера? Это весело.

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

Грубо. 10 кнопок начальной загрузки. Грузите в рам соответсвующее приложение извне. Целиком.
И оно работает.

Надо другое - кнопочка ресет + кнопка другого приложения.
Грузите хоть откуда - хотите 32 Гиговая SD, к примеру. На все случаи жизни.
И работать эти приложения будут как нормальные, а не как ненормальные.

А все эти пассажи со свопом и прочая - это к Грибоедову.



--------------------
On the road again (Canned Heat)
Go to the top of the page
 
+Quote Post

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

 


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


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