0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Linux操作系统在S3C2410开发板上的的移植过程

电子设计 来源:电子产品世界 作者:梁千帆,陈建华, 2020-09-23 17:05 次阅读

作者:梁千帆,陈建华,孔凡军

ARM9S3C2410微处理器Linux的结合越来越紧密,逐渐在嵌入式领域得到广范的应用。目前,在便携式消费类电子产品、无线设备、汽车、网络、存储产品等都可以看到S3C2410与Linux相结合的身影。

S3C2410微处理器是一款由Samsung公司为手持终端设计的低价格、低功耗、高性能,基于ARM920T核的微处理器。它带有内存管理单元(MMU),采用0.18mm工艺和AMBA新型总线结构,主频可达203MHz。同时,它支持Thumb16位压缩指令集,从而能以较小的存储空间获得32位的系统性能。

在众多嵌入式操作系统中,Linux目前发展最快、应用最为广泛。性能优良、源码开放的Linux具有体积小、内核可裁减、网络功能完善、可移植性强等诸多优点,非常适合作为嵌入式操作系统。一个最基本的Linux操作系统应该包括:引导程序、内核与根文件系统三部分。

与Linux2.4内核相比,2.6内核吸收了最新的技术,在性能、可测量性、器件支持和可用性方面有了大幅度提高;支持更多的体系结构、处理器、总线、接口和设备;标准化了内部接口;简化了扩展或添加新设备的步骤等。

本文着重介绍如何制作一个基于linux-2.6.19内核的小型Linux操作系统,并将它移植到S3C2410开发板上。内容包括交叉编译环境的建立,引导程序、2.6.19内核、根文件系统的修改、配置、编译、移植等。

系统的制作移植

建立交叉编译环境

要移植、开发小型Linux系统,首先要在安装了RedHat9或更高版本Linux操作系统的主机上配置交叉开发环境。交叉开发是指在开发主机上安装开发工具,编辑、编译目标板的引导程序、内核和文件系统,使其能在目标板上运行。

针对本次开发,需要安装arm-linux-gcc-3.4.1以及armv4l-tools工具链。在安装完毕后,切记要将两者的路径分别添加到系统路径$PATH中。

引导程序

对于计算机系统来说,从开机上电到操作系统启动需要一个引导程序。嵌入式linux系统同样离不开引导程序,这个引导程序叫做Bootloader。通过这段小程序,可以初始化硬件设备、建立内存空间的映射表,从而建立适当的系统硬件环境,为最终调用操作系统内核做好准备。

vivi是韩国MIZI公司为其ARM9系列产品而研发的Bootloader,小而灵巧,这里选用它作为小型Linux系统的Bootloader。

首先要修改vivi源代码中的Flash分区信息,新的分区信息如表1所示。

Linux操作系统在S3C2410开发板上的的移植过程

根据表1,在vivi源码arch/s3c2410/smdk.c文件中作出相应的修改。

然后在配置菜单中导入smdk2410的默认配置,编译成功将在vivi源代码目录下生成所需的Bootloader文件,文件名为vivi。

接着,便可把vivi下载到目标板flash的相应位置。

内核

修改内核

首先,修改内核源码linux-2.6.19下的Makefile文件,指定目标代码类型与编译器:SUBARCH:=arm;CROSS_COMPILE:=/usr/local/arm/3.4.1/bin/arm-linux-。

然后,在linux-2.6.19/arch/arm/mach-s3c2410/common-smdk.c中根据表1修改内核中的Flash分区信息。这里提醒读者,2.6.16(含)以前内核的源码中没有Flash分区信息,所以需要增加新的分区信息;而在2.6.17(含)以后内核的源码中已含Flash分区信息,需要的只是修改分区信息。

内核Flash分区信息必须与vivi的Flash分区信息相一致。因为,vivi的Flash分区中的地址是内核及文件系统下载到Nandflash的真正地址;而内核在启动时读的却是内核Flash分区设定的地址;所以,若两者不同,则很可能导致不能正常启动内核或读取文件系统。

