arm linux 内核修改,arm Linux系统迁移步骤

8aa6c080827955e7cd82d8147ece178b.png

arm9S3C2410微处理器与Linux的集成越来越紧密,并逐渐在嵌入式领域得到广泛应用. 目前,在消费电子产品,无线设备,汽车,网络和存储产品中可以看到S3C2410和Linux的组合.

本文的引用地址:

S3C2410微处理器是三星基于arm920T核心微处理器设计的一种低成本,低功耗,高性能的微处理器,用于手持终端. 它具有一个内存管理单元(MMU),采用0.18mm工艺和AMBA新总线结构,主频率可以达到203MHz. 同时,它支持Thumb 16位压缩指令集,可以以较小的存储空间实现32位系统性能.

在许多嵌入式操作系统中,Linux是目前增长最快,使用最广泛的软件[1]. 具有出色性能和开放源代码的Linux具有许多优点,例如体积小,减少内核,完善的网络功能以及强大的可移植性. 它非常适合作为嵌入式操作系统. 最基本的Linux操作系统应包括: 引导程序,内核和根文件系统.

与Linux2.4内核相比,2.6内核吸收了最新技术,从而在性能

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

系统生产的移植

fe77a87407f20f58f2cc84446e347e1c.gif

建立交叉编译环境

要移植和开发小型Linux系统,请先在装有RedHat9或更高版本Linux操作系统的主机上配置跨开发环境. 交叉开发是指在开发主机上安装开发工具,编辑和编译目标板的引导程序,内核和文件系统,以便它可以在目标板上运行.

对于此开发,您需要安装arm-linux-gcc-3.4.1和armv4l-tools工具链. 安装完成后,请记住将两个路径添加到系统路径$ PATH.

启动程序

对于计算机系统,从开机到操作系统启动需要引导程序. 嵌入式linux系统也与引导加载程序密不可分. 该引导程序称为Bootloader [1]. 通过这个小程序,您可以初始化硬件设备并建立内存空间映射表,从而建立合适的系统硬件环境并为操作系统内核的最终调用做准备.

vivi [4]是韩国MIZI针对其arm9系列产品开发的引导程序. 它体积小巧,智能linux系统移植,在这里被选作小型Linux系统的引导程序.

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

e94aac43eca9543b2ff7fb10108414d6.png

根据表1,在文件vivi source 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修改内核中的闪存分区信息. 在此提醒读者,以前的2.6.16(含)内核的源代码中没有Flash分区信息,因此需要添加新的分区信息. 在2.6.17(含)之后的内核源代码中,包含了闪存分区信息,而所需的只是“修改分区信息”.

951716bf25b5c912830b61b9060f498c.png

内核闪存分区信息必须与vivi的闪存分区信息一致. 因为,Vivi的Flash分区中的地址是下载到Nand Flash的内核和文件系统的真实地址;内核在启动时读取内核Flash分区设置的地址;因此,如果两者不同,则可能导致无法启动内核或无法正常读取文件系统.

最后,修改linux-2.6.19 / drivers / mtd / nand / s3c2410.c以禁用Nand闪存错误检测: chip-> eccmode = NAND_ECC_NONE;.

·内核配置汇编

在配置菜单中,从内核导入smdk2410的默认配置,然后基于此选择所需的功能. 如Nand Flash和MTD设备支持,Cramfs文件系统支持等.

配置完成后,在终端中输入编译命令“ make”进行编译. 如果内核源代码编译成功,则将在linux-2.6.19 / arch / arm / boot /下生成内核映像文件zImage.

最后,在vivi命令提示符模式下使用download命令将内核映像zImage加载到开发板Flash中的相应地址.

根文件系统

347f015f0debe78ca91b1eaa6455d6.jpg

Linux系统中的文件和设备是通过文件系统组织的. 文件系统的存在允许高效,透明地访问数据和设备. 一个简单的Linux根文件系统应包括支持Linux系统正常运行的基本内容,包括系统使用的软件和库,以及用于为用户提供基本支持的所有体系结构和说明.

在根文件目录rootfs下创建一系列必要的目录,例如bin,dev等,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控制台,则需要位于/ root

在fs / dev下添加控制台设备文件: “ [root @ localhost dev]#mknod -m 600 console c 5 1”.

目前,Linux已经可以支持多种文件系统格式,例如常用的Cramfs,Jfss2,Yaffs等. Cramfs是只读Flash文件系统,可以保护系统的基本设置不被更改. 根文件系统使用Cramfs格式.

使用Cramfs生产工具mkcramfs将根文件目录设置为映像文件: rootfs.cramfs.

根文件系统已完成,请在vivi命令模式下将rootfs.cramfs下载到Flash的适当位置.

此时,已经成功生产了基于2.6.19内核的小型Linux系统,并将其移植到S3C2410开发板上.

板卡上电后,可以看到系统启动信息,最后进入BusyBox控制台.

结论

基于2.6内核的Linux将其出色的嵌入式功能和arm9 S3C2410结合在一起,具有卓越的性能,并且在嵌入式领域具有广泛的应用领域. 本文介绍如何制作基于Linux2.6.19内核的小型Linux系统并将其移植到S3C2410开发板上. 小型系统的生产和移植是嵌入式开发的基础,必须掌握.

本文来自电脑杂谈,转载请注明本文网址:

http://www.pc-fly.com/a/tongxinshuyu/article-280583-1.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值