基于3c2410的linux2.6.22移植(2)

发布者:皮球最新更新时间:2016-04-29 来源: eefocus关键字:3c2410  linux2.6.22  移植 手机看文章 扫描二维码
随时随地手机看文章
(5)      开始编译 编译的过程主要有6个步骤;
a.       内核头文件的生成
b.       Binary utilties的生成
c.       Glibc头文件的生成
d.       第一阶段gcc的生成
e.       glibc库文件的生成
f.        完整编译工具的生成
  注:生成第一阶段gcc主要是用来生成glibc库文件。
1、 生成内核头文件
$root@host:/home/arm/kernel# tar xvjf linux-2.6.22.tar.bz2
$root@host:/home/arm/kernel# cd linux-2.6.22
$root@host:/home/arm/kernel/linux-2.6.22#
make ARCH=arm CROSS_COMPILE=arm-linux- menuconfig
其中menuconfig指定了配置界面,可用的还有config(全字符界面) xconfig(xwindow下的图形界面)。Ubuntu需要安装tk8.4以支持xconfig。另外需要将mawk卸载,安装gawk。(mawk有bug)
linux2.6的内核提供了对s3c2410的支持。在system中选上s3c2410系列就可以了。配置完毕退出保存。
$root@host:/home/arm/kernel/linux-2.6.22# cd include
$root@host:/home/arm/kernel/linux-2.6.22/include# cd linux
$root@host:/home/arm/kernel/linux-2.6.22/include/linux# ls version.h autoconf.h
version.h autoconf.h
这2个文件在后面的编译中会用到。如果没有,退到内目录下make version.h就可以了。
下面建立链接:
$root@host:/home/arm/kernel/linux-2.6.22/include# ln –s asm-arm asm
$root@host:/home/arm/kernel/linux-2.6.22/include# ln -s asm/arch-s3c2410 asm/arch
将内核头文件拷贝到最终安装目录下:
$root@host:/home/arm/kernel/linux-2.6.22/include# mkdir –p ${TARGET_PREFIX}/include
$root@host:/home/arm/kernel/linux-2.6.22/include# cp –rd asm-arm ${TARGET_PREFIX}/include
$root@host:/home/arm/kernel/linux-2.6.22/include#
cp –r asm- ${TARGET_PREFIX}/include
$root@host:/home/arm/kernel/linux-2.6.22/include# cp –r linux ${TARGET_PREFIX}/include
$root@host:/home/arm/kernel/linux-2.6.22/include# cp –d asm ${TARGET_PREFIX}/include
 
至此内核头文件建立完毕。
2、 建立Binary utilities:
binutils是一些二进制工具的集合,其中常用的是as ,ar和ld。
$root@host:/home/arm/kernel/include# cd ${PRJROOT}/build-tools
$root@host:/home/arm/build-tools# tar xvjf binutils-2.18.tar.bz2
$root@host:/home/arm/build-tools# cd build-binutils
$root@host:/home/arm/build-tools/build-binutils#
patch –Np1 –i /home/arm/build-tools/patch/binutils-2.18*
$root@host:/home/arm/build-tools/build-binutils#
../binutils-2.18/configure --target=${TARGET} –prefix=${PREFIX}
$root@host:/home/arm/build-tools/build-binutils# make
$root@host:/home/arm/build-tools/build-binutils# make install
${PREFIX}/bin下应该生成一些以arm-linux开头的文件
$root@host:/home/arm/build-tools/build-binutils# ls ${PREFIX}/bin
3、 生成glibc头文件:
$root@host:/home/arm/build-tools/build-binutils# cd ..
$root@host:/home/arm/build-tools/# tar xvjf glibc-2.6.1.tar.bz2
$root@host:/home/arm/build-tools/#
tar xvzf glibc-ports-2.6.1.tar.gz --directory ./glibc-2.6.1/
$root@host:/home/arm/build-tools/# cd glibc-2.6.1
$root@host:/home/arm/build-tools/glibc-2.6.1# mv glibc-ports-2.6.1 ports –v
打上补丁:
$root@host:/home/arm/build-tools/glibc-2.6.1#
patch –Np1 –i /home/arm/build-tools/patch/glibc-2.6.1-*patch
$root@host:/home/arm/build-tools/glibc-2.6.1# cd ..
$root@host:/home/arm/build-tools/# cd build-glibc-headers
这里需要添加对NPTL线程库的支持:
$root@host:/home/arm/build-tools/build-glibc-headers# 
echo “libc_cv_forced_unwind=yes”>>config.cache
echo “libc_cv_c_cleanup=yes”>>config.cache
echo “libc_cv_arm_tls=yes”>>config.cache
注:如果编译中出现”cannot compute long double size”,添加:
echo “ac_cv_sizeof_long_double=12”>>config.cache
$root@host:/home/arm/build-tools/build-glibc-headers#
../glibc-2.6.1/configure --host=${TARGET} --prefix=”/usr” --enable-add-ons
--with-headers=${TARGET_PREFIX}/include --cache-file=config.cache
$root@host:/home/arm/build-tools/build-glibc-headers#
make cross-compiling=yes install_root=${TARGET_PREFIX} prefix=””
install-headers
$root@host:/home/arm/build-tools/build-glibc-headers#
mkdir –p ${TARGET_PREFIX}/include/gnu
$root@host:/home/arm/build-tools/build-glibc-headers#
touch ${TARGET_PREFIX}/include/gnu/stubs.h
注:如果编译过程中出现找不到头文件的错误,可以根据错误提示的文件名用touch命令在相应目录下建立一个空文件,一般就可以编译通过了。
关键字:3c2410  linux2.6.22  移植 引用地址:基于3c2410的linux2.6.22移植(2)

