Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1248505
  • 博文数量: 261
  • 博客积分: 4196
  • 博客等级: 上校
  • 技术积分: 3410
  • 用 户 组: 普通用户
  • 注册时间: 2012-02-17 17:05
文章分类

全部博文(261)

文章存档

2018年(1)

2017年(22)

2016年(2)

2015年(8)

2014年(27)

2013年(40)

2012年(161)

分类: LINUX

2012-04-10 13:51:01

   基于微处理器的开发板,硬件配置不同,使用嵌入式LINUX作操作系统时,内核文件也不一样,因此需要重新配置移植。
    下载arm-linux-交叉编译工具,由于以前升级时的内核2.6.18.2还在,所以准备将linux-2.6.18.2移植到s3c2410上。
    内核下载地址:
    交叉编译工具:ftp://ftp.handhelds.org/projects/toolchain/arm-linux-gcc-3.4.1.tar.bz2   
    将windows下的盘符挂载过来(还好我是双系统windows&linux,搞平台移植非常好的条件)。直接在这个盘符下进行交叉编译。
    #mount -t vfat -o iocharset=utf8 /dev/hda7 /mnt/hda7    /*挂载windows盘符*/
    将arm-linux-gcc放到/下,#tar -xvjf arm-linux-gcc-3.4.1.tar.bz2  /*交叉编译工具将解压安装到/usr/local/arm下。
    修改环境变量:#echo "export PATH=/usr/local/arm/3.4.1/bin:$PATH" >> /etc/bashrc
    #cd /mnt/hda7/linux_softkernel_update/linux-2.6.18.2
    修改makefile文件:将相应体系结构和交叉编译工具改为:
      ARCH ?= arm
      CROSS_COMPILE ?=arm-linux-
    #cp arch/arm/configs/s3c2410_defconfig .config
    # make ARCH=arm CROSS_COMPILE=arm-linux- zImage
    结果提示错误:
    CHK     include/linux/version.h
    SYMLINK include/asm-arm/arch -> include/asm-arm/arch-s3c2410
    ln: 正在创建连至‘arch-s3c2410’的符号链接‘include/asm-arm/arch’: 不允许的操作
    make: *** [include/asm-arm/.arch] 错误 1
    从错误提示上看,知道是符号链接不允许。
   重新解压内核到root目录下:
    #cd /root/ARM/linux-2.6.18.2
    修改改目录下的Makefile文件,将相应体系结构和交叉编译工具改为:
      ARCH ?= arm
      CROSS_COMPILE ?=arm-linux-
    # make ARCH=arm CROSS_COMPILE=arm-linux- uImage    //用u_boot引导的映象文件
    #cd arch/arm/boot
    #ls
    看到编译后得到的映象文件zImage和Image,编译成功.
    再回首之前碰到的问题:为什么在/root下能编译成功,而在/mnt/hda7下会出现创建符号链接错误呢?
    回想起以前看APUE(Advanced Programe in Unix Environment)时关于链接的知识。原来是符号链接不能跨分区的。
Append.tips:
    ◎arch/arm/boot/compressed下的内核vmlinux就是Image,经过压缩成piggy.gz,再生成piggy.o与解压缩程序链接后生成内核zImage。
    ◎内核解压缩的过程是从ZTEXTADDR出的压缩内核中解压出vmlinux到zreladdr。ZTEXTADDR表示压缩内核加载的位置,zreladdr表示压缩后的位置。
    ◎ZTEXTADDR、ZBSSADDR是解压缩程序的代码锻、BSS段的地址。2.6内核通过CONFIG_ZBOOT_ROM_TEXT和 CONFIG_ZBOOT_ROM_BSS两个参数来设置,2.4内核则在arch/$(arch)/boot/Makefile中设置。通常 ZTEXTADDR设置成0x30008000,ZBSSADDR设置成空,表示紧接在前面一个段后面。
    ◎zreladdr、initrd_phys、params_phys三个变量只有在2.6内核中才有,分别表示:解压后的内核地址、initrd地址、 参数表地址。通过在arch/$(arch)/$(machine)/Makefile.boot的zreladdr-y、initrd_phys-y、 params_phys-y数来指定这三个变量的值。
    在编译power manager 时出现了一个警告:
kernel/power/pm.c:206: warning: `pm_send_all' is deprecated (declared at kernel/power/pm.c:180)
原文:
阅读(2073) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~