Linux-2.6.14内核在S3C2410上的移植

发布者:平凡的梦想最新更新时间:2016-11-27 来源: eefocus关键字:Linux-2.6.14内核  S3C2410  移植 手机看文章 扫描二维码
随时随地手机看文章

 2.4内核由于本身并不支持2410,移植起来较为烦琐,所以直接上2.6的版本.
1.准备工作
    下载解压交叉编译工具,2.6的内核编译要用3.4.1版本的(arm-linux-gcc-3.4.1)ftp://ftp.handhelds.org/projects/toolchain/arm-linux-gcc-3.4.1.tar.bz2
    下载解压2.6.14.1内核 ftp://ftp.kernel.org/pub/linux/kernel/v2.6/ .
    之前文章已经说明不再赘述.
2.Flash分区管理

    启动开发板,进入vivi,查看vivi的分区信息.

    分区信息如下所示:

分区

起始地址

分区大小

分区作用

Part0

0x0

0x00020000 (128k)

bootloader

Part1

0x00020000

0x00010000 (64k)

bootloader params

Part2

0x00030000

0x001c0000 (1m+768k)

linux kernel

Part3

0x00200000

0x00400000 (4m)

root filesystem

Part4

0x00600000

0x03a00000 (58m)

usr filesystem

    根据实际需要也可相应的更改分区表.
3.修改Makefile

       #vi Makefile

       找到ARCH与CROSS_COMPILE,修改为

       ARCH ?= arm

       CROSS_COMPILE ?= /usr/local/arm/3.4.1/bin/arm-linux-
4.将Flash分区信息加入内核

#vi arch/arm/mach-s3c2410/devs.c

添加头文件:

        #include

#include

#include

添加分区结构:

        static struct mtd_partition partition_info[]={
                {name:"bootloader",
                offset:0,
                size: 0x00020000,},

                {name:"param",
                offset:0x00020000,
                size:0x00010000,},

                {name:"kernel",
                offset:0x00030000,
                size:0x001c0000,},

                {name:"root",
                offset:0x00200000,
                size:0x00400000,},

                {name:"usr",
                offset:0x00600000,
                size:0x03a00000,}
        };


struct s3c2410_nand_set nandset={

                     nr_partitions: 5,                          //分区数量

                     partitions: partition_info,             //分区表

};

struct s3c2410_platform_nand superlpplatform={

       //NAND Flash芯片支持

       //参数意义可参考S3C2410手册

                     tacls: 0,

                     twrph0: 30,

                     twrph1: 0,

                     sets: &nandset,

                     nr_sets: 1,

};

  修改s3c_device_nand,以加入NAND Flash驱动:

              struct platform_device s3c_device_nand = {

                     .name = "s3c2410-nand",      //设备名称

                     .id = -1, //有效设备编号,-1表示唯一设备

                     .num_resources = ARRAY_SIZE(s3c_nand_resource),   //寄存器区的个数

                     .resource = s3c_nand_resource,     //寄存器区的首地址

                     //添加如下信息,表示NAND Flash设备

       .dev={

                            .platform_data=&superlpplatform

                     }

};
5.指定启动时的设备初始化

       #vi arch/arm/mach-s3c2410/mach-smdk2410.c

       修改:

       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,

};

6.禁止Flash ECC效验

内核通过vivi把数据写入NAND Flash,而vivi的ECC效验算法和内核的不同,内核的效验码是由NAND Flash控制器产生的,所以在此必须禁用NAND Flash ECC。

#vi drivers/mtd/nand/s3c2410.c

找到s3c2410_nand_init_chip函数,加入chip->eccmode的值为:

NAND_ECC_NONE

7.内核配置与编译

为了我们的内核支持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
配置内核:

#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/mtdblock3 init=/linuxrc console=ttySAC0,115200
#说明:mtdblock2代表我的第3个flash分区,它是我的rootfs
# console=ttySAC0,115200使kernel启动期间的信息全部输出到串口0上.
# 2.6内核对于串口的命名改为ttySAC0,但这不影响用户空间的串口编程。
# 用户空间的串口编程针对的仍是/dev/ttyS0等
Floating point emulation >
[*] NWFPE math emulation
This is necessary to run most binaries!!!

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
Network File Systems >
 <*> NFS file system support

 

编译内核:
#make zImage

8.加载内核
vivi>load flash kernel t
修改vivi启动参数:

vivi>param set linux_cmd_line “noinitrd root=/dev/mtdblock/3 init=/linuxrc console=ttySAC0,115200”

vivi>param save


关键字:Linux-2.6.14内核  S3C2410  移植 引用地址:Linux-2.6.14内核在S3C2410上的移植

上一篇:NandFlash读写过程
下一篇:基于斯道S3C2410的Linux内核编译

推荐阅读最新更新时间:2024-03-16 15:22

