Linux内核在S3C2410上移植的研究

发布者:快乐兔子最新更新时间:2012-09-13 来源: 山西电子技术 关键字:Linux内核  S3C2410  移植 手机看文章 扫描二维码
随时随地手机看文章

    嵌入式系统就是以应用为中心,以计算机技术为基础的软、硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。Linux操作系统是一种性能优良、源码公开且被广泛应用的免费操作系统,由于其体积小,可裁减,运行速度高等优点,因此可以作为研究嵌入式操作系统和非实时操作系统的典范。EL-ARM-830+型教学实验系统是一种综合的教学实验系统,该系统采用了ARM92 0T核,32位微处理器,实现了多模块的应用实验。在实验板上有丰富的外围扩展资源,可以完成ARM的基础实验、算法实验和数据通信实验、以太网实验。

1 Linux的实验环境搭建
1.1 Redhat9.0操作系统的安装
    安装Redhat9.0前,先把串口配置好,这是建立Linux系统和试验箱之间的串口通信。配置完以后在启动Linux系统时点击全屏,这样做的目的是让Linux系统占取网络资源。点击VM→setting在弹出的窗口点击左下角的Add按钮,此时选择serial Port,依次点击“下一步”,直到配置完串口。
1.2 配置NFS网络文件系统
    首先在Linux主机的终端上执行setup,弹出菜单界面后,选中Firewall configuration,回车,进入系统服务选项菜单,选择no firew all关闭防火墙(如果安装了防火墙),按空格键就会选中,然后退出。但是,setup里面会照样显示防火墙设置是high的,这个可以不必理会。之后选中System services,回车,进入系统服务选项菜单,在其中选中[*]nfs,然后按F12键退出,再选择方向键,退出setup界面,返回到命令提示符下。利用编辑器打开/etc/exports文件(输入命令vi/etc/exports),按A进入文本输入模式,将这个默认的空文件修改为只有如下一行内容:
    /(rw)
    /home/nfs
    然后,保存退出(按ESC键进入命令模式,输入:进入到最后行模式,输入wq!保存退出),之后改变目录到/etc/rc.d/init.d/下(输入命令cd/etc/rc.d/init.d/),执行如下命令:
    ./nfs start
    终端内输出:
    Starting NFS services:[确定]
    Starting NFS quotas:[确定]
    Starting NFS daemon:[确定]
    Starting NFS mountd:[确定]
    (1)安装交叉编译器。打开Linux系统下的终端,在里面输入命令cd/linuette/RPMS/改变目录到/linuette/RPMS下,输入如下命令:
    #rpm-UVh*.rpm
    等待系统安装,如果所有的RPMS内的文件全部正确安装,将会在根目录下的/opt文件夹内生成一个host文件夹,交叉编译库就在该目录下,到此交叉编译环境就搭建好了。
    (2)用交叉网线连接主机和实验系统。在Linux的开始菜单里启动终端,在终端[root@localhost root]#minicom-s回车,按S键选择Seri al Port setup回车,弹出串行口设置界面,按A键编辑Serial Device:/dev/ttys0回车;按E键,再按I键,回车,选择为Bps/Par/Bit s:115200 8N1回车;按F键,选择Hardware Flow Control:No。设置完后回车,然后用上下选择键,选中Modem and dialing,将Initstri ng,Reset string,Hang-up string设置为空,再选中Save setup as df1这一项,回车,保存为默认的配置,下次进入minicom时就不用再设置了。用上下选择键选中Exit回车退出设置,进入minicom。
    (3)Linux系统下网络设置。点击左下角的小红帽,选择系统设置一网络,然后双击设备eth0的蓝色区域,进入以太网设置界面,在静态设置IP地址栏下面输入与宿主机一个网段的IP地址、网关及子网掩码,确定后激活网络设备。
    (4)Ping通主机和实验系统。在minicom下,给系统上电,系统正常起来后,利用ifconfig eth0 xxx.xxx.xxx.xxx来改变实验系统的IP地址,让该地址的前三段和主机的前三段一致,最后的一段,可以选择与主机不重复的小于255的任意值。利用mount命令,挂载主机的nfs系统下的共享目录。
    利用命令chmod 777/home/nfs改变/home/nfs文件夹的属性,让其变为可读可写,输入mount-onolock 192.168.0.1:/home/n fs/mnt/yaffs回车,即可完成把主机上的/home/nfs下的文件挂载到实验系统的/mnt/yaffs目录下。

