有關(guān)ARM9:Machine ID問題總結(jié)
要選擇上S3C2410這個(gè)選項(xiàng)。說是如果不選擇這個(gè),編譯會(huì)出錯(cuò)、或者不通過??墒谴蠹矣袥]有考慮這是為什么?我要做的是S3C2440的我為什么要選擇2410的啊~帶著這個(gè)疑問。我將其根源找到~~下面帶大家來瞧瞧這個(gè)東西。
本文引用地址:http://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)行添加。麻煩的要命。
這樣就可以了~~~~
評(píng)論