微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 有关ARM9:Machine ID问题总结

有关ARM9:Machine ID问题总结

时间:11-10 来源:互联网 点击:
最近在做一个Android for Linux内核的移植,准备其移植到S3C2440中。在网上多数遇到移植的都是S3C2410,就算是有S3C2440的,也都没能把所有的东西详尽说明一下,只是你看看我的移植,我看看你的移植。有的地方不对的。也没有做深入的研究。比如说在内核的配置上。很多网友们都提出来在配置内核的时候要选上:

要选择上S3C2410这个选项。说是如果不选择这个,编译会出错、或者不通过。可是大家有没有考虑这是为什么?我要做的是S3C2440的我为什么要选择2410的啊~带着这个疑问。我将其根源找到~~下面带大家来瞧瞧这个东西。

在启动代码我用的是uboot,在进行传参数给内核的时候,会把cpu的ID 传递给内核。但是在uboot中这个ID 是由uboot编译的时候自动生成的。我觉得这个ID还是可以更改的,目前不准备继续研究这个问题。这里假设是固定生成的!

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这里进行添加。麻烦的要命。

这样就可以了~~~~

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top