2 BootLoder引导程序的移植
    在嵌入式系统中,BootLoader的作用与PC机上的BIOS类似,通过.BootlLoader可以完成对系统板上的主要部件如CPU,SDRAM,FLASH、串行口等进行初始化,也可以下载文件到系统板上,对FLASH进行擦除与编程。当运行操作系统时,它会在操作系统内核运行之前运行,通过它,可以分配内存空间的映射,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统准备好正确的环境。因此,正确建立Linux移植的前提条件是具备一个与Linux配套、易于使用的Boot Loader,它能够正确完成硬件系统的初始化和Linux的引导。
    系统使用的BootLoader是VIVI。VIVI是CPU加电后运行的第一段程序,其基本功能是初始化硬件设备,建立内存空问的映射图,从而为调用嵌入式Linux内核做好准备。为能够实现正确引导Linux系统的运行,以及当编译完内核后,快速下载内核和文件系统,VIVI首先通过串口下载内核和文件系统,当系统正常运行起来后,网络驱动正常运行后,VIVI就通过网口下载内核和文件系统。同时,它也具有功能较为完善的命令集,对系统的软硬件资源进行合理的配置与管理。[page]

    当上电或复位后,VIVI启动,位于NANDFLASH中的前4 KB程序便从NANDFLASH中由S3C2410自动拷贝到一个叫SteppingStone的4 KB的内部RAM中,该RAM之后被映射到地址0x00处。此时,也就是VIVI前4 KB代码开始运行,进行第一阶段的硬件初始化,主要工作为:关Watchdog Timer,关中断,初始化PLL和时钟主频设定,初始化存储器控制器。VIVI初始化的主要内容:
    VIVI初始化阶段一(在/arch/s3C2410/head.s文件内):
    硬件初始化
    配置串口
    复制自身到SDRAM中(跳转到C代码入口函数)
    VIVI初始化阶段二(在/init/main.c文件内):
    对硬件系统继续初始化
    内存映射初始化、内存管理单元MMU初始化
    初始化堆
    初始化mtd设备
    初始化私有数据
    初始化内置命令
    启动VIVI

3 Linux内核的移植
3.1 内核移植
    实验系统运行的Linux版本是针对2.4.18进行移植的Linux-2.4.18.-rm7-pxal版本。本实验是把该移植好的内核,让它如何在自己的硬件系统上正常的运转起来。
    Linux内核主要由5个子系统组成:进程调度子系统、进程间通信子系统、内存管理子系统、虚拟文件系统子系统、网络接口子系统。
    (1)设置目标平台和指定交叉编译器:在最上层的根目录/Makefile文件中,首先要指定所移植的硬件平台,以及所使用的交叉编译器。改为如下:
    ARCH:=arm
    CROSS_COMPILE=/opt/host/armv41/bin/armv41-unknown-Linux-
    也就是说,所移植的硬件平台是ARM,所使用的交叉编译器是存放在目录/opt/host/armv41/bin/下的armv41-unknown-Linux-xxx等工具。
    (2)arch/arm目录下Makefile修改。系统的启动代码是通过这个文件产生的。在Linux-2.4.18内核中要添加如下代码:
    ifeq(MYM(CONFIG_ARCH_S3C2410),y)
    TEXTADDR =0 xC0008000
    MACHINE =s3c2410
    endif
    这里TEXTADDR确定内核开始运行的虚拟地址。
    (3)arch/arm目录下config.in修改。配置文件config.in能够配置运行“make menuconfig”命令时的菜单选项,由于2.4.18内核中没有S3C2410的相关信息,所以要在该文件中进行有效的配置。
    (4)arch/arm/boot目录下Makefile修改。编译出来的内核存放在该目录下,这里指定内核解压到实际硬件系统上的物理地址。要根据实际的硬件系统修改解压后,内核开始运行实际的物理地址。
    (5)arch/arm/boot/compressed目录下Makefile修改。该文件从vmLinux中创建一个压缩的vmlinuz镜像文件。该文件中用到的SYSTE M,ZTEXTADDR,ZBSSADDR和ZRELADDR是从arch/arm/boot/Makefile文件中得到的。添加如下代码:
    ifeq(MYM(CONFIG_ARCH_S3C2410),y)
    OBJS+=head-s3c2410.o
    Endif
    (6)arch/arm/boot/compressed目录下添加head-s3c2410.s。该文件主要用来初始化处理器。
    (7)arch/arm/def-configs目录下添加配置好的S3C2410的配置文件。
    (8)arch/arm/kernel目录下Makefile修改。该文件主要用来确定文件类型的依赖关系。
    (9)arch/arm/kernel目录下的文件debug-armv.s修改。在该文件中添加如下代码,目的是关闭外围设备的时钟,以保证系统正常运行。
    (10)arch/arm/kernel目录下的文件entry-armv.s修改,CPU初始化时处理中断的汇编代码。
    (11)arch/arm/ram目录下的相关文件。那里面则是移植好的有关arm的内存管理代码。
    (12)arch/arm/mach-s3c2410目录下的相关文件。
    那里面则是针对s3c2410这款处理器编写的所需代码。
