单片机
返回首页

ARM Linux.2.6.34内核移植

2020-01-09 来源:eefocus

ARM-LINUX-GCC版本4.3.2.以安装在/usr/local/arm/4.3.2下.

第一步:
修改linux-2.6.34/Makefile文件,在makefile中找到以下两条信息并做修改
ARCH ? =arm  
CROSS_COMPILE ?=/usr/local/arm/4.3.2/bin/arm-linux-

第二步:
修改平台输入时钟
修改平台的时钟频率,修改内核源码“arch/arm/mach-s3c2440/mach-smdk2440.c”
把时钟初始化中(S3C24XX_init_clocks(16934400 ))的16934400 改为12000000,因为我们的开发板上为12M

第三步:
修改机器类型ID号::
   bootloader启动内核时,会传递机器类型ID进来,这里需根据bootloadr传进的ID修改内核ID号.
   在内核源码的“arch/arm/tools/mach-types”文件查找S3C2440,这里刚好与我们的bootloader相同,所以不用做修改,直接保存退出即可,如果不同则根据bootloader的内容修改此文件,或根据此文件修改boorloader的内容(在vivi中可通过param show查看)。

第四步:
解压yaffs2.tar.gz源码包,进入yaffs2文件夹,给内核打上补丁使内核支持yaffs2
# ./patch-ker.sh  c  /home/linux-2.6.34
结果:更新了两个文件系统下的文件
Updating /home/linux-2.6.34/fs/Kconfig
Updating /home/linux-2.6.34/fs/Makefile

第五步:
修改内核mtd分区和bootloader(vivi)使其一致
编辑文件arch/arm/plat-s3c24xx/common-smdk.c

static struct mtd_partition smdk_default_nand_part[] = {
    [0] = {
        .name    = 'vivi',
        .size    = 0x30000,
        .offset    = 0,
    },
    [1] = {
        .name    = 'kernel',
        .offset = 0x50000,
        .size    = 0x300000,
    },
    [2] = {
        .name    = 'root',
        .offset = 0x350000,
        .size    = 0x3cac000,
    },
};

第六步:
修改文件drivers/mtd/nand/s3c2410.c
将s3c2410_nand_init_chip函数里的NAND_ECC_SOFT改为NAND_ECC_NONE(因为在内核中默认配置不支持ECC校验,当然也可以在内核配置时选中ECC选项)
修改后如下:
chip->ecc.mode        = NAND_ECC_NONE;

第七步:
到llinux-2.6.30目录下执行命令
   #cp  arch/arm/configs/s3c2410_defconfig  .config

第八步:
执行make menuconfig,并对选项进行配置

    1)System Type --->
        S3C2440 and S3C2442 machines --->
            仅保留SMDK2440 与SMDK2440 whith S3C2440 CPU module两个选项,将其他的选项全部勾掉

    2)Kernel Features --->
        [*]Use the arm EABI to compile the kernel(选中该选项)
        
    3)File systems --->
        a、把与ext2 ext3 ext4相关的所有选项全部去掉

        b、Miscellaneous filesystems --->
            <*>yaffs2 file system support(选中此选项)

          去除所有与jffs2相关的选项

保存退出

第九步:执行make zImage 编译生成内核.

在arch/arm/boot下生成编译好的可执行程序zImage.  这个是在vivi下使用的.

进入单片机查看更多内容>>
相关视频
  • RISC-V嵌入式系统开发

  • SOC系统级芯片设计实验

  • 云龙51单片机实训视频教程(王云,字幕版)

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

精选电路图
  • 家用电源无载自动断电装置的设计与制作

  • PIC单片机控制的遥控防盗报警器电路

  • 用数字电路CD4069制作的万能遥控轻触开关

  • 使用ESP8266从NTP服务器获取时间并在OLED显示器上显示

  • 用NE555制作定时器

  • RS-485基础知识:处理空闲总线条件的两种常见方法

    相关电子头条文章