最后,修改linux-2.6.19/drivers/mtd/nand/s3c2410.c,禁止Nandflash差错检测

chip-》eccmode=NAND_ECC_NONE;。

内核的配置编译

在配置菜单中导入内核对smdk2410的默认配置,再在此基础上选择所需的功能。如NandFlash及MTD设备的支持,Cramfs文件系统的支持等。

配置完毕,在终端输入编译命令“make”进行编译。若内核源码编译成功,将在linux-2.6.19/arch/arm/boot/下生成内核映像文件zImage。

最后,在vivi命令提示模式下使用下载命令,将内核映像zImage加载到开发板Flash中的适当地址。

根文件系统

Linux系统中的文件和设备是通过文件系统来组织的。文件系统的存在使得数据和设备可以被有效而透明地存取访问。一个linux的最简根文件系统应该包括支持linux系统正常运行的基本内容,包括系统使用的软件和库,以及所有用来为用户提供基本支持的架构和指令。

在根文件目录rootfs下建立bin、dev、etc、lib、proc、sbin、root、tmp等一系列必备的目录,把所需的配置文件、动态函数库放到相应的目录。采用BusyBox是缩小根文件系统的好办法。BusyBox以很小的体积集成了最常用的linux命令和应用程序,大大简化了制作linux根文件系统的过程。

有一点必须指出的是,在2.6.12(含)之前的内核通常是用devfs来管理位于/dev下的所有块设备和字符设备;但在2.6.13(含)之后的内核已不支持devfs,而转用udev来管理/dev下的设备,详见[5]。所以,针对2.6.19内核,要使系统启动后进入BusyBox控制台,还需在/rootfs/dev下添加控制台设备文件:“[root@localhostdev]#mknod-m600consolec51”。

目前,linux已经能够支持几十种文件系统格式,如常用的Cramfs、Jfss2、Yaffs等。Cramfs是一种只读的闪存文件系统,可以保护系统的基本设置不被更改。根文件系统就使用Cramfs格式。

使用Cramfs制作工具mkcramfs把根文件目录制作成映像文件:rootfs.cramfs。

根文件系统制作完成,在vivi命令模式下把rootfs.cramfs下载到Flash的合适位置。

至此,一个基于2.6.19内核的小型Linux系统便成功地制作完毕,并移植到S3C2410开发板上了。

板子加电后便可看到系统的启动信息,最终进入BusyBox控制台。

结语

基于2.6内核的Linux凭借其突出的嵌入式特性与性能优越的ARM9S3C2410相结合,在嵌入式领域有着广阔的应用天地。文章介绍了如何制作一个基于Linux2.6.19内核的小型Linux系统,并将其移植到S3C2410开发板上。小型系统的制作与移植是进行嵌入式开发的基础,必须熟练掌握。

责任编辑:gt

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    87

    文章

    11218

    浏览量

    208833
  • 操作系统
    +关注

    关注

    37

    文章

    6720

    浏览量

    123174
  • 微处理器
    +关注

    关注

    11

    文章

    2247

    浏览量

    82294
