当前位置:首页 > CN2资讯 > 正文内容

Linux系统移植freemodbus linux 移植

1天前CN2资讯


最近开始正式开始linux内核的移植工作,开发板为Mini2440,看着文档很简单,但是自己操作起来却是一大堆的问题,2天的时间都花在上面了,但是收获还是很多的,在不断的修改中,开始对内核的工作有了基本的认识,大部分操作是根据网络教程来的,有些配置还是不懂,不过移植成功就是一个好的开端。

首先linux内核移植到开发板上,注重的是与硬件有关的代码,与硬件无关的代码几乎不需要什么改动,在刚开始的移植中除却驱动的移植。我个人的linux移植工作限定于:基本的可使用设备:串口,Nandflash可用,网卡可用(在烧内核时或者后面的文件系统可通过nfs挂在,或tftp)

现在归纳下移植的步骤(前面的解压和安装交叉编译环境就不在提了):

1、添加对ARM的支持,设置好编译器

修改顶层Makefile
# vim Makefile
ARCH ?= arm

CROSS_COMPILE ?=arm-linux-

2.修改机器码

vim arch/arm/tools/mach-types

在379行 s3c2440    ARCH_S3C2440   S3C2440  362
将机器码修改为1999,因为友善的板子机器码是1999,在u-boot的设定中为1999,如果二者不通的话极可能就开在进入内核的地方

(如下所示)

NOW, Booting Linux......
Uncompressing Linux........................................................................................................ done, booting the kernel.

3.修改平台的时钟

vim arch/arm/mach-s3c2440/mach-smdk2440.c

