引用

bsky 的 移植Linux到s3c2410上
来源:http://www.embed.com.cn/downcenter/Article/Catalog12/4000.htm

移植Linux到s3c2410上

      刚开始接触Linux移植工作,开始的想法是想将uClinux移植到samsung s3c2410上,以前就知道uClinux是面向没有MMU(内存管理单元)的CPU的操作系统,看了s3c2410的官方资料(PS:全英文的,虽然过了英语六级,还是看得很累,IT行业的英语真TMD重要。谁叫NX的技术都是鸟人搞出来的呢!不仅想起了以前看到的一句话:中国搞的Linux那么多,但是在linux内核里留名的没有一个中国人。中国的IT界啊,悲哀... ...),也知道s3c2410上的CPU是带MMU单元的。但是观点没转变过来,一根筋地想把s3c2410移植到s3c2410上。baidu了半天也没找到一点线索,只好自己硬着头皮继续做... ...
    
    看到linux 2.6的内核支持s3c2410,但是在编译uClinux时,在vendors(买主)里没有s3c2410这款板子。自己天真地将vendors/samsung里的4510B的文件copy一份改为s3c2410。最后编译是以失败告终.

走投无路,到刚加入的嵌入式群里寻求帮助。高兴的是一位朋友给了我点提示:标准的linux的Linux内核是支持MMU的,而s3c2410是带MMU的。应该把标准的Linux内核移植到s3c2410上而不是移植uClinux,使用标准的Linux功能也更强.

现在找到了一点曙光,人特别兴奋,也忒有干劲。下载arm-linux-交叉编译工具,由于以前升级时的内核2.6.18.2还在,所以准备将linux-2.6.18.2移植到s3c2410上。
    内核下载地址:www.kernel.org
    交叉编译工具:ftp://ftp.handhelds.org/projects/toolchain/arm-linux-gcc-3.4.1.tar.bz2

在网上搜集了一些资料,仔细看那些前辈的操作,看了s3c2410的官方资料。重新干活... ...
    
    将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
    
    从错误提示上看,知道是符号链接不允许,不解... ...
    不知不觉到12:30了,寝室的兄弟都上床睡觉了,不敢“苟活”,不情愿放下问题就睡了,半天没睡着,郁闷!有问题没解决时自己总是很难以入眠。

2006年12月9日     天气还算好      心情还“马马虎虎”

PS:进入大四来,生物钟就给调了。活跃时间是:11:00~晚上12:30+
   朦胧地睁开眼睛,眼睛还有点胀,昨天一天都呆在呆在PC旁搞移植。我靠!都10点半,起床刷牙吃午饭(不要觉得惊讶,大四以来,除了早上一二节有课以外,基本上是这样过的。半年没吃早餐了。尽管寝室的哥们经常说不吃早餐容易患糖尿病,睡觉为大)。

11点钟,再次回到PC旁,看了看sina的关于NBA的体育新闻。凌晨4点的火箭比赛居然赢了,昏。姚明又是大号两双。NBA再出野人:掘金和尼克斯大战三百六十个回合。没有A.I的转会消息。怀念他脖子上的那个“忠”子了:对老婆的忠诚,对球队的忠诚,对朋友的忠诚,对事业的忠诚... ...

看完新闻,进入Fedora Core 4,重新昨天晚上未完成的“事业”,要不今天又会失眠了。
   删掉以前的所有编译和配置:#make distclean ,重复昨天的操作。昏,错误提示仍在。以为是源程序被我改了.

重新解压内核到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) 

