通常我在microblaze上面常用的custom
ip都是從SDK寫入address與data
,這邊紀錄從SDK讀reg的值
其他詳細步驟可以複習這篇
建立一個名為IO_REG_TEST的local
pcore帶四個register,設定兩個REG為IN,兩個為OUT
在io_reg_test.vhd中加入
在user_logic中
在mpd中
在VHDL中寫入會被SDK讀出的值,還有SDK寫入的值繞到LED上方便驗證
在SDK中把讀出來的值寫入,用LED來驗證,注意需另外加入xil_io.h
也可以用指標的方式來寫入IO
void reg_write(u32 reg_address, u32 data) { *(volatile u32*)reg_address = data; xil_printf("reg_write (0x%08x) 0x%08x\n\r", reg_address, data); } u32 reg_read(u32 reg_address) { dbg_printf("reg_read (0x%08x) ", reg_address); u32 data = *(volatile u32*)reg_address; dbg_printf(" 0x%08x\n\r", data); return data; } |
OR
u32 volatile *ADDRESS_NAME = (u32 volatile *)(0xADDRESS); *ADDRESS_NAME = DATA |
沒有留言:
張貼留言