收藏 人收藏

    评论

    相关推荐

    s3c2410开发板原理图,s3c2410原理图pcb

    s3c2410
    发表于 09-09 15:41 954次下载
    <b class='flag-5'>s3c2410</b><b class='flag-5'>开发板</b>原理图,<b class='flag-5'>s3c2410</b>原理图pcb

    基于S3C2410Linux移植代码

    基于S3C2410Linux移植代码
    发表于 03-28 09:50 32次下载

    U-BootS3C2410移植

    bootloader是嵌入式系统中必不可少的用以完成系统的启动加载任务的一段软件代码。U -boot作botloader的集大成者.现已得到了广泛的应用.本文通过将u-boot移植到基于s3c
    发表于 03-28 09:51 28次下载

    嵌入式Linux2.6S3C2410移植技术探析

    移植操作系统开发嵌入式系统的前提和基础,通过将Linux 2.6 内核移植
    发表于 08-31 10:03 15次下载

    基于S3C2410芯片Linux-Wlan-ng的移植和应用

    本文简单介绍针对S3C2410芯片和Linux操作系统平台扩展的USB无线网络模块,USB图像采集模块和数控系统模块。给出了Linux-wl
    发表于 09-02 08:29 13次下载

    Linux实时操作系统s3c2410移植

             本文描述了linux实时操作系统移植到arm处理器的方法和嵌入式linux实时
    发表于 09-11 08:27 34次下载

    U BootS3C2410移植

    :bootloader是嵌入式系统中必不可少的用以完成系统的启动加载任务的一段软件代码。U -boot作botloader的集大成者.现已得到了广泛的应用.本文通过将u-boot移植到基于s3
    发表于 11-23 15:57 19次下载

    基于S3C2410芯片Linux-Wlan-ng的移植和应用

    本文简单介绍针对S3C2410芯片和Linux操作系统平台扩展的USB无线网络模块,USB图像采集模块和数控系统模块。给出了Linux-wl
    发表于 12-23 16:37 22次下载

    触摸屏S3C2410的应用实例

    摘要:给出S3C2410触摸屏的实现原理、硬件结构和软件程序;对软件进行优化,改进软件滤波的实现方法。其算法使用C语言实现,可移植到任何操作系
    发表于 04-07 00:32 1479次阅读
    触摸屏<b class='flag-5'>在</b><b class='flag-5'>S3C2410</b><b class='flag-5'>上</b>的应用实例

    LINUXTE2410开发板移植

    本实验是TE2410开发板实现的。TE2410开发板是保定飞凌嵌入式技术有限公司自主研发的一
    发表于 07-25 18:16 59次下载

    基于U-BootS3C2410移植

    基于U-BootS3C2410移植
    发表于 10-30 10:02 12次下载
    基于U-Boot<b class='flag-5'>在</b><b class='flag-5'>S3C2410</b><b class='flag-5'>上</b>的<b class='flag-5'>移植</b>

    基于S3C2410处理器目标Linux移植

    本 文描述了将Linux移植到基于S3C2410处理器目标的方法与过程。介绍
    发表于 04-02 14:39 274次阅读

    基于S3C2410处理器对Windows CE 5.0操作系统实现BSP移植

    ,是一种硬实时嵌入式操作系统,它可以多种处理器架构(如x86、MIPS、ARM和 SH4)运行,Windows CE支持ARM体系结构,这是基于S3C2410 处理器进行BSP
    发表于 03-06 10:10 1031次阅读
    基于<b class='flag-5'>S3C2410</b>处理器对Windows CE 5.0<b class='flag-5'>操作系统</b>实现BSP<b class='flag-5'>移植</b>

    基于Linux操作系统S3C2410微处理器实现GPS实时导航系统的设计

    这里提出一种实用的设计方案,通过对系统的各方面配置,实现GPS实时导航功能。系统主控器件采用韩国Samsung公司生产的ARM核32位RISC微处理器S3C2410,并在由其组成的开发板
    发表于 03-09 10:47 1062次阅读
    基于<b class='flag-5'>Linux</b><b class='flag-5'>操作系统</b>和<b class='flag-5'>S3C2410</b>微处理器实现GPS实时导航<b class='flag-5'>系统</b>的设计

    基于S3C2410开发板的Bootloader运行原理与实现

    有点类似于PC机的BIOS(基本输入输出系统)程序。它的主要作用是为运行操作系统提供基本的运行环境,并操作系统的内核装载到存储器(RAM)中的合适位置上去运行。本文将以Samsung公司的S3
    的头像 发表于 09-22 18:02 2249次阅读
    基于<b class='flag-5'>S3C2410</b><b class='flag-5'>开发板</b>的Bootloader运行原理与实现