Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: LPC memory remapping
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
Xim73
Добрый вечер!

Хотелось бы поподробнее узнать про механизм переотображения памяти в микроконтроллерах LPC.
В руководстве говорится, что на первые 64 байта flash можно отобразить различные участки памяти. Что подразумевается под словом "отобразить"? Просто копируются первые 64 байта, например, ОЗУ в первые 64 байта flash? А куда помещается тогда "старая" таблица векторов? Или она так и остаётся на месте и отображение происходит как-то по-другому?

Заранее благодарю за помощь!
toweroff
А какой проц-то? LPC - слишком размытое понятие sm.gif
Сергей Борщ
QUOTE (Xim73 @ Jul 9 2012, 19:00) *
Что подразумевается под словом "отобразить"?
Обращаясь по этим адресам вы вместо содержимого флеша получаете содержимое отображенной памяти. Ничего никуда не копируется, просто ваши запросы перенаправляются в другую область памяти. А для вас это выглядит, как будто подменили содержимое памяти по этим адресам.
SII
Цитата(Xim73 @ Jul 9 2012, 20:00) *
В руководстве говорится, что на первые 64 байта flash можно отобразить различные участки памяти. Что подразумевается под словом "отобразить"? Просто копируются первые 64 байта, например, ОЗУ в первые 64 байта flash? А куда помещается тогда "старая" таблица векторов? Или она так и остаётся на месте и отображение происходит как-то по-другому?


Тут не совсем верная формулировка (ну или просто не шибко удачная -- как написано в исходной документации, я посмотреть не могу, поскольку Вы не указали модель МК). Вообще, отображение (mapping) -- это установление соответствия между адресами, выдаваемыми процессором, и физическими областями памяти.

В данном конкретном случае речь идёт о том, что первые 64 байта адресного пространства (адреса 00000000-0000003F), доступного процессору, могут быть отображены либо на первые 64 байта флэш-памяти, либо на какие-либо другие адреса (например, на внутреннее ОЗУ). Необходимость в таком отображении возникает из-за того, что процессор считает, что у него по адресам 00000000-0000003F лежат векторы прерываний, и при возникновении любого из них переходит на тот или иной адрес в этой области. Однако Ваша программа может располагаться не только во флэш-памяти, но и в ОЗУ, и тогда надо "обмануть" процессор: он обратится по одному из адресов в указанном диапазоне, а ему подсунут информацию из совсем другого места. При таком отображении, понятное дело, прочитать информацию из первых 64 байтов именно флэш-памяти окажется невозможно.
Lotor
Цитата(SII @ Jul 10 2012, 19:28) *
Однако Ваша программа может располагаться не только во флэш-памяти, но и в ОЗУ, и тогда надо "обмануть" процессор: он обратится по одному из адресов в указанном диапазоне, а ему подсунут информацию из совсем другого места. При таком отображении, понятное дело, прочитать информацию из первых 64 байтов именно флэш-памяти окажется невозможно.

Не совсем верно, ведь программа может жить в ОЗУ, а вектора во флеш. И наоборот - программа может оставаться во флеше, а вектора прерываний лежать в ОЗУ.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.