Здравствуйте,
Регистр MCFG для работы с Flash конфигурируется автоматически при старте с внешней памяти. Для этого:
1) Переключите 4 пин блока переключателей SW6 в положение OFF.
2) Загрузите вашу программу утилитой mc-ploader с опцией --prom
3) Переключите 4 пин блока переключателей SW6 в положение ON.
4) Нажмите Reset
При старте с внешней памяти автоматически будут сконфигурированы на альтернативную функцию необходимые ножки процессора и произведена необходимая настройка регистров MCFG, а именно произойдет следующее:
Конфигурация альтернативных функций:
s_gpiob_bp <= x"ffffffff" when (s_start_addr = "10" and i_en_ipr = '0') or s_start_addr = "01" else x"00000000";
s_gpiod_bp <= x"ffffffff" when (s_start_addr = "10" and i_prom_width = "10" and i_en_ipr = '0') or s_start_addr = "01" else
x"ffff0000" when s_start_addr = "10" and i_prom_width = "01" and i_en_ipr = '0' else
x"ff000000" when s_start_addr = "10" and i_prom_width = "00" and i_en_ipr = '0' else
x"00000000";
s_gpioe_bp <= x"0c00ffff" when s_start_addr = "01" else
x"083b0000" when s_start_addr = "10" and i_en_ipr = '0' else
x"00000000";
А в MCFG1 согласно документации (Руководство по применению сложно-функциональных блоков "GAISLER" Стр. 831) производится следующая запись:
Memory configuration register 1 (MCFG1)
During power-up, the prom width (bits [9:8]) are set with value on MEMI.BWIDTH inputs. The prom
waitstates fields are set to 15 (maximum). External bus error and bus ready are disabled. All other
fields are undefined.
Flash память будет доступна начиная с адреса 0x40000000.
Для работы с SRAM достаточно произвести следующие настройки:
B := getl 0x3FFFFF
D := getl 0xFFFFFFFF
C := getl 0x1D4200&(~0x10000)
E := getl 0xF111
V := getl 0x1C2F
wrl @B, GPIOB_BPS
wrl @D, GPIOD_BPS
wrl @C, GPIOC_BPS
wrl @E, GPIOE_BPS
wrl @V, MCFG2
Обращаю особое внимание на то, что допустимы только 32 битные обращения на запись, 64 битные будут обрезаны, 8 и 16 битные дополнены неопределенными данными. После проведения всех настроек SRAM будет доступна по адресу 0x20000000.
Примера по работе с SDRAM в настоящее время не подготовлено, потому что в реализуемых нами проектах с R1 SDRAM до настоящего времени не применялся.
Изменено: Multiclet, 14 ноября 2016 - 09:38