Cидopгeк (16.08.2006 12:29, просмотров: 2586)
Поругайте идею: "Виртуальная память" в LPC2138, SAM7X и им подобных "Виртуальная память" в LPC2138, SAM7X и им подобных.
Сейсас работаю с устройством на 2138, к которому по SPI подключена Альтера, к которой в свою очередь подключена SDRAM-ина, которая используется для буферизации приходящего на Альтеру потока данных.
В процессе написания программы аппетиты сильно выросли и появилась необходимость в доступной процессору памяти объема порядка полмегабайта - мегабайт, в которую процессор будет изредка писать и затем читать некие структуры данных.
По хорошему нужно перейти на другой процессор, но есть необходимость заставить работать платы на 2138, кои уже обрели новых хозяев, жаждущих новой функциональности.
Посему возникла ненормальная идея соорудить реализованную программно виртуальную память:
Объявить вышеупомянутый массив структур в свободной от чего-либо области адресного пространства ARMа. При обращении к этой памяти, ессно, процессор отфутболит программу на обработчик соответствующего эксэпшена. А там ее уже будет ждать программка, которая прочитает через Альтеру соответствующую страничку SDRAM в расположенный в RAM процессора кеш. И, ессно, придумать более-менее эффективный алгоритм кеширования.
Идиотизм, конечно, на каждую операцию чтения-записи "виртуальной памяти" - вызов целого "баяна", но скорость доступа меня в данном случае не волнует, а исходник той части программы, что работает с массивом структур, можно будет без изменений перенести в будущий проект на процессоре с большим RAM.
Что уважаемые коллеги думают по этому поводу? Не попадалось ли вкздесущему (в хорошем смысле) Евгению нечто подобное, уже написанное?