3.2 制作cramfs文件系统
    利用工具软件MKCRAMFS制作cramfs文件系统,MKCRAMFS工具在/实验软件/tools/目录下,该文件系统是一个只读压缩的文件系统,文件系统类型可以是ext2,ext3等。这里提供的一个系统目录是root_tech,它里面包含将来要用到的所有文件,它在/实验软件/source_ code/的目录内,为root.tar.bz2。把制作工具和root_tech放在同一个文件夹下并对root.tar.bz2进行解压,在终端下切换到那个文件夹目录下使用命令MKCRAMFS root_tech rootfs.cramfs,就可把root_tech制作成文件名为rootfs.cramfs的只读的压缩的cramfs文件系统了。系统启动后,内核将把它加载到内存中,解压。

4 结语
    本文针对一个特定的目标平台,提供了构建一个基本嵌入式Linux系统的过程与方法。对Linux 2.4内核版本进行裁减、移植,编译生成的内核在S3C2410处理器的目标板上成功运行,且保留了Linux原有的工作稳定的特点。将Linux操作系统移植于嵌入式系统中作为嵌入式系统的底层研发平台是一个复杂的问题,移植后系统的实时性、稳定性、安全性和精简程度等方面问题还需要在以后的设计中进一步研究。
关键字:Linux内核  S3C2410  移植 引用地址:Linux内核在S3C2410上移植的研究

上一篇:基于S3C2410处理器的移动电子邮件终端介绍
下一篇:Windows CE.NET在S3C2410处理器上的移植简介

推荐阅读最新更新时间:2024-03-16 13:08

