linux-2.6.32移植到qq2440开发板手册

虚 拟 机: RedHat 9.0
交叉编译器: arm-linux-gcc-4.3.2
开 发 板: QQ2440V3
本次移植用到的内核源码包为: linux-2.6.32.2-mini2440-20110413.tar.gz
1.修改顶层的 Makefile
ARCH ?= arm
CROSS_COMPILE ?= arm-linux-2.由于本人用的是 X35 的屏,故要支持 X35 ,修改
linux-2.6.32.2/drivers/video/Kconfig
config FB_S3C2410_X240320
boolean"3.5 inch 240X320 SONY LCD (X35-ACX502BMU) "
depends on FB_S3C2410
help
3.5 inch 240X320 SONY LCD (X35-ACX502BMU)
然后, make menuconfig,
选中 3.5 inch 240X320 SONY LCD (X35-ACX502BMU)这一项。
3.移植 CS8900 网卡
首先在 drivers/net 目录下创建一个 cs8900 目录,然后将 cs8900.c
cs8900.h 复制到 drivers/net/cs8900 目录下,然后在
arch/arm/mach-s3c2410/include/mach/map.h 文件中添加如下内容:
#define pSMDK2410_ETH_IO __phys_to_pfn(0x19000000)
#define vSMDK2410_ETH_IO 0xE0000000
#define SMDK2410_EHT_IRQ IRQ_EINT9
arch/arm/mach-s3c2440/mach-mini2440.c static struct map_desc
mini2440_iodesc[]
__initdata{};的花括号里添加如下内容(包括花括号)
{
.virtual = vSMDK2410_ETH_IO,
.pfn = __phys_to_pfn(S3C2410_CS3 + (1<<24)),
.length = SZ_1M,
.type = MT_DEVICE,
}
drivers/net/cs8900/Kconfig 文件中加入
config ARM_CS8900
tristate "CS8900 support"
depends on ARM || ARCH_SMDK2410 || MACH_MINI2440
help
Support for CS8900A chipset based Ethernet cards. If you
have
a network (Ethernet) card of this type, say Y and read the
Ethernet-HOWTO, available from
<http://www.tldp.org/docs.html#howto>as well as .
drivers/net/Makefile 中加入
obj-$(CONFIG_ARM_CS8900) += cs8900.o
drivers/net/Kconfig 中加入
source “drivers/net/cs8900/Kconfig”
drivers/net/Makefile 中加入
obj-$(CONFIG_ARM_CS8900) += cs8900/
然后 make menuconfig,选中 CS8900 support,去掉 DM9000 support.
4.make zImage 出现如下问题
drivers/net/cs8900/cs8900.c:399: error: implicit declaration of
function 'netdev_mc_empty'
drivers/net/cs8900/cs8900.c: In function 'cs8900_probe':
drivers/net/cs8900/cs8900.c:489: warning: too many arguments for
format
make[3]: *** [drivers/net/cs8900/cs8900.o] 错误 1
make[2]: *** [drivers/net/cs8900] 错误 2
make[1]: *** [drivers/net] 错误 2
make: *** [drivers] 错误 2
出现 implicit declaration of function 后,最有可能是没有头文件或是根本
没有定义‘ netdev_mc_empty’,用 source insight 查找其定义的地方,根本没
有找到,因此,直接把它屏蔽掉
if ((dev->flags & IFF_ALLMULTI) )//&& !netdev_mc_empty(dev))


猜你喜欢

转载自blog.csdn.net/u011727389/article/details/45825149