TARGET
CPU: S3C2410X
SDRAM: HY57V561620(32MB) × 2
FLASH: K9F1208(64MB)
NET: CS8900
HOST
Linux Realse Version: Fecora Core 6
CrossCompiler: gcc-4.1.1/arm-linux-gcc-3.4.1
一、内核移植(2.6.14)
1 修改linux2.6.14下面的makefile文件
找到ARCH和CROSS_COMPILE,修改
ARCH ?= arm
CROSS_COMPILE ?= /usr/local/arm/3.4.1/bin/arm-linux-
(此处为你交叉编译的路径)
2 设置flash分区
在arch/arm/machs3c2410/devs.c文件中添加头文件
#include #include #include 然后建立分区表 /* 一个Nand Flash总共64MB, 按如下大小进行分区 分区大小自己看着办*/ static struct mtd_partition partition_info[] ={ { /* 1MB */ name: "bootloader", size: 0x00100000, offset: 0x0, },{ /* 3MB */ name: "kernel", size: 0x00300000, offset: 0x00100000, }, { /* 40MB */ name: "root", size: 0x02800000, offset: 0x00400000, }, { /* 20MB */ name: "user", size: 0x00f00000, offset: 0x02d00000, } }; /*加入Nand Flash分区*/ struct s3c2410_nand_set nandset ={ nr_partitions: 4, /*指明partition_info中定义的分区数目*/ partitions: partition_info, /* partition table分区信息表*/ }; /*建立Nand Flash芯片支持*/ struct s3c2410_platform_nand superlpplatform={ tacls:0, twrph0:30, twrph1:0, sets: &nandset, nr_sets: 1, }; tacls, twrph0, twrph1的意思见S3C2410手册的63, 这3个值最后会被设置到NFCONF中,见S3C2410手册66. sets: 支持的分区集 nr_set:分区集的个数 /*加入Nand Flash芯片支持到Nand Flash驱动 另外,还要修改此文件中的s3c_device_nand结构体变量,添加对dev成员的赋值*/ struct platform_device s3c_device_nand = { .name = "s3c2410-nand", /* Device name */ .id = -1, /* Device ID */ .num_resources = ARRAY_SIZE(s3c_nand_resource), .resource = s3c_nand_resource, /* Nand Flash Controller Registers */ /* Add the Nand Flash device */ .dev = { .platform_data = &superlpplatform } }; 指定启动时初始化 arch/arm/machs-3c2410/mach-smdk2410.c文件 找到platform_device *smdk2410_devices[] __initdata函数,在该函数体最后加上一条语句: &s3c_device_nand, 禁用禁止Flash ECC校验(有不同说法) 修改drivers/mtd/nand/s3c2410.c 找到chip->eccmode = NAND_ECC_SOFT; 改为chip->eccmode = NAND_ECC_NONE; 支持启动挂载devfs 修改fs/Kconfig文件 找到menu "Pseudo filesystems" 添加 config DEVFS_FS bool "/dev file system support (OBSOLETE)" default y config DEVFS_MOUNT bool "Automatically mount at boot" default y depends on DEVFS_FS 3 Yaffs2文件系统支持 下载yaffs2.tar.gz源码包,解压源码,并进入目录执行 #./patch-ker.sh c /linux-2.6.14.1/ 注:假定内核源码在/linux-2.6.14.1/ 4 编译配置内核,首先先load一个默认的内核/linux-2.6.14/arch/arm/configs/smdk2410_defconfig,在这个配置文件上改 Loadable module support > [*] Enable loadable module support [*] Automatic kernel module loading System Type > [*] S3C2410 DMA support Boot options > Default kernel command string: noinitrd root=/dev/mtdblock2 init=/linuxrc console=ttySAC0,115200 Floating point emulation > [*] NWFPE math emulation Device Drivers > Memory Technology Devices (MTD) > [*] MTD partitioning support #支持MTD分区,这样我们在前面设置的分区才有意义 [*] Command line partition table parsing #支持从命令行设置flash分区信息,灵活 RAM/ROM/Flash chip drivers > <*> Detect flash chips by Common Flash Interface (CFI) probe <*> Detect nonCFI AMD/JEDECcompatible flash chips <*> Support for Intel/Sharp flash chips <*> Support for AMD/Fujitsu flash chips <*> Support for ROM chips in bus mapping NAND Flash Device Drivers > <*> NAND Device Support <*> NAND Flash support for S3C2410/S3C2440 SoC Character devices > [*] Nonstandard serial port support [*] S3C2410 RTC Driver File systems > <> Second extended fs support #去除对ext2的支持 Pseudo filesystems > [*] /proc file system support [*] Virtual memory file system support (former shm fs) [*] /dev file system support (OBSOLETE) [*] Automatically mount at boot (NEW) #这里会看到我们前先修改fs/Kconfig的成果,devfs已经被支持上了 Miscellaneous filesystems > <*> Compressed ROM file system support (cramfs) #支持cramfs <*> YAFFS2 file system support #支持yaffs2 Network File Systems > <*> NFS file system support 二、CS8900网卡驱动的移植 1 cs8900.c和cs8900.h放到/drivers/net/arm/ 2 在cs8900.c中的cs8900_probe()函数中,memset (&priv,0,sizeof (cs8900_t));函数之后添加如下两条语句: __raw_writel(0x2211d110,S3C2410_BWSCON); __raw_writel(0x1f7c,S3C2410_BANKCON3); 添加头文件#include 3 修改drivers/net/arm/目录下的Kconfig文件,在最后添加如下内容: config ARM_CS8900 tristate "CS8900 support" depends on NET_ETHERNET && ARM && ARCH_SMDK2410 help 4 修改drivers/net/arm/目录下的Makefile文件,在最后添加如下内容: obj-$(CONFIG_ARM_CS8900) += cs8900.o 5 在/arch/arm/mach-s3c2410/mach-smdk2410.c文件中,找到smdk2410_iodesc[]结构数组,添加如下如下内容:{vSMDK2410_ETH_IO, 0x19000000, SZ_1M, MT_DEVICE} 添加头文件#inlcude
上一篇:初试mini2440 nandflash驱动移植
下一篇:S3C2440A串口驱动-WINCE6.0下通过串口和外设进行数据通信(一)
推荐阅读