龙芯Arch Linux版系统发布:1万个x86软件轻松移植
作为100%国产自主的芯片指令集,龙芯的龙架构不仅自己的硬件体系,OS系统上也在加快生态发展,日前龙架构Arch Linux发行版结束beta,正式支持龙架构,并且移植了1万多款x86平台软件。据龙芯介绍,2021年龙芯公司为方便开发、测试补丁,在向上游社区提交补丁的过程中,将Arch Linux移植到龙架构平台。 后续随着使用Arch Linux的用户不断增加,龙芯也持续进行维护和开发,先后发布了alpha版本(2021.07)、beta1版本(2022.03)、beta2版本(2022.09)。 从beta2版本开始,Arch Linux及时跟踪、集成上游的最新移植成果,采用滚动更新的方式为用户推送升级。 近日龙架构Ar
[嵌入式]
龙芯Arch Linux版系统发布:1万个x86软件轻松<font color='red'>移植</font>
移植Lua到ARM平台
Lua是一门很小巧的语言,为保证良好的可移植性,Lua使用ANSI C编写。因此Lua的移植灰常简单,只需要使用正确的交叉编译器就好了。 本文介绍如何将Lua移植到ARM平台,分x个步骤,并使用如下环境: 1. 操作系统:Ubunt10.04 2. 交叉编译器:arm-linux-gcc 4.3.2版本(如果你不知道怎么搭建交叉编译环境,可以参考我的另一篇文章: http://hi.baidu.com/hqwfreefly/blog/item/8364fed7b3f58dc950da4b5f.html ) 3.Lua5.1版本源码 移植步骤: 1下载Lua源代码: http://www.lua.org/versions.h
[单片机]
<font color='red'>移植</font>Lua到ARM平台
基于linux-2.6.19内核的小型Linux系统制作移植
  引言   ARM9S3C2410微处理器与Linux的结合越来越紧密,逐渐在嵌入式领域得到广范的应用。目前,在便携式消费类电子产品、无线设备、汽车、网络、存储产品等都可以看到S3C2410与Linux相结合的身影。   S3C2410微处理器是一款由Samsung公司为手持终端设计的低价格、低功耗、高性能,基于ARM920T核的微处理器。它带有内存管理单元(MMU),采用0.18mm工艺和AMBA新型总线结构,主频可达203MHz。同时,它支持Thumb 16位压缩指令集,从而能以较小的存储空间获得32位的系统性能。   在众多嵌入式操作系统中,Linux目前发展最快、应用最为广泛 。性能优良、源码开放的Linux具有体
[单片机]
ARM中gtk的移植
#主机安装gettext libglib2.0-dev sudo apt-get install gettext libglib2.0-dev export PREFIX=/gtkdfb& #install glib2.16 echo ac_cv_type_long_long=yes arm-none-linux-gnueabi.cache& echo glib_cv_stack_grows=no arm-none-linux-gnueabi.cache& echo glib_cv_uscore=no arm-none-linux-gnueabi.cache& echo ac_cv_func_posix_getpwuid_r=
[单片机]
移植2.6.30.4到MINI2440
移植2.6.30.4到MINI2440上锻炼一下自己 这篇学习笔记以失败为基础向前推进~ 重点在于如何发现问题和解决问题的方法,因为我硬件基础还不足,所以像DM9000这样的硬件初始化我会以”暴力”方法来解决~ 哈哈~ 下面开始和大家分享我的失败过程~: 解压缩内核压缩文件后进入到目录中,然后修改Makefile,找到 ARCH ?= CROSS_COMPILE ?= 这两项,不修改这两项的话将会默认使用x86的配置,这里修改为 ARCH ?= arm CROSS_COMPILE ?= arm-linux- arm-linux- 是交叉编译器~ 这里我使用的交叉编译器为友善送的arm-linux-gcc-4.3.2.tgz,带
[单片机]
stm32f103c8t6移植Fatfs文件系统出现的一些问题
一、环境 keil5,使用库函数 二、移植对象 stm32f103zet6 stm32f103c8t6 三、连接方式 硬件SPI1(PA5,6,7) 四、主函数代码 #include stdio.h #include delay.h #include sys.h #include oled.h #include malloc.h #include MMC_SD.h #include ff.h #include exfuns.h void SD_Read_Sectorx(u32 sec); int main(void) { u32 total,free; delay_ini
[单片机]
μC/OS-II在80196KC单片机上的移植
摘要:主要讨论了将μC/OS-II实时操作系统在8019KC单片机上进行移植的原理和方法,给出了一个以Tasking C为编译器、以8019KC为处理器,对μC/OS-II实时操作系统进行移植的具体实例。 关键词:80196KC; uC/OS-II;Tasking C;移植 Intel的80196KC系列单片机在中国国内有很大一批用户。支持80196KC的C编译器生产厂商主要有Tasking和IAR。但国内使用Tasking公司C编译器的用户较多。由于μC/OS-Ⅱ系统为源码公开的实时操作系统,因此是当前嵌入式系统开发的主要方法。但是,在μC/OS-Ⅱ网站上没有现成的移植实例。因此,有必要进行一次移植以使操作系统成为μC/O
[嵌入式]
Linux-2.6.32.2内核在mini2440上的移植(五)---激活RTC驱动
移植环境 1,主机环境:VMare下CentOS 5.5 ,1G内存。 2,集成开发环境:Elipse IDE 3,编译编译环境:arm-linux-gcc v4.4.3,arm-none-linux-gnueabi-gcc v4.5.1。 4,开发板:mini2440,2M nor flash,128M nand flash。 5,u-boot版本:u-boot-2009.08 6,linux 版本:linux-2.6.32.2 7,参考文章: 嵌入式linux应用开发完全手册,韦东山,编著。 Mini2440 之Linux 移植开发实战指南 【1】在初始化文件中加入RTC 设备结构 Linux-2.6.32.2 内核对24
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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