static void __init smdk2440_map_io(void)
{
s3c24xx_init_io(smdk2440_iodesc, ARRAY_SIZE(smdk2440_iodesc));
//s3c24xx_init_clocks(16934400);

s3c24xx_init_clocks(12000000);
s3c24xx_init_uarts(smdk2440_uartcfgs, ARRAY_SIZE(smdk2440_uartcfgs);

}

4.Nandflash 分区

在这里吃了不少的苦头,一直没能显示分区,应为一开始并不是直接使用s3c2410_defconfig的配置内核,导致内核配置中关于一些MTD配置出错,所以一直开在这,看不到分区信息,这里的分区信息要看你的开发板Nandflash的情况了,友善的板子可以通过part show来查看

# vim  arch/arm/plat-s3c24xx/common-smdk.c

static struct mtd_partition mini2440_default_nand_part[] = {
        [0] = {
                .name   = "supervivi", ;这里是 bootloader 所在的分区,可以放置 u-boot, supervivi 等内容,对应
/dev/mtdblock0
                .size   = 0x00040000,
                .offset = 0,
        },
        [1] = {
                .name   = "param", ;这里是 supervivi 的参数区,其实也属于 bootloader 的一部分,如果 u-boot 比较
大,可以把此区域覆盖掉,不会影响系统启动,对应/dev/mtdblock1
                .offset = 0x00040000,

          .size   = 0x00020000,
        },
 
 
        [2] = {
                .name   = "Kernel",  ;内核所在的分区,大小为 5M,足够放下大部分自己定制的巨型内核了,比如内核
使用了更大的 Linux Logo 图片等,对应/dev/mtdblock2
                .offset = 0x00060000,
                .size   = 0x00500000,
        },
        [3] = {
                .name   = "root", ;文件系统分区,友善之臂主要用来存放 yaffs2 文件系统内容,对应/dev/mtdblock3
                .offset = 0x00560000,
                .size   = 1024 * 1024 * 1024, //
        },
        [4] = {
                .name   = "nand", ;此区域代表了整片的 nand flash,主要是预留使用,比如以后可以通过应用程序访
问读取/dev/mtdblock4 就能实现备份整片 nand flash 了。
                .offset = 0x00000000,
                .size   = 1024 * 1024 * 1024, //
        }
};

5.配置内核

到这里也是很重要的一步了,内核的配置也决定编译后的内核在开发板上运行的情况

这里我们套用s3c2410的配置,可以用make menuconfig  它是一个图形化的内核配置界面,它会加载.config的文件的配置,可以大大简化我们的配置过程,只需要稍加改动即可.采用S3C2410_defconfig,你需要执行的是 make S3C_2410_defconfig (这样他做的就是将arch/arm/configs中的s3c2410_defconfig复制到源码根目录下为.config文件,这里涉及到一个规范问题,最好不要直接复制改名,当然也不是不可以,详细的可以参考内核文档)。

这里我们做以下内容添加

System Type---> S3C2410 Machines --->[*] SMDK2410/A9M2410
S3C2440 Machines --->[*] SMDK2440
[*] SMDK2440 with S3C2440 CPU module

内核特性加上以下两项:

Kernel Features --->[*] Use the ARM EABI to compile the kernel
[*] Allow old ABI binaries to run with this(EXPERIMENTA) kernel


6、make zImage

等待生成内核映像文件,至此linux内核移植工作基本结束。此时还没见天文件的支持,如果你有想成的根文件系统,就可以配置的 File systems。

    你可能想看:

    扫描二维码推送至手机访问。

    版权声明:本文由皇冠云发布,如需转载请注明出处。

    本文链接:https://www.idchg.com/info/32345.html

    分享给朋友:

    “Linux系统移植freemodbus linux 移植” 的相关文章

    UCloud年付100元的云服务选择与优势解析

    在开始探讨UCloud的计费方式之前,我想先分享一下我对云服务费用的一些理解和看法。在如今的数字化时代,选择合适的云服务提供商至关重要,计费方式也应兼顾灵活性和经济性。我在UCloud上体验过不同的计费方式,从中得出了一些实用的建议。 UCloud提供的计费方式相当多样,特别是在按年计费这一块。对于...

    OVH 黑五促销活动详解:服务器折扣与购买指南

    OVH 黑五活动概述 在每年感恩节后的第一天,黑色星期五(Black Friday)成了一年中最大的购物盛事之一。它起源于美国,最初是零售商为了清理库存而设立的特价销售日。随着时间的推移,黑五的影响力逐渐扩展至全球,成为各种行业都参与的一次购物狂欢。对于消费者而言,这不仅是一次购物机会,更是寻找到心...

    选择无限流量VPS的最佳指南与注意事项

    在当今互联网时代,网站托管和服务器选择变得尤为重要。其中,VPS(虚拟专用服务器)成为许多企业和个人用户的优选。而无限流量VPS则更加受到青睐。简单来说,无限流量VPS是一种提供几乎无限数据传输的虚拟服务器服务。它让用户可以在不必担心流量限制情况下,安心地运行网站、应用或其他网络服务。 无限流量VP...

    Hostwinds评测:全面解析优秀的网络托管服务

    Hostwinds概述 在了解Hostwinds之前,首先想分享一下我对这家公司的印象。Hostwinds成立于2010年,作为一家相对年轻的网络托管服务提供商,虽然起步不久,但它的发展速度却让我感到惊叹。起初,Hostwinds仅是一家提供基本虚拟主机服务的小公司,随着需求的不断增长,他们逐步扩展...

    香港云服务器推荐:选择最佳服务提供商的全面指南

    什么是云服务器 在数字化时代,云服务器成为了许多企业和个人用户的重要资源。简单来说,云服务器是一种虚拟服务器,通过互联网提供灵活、可扩展的计算资源。用户无需拥有实体服务器,只需根据自己的需求选择相应的云服务,并进行配置管理。这样的好处在于,我可以根据项目的不同阶段进行资源的调整,而无需担心硬件的维护...

    CloudCone:灵活、高效的云计算服务平台全面解析

    CloudCone的基本定义 CloudCone是一种云计算服务平台,专注于为用户提供灵活、高效的云资源。简单来说,它让我们可以通过互联网快速访问和管理各种计算资源,无需自己搭建复杂的服务器环境。对于个人用户和企业来说,CloudCone提供了一个便捷的解决方案,可以满足不同的存储、计算和网络需求。...