引用

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. Linux 动态库剖析

    进程与 API 动态链接的共享库是 GNU/Linux® 的一个重要方面.该种库允许可执行文件在运行时动态访问外部函数,从而(通过在需要时才会引入函数的方式)减少它们对内存的总体占用.本文研究了创建和 ...

  2. Qt socket中怎么传结构体?

    直接发送和接收结构体,例如:struct A {...};struct A objectA; 发送的时候: tcpSocket->write((char *)&objectA, size ...

  3. 一个异或加密方案--C语言实现

    核心代码: char encrypt( char f , char c) { return f^c; } int OutEncrypt( char *FilePath, char *SecretWor ...

  4. Git基础 1 ---- 版本控制系统的介绍

    1 Git 1 版本控制系统 vcs - version control system 2 版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统 3 版本控制系统的主要功能 1 ...

  5. Objective-c @property和@Synthesize

    在Objective-c中,使用@property来标识属性(一般是实例变量).在实现文件中使用@synthesize标识所声明的变量,让系统自动生成设置方法和获取方法. 也就是说@property和 ...

  6. YUV / RGB 格式及快速转换算法

    1 前言 自然界的颜色千变万化,为了给颜色一个量化的衡量标准,就需要建立色彩空间模型来描述各种各样的颜色,由于人对色彩的感知是一个复杂的生理和心理联合作用 的过程,所以在不同的应用领域中为了更好更准确 ...

  7. 【转】emulator: ERROR: Could not load OpenGLES emulation library: lib64OpenglRender.so

    [转]emulator: ERROR: Could not load OpenGLES emulation library: lib64OpenglRender.so ./emulator64-arm ...

  8. java键盘录入

    System.out:标准输出设备(默认是:控制台) System.in:标准输入设备(默认是:键盘) --------------------- InputStream in = System.in ...

  9. python成长之路10——socketserver源码分析

    s = socket.socket(socket.AF_INET,socket.SOCK_STREAM,0) 参数一:地址簇 socket.AF_INET ipv4(默认) socket.AF_INE ...

  10. [LeetCode]题解(python):008-String to Integer (atoi)

    题目来源: https://leetcode.com/problems/string-to-integer-atoi/ 题意分析: 这道题也是简单题,题目意思是要将字符串转化成int.比如‘123’转 ...