Jump to content
    

Eskobar

Новичок
  • Posts

    3
  • Joined

  • Last visited

Everything posted by Eskobar


  1. Да пытаюсь написать свой загрузчик. Способы какие находил на форуме слишком громоздкие) Как еще можно запускать проц из срам, копируя из флеш?
  2. Здравствуйте. Пытаюсь реализовать запуск 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 объединяю друг за другом и преобразую в бинарник, который зашиваю во флешку После сброса питания загружается только аппаратная часть, ниос не хочет стартовать. Где мог накосячить или чего не дописать? Проект запускается, если зашивать его на прямую в срам
  3. Здравствуйте. Изучаю как создавать свои собственные компоненты в 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? Читал спецификацию на этот авалон интерфейс так и не понял как он устанавливается
×
×
  • Create New...