- 論壇徽章:
- 0
|
本帖最后由 xs3c 于 2010-11-16 15:07 編輯
謝謝版主的回答,可能我描述的不是太清楚。
通過查看powerpc部分的代碼中發(fā)現(xiàn)iowrite16調(diào)用writew 而writew在asm-generic/io.h中定義為
#define writew(b,addr) __raw_writew(__cpu_to_le16(b),addr
所以認(rèn)為linux 只是powerpc下都是輸出都是默認(rèn)小端。也就是輸出到數(shù)據(jù)線上的數(shù)據(jù)已經(jīng)同__cpu_to_le16轉(zhuǎn)換了。
那么我的第一個(gè)問題就是 :硬件連接的時(shí)候,是否就應(yīng)該按照處理器是小端的方式將處理器的數(shù)據(jù)線與外設(shè)的數(shù)據(jù)線連接?
第二個(gè)問題: 那么處理器是小端的話那么數(shù)據(jù)線與外設(shè)的數(shù)據(jù)線連接。是否
cpu bit0 ---------bit15
外設(shè) bit0 ---------bit15
而大端處理器要是linux中沒有做__cpu_to_le16的轉(zhuǎn)換工作,數(shù)據(jù)線的連接是否是應(yīng)該:
cpu bit0-------bit15
外設(shè) bit15------bit0。
以上是我的理解,請(qǐng)教各位大俠是否正確?
這所以有上面的問題,是我在調(diào)試一個(gè)網(wǎng)卡驅(qū)動(dòng)的時(shí)候,板子是powerpc配置大端,網(wǎng)卡芯片寄存器是小端, 驅(qū)動(dòng)程序里面原來直接用ioread16 iowrite16。結(jié)果發(fā)現(xiàn)設(shè)置的寄存器值剛好是大小端反的。 |
|