s3c2440的arm-linux交叉编译工具

发布者:快乐飞跃最新更新时间:2016-12-06 来源: eefocus关键字:s3c2440  arm-linux  交叉编译工具 手机看文章 扫描二维码
随时随地手机看文章

1、下载源码(ftp://ftp.kernel.org/pub/tools/crosstool/files/src/)
binutils、gcc、glibc、linux kernel。
Binutils-2.19.tar.bz2
gcc-4.4.4.tar.bz2
Glibc-2.11.2.tar.bz2
Glibc-ports-2.11.tar.bz2
Gmp-4.2.tar.bz2
Mpfr-2.4.0.tar.bz2
Linux-2.6.29.tar.bz2
Patch-2.6.29.bz2

2、建立环境
useradd arm
passwd arm
cd /home/arm
mkdir armlinux           
cd armlinux/  
mkdir tools
mkdir kernel  
mkdir build
mkdir program 
mkdir doc  
mkdir src
cd build
mkdir build_gcc build_binutils build_glibc

将所有的源文件解压到src中,内核的解压到kernel中

编写输出环境变量文件build_env:
export PRJROOT=/home/arm/armlinux
export TARGET=arm-linux
export PREFIX=$PRJROOT/tools
export TARGET_PREFIX=$PREFIX/$TARGET
export PATH=$PREFIX/bin:$PATH

设置输出环境变量:souce build_env


3、配置、安装binutils
cd /$PRJROOT/build/
①配置:
# $PRJROOT/src/binutils-2.19.1/configure --target=$TARGET --prefix=$PREFIX  ##--target指定目标主机类型  --prefix指定可执行文件的安装路径
②安装:
# make
# make install

4、建立内核头文件
cd $PRJROOT/kernel/linux-2.6.29/
编译器需要通过系统内核的头文件来获得目标平台所支持的系统函数调用所需要的信息。对linux内核,最好的方法是下载一个合适的内核,然后复制获得头文件。
①进行清理 : 
# make mrproper
②配置:
#make ARCH=arm CROSS_COMPILE=arm-linux- menuconfig  ##ARCH指定cpu体系结构,CROSS_COMPILE指定交叉编译器前缀

修改Makefile中对应的变量值然后执行 make menuconfig

注:选择对应的system type

配置完成后执行
make ARCH=arm CROSS_COMPILE=arm-linux- 
执行过程中有错误出现也没关系,主要目的是产生头文件version.h和autoconf.h
执行完检查一下内核目录中的/kernel/linux-2.6.29/include/linux/version.h和autoconf.h文件是不是生成了,这是编译glibc要用到的。version.h 和autoconf.h 文件的存在,说明你生成了正确的头文件。
ls $PRJROOT/kernel/linux-2.6.29/include/linux/version.h $PRJROOT/kernel/linux-2.6.29/include/linux/autoconf.h

接下来建立工具链需要的include目录,并将内核头文件复制过去。
cd include
ln -s asm-arm asm (可以查看一下,经过编译可以自动生成。如果已经生成链接,则不必重新链接,下同)
cd asm  
ln -s arch-epxa arch   
ln -s proc-armv proc

mkdir –p $TARGET_PREFIX/include
cp -r $PRJROOT/kernel/linux-2.6.29/include/linux $TARGET_PREFIX/include
cp -r $PRJROOT/kernel/linux-2.6.29/include/asm-arm $TARGET_PREFIX/include/asm
cp -r $PRJROOT/kernel/linux-2.6.29/include/asm-generic $TARGET_PREFIX/include
cp -r $PRJROOT/kernel/linux-2.6.29/arch/arm/include/asm  $TARGET_PREFIX/include
cp -r $PRJROOT/kernel/linux-2.6.29/arch/arm/mach-omap2/include/mach $TARGET_PREFIX/include/asm  (mach-omap2这一级目录要看是什么型号的cpu来选)

五、建立初始编译器
cd $PRJROOT/src
mv mpfr-2.4.0 gcc-4.4.4/mpfr
mv gmp-4.2.0 gcc-4.4.4/gmp
cd  $PRJROOT/build/build_gcc
$PRJROOT/src/gcc-4.4.4/configure --target=$TARGET --prefix=$PREFIX --without-headers --enable-languages=c --disable-shared --disable-threads --disable-decimal-float --disable-libmudflap --disable-lipssp
make all-gcc
make install-gcc
make all-target-libgcc
make install-target-libgcc

ln -vs libgcc.a `arm-linux-gcc -print-libgcc-file-name | sed 's/libgcc/&_eh/'`

六、编译glibc
cd $PRJROOT/src
mv glibc-ports-2.11 glibc-2.11.2/ports
cd $PRJROOT/build/build_glibc
CC=arm-linux-gcc 
AR=arm-linux-ar 
RANLIB=arm-linux-ranlib 
$PRJROOT/src/glibc-2.11.2/configure --host=arm-linux --prefix=$PREFIX/$TARGET --with-tls --disable-profile --enable-add-ons --with-headers=$PREFIX/$TARGET/include libc_cv_forced_unwind=yes libc_cv_c_cleanup=yes libc_cv_arm_tls=yes

make
make install

七、使gcc有交叉glibc的支持
$PRJROOT/src/gcc-4.4.4/configure  --target=$TARGET --prefix=$PREFIX  --enable-languages=c,c++ --enable-shared
make all
make install

八、完成工具链的设置
cd $TARGET_PREFIX/bin
查看文件是否为二进制文件:
file as ar gcc ld nm ranlib strip   
查看缺省的搜寻路径:
arm-linux-gcc -print-search-dirs  

九、测试和验证交叉编译工具
    下面编写一个简单的C程序,使用建立的工具链。、
cd $PRJROOT/program
vi hello.c
#include
int main(void)
{
           printf("hello linux/n");
           return 0;
}

arm-linux-gcc -static  hello.c -o   hello


关键字:s3c2440  arm-linux  交叉编译工具 引用地址:s3c2440的arm-linux交叉编译工具

上一篇:S3C2440学习之存储控制器
下一篇:S3C-2416 kernel (linux-2.6.35-rc3)编译过程

推荐阅读最新更新时间:2024-03-16 15:23

S3C2440内存初始化
分三部分说明: ①2440地址空间 ②内存与芯片硬件连接 ③存储控制器寄存器 S3C2440地址空间 S3C2440对外提供27根地址线,单靠芯片上的27根引脚,它只能访问128M的外设空间。 为了扩大外设的访问范围,S3c2440芯片又提供了8个片选信号nGCS0~nGCS7,对应Bank0-Bank7。当某个片选信号nGCSx有效时,则可以通过27根地址线去访问对应这个片选的128MB空间。当访问BANKx的地址空间时,nGCSx引脚输出低电平来选中外接设备。由于有8个片选,所以2440芯片能访问的外设空间总为8*128MB=1GB.而1G(0x40000000)以上的空间,则安排给了2440内部的寄存器,访问这些内部的寄存
[单片机]
s3c2440中GPIO上拉电阻的初步认识
  GPIO做输出使用时要加上拉电阻,因为默认的是漏极开路,高阻态,无法输出高电平。   GPIO做输入时要根据外围电路选择是否设置上拉电阻: 在外接电路能提供高低电平时可不加上拉电阻,比如作为第二功能的ADC输入,或作为地址总线时;而且作为ADC输入时若加上上拉电阻,还会影响ADC的测量。 当外接电路不能提供高和低电平时加上拉电阻,比如作为按键输入时,如不加上拉电阻,只能输入低电平,无法输入高电平。
[单片机]
S3C2440 Linux驱动移植——LCD
PC主机:Ubuntu 10.4 和redhat 9.0 目标板:TQ2440开发板 Linux内核:2.6.30 屏幕型号:WXCAT35-TG3#001F 分辨率: 320X240 本文将介绍如何移植LCD设备。 在移植前,先配置下内核,将LCD设备编译进内核。 1.移植 移植LCD设置只须修改位于arch/arm/mach-s3c2440/mach-smdk2440.c中的两个结构体的数据。 1.1 s3c2410fb_display结构 修改后的内容如下: /* LCD driver info */ static struct s3c2410fb_display smdk2440_lcd_
[单片机]
<font color='red'>S3C2440</font> Linux驱动移植——LCD
ARM-Linux驱动移植--RTC(实时时钟)移植
硬件平台:FL2440 内核版本:2.6.28 主机平台:Ubuntu 11.04 内核版本:2.6.39 首先修改内核源码/arch/arm/mach-s3c2410/mach-smdk2410.c 添加红色字体部分 static struct platform_device *smdk2410_devices __initdata = { &s3c_device_usb, &s3c_device_lcd, &s3c_device_wdt, &s3c_device_i2c, &s3c_device_iis, &s3c_device_sdi, &s3c_dev
[单片机]
<font color='red'>ARM-Linux</font>驱动移植--RTC(实时时钟)移植
基于S3C2440嵌入式系统主板的电磁兼容性设计
作者:许凯华,董淑云,刘玉华,胡立祥 华中师范大学  随着电子设备的频率越来越高,世界各国对电子产品电磁辐射标准的执行变得越来越严格,如何保证能在有限时间很好地在设计阶段发现并解决EMI/EMC问题非常重要,而PCB往往是一个电子系统的核心构成部分,一个经仔细电磁干扰设计的PCB板,能大幅度降低阻抗不匹配、传输线问题、信号互相耦合等现象引发的信号反射、延迟等线路不稳定因素,同时也可达到降低电磁辐射发射干扰,大大提高系统的稳定性和可靠性。本文将以嵌入式系统主板为平台,运用 EMIStream仿真软件,并采用源端串联端接阻抗的方法分析了解决嵌入式高速主板存在的电磁干扰问题。 1 电磁兼容性 1.1 电磁兼容和电磁干扰
[嵌入式]
s3c2440 移值新内核 linux-4.1.36
arm-linuxgcc version 4.3.2 经过试验,最高可以编译到 linux-4.1.36 ,在高的版本会有错误 ,可能是 GCC 编译器版本较低造成。 解压比较麻烦还要装一个 xz xz -d ,我是用 7z-zip 在电脑上解好,传 tar 上去解包。 修改 makefile ARCH ?= arm CROSS_COMPILE ?= arm-linux- find -name *24*_defconfig 查找出来有的配置项 ./arch/arm/configs/s3c2410_defconfig ./arch/arm/configs/mini2440_defconfig s3c2410_defco
[单片机]
<font color='red'>s3c2440</font> 移值新内核 linux-4.1.36
基于嵌入式图像信息采集与传送系统的设计
1.引言 家庭安防是困扰人们很久的问题,目前 智能家居 的崛起可以说不光解决了这一问题,而且提高了人们的生活质量。但是它的高额费用是大多数人所负担不起的,本文提出了一款简单、低廉的专一家庭安防系统来满足广大消费者的需求。 2.系统硬件电路结构设计 如图1所示,硬件电路由嵌入式核心电路板和外围设备构成。核心板处理器为三星S3C2440,运行主频率400MHz,存储单元由8M 16Bit K9F2808UOC NAND FLASH和4M 16Bit HY57V641620HG SDRAM存储芯片构成。外围设备由遮光式光电传感器、图像扑捉摄像模块及GPRS(通用无线分组业务)模块组成。 3.各模块功能 3.1 遮光式光电
[单片机]
基于嵌入式图像信息采集与传送系统的设计
S3C2440-裸机篇-06 | UART数据发送接收实验(扫描模式)
实验 —— UART数据收发实验 1. 看原理图确定UART硬件如何连接 由原理图可以看出,JZ2440开发板上将三个串口全部引出,其中UART0设置了板载的USB转串口电路,只需连接板上的USB口就可以,所以接下来我们使用UART0进行数据收发实验。 2. 看芯片手册设置引脚复用功能(GPHCON)、开启片内上拉(GPHUP) 由原理图可以看出,UART0的引脚是: GPH2:TXD0 GPH3:RXD0 这两个引脚都是普通的GPIO口,所以需要设置引脚复用功能,作为串口UART0的引脚: 在【【嵌入式系统通信协议②】EIA RS-232C串口总线标准】一文中讲解通信协议的时候讲过,串口的两根信号线在空闲的时候
[单片机]
S3C2440-裸机篇-06 | UART数据发送接收实验(扫描模式)
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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