- 论坛徽章:
- 0
|
本帖最后由 xs3c 于 2010-11-16 15:07 编辑
谢谢版主的回答,可能我描述的不是太清楚。
通过查看powerpc部分的代码中发现iowrite16调用writew 而writew在asm-generic/io.h中定义为
#define writew(b,addr) __raw_writew(__cpu_to_le16(b),addr
所以认为linux 只是powerpc下都是输出都是默认小端。也就是输出到数据线上的数据已经同__cpu_to_le16转换了。
那么我的第一个问题就是 :硬件连接的时候,是否就应该按照处理器是小端的方式将处理器的数据线与外设的数据线连接?
第二个问题: 那么处理器是小端的话那么数据线与外设的数据线连接。是否
cpu bit0 ---------bit15
外设 bit0 ---------bit15
而大端处理器要是linux中没有做__cpu_to_le16的转换工作,数据线的连接是否是应该:
cpu bit0-------bit15
外设 bit15------bit0。
以上是我的理解,请教各位大侠是否正确?
这所以有上面的问题,是我在调试一个网卡驱动的时候,板子是powerpc配置大端,网卡芯片寄存器是小端, 驱动程序里面原来直接用ioread16 iowrite16。结果发现设置的寄存器值刚好是大小端反的。 |
|