推荐帖子
- 工控工程师群70677754——交流开发经验,解决工程难题,寻找合作机会,非专业人士勿入。
- 工控设计群——70677754,非高手莫进,加入请写明水平及方向。 本群以交流开发经验,解决工程难题,寻找合作机会为目标。 欢迎热爱工控事业的工程师们入群 51,ARM,DSP Keilc,Proteus. Linux.RTOS.网络 机器视觉 运动控制工控工程师群70677754——交流开发经验,解决工程难题,寻找合作机会,非专业人士勿入。
-
yang_0799
嵌入式系统
- 磁性组件部分笔记
- NOTE:以上2-5项可由实测变压器最大工作电压,来判定MarginTape实际最小宽度。磁性组件部分笔记
-
czf0408
LED专区
- 有能进行多路输出的控制芯片吗(大概5-6路)
- 现在做一个系统,需要多种电压,但苦于找不到合适的芯片,系统是5v和锂电池供电的,有了解的给说一下了,谢谢了 有能进行多路输出的控制芯片吗(大概5-6路)
-
liuzhiying666
电源技术
- 微波组件的制造技术
- 摘要:介绍了用于相控阵雷达的微波组件,论述微波组件在相控阵雷达中的地位及应用,阐述了微波组件制造技术的重要性\"并提出了在加工!组装!调试等过程中的一些关键技术和采取的有效方法\"微波组件的制造技术
-
JasonYoo
嵌入式系统
- 关于CPLD分频后波形问题
- 我是CPLD的初学者最近在做分频试验用EPM240的最小系统板外接50M的晶振产生10M和5M的信号用示波器测得的波形有点类似于正弦波产生500K的信号波形就是方波不过上边沿有点毛刺仿真的时候没什么问题实在是不懂问题出在哪里求大师指点关于CPLD分频后波形问题
-
363758470
FPGA/CPLD
- 【ST NUCLEO-U575ZI-Q 测评 】GPIOG端口点灯问题
- 本帖最后由qinyunti于2022-12-1513:47编辑 有网友在问为什么PG2点不亮,这是介绍下,因为PG2使用VDDIO2需要单独配置其VDDIO2电源.需要先使能VDDIO2,注意在PWR配置前需要先使能PWR时钟。LL_AHB3_GRP1_EnableClock(LL_AHB3_GRP1_PERIPH_PWR);HAL_PWREx_EnableVddIO2();HAL_PWREx_ConfigSupply(PWR_SMPS_SUPPLY);先要PW
-
qinyunti
stm32/stm8