新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 有關ARM9:Machine ID問題總結

有關ARM9:Machine ID問題總結

作者: 時間:2016-11-10 來源:網絡 收藏
最近在做一個Android for Linux內核的移植,準備其移植到S3C2440中。在網上多數遇到移植的都是S3C2410,就算是有S3C2440的,也都沒能把所有的東西詳盡說明一下,只是你看看我的移植,我看看你的移植。有的地方不對的。也沒有做深入的研究。比如說在內核的配置上。很多網友們都提出來在配置內核的時候要選上:

要選擇上S3C2410這個選項。說是如果不選擇這個,編譯會出錯、或者不通過??墒谴蠹矣袥]有考慮這是為什么?我要做的是S3C2440的我為什么要選擇2410的啊~帶著這個疑問。我將其根源找到~~下面帶大家來瞧瞧這個東西。

本文引用地址:http://butianyuan.cn/article/201611/317168.htm

在啟動代碼我用的是uboot,在進行傳參數給內核的時候,會把cpu的ID 傳遞給內核。但是在uboot中這個ID 是由uboot編譯的時候自動生成的。我覺得這個ID還是可以更改的,目前不準備繼續(xù)研究這個問題。這里假設是固定生成的!

S3C2410的ID是0xc1 s3c2440的ID是0x7cf(這里我要說明一下,我在啟動內核的時候上面顯示的是這個,有的是0x16A)

這樣需要在內核文件的arch/arm/kernel/head.S文件中做一個修改:

如果是S3C2410 那么需要添加的是

mov r1,#0xc1

如果要是S3C2440的話,你要是添加mov r1,0x7cf那么編譯會報錯。

下面需要讓你填寫的要多一條語句,由于mov指令只能傳遞char型的也就是8位二進制數

所以這里稍有不同:

mov r1,0xcf

orr r1, r1,#0x700

這樣既可,這樣啟動的時候就不會停留在:

Uncompressing Linux................................................................................................................................... done, booting the kernel.

這樣你所添加的程序驅動都可以添加到/arch/arm/mach-s3c2440/mach-smdk2440.c這里了。之前我選S3C2410的時候我還需要向/arch/arm/mach-s3c2410/mach-smdk2410.c這里進行添加。麻煩的要命。

這樣就可以了~~~~



關鍵詞: ARM9MachineI

評論


技術專區(qū)

關閉