[問題] Big/Little Endian平台的Porting

看板LinuxDev作者 (洛奇拉)時間13年前 (2012/10/19 00:41), 編輯推噓2(202)
留言4則, 4人參與, 最新討論串1/1
想請問各位前輩 如果需要將一個Embedded System (Linux)包含在上面跑的APP 由Little Endian CPU的平台, Porting到Big Endian CPU的平台, 我的認知是 要用支援Big Endian的ToolChain, 將Linux以及也支援Big Endian的Library, 編譯出Big-Endian版本的Limux, 想請問的是 1.是否Linux上的Driver 以及在上面執行的APP也需要修改成Big-Endian版本? 2.或是其實程式是否需要修改 也是要看當初程式的寫法以及用途? 例如 直接存取記憶體的地方 就可能需要修改? 3.還有什麼特別需要注意的地方? 目前網路上能搜尋到關於porting的資料實在很少,希望有經驗的前輩能指點一下 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 1.164.11.184 ※ 編輯: rokira 來自: 1.164.11.184 (10/19 00:43)

10/19 08:33, , 1F
有用到bit shift的地方你都要注意..
10/19 08:33, 1F

10/20 09:53, , 2F
資料轉型也要注意,例如將char *轉成int *的情況
10/20 09:53, 2F

10/20 10:30, , 3F
kernel有對應平台endian的函式,呼叫他就可以跨平台使用
10/20 10:30, 3F

10/24 01:21, , 4F
應該是bit field這類的data structure影響最大..
10/24 01:21, 4F
文章代碼(AID): #1GW34bl_ (LinuxDev)
文章代碼(AID): #1GW34bl_ (LinuxDev)