酷!學園

技術討論區 => Embedded 討論版 => 主題作者是: aaronwong 於 2007-06-23 19:34

主題: 關于big-endian,little-endian的问题(lib, OS, CPU)
作者: aaronwong2007-06-23 19:34
big-endian和little-endian是指CPU在内存中对字节的存取顺序吧。
今天为xscale編譯toolchain,突然被一些问题所困惑,希望大虾解答:
(1)一個CPU芯片是不是只能支持一种endian方式?例如PXA270中的xscale核心只支持little-endian,那么是不是所有的程序(包括操作系统在内)都必须编译成little-endian才能在PXA270上正确运行呢?
(2)库文件是一些目标文件.o的集合,那么是否也要編譯成CPU所支持的endian格式呢?例如PXA270支持little-endian,是否要把glibc編譯為little-endian格式?
(3)在HOWTO build arm-linux toolchain for ARM/XSCALE (http://ftp.snapgear.org/pub/snapgear/tools/arm-linux/build-arm-linux-3.4.4)以及Howto make the GCC big endian toolchain for IXP2400/Linux (ARM XScale
core)  (http://www.linux-france.org/~dmentre/doc/en/ixp2400-linux-toolchain-howto.txt)中編譯了little-endian和big-endian兩個版本的glibc,如果xscale只支持little-endian的話,那么為甚么還要編譯一個big-endian的glibc呢?還是說也有支持big-endian的xscale核心?
(4)network order是与b ig-endian一致的,那么在little-endian的CPU上進行网路傳輸時,操作系統(embedded linux)是否有一段代碼自動進行endian轉換呢?
謝謝指點!!!
主題: 關于big-endian,little-endian的问题(lib, OS, CPU)
作者: leeg2007-06-23 23:59
1. IXP4XX就可以支援Big & Little-endian. 當系統bootup時, 藉由接腳的設定來決定運行的模式為big or little.
2. 是的
3. ixp400 系列就可以兩種模式都支持.
4. 是的! 你可以參考noth() & hton() 這兩個系統函式
主題: 關于big-endian,little-endian的问题(lib, OS, CPU)
作者: aaronwong2007-06-24 01:22
非常感謝leeg的解答!
這樣的話我就明白了。