LINUX 移植到ARM s3c2410
### Linux 2.6.14 内核移植到 S3C2410 的详细步骤 #### 一、概述 本篇文章将详细介绍如何将 Linux 2.6.14 内核移植到 S3C2410 开发板上。S3C2410 是一款基于 ARM920T 内核的应用处理器,被广泛应用于嵌入式系统开发领域。本文主要分为几个部分:修改内核配置文件、设置 Flash 分区、配置 NAND Flash 支持以及禁用 Flash ECC 校验。 #### 二、准备工作 在开始移植工作之前,请确保已准备好以下工具和环境: - **目标硬件**:S3C2410 开发板。 - **内存**:2 × HY57V561620 (32MB),共 64MB SDRAM。 - **闪存**:K9F1208 (64MB) NAND Flash。 - **网络**:CS8900 网络控制器。 - **主机操作系统**:Fedora Core 6。 - **交叉编译器**:gcc-4.1.1 / arm-linux-gcc-3.4.1。 #### 三、内核移植 接下来是具体的移植步骤。 ##### 1. 修改 Makefile 文件 打开 `linux-2.6.14` 目录下的 `Makefile` 文件,并进行如下修改: ```c ARCH?=arm CROSS_COMPILE?=/usr/local/arm/3.4.1/bin/arm-linux- ``` 这里的 `/usr/local/arm/3.4.1/bin/arm-linux-` 需要替换为你的实际交叉编译器路径。 ##### 2. 设置 Flash 分区 接下来,需要在 `arch/arm/mach-s3c2410/devs.c` 文件中设置 NAND Flash 的分区。 - **添加头文件**:在文件开头添加以下头文件: ```c #include <linux/mtd/partitions.h> #include <linux/mtd/nand.h> #include <asm/arch/nand.h> ``` - **建立分区表**:接着,根据 NAND Flash 的容量创建分区表。例如,假设整个 NAND Flash 容量为 64MB,则可以按照以下方式划分: ```c 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 芯片支持**:创建 NAND Flash 芯片的支持结构体: ```c struct s3c2410_nand_set nandset = { .nr_partitions = 4, .partitions = partition_info, }; struct s3c2410_platform_nand superlpplatform = { .tacls = 0, .twrph0 = 30, .twrph1 = 0, .sets = &nandset, .nr_sets = 1, }; ``` 其中,`tacls`, `twrph0`, 和 `twrph1` 的值参考 S3C2410 手册第 63 页。这些值最终会设置到 `NFCONF` 中,具体见 S3C2410 手册第 66 页。 - **加入 NAND Flash 设备**:修改 `s3c_device_nand` 结构体变量,添加对 `dev` 成员的赋值: ```c struct platform_device s3c_device_nand = { .name = "s3c2410-nand", .id = -1, .num_resources = ARRAY_SIZE(s3c_nand_resource), .resource = s3c_nand_resource, /* 添加 NAND Flash 设备 */ .dev = { .platform_data = &superlpplatform } }; ``` - **指定启动时初始化**:在 `arch/arm/mach-s3c2410/mach-smdk2410.c` 文件中找到 `platform_device *smdk2410_devices[]__initdata` 函数,并在其最后添加: ```c &s3c_device_nand, ``` ##### 3. 禁用 Flash ECC 校验 由于 NAND Flash 默认启用了 ECC 校验,可能会影响性能,因此可以通过以下方式禁用它。 - **修改 ECC 模式**:打开 `drivers/mtd/nand/s3c2410.c` 文件,并找到: ```c chip->eccmode = NAND_ECC_SOFT; ``` 将其更改为: ```c chip->eccmode = NAND_ECC_NONE; ``` ##### 4. 支持启动挂载 devfs 为了支持 devfs 文件系统,需要在 `fs/Kconfig` 文件中添加相应选项。具体做法是在 `menu "Pseudofilesystems"` 下添加: ```c config DEVFS_FS bool "devfs" ``` #### 四、总结 通过以上步骤,你可以成功地将 Linux 2.6.14 内核移植到 S3C2410 平台上。在整个过程中,需要注意细节处理,确保每个步骤都正确无误。此外,还需要注意检查 NAND Flash 的参数设置是否符合实际情况,以免出现兼容性问题。完成移植后,就可以在 S3C2410 上运行 Linux 系统并进行进一步的开发工作了。
剩余29页未读,继续阅读
- 粉丝: 1
- 资源: 6
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- MATLAB程序:多个无人船 协同围捕控制算法 3船围捕控制,围捕运动船只 可以仿真多个船之间的距离以及距离目标船的距离,特别适合学习、参考
- 树苗自动播种机sw22可编辑全套技术资料100%好用.zip
- FX3U的定位和气缸的FB块,没有密码,可以随便直接调用修改 写法新颖,思路清晰,是敩习FB块很好的范 例
- Java教务信息管理系统(eclipse+MySQL)源码+文档说明
- 6个电池均衡,buckboost电路,精度高,均衡速度快
- 四代磁芯机sw13可编辑全套技术资料100%好用.zip
- 上下料滚筒线sw18可编辑全套技术资料100%好用.zip
- MATLAB环境下一种改进的变分模态分解方法 算法可迁移至金融时间序列,地震 微震信号,机械振动信号,声发射信号,电压 电流信号,语音信号,声信号,生理信号(ECG,EEG,EMG)等信号
- 异步电机矢量控制 foc 转子磁场定向控制 是三套异步foc,可以对应学习,有相应的Word文档说明 控制效果很好
- 塑料链板输送机sw16可编辑全套技术资料100%好用.zip
- 塑胶卡簧装配机sw11可编辑全套技术资料100%好用.zip
- 全方位讲解三菱Q系列QD173H、QD170运动控制器, 是事频,共25个小时的事频讲解,非常详细 需要特殊播放器播放,一机一码,必须电脑本地播放,看清楚再拿哦 Q系列运动控制器是比较高级的内容,专
- Java学生信息管理系统(eclipse+MySQL)源码+文档说明+报告
- 混合动力汽车基于规则的能量管理策略,结果如图,包含CRUISE整车模型,控制策略
- 四柱印刷机sw18可编辑全套技术资料100%好用.zip
- java学生信息管理系统代码+数据库+实验报告