新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 有關(guān)ARM9:Machine ID問題總結(jié)

有關(guān)ARM9:Machine ID問題總結(jié)

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

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

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

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

S3C2410的ID是0xc1 s3c2440的ID是0x7cf(這里我要說明一下,我在啟動(dòng)內(nèi)核的時(shí)候上面顯示的是這個(gè),有的是0x16A)

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

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

mov r1,#0xc1

如果要是S3C2440的話,你要是添加mov r1,0x7cf那么編譯會(huì)報(bào)錯(cuò)。

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

所以這里稍有不同:

mov r1,0xcf

orr r1, r1,#0x700

這樣既可,這樣啟動(dòng)的時(shí)候就不會(huì)停留在:

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

這樣你所添加的程序驅(qū)動(dòng)都可以添加到/arch/arm/mach-s3c2440/mach-smdk2440.c這里了。之前我選S3C2410的時(shí)候我還需要向/arch/arm/mach-s3c2410/mach-smdk2410.c這里進(jìn)行添加。麻煩的要命。

這樣就可以了~~~~



關(guān)鍵詞: ARM9MachineI

評(píng)論


技術(shù)專區(qū)

關(guān)閉