Здравствуйте. Пытаюсь реализовать запуск Nios из внешней SSRAM.
Есть загрузчик, который инициализирует On-Chip Memory. Вектор сброса указан на эту память, вектор исключений на внешнюю срам.
#define LOAD_ADR 0x0007315D
#define START_ADR 0x002001BC
#define FLASH_SECTOR_SIZE 65536
#define FLASH_SECTOR_READ 6
#define FLASH_ADR FLASH_BASE + FLASH_REGISTER_OFFSET
void (*AppStartP)();
void *SSRAM_p;
int main()
{
SSRAM_p = (void *)SSRAM_BASE;
while (1)
{
AppStartP = (void *)START_ADR;
SSRAM_p = (void *)SSRAM_BASE;
epcs_read_buffer(FLASH_ADR, LOAD_ADR, (alt_u8 *)(SSRAM_p + 0x20), FLASH_SECTOR_SIZE*FLASH_SECTOR_READ - 0x20, 0);
alt_dcache_flush_all ();
alt_icache_flush_all ();
alt_irq_disable_all ();
AppStartP();
}
return 0;
}
LOAD_ADR - адрес начала программы ниоса
START_ADR - адрес старта из objdump
sof и elf объединяю друг за другом и преобразую в бинарник, который зашиваю во флешку
После сброса питания загружается только аппаратная часть, ниос не хочет стартовать. Где мог накосячить или чего не дописать?
Проект запускается, если зашивать его на прямую в срам
Здравствуйте. Изучаю как создавать свои собственные компоненты в Qsys и немного недопонимаю как обращаться к своим компонентам по интерфейсу Avalon через Nios
К примеру есть такой кусок кода описания компонента на Verilog
module my_comp
(
input wire clk,
input wire reset,
input wire avalon_slave_write,
input wire [1 : 0] avalon_slave_address,
output reg [31 : 0] avalon_slave_readdata
);
reg a = 32'd10;
reg b = 32'd20;
reg c = 32'd30;
reg d = 32'd40;
always @(posedge clk) begin
if (avalon_slave_write) begin
case (avalon_slave_address)
2'b00: avalon_slave_readdata <= a;
2'b01: avalon_slave_readdata <= b;
2'b10: avalon_slave_readdata <= c;
2'b11: avalon_slave_readdata <= d;
endcase
end
end
endmodule
Чтобы считать эти данные с моего компонента использую макрос IORD_32DIRECT(MY_COMP_0_BASE, 0)
И тут я немного туплю, как правильно читать данные и задавать адрес (avalon_slave_address) к какому регистру я обращаюсь?
И каким образом задавать строб avalon_slave_write? Читал спецификацию на этот авалон интерфейс так и не понял как он устанавливается