3163|0

61

帖子

3

TA的资源

一粒金砂(初级)

楼主
 

如何一点点的学习嵌入式linux开发环境搭建 [复制链接]

   
    对于一个嵌入式linux新手来说,嵌入式linux开发环境的搭建是一个最基本的技能也是一个比较棘手的问题,如何学习嵌入式linux开发环境?需要虚席哪些知识?对此整理了一些嵌入式linux开发环境学习资料供大家参考。
   
    一:一步一步搭建arm-linux交叉编译环境
    要做嵌入式Linux开发,首先需要有交叉编译工具链(crosscompiling toolchain),也就是在主机(x86 PC)上可编译生成目标板可执行文件(ARM指令)的编译工具。和普通的编译工具链一样,交叉编译工具链也包括编译、链接、修改目标文件的各种程序,如gcc、glibc、ld、gas、objdump、readelf等。
    使用以下版本的文件为例子建立ARM-linux交叉编译环境:
   binutils-2.11.gz
   gcc-2.95.3.gz
    glibc-2.2.3.gz
    glibc-linuxthreads-2.2.3.tar.gz
    linux-2.4.5.gz
    patch-2.4.5-rmk7.gz# linux kernel patch
    我们的工作路径是
    ~ -- +------- tars --+----- SourceDir
    | \----- BuildDir
    \------ armtools
    tars
    在这里放我们的下载来的 .tar.gz 文件
    SourceDir
    这个临时目录放我们解压缩后的源文件
    BuildDir
    我们在这里编译
    armtools
    把arm-linux 交叉编译环境的安装在这里
    安装linux 的头文件
    解压缩,打补丁
    cd ~/tars/SourceDir
    tar -zxf ../linux-2.4.5.tar.gz
    cd linux
    zcat ../../patch-2.4.5-rmk7.gz| patch -p1
    修改 Makefile 建议先删除 .config 文件否这以后会遇到麻烦。
    MakefileARCH := ......改为:ARCH=arm #
    执行一下 make clean
    建立连接
    如果是LART板子
    make ARCH=arm lart_config
    cd include/asm-arm
    rm -f arch proc
    ln -s arch-sa1100 arch
    ln -s proc-armv proc
    如果是clps711xCPU
    cd include/asm-arm
    rm -f arch proc
    ln -s arch-clps711x arch
    ln -s proc-armv proc
    为你自己的板子定制:
    make ARCH=arm menuconfig
    make dep
    拷贝头文件
    cp -dR include/linux~/armtools/arm-linux/include
    cp -dR include/asm-arm ~/armtools/arm-linux/include/asm
    编译安装binutils
    解压缩
    cd ~/tars/SourceDir
    tar -zxf ../binutils-2.11.gz
    编译
    cd ~/tars/BuildDir
    mkdir binutils
    cd binutils
    ../../SourceDir/binutils-2.11/configure--target=arm-linux --prefix=~/armtools
    make all install
    编译安装gcc c 编译器
    解压缩
    cd ~/tars/SourceDir
    tar -zxf ../gcc-2.95.3.tar.gz
    修改gcc t-linux 文件在t-linux文件中的TARGET_LIBGCC2_CFLAGS上加上__gthr_posix_h inhibit_libc
    cd gcc-2.95.3/ gcc/config/arm
    mv t-linux t-linux-orig
    sed 's/TARGET_LIBGCC2_CFLAGS=/TARGET_LIBGCC2_CFLAGS = -D__gthr_posix_h -Dinhibit_libc/' < t-linux-orig> t-linux-core
    cp ./t-linux-core ./t-linux
    编译
    cd~/tars/BuildDir
    mkdir gcc-core
    cd gcc-core
   ../../SourceDir/gcc-2.95.3/configure \
    --target=arm-linux\
   --prefix=~/armtools \
   --enable-languages=c \
    --with-local-prefix=~/armtools/arm-linux \
    --without-headers \
    --with-newlib \
    --disable-shared
    make all install
    编译安装 glibc
    解压缩
    cd ~/tars/SourceDir
    tar -zxf ../glibc-2.2.3.tar.gz
    cd glibc-2.2.3
    tar -zxf ../../glibc-linuxthreads-2.2.3.tar.gz
    编译
    cd ~/tars/BuildDir
    mkdir glibc
    cd glibc
    CC=arm-linux-gcc AR=arm-linux-arRANLIB=arm-linux-ranlib \
    ../../SourceDir/glibc-2.2.3/configure\
    --host=arm-linux \
    --prefix=~/armtools/arm-linux \
    --enable-add-ons \
    --with-headers=~armtools/arm-linux/include
    make all install
    编译安装gcc c, c++ 编译器
    恢复t-linux 文件
    cd ~/tars/BuildDir
    mkdir gcc
    cd gcc
    cp../../SourceDir/gcc-2.95.3/gcc/config/arm/t-linux-orig \
   ../../SourceDir/gcc-2.95.3/gcc/config/arm/t-linux
    编译
    ../../SourceDir/gcc-2.95.3/configure \
    --target=arm-linux \
    --prefix=~/armtools \
    --enable-languages=c,c++ \
    --with-local-prefix=~armtools/arm-linux
    make all install
   
    熟悉开发环境
    1.1U-boot的基本使用方法
    连接好开发板的网线和串口线启动minicom(配置成115200 8N1Flow Control)。按下开发板电源,立刻按除回车以外的任意键,进入bootloader提示符AKAE2440#。如果没来及按键就已经启动了内核,可以按开发板上的RESET键重来。
    注意:u-boot的终端不能处理控制字符,不要用移动光标键或翻页键等,退格键可以用。按了产生控制字符的键再输入命令就会产生错乱,这时可以按下回车输入当前这条已经错乱的命令,然后在新的提示符下重新键入命令。
    输入printenv命令显示bootloader的参数。
    2.将自己定制的根文件系统下载到开发板运行
    根文件系统是一种不严格的说法,其实是指文件系统中的文件和目录,这些文件和目录构成了一个Linux系统运行所需的基本框架。ftp上的rootfs-basic.tar是根文件系统的打包,由于包含设备文件,需要root权限才能解包:
    ~$ sudo tar xf rootfs-basic.tar
    解包后可以根据自己的需要修改其中的目录和文件,然后将根文件系统目录制作成cramfs映像再下到开发板运行,这样就达到了修改根文件系统中的目的。
    首先确认你的主机上安装了软件包cramfsprogs,然后制作cramfs文件系统映像:
    ~$ mkcramfs~/rootfs rootfs.cramfs
    然后按照前面的步骤把rootfs.cramfs下载到开发板的ext2分区,运行一下试试。
    3.设置开发板的启动方式为NFSRoot
    基本思想是:在主机上开NFS服务器,把主机上的~/rootfs目录导出为NFS服务目录,使开发板一启动就自动加载主机的~/rootfs目录为根文件系统,省去了下载和烧写映像的麻烦,在主机上修改根文件系统中的文件立刻在开发板的系统上生效,在开发过程中十分便利。
    首先在主机上安装和配置NFS服务,确认你的主机安装了nfs-kernel-server软件包。然后修改配置文件/etc/exports,添加下面一行(注意*号后面紧跟左括号,无空格,每个逗号后面也不能有空格):
    /home/akaedu/rootfs *(rw,sync,no_root_squash)
这表示我们把上一节中通过解压rootfs-basic.tar得到的/home/akaedu/rootfs/目录设置为nfs服务目录。
点赞 关注

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表