ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
23 ноября
757065 Топик полностью
manul78 (19.05.2017 00:09 - 00:21, просмотров: 280) ответил Apтём на Наверное нужно создать свою секцию с адресом со внешней памяти и объявлять переменные с соответствующими атрибутами.
Честно говоря, это ЕБИ :) (EBI) довольно хитро устроен. Если-бы я к линиям адреса, данных и управляющим не подключил логический анализатор и не смотрел что на них происходит, то вероятно застрял-бы с ним надолго. ЕБИ поддерживает 4 набора регистров для выбора микросхем CS0,CS1,CS2,CS3. Каждый можно настроить индивидуально. В каждом можно задать размер памяти, базовый адрес, задержки, тип (SRAM или DDRAM) и пр. В моём случае CS0 , 1 МБ размер и базовый адрес который должен быть кратным размеру памяти. В моём случае это 0х100000, то есть обращение к первой ячейке 0х100000, к последней 0х10FFFFF. Я думаю это сделано для того, чтобы адреса внешней памяти не пересекались с внутренней (как в старых мегах, где терялось пространство. Небольшое конечно, да и была замысловатая схема программного доступа к ним, но всё-же) Попытки задать линкеру старые команды типа .. -Wl,--section-start,.data=0x802000,--defsym=__heap_end=0x8Fffff .. ни к чему не привели. МК просто виснет и всё. Я думаю, что решить данный вопрос можно только раздельной памятью на физическом аппаратном уровне. То есть подключить два модуля памяти. Один на 64К к CS0, и задать ему базовое смещение ниже 0х802000, дабы внутреняя память наложилась на внешнюю, и отдельный модуль к CS1 на 1 МБ для чисто своих целей. В принципе, мне для переменных, кучи и стека вполне хватает 8КБ "местной" памяти Хмеги, но вот честно говоря хочется поизвращаться :) UPD:
Адресное пространство для каждого выхода выбора микросхемы задается в виде базового адреса и размера адресного пространства. 24.3.1. Базовый адрес Базовый адрес - наименьший адрес адресного пространства выхода выбора микросхемы. Его значение равно адресу первой ячейки адресуемой внешней памяти в пространстве памяти данных. Связанный с каждым выходом выбора микросхемы базовый адрес должен задаваться с шагом 4 кбайт. Иначе говоря, он должен быть равным 0, 4096, 8192 и т.д. 24.3.2. Размер адресного пространства Значение размера адресного пространства задает, сколько бит адреса подлежат сравнению при генерации сигнала выбора микросхемы. Размер адресного пространства может быть любым от 256 байт до 16 Мбайт. При выборе размера адресного пространства более 4 кбайт, базовый адрес должен быть кратным размеру адресного пространства. Например, если для выхода выбора микросхемы выбрано адресное пространство 1 Мбайт, базовый адрес должен быть равен 0, 1 Мбайт, 2 Мбайт и т.д. кратно выбранному адресному пространству. Если заданные границы адресных пространств перекрываются, генерация сигналов выбора микросхемы выполняется с учетом приоритета. Наивысший приоритет имеет пространство внутренней памяти, а затем следуют выходы выбора микросхем 0 (CS0), 1 (CS1), 2 (CS2) и (CS3).
Нашёл нормальный перевод даташита на GAW... Хм, оказывается можно базовый адрес задать 0... Завтра попробую. Интересно как будет происходить обращение, если для внешней памяти используется специальный программный драйвер для работы с 32-х битными адресами ? Возможны конфликты... Хм. Попробую.