引用 移植Linux到s3c2410上的更多相关文章

  1. 在基于or1200处理器的SoC上移植linux

    经历了前端的艰苦奋斗.SoC前端设计已经调试完毕,如今直接进入uboot移植   首先cd入u-boot-master 找到子文件夹include下得de2_115.h文件进行改动: (下一步计划:加 ...

  2. NET Framework项目移植到NET Core上遇到的一系列坑

    原文:NET Framework项目移植到NET Core上遇到的一系列坑 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https: ...

  3. ZYNQ跑系统 系列(二) petalinux方式移植linux

    三.搭建petalinux工程 0.定位目录    先在shell中找一个准备存放工程的地方,(我的是home/hlf/PRO),命令行cd home/hlf/PRO 1.定位编译链    根据安装p ...

  4. Linux on Power 上的调试工具和技术

     Linux on Power 上的调试工具和技术 简介: 调试是一项主要的软件开发活动,作为应用程序开发人员,您无法避免对程序进行调试.有效的调试不仅能缩短软件开发周期,而且可以节省成本.本文简要介 ...

  5. Xilinx zynq-7000系列FPGA移植Linux操作系统详细教程

    Xilinx zynq-7000系列FPGA移植Linux操作系统详细教程 一:前言 最近手上压了一块米联客的Miz7035,一块xilinx zynq-7000系列的开发板,想着正好学习一下linu ...

  6. AM335x移植linux内核_转

    AM335x移植linux内核 该博客中详细介绍了移植linux内核到AM335x上相关,设备驱动采用设备树(DT)方式加载,包含设备启动.uboot.kernel.driver.rootfs及简单上 ...

  7. 使用cygwin移植Linux的项目到Windows下之总结(转)

    使用cygwin移植Linux的项目到Windows下之总结(转) 原文 http://my.oschina.net/michaelyuanyuan/blog/68615?p=1   一.why   ...

  8. NET Framework项目移植到NET Core上踩的坑(1)

    本文章向大家介绍NET Framework项目移植到NET Core上遇到的一系列坑,主要包括NET Framework项目移植到NET Core上遇到的一系列坑使用实例.应用技巧.基本知识点总结和需 ...

  9. S04_CH01_搭建工程移植LINUX/测试EMMC/VGA

    S04_CH01_搭建工程移植LINUX/测试EMMC/VGA 1.1概述: 本章内容是在已经提供安装了VIVADO2015.4 的ubuntu系统下,进行.大家可以下周我们已经提供的虚拟机镜像,我们 ...

随机推荐

  1. 【分享】JS生成随机字符串

    之前忘了从哪里找到的一段代码,整理电脑时,记录为博文备查,原创不是我. function randomString(len) { len = len || 32; var $chars = 'ABCD ...

  2. Delphi中的“委托”

    .NET中有委托(Delegate)的概念,其声明形式如下所示:     public delegate void MyDelegate(int aIntParam, string aStringPa ...

  3. JAVA GUI学习 - JProgressBar进度条组件摘录

    public class JProgressBarTest extends JFrame{ public JProgressBarTest() { super(); setTitle("表格 ...

  4. iOS9 白名单问题 -canOpenURL: failed for URL: "xx" - error:"This app is not allowed to query for scheme xx"

    [iOS开发]-canOpenURL: failed for URL: "xx" - error:"This app is not allowed to query fo ...

  5. Extending your SharePoint 2007 site with Microsoft ASP.NET AJAX 3.5

    After ASP.NET 3.5 has been installed you need to modify the web.config file of your MOSS web site wi ...

  6. Map 的遍历

    一.Map的遍历 在后面java的开发过程中会遇到Map类的使用,然而map的遍历是一大问题. Map遍历用两种比较交代的方法: package edu.map; import java.util.H ...

  7. sdl2-2.04 读取位图并显示

    // sdl2_win32.cpp : Defines the entry point for the console application.//// 假定SDL的库文件和头文件和VC的工程文件在一 ...

  8. Android Bug 记录

    1.Unable to resolve target 'android-5' 无法解析目标 ' 安卓系统-5'      Unable to resolve target 'Google Inc.:G ...

  9. java web中jsp连接mysql数据库 以及数据库连接池的使用

    将mysql-connector-java-5.1.6-bin.jar导入到tomcat的lib目录下. 在java项目中,只需要引入mysql-connector-java-5.1.6-bin.ja ...

  10. Linux下同步工具inotify+rsync使用详解

    1. rsync 1.1 什么是rsync rsync是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件.它使用所谓的“Rsync演算法”来使本地和远程两个主机之间的文件达到同步,这 ...