上一篇:基于3c2410的linux2.6.22移植(1)
下一篇:基于3c2410的linux2.6.22移植(3)

推荐阅读最新更新时间:2024-03-16 14:52

uCOS II在ARM处理器上移植过程中的中断处理
uCOS II是一个源码公开、可移植、可固化、可剪裁和抢占式的实时多任务操作系统,其大部分源码是用ANSI C编写,与处理器硬件相关的部分使用汇编语言编写。总量约200行的汇编语言部分被压缩到最低限度,以便于移植到任何一种其它的CPU上。 uCOS II最多可支持56个任务,其内核为占先式,总是执行就绪态的优先级最高的任务,并支持Semaphore (信号量)、Mailbox (邮箱)、MessageQueue(消息队列)等多种常用的进程间通信机制。与大多商用RTOS不同的是,uCOS II公开所有的源代码.并可以免费获得,只对商业应用收取少量License费用。 uCOS II移植跟OS_CUP_C.C、OS_
[单片机]
MPLAB 工程移植到MPLAB X注意事项
随着这两年Microchip对MPLAB X和XC系列编译器的主推,MPLAB和Hi-tech编译器渐渐停止了更新和维护,所以建议你之前建立在MPLAB和Hi-tech底下的工程移植到MPLAB X和XC编译器下,当然为了兼容,MPLAB X也支持Hi-tech编译器,你可以在MPLAB X下编辑,编译继续使用Hi-tech,但是小猿不建议你这样做。在确保不影响产品功能和性能的前提下,怎么样将之前老的工程移植到新的开发环境和编译器下呢,因为两个平台的头文件不一样, 配置字语法也不一样,所以经过小猿亲身实践,移植时候需要注意两点即头文件和配置字 例如我们以基于PIC18F46K22芯片的一个工程为例,则涉及需要更换的头文件有pi
[单片机]
STM32 移植 STemwin(Touch)
上篇讲到了STemwin的基本移植步骤,这里再讲下Touch的支持。 驱动好自己的触摸屏,准备好测量X,Y 返回为ADC值的函数。这个一般也不难 准备好GUI_TOUCH_X.C文件,这里比较坑的就是这个文件没有包含在STemwin的包里面(至少5.32里面没有),需要自己写一个,其实内容很简单,如下 #include GUI.h #include XPT2046.h void GUI_TOUCH_X_ActivateX(void) { } void GUI_TOUCH_X_ActivateY(void) { } int GUI_TOUCH_X_MeasureX(void) { return XPT2046_R
[单片机]
STM32 <font color='red'>移植</font> STemwin(Touch)
PMON的软件架构由Nucleus移植到Linux设计方案
引言   Nucleus是单一地址空间操作系统的一种,作为商业化的嵌入式操作系统产品,曾被广泛使用。在MIPS架构中,其操作系统和用户程序完全工作在内核模式,且只占用和访问0x80000000以上的线性地址空间。因此,在Nucleus中,操作系统和用户程序工作在线性地址空间中,且用户程序与内核服务之间没有明显的区分,进入内核服务更像是调用API(Application Program InteRFace)而不需要上下文切换。其优点是限制少,编程方便,但系统健壮性差。   Linux操作系统因其开放性和稳定性等优点,近年来为越来越多的嵌入式设计方案所采用。它有着严格的内核模式和用户模式的区别,在MIPS架构中,用户模式只能访问0
[工业控制]
PMON的软件架构由Nucleus<font color='red'>移植</font>到Linux设计方案
利用MLD自动化操作系统移植降低Linux的成本
随着基于 Linux 的嵌入式系统得到日益广泛的应用,人们不禁要问,类似 Linux 这样的免费开放源代码操作系统的真正成本到底是多少?其实,最主要的成本是在劳动力上。要将 Linux 内核移植到定制嵌入式处理系统,您必须对产品所需要的内核功能、这些功能对其他内核服务的依赖程度以及您的工程团队的技能都有深入的了解。更重要的是,要了解可以借助哪些新技术来使这些任务自动化,以达到节省成本的目标。 开放源代码与商业操作系统 我们很多人都看过为如何使用 Linux 源代码提供指导的 GNU 通用公共许可证 (GPL)。要确定在系统中使用 Linux 的成本,一般来说,第一步是了解 Linux 的哪些部分是真正免费且不受法律约束的,哪些
[嵌入式]
24L01发送程序1138IO模拟移植
STM32寄存器多多,所以决定用回AVR结果发现AVR的稳定性非常值得怀疑。首先就是内部参考电压用不到,2片MEGA16结果有一片用不了内部参考电压(PS电路程序完全一样,而且外部REF是悬空不会导致内部短路),不过这个就原谅它了。编程CTC模式,结果发现1S中断的程序竟然有时进可以运行有时不可运行(这中情况在重插电源时交替发生,后来就干脆一直进不了中断),还有一芯片一个不小心烧错时钟溶丝,连续都读不出东西更别说下载了,不过突然间有下得了,之后又下载不了。。。所以觉得还是用51好,要是当初用汇编学51再用增强型51那可能爽很多,,。 #ifndef __NRF_H #define __NRF_H #include"main.h"
[单片机]
U-Boot-1.1.6移植到MINI2440开发板(3) —— 源码分析第一阶段
下面进行源码内容的分析及修改: 由上面的分析可以知道,最终将所有obj文件链接生成u-boot可执行文件时,用到了/board/mini2440/u-boot.lds这个链接脚本,查看其内容: ------- /board/mini2440/u-boot.lds ------- 24 OUTPUT_FORMAT( elf32-littlearm , elf32-littlearm , elf32-littlearm ) 25 /*OUTPUT_FORMAT( elf32-arm , elf32-arm , elf32-arm )*/ 26 OUTPUT_ARCH(arm) 27 ENTRY(_start) 28 SECTI
[单片机]
U-Boot-1.1.6<font color='red'>移植</font>到MINI2440开发板(3) —— 源码分析第一阶段
u-boot-2016.11移植到S3C2440之新建一个单板(1)
1、确定单板 下载并解压u-boot-2016.11,查看一下board目录下的这一u-boot版本支持的单板,寻找你的单板或者和你的单板相近的单板。对于S3C2440来说,u-boot没有提供与之相对应的单板支持,但是S3C2410与S3C2440是十分相似的,在u-boot-2016.11boardsamsung目录下有smdk2410的目录,即支持smdk2410开发板,那我们的u-boot也就基于这一开发板来移植修改。 2、配置、编译u-boot 首先就以smdk2410为目标来配置编译一下u-boot-2016.11,建议使用较高版本的交叉工具链,我使用的是arm-linux-gcc-4.3.3。 mak
[单片机]
u-boot-2016.11<font color='red'>移植</font>到S3C2440之新建一个单板(1)
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved