EDK中資料大小端的問題

2021-04-19 07:02:37 字數 337 閱讀 1167

edk在軟體往自定義ip核my_ip中的暫存器slv_reg0()寫資料時,存在乙個大小端的問題。

也就是:edk中寫my_ip_mwrite(baseadress,offset,0x00000001)時,從硬體的vreilog的user_logic看來,他的slv_reg0(31)=1,其他的資料位均為0,即0x80000000。這是因為edk在從匯流排到ip核暫存器的過程中自動實現了乙個位數的反轉。

如果我們將slv_regreverse(i)=slv_reg0(31-i),則slv_regreverse()中的資料位與我edk中的位數完全一致,我寫0x00000001,slv_regreverse=0x00000001。

資料大小端問題

假如有乙個4位元組的資料為 0x12 34 56 78 十 進製 305419896 0x12為高位元組,0x78為低位元組 若將其存放於位址0x4000 8000,則有 記憶體中乙個每乙個位址用四個位元組表示 32位系統中 每乙個位址裡面存放乙個位元組 記憶體位址 0x4000 8000 低位址 ...

arduino 大小端資料問題

arduino資料的儲存方式是小端的,除錯了兩天的程式,終於發現這個問題了。下面說一下發現問題的過程 首先我定義了乙個結構體,用來接收串列埠傳送來的資料,串列埠傳送來的資料首先放到陣列中,再強制轉換成結構體型別,定義結構體的意義就在於我想實現一種自定義的協議。協議如下 命令頭 命令長度 資料長度 命...

大小端問題

對於位數大於 8位的處理器,例如 16位或者 32位的處理器,由於暫存器寬度大於乙個位元組,那麼必然存在著乙個如果將多個位元組安排的問題。因此就導致了大端儲存模式和小端儲存模式。例如乙個 16bit 的short型x 在記憶體中的位址為 0x0010,x 的值為0x1122 那麼0x11 為高位元組...