S3c2410裸板程序入门---串口
流水灯跑起来了,是不是有点小兴奋,一鼓作气再来玩玩其他的,用PC机写程序,出了问题可以用perror等打印出信息,给调试带来了很大方便,可是板子上没有显示屏,没法打印怎么办?这次就写一个通过串口向PC机串口调试终端打印信息的小程序,方便以后的调试。串口通信的基本知识就不说了哈,网上很多的,直接上代码: uart.c 1 #include s3c2410.h 2 3 void uart_sendchar(char a) 4 { 5 if(a == 'n'){ 6 while( !(UTRSTAT0 & (0x1 2)) ); 7 UTXH0 = 'r'; 8
[单片机]
基于S3C6410处理器的U-Boot SD卡启动的移植分析与功能
通用Bootloader(Universal Bootloader,U-Boot)是系统上电后执行的第一段代码,其作用主要包括初始化硬件环境以及加载执行操作系统内核。在进行系统安装时,U-Boot通常需要使用专用工具烧写到FLASH中,内核及文件系统则通过U-Boot命令进行烧写,该过程操作繁琐,并且容易出错,不适宜系统的大量安装。 S3C6410是三星公司生产的一款基于ARM11架构的通用嵌入式处理器,其启动方式除了传统的Flash启动模式外,还支持从SD 卡中启动系统。本文基于S3C6410处理器,分析了从SD卡启动系统的原理,并对U-Boot源码进行修改以支持该启动方式,在此基础上进一步扩展了U-Boot的功能,使其
[单片机]
基于S3C6410处理器的U-Boot SD卡启动的<font color='red'>移植</font>分析与功能
TQ2440移植u-boot-2010.06-rc1---1调试的思路
硬件: 开发板: TQ2440 仿真器: openJtag 软件: 系统: XP + vmware虚拟ubuntu_10.10 编译: ubuntu_10.10下/opt/EmbedSky/crosstools_3.4.5_softfloat/gcc-3.4.5-glibc-2.3.6/arm-linux/bin/ 调试环境: XP + eclipse + OpenOCD_GUI u-boot版本: u-boot-2010.06-rc1 一. 调试环境 用openjtag调试与烧到nand_flash中运行基本相同,就是有两点不一样: 一是跳过了memory初始化过程 二是跳过了从flash中读取数据到内存
[单片机]
ucos在s3c2410上运行过程整体剖析-从加电到执行main函数
先说明一下在加电之前的这个软硬件情况,这个三星公司根据ARM920T软核生产的这个s3c2410集成了64M的sdram和64M的nandflash存储器。Vivi和UCOS都存储在这个nandflash中,因为nandflash断电后不会丢失信息。这个VIVI是三星公公司为ARM系列芯片书写的bootloader,用于开发阶段,做系统的引导程序。 VIVI存放在flash 0x00000000地址开始的地方,UCOS存放在flash 0x03f30000地址开始的地方。ARM920T开机从flash启动,启动时把flash前4K (即vivi的前4K)COPY到SDRAM(这种启动方式是利用Nandflash启动,COPY前4K
[单片机]
嵌入式实时操作系统ECOS在S3C2510上的移植实现
摘 要: 本文介绍了实时操作系统ECOS的特点及基本结构,并具体研究了ECOS在三星公司以ARM940T为内核的S3C2510嵌入式芯片上的移植方法。文章着重讨论了移植过程中的重点与难点部分:ECOS的硬件抽象层(HAL)移植。该移植方案已经过实际测试,系统稳定可靠,可运行多任务式应用程序。 关键词:实时操作系统;ECOS;硬件抽象层;移植;ARM 引言 ECOS(Embedded Configurable Operating System,嵌入式可配置操作系统)是一种针对16位、32位和64位处理器的可移植嵌入式实时操作系统。由于其源代码是公开的,因而有越来越多的设计人员开始关注ECOS操作系统。ECOS最大的特点是模块化,内
[嵌入式]
u-boot移植(九)---代码修改---NAND
一、NAND原理      NAND 无地址空间,地址和数据的发送都依赖于LDATA 这一串数据总线。      不看随机页编程,看到从高位到低位的页,总共分为64个页面,每个页的组成是2K + 64 个byte,一个块的大小是(128K + 4K)byte,64页组成一块。 1.1 NAND Flash的编址   nand flash的的页的大小是(2048 + 64)byte,64这个数据是不参与编址的。   访问 nand flash: 发出命令:读、写、擦除 发出地址 传输数据   命令设置如下:    1.2 nand flash的访问      可以看看上面的模式选择,然后对应引脚进行操作,就
[单片机]
u-boot<font color='red'>移植</font>(九)---代码修改---NAND
NFC会是下一个被移植到汽车上的技术?
    当汽车成为电子行业最为重要的细分市场之后,很多技术都被慢慢移植到汽车之上,下一个会是谁?        在跟电子行业的朋友聊天时,车云菌常能听到这种论调:“俺这个行业都日薄西山了,也就是汽车拯救了俺们。”且不论电子行业是否真的日薄西山,但是汽车,确实已经成为它们一个相当重要的细分市场。很多企业都十分努力在汽车行业找到看家本领的第二春。     比如说HUD(抬头显示),虽说现在HUD在汽车上还并没有普及开来,只在一些中高端车型上才有搭载,但是在很多概念性技术和概念车上,HUD的存在已然让人习惯。那么,下一个会被移植到汽车上的技术会是什么呢?            美国工程师协会(SAE)最近的一篇文章中认为,NFC
[汽车电子]
基于S3C2410开发板的U-BOOT移植解决方案
引言 随着嵌入式系统的日趋复杂,它对大容量数据存储的需求越来越紧迫。而嵌入式设备低功耗、小体积以及低成本的要求,使硬盘无法得到广泛的应用。NAND闪存设备就是为了满足这种需求而迅速发展起来的。目前关于U-BOOT的移植解决方案主要面向的是微处理器中的NOR 闪存,如果能在微处理器上的NAND 闪存中实现U-BOOT的启动,则会给实际应用带来极大的方便。 U-BOOT简介 U-BOOT 支持ARM、 PowerPC等多种架构的处理器,也支持Linux、NetBSD和VxWorks等多种操作系统,主要用来开发嵌入式系统初始化代码bootloader。bootloader是芯片复位后进入操作系统之前执行的一段代码,完成由硬件启动到操
[单片机]
基于<font color='red'>S3C2410</font>开发板的U-BOOT<font color='red'>移植</font>解决方案
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved