引用 移植Linux到s3c2410上
引用
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上的更多相关文章
- 在基于or1200处理器的SoC上移植linux
经历了前端的艰苦奋斗.SoC前端设计已经调试完毕,如今直接进入uboot移植 首先cd入u-boot-master 找到子文件夹include下得de2_115.h文件进行改动: (下一步计划:加 ...
- NET Framework项目移植到NET Core上遇到的一系列坑
原文:NET Framework项目移植到NET Core上遇到的一系列坑 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https: ...
- ZYNQ跑系统 系列(二) petalinux方式移植linux
三.搭建petalinux工程 0.定位目录 先在shell中找一个准备存放工程的地方,(我的是home/hlf/PRO),命令行cd home/hlf/PRO 1.定位编译链 根据安装p ...
- Linux on Power 上的调试工具和技术
Linux on Power 上的调试工具和技术 简介: 调试是一项主要的软件开发活动,作为应用程序开发人员,您无法避免对程序进行调试.有效的调试不仅能缩短软件开发周期,而且可以节省成本.本文简要介 ...
- Xilinx zynq-7000系列FPGA移植Linux操作系统详细教程
Xilinx zynq-7000系列FPGA移植Linux操作系统详细教程 一:前言 最近手上压了一块米联客的Miz7035,一块xilinx zynq-7000系列的开发板,想着正好学习一下linu ...
- AM335x移植linux内核_转
AM335x移植linux内核 该博客中详细介绍了移植linux内核到AM335x上相关,设备驱动采用设备树(DT)方式加载,包含设备启动.uboot.kernel.driver.rootfs及简单上 ...
- 使用cygwin移植Linux的项目到Windows下之总结(转)
使用cygwin移植Linux的项目到Windows下之总结(转) 原文 http://my.oschina.net/michaelyuanyuan/blog/68615?p=1 一.why ...
- NET Framework项目移植到NET Core上踩的坑(1)
本文章向大家介绍NET Framework项目移植到NET Core上遇到的一系列坑,主要包括NET Framework项目移植到NET Core上遇到的一系列坑使用实例.应用技巧.基本知识点总结和需 ...
- S04_CH01_搭建工程移植LINUX/测试EMMC/VGA
S04_CH01_搭建工程移植LINUX/测试EMMC/VGA 1.1概述: 本章内容是在已经提供安装了VIVADO2015.4 的ubuntu系统下,进行.大家可以下周我们已经提供的虚拟机镜像,我们 ...
随机推荐
- 转: object 和embed 标签播放flash
一.介绍: 我们要在网页中正常显示flash内容,那么页面中必须要有指定flash路径的标 签.也就是OBJECT和 EMBED标签.OBJECT标签是用于windows平台的IE浏览器的,而EMBE ...
- RFID电子标签制造封装工艺和可靠性研究
一.目的和意义 电子标签已经成为RFID工业的主要焦点 实现低成本.大批量.高可靠性地制造电子标签是推广RFID产品应用的关键技术之一 针对RFID标签制造中核心的封装工艺开展研究,以各向异性导 ...
- elk 分布式数据同步
zjtest7-redis:/elk/elasticsearch/data/es_cluster/nodes/0/indices/library# strings ./1/index/_3.cfs | ...
- HDU 1848 Fibonacci again and again
题解:尼姆博弈,对于1至1000计算SG函数,每次取最小的前继值,SG值异或为0则为P-position. #include <cstdio> #include <cstring&g ...
- Hope
透过希望的窗棂,在阴霾的罅隙里也可以寻找阳光,看到未来的春暖花开. ——forever97
- [编程语言][java][java se]java泛型中? T K V E含义(学习)
? 表示不确定的java类型,类型是未知的. T 表示java类型. K V 分别代表java键值中的Key Value. E 代表Element,特性是枚举. 1.意思 jdk中的K,V, ...
- PHP 学习1- 函数之error_reporting(E_ALL ^ E_NOTICE)详细说明
在4.3.0中运行正常,在4.3.1中运行会提示Notice:Undefined varialbe:tmp_i 问题下下: 1.问题出在哪里? 2.应如何修改这段代码? 3.不改段代码,如何修改php ...
- lightOJ 1317 Throwing Balls into the Baskets
lightOJ 1317 Throwing Balls into the Baskets(期望) 解题报告 题目链接:http://acm.hust.edu.cn/vjudge/contest/ ...
- 对面向对象的理解—— SAP电面(1)
对于C++面向对象的理解 面向对象是在结构化设计方法出现很多问题的情况下应运而生的.结构化设计方法求解问题的基本策略是从功能的角度审视问题域.它将应用程序看成实现某些特定任务的功能模块,其中子过程是实 ...
- [置顶] cocos2d-x 植物大战僵尸(13)类似酷跑的【同一角色不同动画间的切换的实现】
有几天没和大家分享博客了,原因很简单,就是我在运行第12章所写的代码时:(开始一切正常,不过没多久就出现了内存泄露!.可能求成心切吧,当时没多加考虑就把代码发上去了.我在此对看过第12章得 ...