2.6.14在海成的arm开发板移植成功
更新时间:2023-05-30 05:19:01 阅读量: 实用文档 文档下载
- 2.6.14找规律推荐度:
- 相关推荐
arm开发
linux2.6.14在海成的arm开发板移植成功(小寿原创)
##########################################################
一、配置编译环境:
(我们采用linux2.6.14内核,交叉编译器3.4.1)
#########################################################
1.解压linux-2.6.14的内核;
在解压的文件夹根目录执行#make menuconfig 结果没有出现s3c2410的选项,原因很简单是因为没有指定平台体系;
我们可以打开Makefile,找到ARCH与CROSS_COMPILE,修改为
ARCH ?= arm
CROSS_COMPILE ?= arm-linux-
现在我们再执行#make menuconfig 或者 #make xconfig 可以看到system type:-> arm system type:->samsung s3c2410 哈哈!看到了!(搞定)
下一步我准备设定一下交叉编译环境,主要是系统的搜索路径(可以搜索我们的arm-linux-gcc、、、),解决中。。。。。。。。。。。。。。。
哈哈;搜索路径也包括进去了!
是这个样子做得!!!
首先是将我们交叉编译链解压到 /usr/local/arm/3.4.1;
接着我们 将交叉编译工具路径和内核路径加入环境变量
#vi ~/.bashrc
export KERNEL=/home/admin/linux-2.6.14.1
export PATH=/usr/local/arm/3.4.1/bin:$PATH
保存文件,然后执行
#exit
#su
接着我们可以测试一下;执行
#arm-linux-gcc -v
我们可以看到:
Reading specs from /usr/local/arm/3.4.1/lib/gcc/arm-linux/3.4.1/specs
Configured with: /work/crosstool-0.27/build/arm-linux/gcc-3.4.1-glibc-2.3.2/gcc-3.4.1/configure --target=arm-linux --host=i686-host_pc-linux-gnu --prefix=/usr/local/arm/3.4.1 --with-headers=/usr/local/arm/3.4.1/arm-linux/include --with-local-prefix=/usr/local/arm/3.4.1/arm-linux --disable-nls --enable-threads=posix --enable-symvers=gnu --enable-__cxa_atexit --enable-languages=c,c++ --enable-shared --enable-c99 --enable-long-long
Thread model: posix
gcc version 3.4.1
我们还可以看看我们的系统的gcc的版本;
执行#gcc -v
可以看到:
gcc version 3.4.4 20050721 (Red Hat 3.4.4-1mgc)
我们还可以看看
#echo $kernel
看到:/home/admin/linux-2.6.14.1
证明了我们设定的搜索路径已经生效了!
#######################################################################
二、交叉编译内核
#######################################################################
一、设置flash分区
指明分区信息
在arch/arm/machs3c2410/devs.c文件中:
$kate arch/arm/machs3c2410/devs.c
添加如下内容:
#include <linux/mtd/partitions.h>
#include <linux/mtd/nand.h>
#include <asm/arch/nand.h>
...
/* NAND Controller */
1.建立Nand Flash分区表
/* 一个Nand Flash总共64MB, 按如下大小进行分区 */
static struct mtd_partition partition_info[] ={
{/*xxMB*/
name: " vivi",
size: 0x00020000,
offset: 0x0,
},{ /*xxMB */
name: "param ",
size: 0x00010000,
offset: 0x00020000,
},{ /*xxMB */
name: " kernel",
size: 0x00140000,
arm开发
offset: 0x00030000,
},{ /*xxMB */
name: " root",
size: 0x00300000,
offset: 0x00170000,
}
};
name: 代表分区名字
size: 代表flash分区大小(单位:字节)
offset: 代表flash分区的起始地址(相对于0x0的偏移)
目标板计划分4个区,分别存放vivi,param, kernel, root以及以便以后扩展使用的用户文件系统空间(以后再添加)。
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
注意: bootloader(vivi)中的分区必须和此处分区以致!
如何实现:1.我们可以修改vivi的源代码(vivi/arch/s3c2410/smdk.c)中的分区信息。
2.在超级终端中启动vivi再进行分区,如:part add kernel <offset> < size > <flag>
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
2. 加入Nand Flash分区
struct s3c2410_nand_set nandset ={
nr_partitions: 4, /* the number of partitions */
partitions: partition_info, /* partition table */
};
nr_partitions: 指明partition_info中定义的分区数目
partitions: 分区信息表
3. 建立Nand Flash芯片支持
struct s3c2410_platform_nand xiaoshou_nand={
tacls:0,
twrph0:30,
twrph1:0,
sets: &nandset,
nr_sets: 1,
};
tacls, twrph0, twrph1的意思见S3C2410手册的63,
这3个值最后会被设置到NFCONF中,见S3C2410手册66.
sets: 支持的分区集
nr_set:分区集的个数
4. 加入Nand Flash芯片支持到Nand Flash驱动
另外,还要修改此文件中的s3c_device_nand结构体变量,添加对dev成员的赋值
struct platform_device s3c_device_nand = {
.name = "s3c2410nand",
/* 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 */
//########add here#########
.dev = {
.platform_data = &xiaoshou_nand
}
//#######add end###########
};
name: 设备名称
id: 有效设备编号,如果只有唯一的一个设备为1,
有多个设备从0开始计数.
num_resource: 有几个寄存器区
resource: 寄存器区数组首地址
dev: 支持的Nand Flash设备
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
注意:这四处添加的内容在文件里的位置必须是从上到下依次的,
否则编译的时候会提示你说,变量没声明
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
二、指定启动时初始化
kernel启动时依据我们对分区的设置进行初始配置
修改arch/arm/machs3c2410/machsmdk2410.c文件
#kate arch/arm/machs3c2410/machsmdk2410.c
修改smdk2410_devices[].指明初始化时包括我们在前面所设置的flash分区信息
static struct platform_device *smdk2410_devices[] __initdata = {
&s3c_device_usb,
&s3c_
device_lcd,
&s3c_device_wdt,
&s3c_device_i2c,
&s3c_device_iis,
/* 添加如下语句即可 */
&s3c_device_nand,
};
保存,退出。
三、 禁止Flash ECC
arm开发
校验
我们的内核都是通过UBOOT写到Nand Flash的, UBOOT通过的软件ECC算法产生ECC校验码, 这与内核校验的ECC码不一样, 内核中的ECC码是由S3C2410中Nand Flash控制器产生的. 所以, 我们在这里选择禁止内核ECC校验.
修改drivers/mtd/nand/s3c2410.c 文件:
#kate drivers/mtd/nand/s3c2410.c
找到s3c2410_nand_init_chip()函数,在该函数体最后加上一条语句:
chip->eccmode = NAND_ECC_NONE;
保存,退出。
OK.我们的关于flash分区的设置全部完工.
################################################################################## edit /include/linux/mtd/partitions.h
partitions.h文件的最前面加上#include <linux/list.h>
##################################################################################
四、配置内核
1. 支持启动时挂载devfs
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
我使用的2.6.14内核中已经配置好这部分了,所以不用做,
如果没有可以按照下面的步骤进行。
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
为了我们的内核支持devfs以及在启动时并在/sbin/init运行之前能自动挂载/dev为devfs文件系统,修改
fs/Kconfig文件
# vi 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
2.配置内核产生.config文件
$cp arch/arm/configs/smdk2410_defconfig .config
$make menuconfig
在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
#说明:mtdblock2代表我的第3个flash分区,它是我的rootfs
# console=ttySAC0,115200使kernel启动期间的信息全部输出到串口0上.
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
注意:此处我添加的启动命令是:
console=ttySCA0 root=/dev/nfs nfsroot=192.168.0.1:/dm2410/root ip=192.168.0.230:192.168.0.1:192.168.0.1:255.255.255.0::eth0:off init=linuxrc
因为我要通过NFS来mount根文件系统。(不过因为还没移植网卡驱动所以不能启动,等下一节移植完网卡就可以了,哈哈)!
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 2.6内核对于串口的命名改为ttySAC0,但这不影响用户空间的串口编程。
# 用户空间的串口编程针对的仍是/dev/ttyS0等
Floating point emulation >
[*] NWFPE math emulation
This is necessary to run
most binaries!!!
#接下来要做的是对内核MTD子系统的设置
Device Drivers >
Memory Technology Devices (MTD) >
[*] MTD partitioning support
#支持MTD分区,这样我们在
arm开发
前面设置的分区才有意义
[*] 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
#接下来做的是针对文件系统的设置,不过已经在nfs服务搭建的时候建好了根文件系统了,/dm2410/root
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
Network File Systems >
<*> NFS file system support
保存退出,产生.config文件.
.config文件能从提供的2.4.14.1的内核包中找到,文件名为config.back.
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
注意:很重要的一件事情!
必须将 arch/arm/kernel/setup.c 文件中的parse_tag_cmdline()函数中的strlcpy()函数注释掉,这样才能使用我们CONFIG_CMDLINE中定义的
console=ttySCA0 root=/dev/nfs nfsroot=192.168.0.1:/dm2410/root ip=192.168.0.230:192.168.0.1:192.168.0.1:255.255.255.0::eth0:off init=linuxrc
否则:将不会启动内核!!!!!!!哈哈!!
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
注意:此时如果编译的话应该可以在开发板上启动内核,不过不能启动网卡,因为还没移植,哈哈!
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
amp;&&&&&&&&&&&&&&&&&&&&&&&&&&&
正在阅读:
2.6.14在海成的arm开发板移植成功05-30
泰安市工程监理廉政责任书08-19
水污染控制工程课程设计范例05-10
西湖作文350字06-23
2003-2006年北京理工大学分析化学考研真题 - 图文10-08
最好的养生是:对家人和颜悦色08-02
对公司产品研发体系和管理制度进一步深化改革的意见09050606-24
2012年经济师考试-中级建筑专业-考前模拟试卷C10-22
浅析知识产权保护的经济效果 205-19
2016考研英语阅读终极通关之态度题05-24
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 海成
- 移植
- 成功
- 开发
- 2.6
- arm
- 14
- 消防安全自查报告及整改措施之欧阳学文创作
- 基于ZigBee无线传感器网络的森林火灾监测系统
- 新时代交互英语视听说3答案
- 2013~2014学年第一学期 心理健康工作计划
- 18版高中数学第一章常用逻辑用语3.1全称量词与全称命题3.2存在量词与特称命题学案北师大版选修1_1
- 武汉建通市政工程有限公司不服洪山区法院裁定申请复议一案执行裁定书
- 会计学复习题及答案
- 喷雾干燥技术在PVC糊树脂生产中的应用
- 团课之团的基本知识篇
- 镍铝层状双氢氧化物正极锌镍电池充放电性能
- 四年级音乐《土风舞》教案
- 以股权为基础的薪酬制度
- 专利申请文件翻译
- 高中政治哲学框架图
- 柔远卫生院健康宁夏全民行动目标责任书
- 七、八年级期末试卷分析与七、八年级英语教学建议
- 贵州省中小学专题教育综合读本四年级全册教案
- 中国产业用纺织品现状
- 论渝东南民族地区新农村建设的法制保障
- 湖南生物机电职业技术学院