RobFPGA
Apr 9 2008, 12:35
Приветствую!
В систему на базе EowerPC EDK добавил свой контроллер flash памяти (фактически слегка измененый xps_epc). В железе работает, но EDK не понимает что это контроллер flash.
Как указать для EDK что это контроллер памяти, то есть чтоб он появлялся как секция доступной памяти при генерации скрипта для линковки ?
Успехов! Rob.
Вы хотите его использовать как контроллер памяти программы?
RobFPGA
Apr 9 2008, 14:30
Приветствую!
Да. Хочу туда bootloader свой поместить.
Успехов! Rob.
По идее для того чтобы устройству можно было присвоить адреса, достаточно чтобы в .mpd файле было прописано к какого типа шине оно подключается и базовые адреса, например для xps_epc:
BUS_INTERFACE BUS = SPLB, BUS_STD = PLBV46, BUS_TYPE = SLAVE
PARAMETER C_PRH0_BASEADDR = 0xffffffff, DT = std_logic_vector, BUS = SPLB, ADDRESS = BASE, PAIR = C_PRH0_HIGHADDR, ISVALID = (C_NUM_PERIPHERALS>=1), ASSIGNMENT = REQUIRE
PARAMETER C_PRH0_HIGHADDR = 0x00000000, DT = std_logic_vector, BUS = SPLB, ADDRESS = HIGH, PAIR = C_PRH0_BASEADDR, ISVALID = (C_NUM_PERIPHERALS>=1), ASSIGNMENT = REQUIRE
RobFPGA
Apr 18 2008, 10:49
Приветствую!
Увы - все это уже есть. Фактически я использую стандартный xps_epc с небольшим изменением во внешнем инерфейсе. EDK считает что xps_epc это контроллер переферии и там не может распологатся память. Если ручками подправить файл линковки - то проблем нет, но хочется понять как EDK понимает что корка представляет собой именно блок памяти. Неужели только по имени корки ? Например если в поект не включить стандартную корку контроллера flash памяти то не доступна опция програмирования flash из EDK.
Успехов! Rob.
Почитай Platform Specification Format Reference Manual (у меня 10.1 EDK)
ADDR_TYPE
The ADDR_TYPE keyword identifies an address parameter of a defined memory class. The keyword is expressed in the following format:
PARAMETER C_BASEADDR=0xFFFFFFFF, MIN_SIZE=0x2000, ADDR_TYPE=REGISTER
ADDR_TYPE Values
BRIDGE - Address window on the bridge. An address of this type
is forwarded to the bus which is slave to the bridge.
MEMORY - Address window on the memory controller. An address
of this type points to a storage memory, such as SDRAM,
DDR, FLASH, or BRAM.
REGISTER - Address of its own registers. An address of this type points
to registers in the peripheral. These could be status,
control, data registers, or some
Вот пример:
PARAMETER C_MEM0_BASEADDR = 0xffffffff, DT = std_logic_vector, BUS = SPLB, ADDRESS = BASE, PAIR = C_MEM0_HIGHADDR, ADDR_TYPE = MEMORY,
PARAMETER C_MEM0_HIGHADDR = 0x00000000, DT = std_logic_vector, BUS = SPLB, ADDRESS = HIGH, PAIR = C_MEM0_BASEADDR, ADDR_TYPE = MEMORY
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.