历史上的今天
今天是:2024年08月26日(星期一)
2021年08月26日 | 内核(2.6.14) + 根文件系统 +Qtopia Core 4移植 for S3C2410
2021-08-26 来源:eefocus
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
史海拾趣
|
本人一直是做上层应用程序的开发,对底层一无所知,现在公司需要,我必须转入WinCE网卡驱动方面的开发(尤其是NDIS),或者是Windows网卡驱动方面的开发(我想应该能逐类旁通),对我来说可以说是从零开始学起,请教各位大大,我该从哪学起,再学什么?告诉我历 ...… 查看全部问答> |
|
概述 在广泛的应用中,由于现场逻辑更新的前所未有的灵活性,它为设计者提供了修正错误、应对不断变化的标准,升级设备和添加其他服务的特性,现场逻辑更新的重要性不断增加。同时在越来越多的应用中,要求系统能够在99.999 %的时间内运行。莱 ...… 查看全部问答> |
|
最近一直想熟悉下STM32的开发环境,包括程序的烧写调试之类的,对STM32过分苛刻,希望在外部flash调试运行代码。但是实际上,这样做的速度极慢。 这样做也失去了STM32作为 MCU的优势,工程应用上是不会这么用的,诚如大侠说所想要大的存储空 ...… 查看全部问答> |
|
同时使用4个中断 定时器中断、内部中断、SPI中断、外部中断,IMR=? 始终进不了外部中断 内部中断的中断标志位值乱跑。。。。 [ 本帖最后由 zdhsteven 于 2013-4-26 22:51 编辑 ]… 查看全部问答> |
|
本帖最后由 autodash 于 2014-1-28 18:29 编辑 今天测试LPC800 mini kit CRP读保护的时候,写入CRP2(0x87654321),然后 下载完,悲剧了,ISP不能再用了,难道这个芯片就这样挂了??实在不甘心,那位有解决放方法,十分 ...… 查看全部问答> |




