ubuntu下linux 开发环境的搭建以及arm平台的移植
在Ubuntu上建立Arm Linux 开发环境
在Ubuntu上建立Arm Linux 开发环境来源:未知作者:电子电路【大中小】我使用的是友善2410的板子,以前都是用Fedora,现在家里的电脑被我转为Linux专用的了,装的是Ubuntu。
但是嵌入式还是要玩的,在装载过程中也遇到一些小麻烦。
在此记录一下,一来自己比较健忘,二来也希望能给一些没弄过的人一点启示。
目的:把ARM linux的交叉开发环境,kernel, filesystem, bootloder安装,并配置,使其可以编译bootloder, kernel, 可以nfs更新文件系统;资源:arm-linux-toolchains.tgzmatrix5-kernel-v5.5.tgzvivi.tar.gzJflash.tgzroot-for-nfs-v5.5.tgz规划:交叉编译器装在:/usr/local/kernel, bootloder放在: /home/volans/arm/用于启动的nfs文件系统放在:/home/armnfs/准备工作:sudo mkdir /home/armnfssudo chmod 777 /home/armnfsmkdir ~/arm上面前两句的目的是在/home下建立armnfs目录,为了开发的方便,把这个目录设成所有用户可rwx。
然后把上面提到的资源全部拷贝到~/arm/下。
安装配置:安装标准的C开发环境,由于Ubuntu安装默认是不安装的,所以需要先安装一下:sudo apt-get install gcc g++ libgcc1 libg++ make gdb安装交叉编译器cd /sudo tar zxvf /home/volans/arm/arm-linux-toolchains.tgz请在执行完成后查看是否存在/usr/local/arm文件夹。
把交叉编译器的路径加入到PATH,以方便使用:sudo vi /etc/bash_bashrc在后面加入如下代码:if [ -d /usr/local/arm ] ; thenPATH=/usr/local/arm/2.95.3/bin:"${PATH}"fi解压bootloader, kernel和flash烧写工具Jflashcd ~/armtar zxvf matrix5-kernel-v5.5.tgztar zxvf vivi.tar.gztar zxvf Jflash.tgz解压用于启动的NFS文件系统cd /home/armnfstar zxvf /home/volans/root-for-nfs-v5.5.tgz启动NFS服务请参照我前几篇文章,关于启动NFS服务器的相关内容。
linux?ubuntu?X86和ARM平台QT安装步骤
linux ubuntu X86和ARM平台QT安装步骤Linux ubuntu 平台:3种方式1、直接安装:sudo apt-get install libqt4-dev qtcreator(最好)2、源代码安装,一般不用3、sdk安装:下载sdk:sudo apt-get install libglib2.0-dev libSM-dev libxrender-dev libfontconfig1-dev libxext-devARM平台:1、安装交叉工具链,能够使用arm-linux-gnu-gcc命令编译如4.1.1版本的:mkdir /opt/crosstooltar -jxvf 路径/4.1.1_softfloat_withlib.tar.bz2 -C /opt/crosstool //将编译工具解压到crosstool中。
配置环境变量,当用arm-linux-gnu-gcc 编译程序时能够找得到此文件所在的目录例:vim /home/farsight/.bashrc在末尾添加:export PATH=$PATH:/opt/crosstool/4.1.1/bin2、看 4.1.1/arm-linux-gnu/lib下是否有zlib,libjpeg,libpng,freetype库文件如果没有,安装:以zlib为例:从下载源码tar -jxvf xxx/zlib-1.2.5.tar.bz2cd zlib-1.2.5CC=arm-linux-gnu-gcc AR=arm-linux-gnu-ar RANLIB=arm-linux-gnu-ranlib LD=arm-linux-gnu-ld ./configure --prefix=/opt/crosstool/4.1.1/arm-linux-gnumakemake install其他的网址是:安装步骤和上面一样3、Qt默认的ARM交叉编译器是:arm-linux-开头的,但是系统开始安装的是arm-linux-gnu开头的,所以要改qt源码:例:vim qt-everywhere-opensource-src-4.6.3/mkspecs/qws/linux-arm-g++/qmake.conf在arm-linux-后加个gnu,例:arm-linux-gnu-gcc...4、qt配置细微配置:编译qconfig,用qconfig执行相应的文件cd qt-everywhere-opensource-src-4.6.3/tools/qconfigqmakemakesudo cp qconfig /usr/bincd qt-everywhere-opensource-src-4.6.3/src/corelib/global qconfig qfeatures.txt...粗配置:使用./configure --help5、安装文件。
arm-linux编译环境搭建
ARM交叉编译环境搭建装好ubuntu系统后,搭建编译环境(所有命令均不输前面的“#”)1、将交叉编译环境安装包EABI-4.3.3_EmbedSky_20100610.tar.bz2复制到某个目录下,然后进行解压安装解压安装包的命令如下:#tar xvfj EABI-4.3.3_EmbedSky_20100610.tar.bz2 -C 目录2、进入profile文件#gedit /etc/profile3、在最后一行添加环境变量export PATH=$PATH:/../../../bin4、重启ubuntu5、查看环境变量的命令如下:#echo $PATH6、查看交叉编译环境版本:#arm-none-linux-gnueabi-gcc-4.3.3 -v,出现版本号则表示搭建成功。
编写简单C程序并运行1、打开打算存储程序的文件:#cd /kumust2、文件里新建路径: #touch hello.c3、手动在目录kumst里找到hello.c并打开编写程序并保存#include “stdio.h”main(){printf("hello,ubuntu!");}4、编译命令(pc上):#gcc hello.c -o helloarm上编译命令:#arm-linux-gcc hello.c -o hello5、执行文件(pc上执行)#./hello,出现hello,ubuntu!6、把ubuntu里的hello文件拷贝到优盘里7.插上优盘启动TQ2440,在终端里输入 cd /udisk ./hello TQ2440显示屏显示hello,ubuntu!至此说明linux在TQ2440移植成功!。
ARM开发教程之ARM Linux系统移植步骤
ARM开发教程之ARM LINUX系统移植步骤 ARM开发教程之ARM LINUX系统移植步骤 开发教程之
ARM简介 Linux简介 系统的制作移植建立交叉编译环境 引导程序 内核 修改内核 内核的配置编译 根文件系统 结束语
千锋3G嵌入式移动互联网技术研发中心 千锋3G嵌入式移动互联网技术研发中心 3G
ARM开发教程之引导程序 引导程序
对于计算机系统来说,从开机上电到操作系统启动需要一个引导程 序。嵌入式linux系统同样离不开引导程序,这个引导程序叫做 Bootloader[1]。通过这段小程序,可以初始化硬件设备、建立内存 空间的映射表,从而建立适当的系统硬件环境,为最终调用操作系 统内核做好准 备。 vivi[4]是韩国MIZI公司为其arm9系列产品而研发的Bootloader, 小而灵巧,这里选用它作为小型Linux系统的Bootloader。 首先要修改vivi源代码中的Flash分区信息,新的分区信息如表1 所示。 根据表1,在vivi源码arch/s3c2410/smdk.c文件中作出相应的 修改。 然后在配置菜单中导入smdk2410的默认配置,编译成功将在 vivi源代码目录下生成所需的Bootloader文件,文件名为vivi。 接着,便可把vivi下载到目标板Flash的相应位置。
千锋3G嵌入式移动互联网技术研发中心 千锋3G嵌入式移动互联网技术研发中心 3G
ARM开发教程之ARM简介
Arm9S3C2410微处理器与Linux的结合越来越紧密,逐 渐在嵌入式领域得到广范的应用。目前,在便携式消 费类电子产品、无线设备、汽车、网络、存储产品等 都可以看到S3C2410与Linux相结合的身影。 S3C2410微处理器是一款由Samsung公司为手持 终端设计的低价格、低功耗、高性能,基于arm920T 核的微处理器。它带有内存管理单元 (MMU),采用 0.18mm工艺和AMBA新型总线结构,主频可达203MHz。 同时,它支持Thumb 16位压缩指令集,从而能以较小 的存储空间获得32位的系统性能。
Ubuntu18.04安装arm-linux-gcc交叉编译器的两种方法(附下载地址)
Ubuntu18.04安装arm-linux-gcc交叉编译器的两种⽅法(附下载地址)⽅法⼀: 我们都知道Ubuntu有⼀个专门⽤来安装软件的⼯具apt,我们可以⽤它来全⾃动安装arm-linux-gcc。
此⽅法安装的是最新版的,但是此⽅法需要FQ,否则99%会失败,这就是为什么⽹上⼤多都⽤压缩包安装的原因: ⾸先Ctrl+Alt+T弹出终端,使⽤如下命令进⾏arm-linux-gcc的安装:sudo apt-get install gcc-arm-linux-gnueabihf 使⽤如下命令进⾏arm-linux-g++的安装:sudo apt-get install g++-arm-linux-gnueabihf 如果要卸载时使⽤如下命令进⾏移除,arm-linux-gcc的卸载:sudo apt-get remove gcc-arm-linux-gnueabihf arm-linux-g++的卸载:sudo apt-get remove g++-arm-linux-gnueabihfsudo tar -xjvf /tmp/arm-linux-gcc-3.4.5-glibc-2.3.6.tar.bz2 3.解压完成后,再在(/usr/local)中创建⼀个新⽬录arm,即在Terminal中输⼊以下命令:sudo mkdir /usr/local/arm 4.创建arm⽬录成功后,还需要给它解放全部权限,即在Terminal中输⼊以下命令:sudo chmod 777 /usr/local/arm 5.在解压出来的⽬录中找到并把整个arm-linux-gcc-3.4.5-glibc-2.3.6⽬录复制到刚刚建好的arm⽬录中,命令如下:sudo cp -r gcc-3.4.5-glibc-2.3.6 /usr/local/arm 6.打开(/etc/profile)配置环境变量和库变量,⽬的是以后可以在任何位置使⽤该交叉编译器,命令如下:sudo vi /etc/profile 7.⽤vi或者vim打开后,在⽂件最后添加两⾏,并输⼊以下代码:第⼀⾏是添加执⾏程序的环境变量,第⼆⾏是库⽂件的路径export PATH=$PATH:/usr/local/arm/gcc-3.4.5-glibc-2.3.6/binexport LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/arm/gcc-3.4.5-glibc-2.3.6/lib 8.使⽤source命令重新加载⽣效该配置⽂件source /etc/profile 9.检验是否安装成功,在 Terminal 输⼊以下命令输出版本信息:arm-linux-gcc -v 10.若有以下报错参考解决办法: 报错:bash: /usr/local/arm/4.2.2-eabi/usr/bin/arm-linux-gcc-4.2.2: No such file or directory 解决sudo apt-get install libc6-i386 该库中包括ia32-libs, lib32z1, lib32ncurses5等等依赖。
记ubuntu的uClinux交叉编译环境的搭建以及操作系统的引导
添加如图所示的代码。
最后,需要这两个程序自动启动的话还需要修改 “~/uClinux-dist/Vendors/Samsung/4510B/"下的 rc 文件,向其最后添加 “./bin/led& ./bin/uart&" 两行代码。 完成这些以后,我们就可以开始编译了
在“Target Platform Selection"中选择“Customize Kernel Settings (NEW)“和”Customize Vendor/User Settings (NEW)“
#define UTXBUF1 (* (volatile unsigned *) 0x03ffe00c) \\定义 UART1 发送缓存寄存器
#define URXBUF1 (* (volatile unsigned *) 0x03ffe010) \\定义 UART1 接收缓存寄存器
#define UBRDIV1 (* (volatile unsigned *) 0x03ffe014) \\定义 UART1 波特率分频寄存
void InitUART(int Port,int Baudrate) \\串口初始化函数体 { if(Port==0) { ULCON0=0x03; UCON0=0x09; UBRDIV0=Baudrate; } if(Port==1) { ULCON1=0x03; UCON1=0x09; UBRDIV1=Baudrate; } }
这次我选择了用 Ubuntu 这个版本的 linux 作为我的开发环境,是因为它的界面还算友好, 对于我这种 linux 白痴一样的人能少用一点命令那是再好不过了的。可是我没有想到 Ubuntu 可以这样的坑爹,由于用的 shell 和别个的 linux 不同,所以直接导致 arm-elf-tools-20030314.sh 不能打开,所以更别说安装了。Google 了很久,终于不得不去 面对了一个现实,就是我偷懒不想用命令,结果我得用更多的命令去安装这个该死的工具。
嵌入式Linux开发环境及其在ARM上的移植
6.1.2 交叉编译环境的建立
• 匹配Binutils、gcc和glibc的版本
工具链版本 binutils Linux 2.4.x 2.14 Linux 2.6.x 2.14
gcc
glibc glibc-threads gdb
2.95.3
2.2.5 2.2.5 5.3
3.3.2
2.2.5 2.2.5 6.0
Binutils工具包
Binutils工具集里主要包含以下一系列的程 序:addr2line、ar、as、c++filt、gprof、 ld、nm、objcopy、objdump、ranlib、 readelf、size、strings和strip, 它包含的库文件有:libiberty.a、libbfd.a、 libbfd.so、libopcodes.a和libopcodes.so。
ARMV4T平台工具链常用版本
6.1.2 交叉编译环境的建立
• 构建交叉编译环境通常有3种方法: 方法1:分步编译和安装交叉编译环境所需 要的库和源代码,最终生成交叉编译环 境。 方法2:通过Crosstool脚本工具来实现一次 编译生成交叉编译环境。 方法3:使用开发平台供应商提供的开发环 境安装套件建立交叉编译环境,这是最 常用的方法。
GNUmakefile Makefile Makefile
Make命令与Makefile文件
• (1)Makefile基本结构 Makefile中一般包含如下内容: 需要由make工具创建的项目,通常是 目标文件和可执行文件; 要创建的项目所依赖的文件; 创建每个项目时需要运行的命令。
6.1.1 交叉编译工具介绍
• 1.Binutils工具包 GNU Binutils是一套用来构造和使用二进 制所需的工具集。建立嵌入式交叉编译 环境,Binutils工具包是必不可少的,而 且Binutils与GNU的C编译器gcc是紧密集 成的,没有Binutils,gcc也不能正常工作。 GNU Binutils是一组开发工具,包括连接 器、汇编器和其他用于目标文件和档案 的工具。
ubuntu宿主机构建LINUX嵌入式开发环境步骤
ubuntu宿主机构建LINUX嵌入式开发环境步骤实验平台:ubuntu11.041、安装tftpa 安装相关软件包:Ubuntu tftp(服务端),tftp(客户端),xinetd:sudo apt-get install tftp tftpd xinetd或者sudo apt-get install tftp-hpa tftpd-hpa xinetd(推荐)LINUX下有两个tftp版本,tftp、tftpd和tftp-hpa、tftpd-hpa,两者有什么区别我还没有具体研究,但是在ubuntu11.04下,tftp、tftpd这个版本我安装后虽然启动了,但是有问题,具体表现在当应有put和get时会显示time out类似的提示,这是tftp没有启动时才发生的,但是实际上tftp是启动了的。
后来改为安装tftp-hpa、tfptd-hpa才没有这个问题。
b建立配置文件在/etc/xinetd.d/下建立一个配置文件tftpsudo vi /etc/xinetd.d/tftp在文件中输入以下内容:service tftp{socket_type = dgramprotocol = udpwait = yesuser = rootserver = /usr/sbin/in.tftpdserver_args = -c -s /tftpbootdisable = noper_source = 11cps = 100 2flags = IPv4}保存退出c建立Ubuntu tftp服务文件目录(上传文件与下载文件的位置),并且更改其权限sudo mkdir /tftpboot (这个文件夹可以随便设在哪里都可以,只是路径和xinetd.d/tftp里的server_args项一样,如果这里改变的话那里也要对应改变)sudo chmod 777 /tftpboot -Rd重新启动服务sudo /etc/init.d/xinetd restart (service xinetd restart)sudo in.tftpd -l /tftpboot至此Ubuntu tftp服务已经安装完成了。
ARM架构安装ubuntu系统
ARM架构安装ubuntu系统⼀、简介arm开发板制作系统是⽐较⿇烦,不论使⽤busybox还是yocto制作根⽂件系统对新⼿都⽐太友好,除⾮深度定制,否则使⽤ubuntu系统既可以满⾜,把更多的精⼒放在应⽤开发上。
⼆、准备材料我使⽤的芯⽚是RK3288,⼩伙伴可以根据⾃⼰的情况选择开发版。
开发环境:VMware操作系统:ubuntu开发版:RK3288三、ubuntu的下载与配置1. 下载ubuntu系统ubuntu官⽹根⽂件系统下载地址 ,根据需要下载⾃⼰所需的版本,我使⽤的是ubuntu20.04.2。
打开链接后选择ubuntu-base → releases →版本号→ release → ubuntu-base-20.04.1-base-armhf.tar.gz 下载完成后将ubuntu-base-20.04.1-base-armhf.tar.gz拷贝到ubuntu下,并解压。
mkdir ubuntu20.04.2sudo tar zxf ubuntu-base-20.04.1-base-armhf.tar.gz -C ubuntu20.04.22. 安装qemu-user-static⼯具安装完成后拷贝“/usr/bin/qemu-arm-static”到刚刚解压⽂件的“/usr/bin”路径下。
sudo apt-get install qemu-user-staticsudo cp /usr/bin/qemu-arm-static ubuntu20.04.2/usr/bin/3. ⽹络配置我在上⼀篇⽂章中,介绍在ubuntu20.04.2/etc/apt/sources.list⽂件中更改ubuntu的软件源,不知道为啥这次配置后反⽽下载不了,所以这⾥我就没有配置,各位⼩伙伴视情况⽽定。
为了制作成功的根⽂件系统能够联⽹,可以直接拷贝本机的dns配置⽂件到根⽂件系统的相应位置。
sudo cp /etc/resolv.conf ubuntu20.04.2/etc/resolv.conf4. 使⽤chroot⼯具挂载⽂件系统挂载成功后会进⼊到我们下来的系统中,注意⾥⾯的操作都是对我们挂载的系统进⾏操作的,⽆法在对开发系统进⾏操作,除⾮使⽤exit命令退出。
ubifs的制作,移植的重点详解
ubifs的制作,移植的重点详解PC操作系统:ubuntu 11.10使用的开发板:am335x_evm开发板使用的操作系统:linux 3.2使用的 NAND FLASH的型号:MT29F2G08ABAEAWP在制作 ubifs 文件系统的过程中需要如下:为方便操作,把下面将要安装的数据包的解压文件到存放在:/home/user/mtd再mkdir install,下面将要运行的数据包生成的文件将会存放在:/home/user/mtd/install1),正确安装数据包:zlib-1.2.5;lzo-2.06;e2fsprogs-1.42,mtd-utils-1.5.0这些数据包的版本最好如上所述,否则可能会导致无法生成所需的文件或生成的文件不正确这是制作 ubifs 过程中将要用到的所有的软件包的连接:ubifs1,zlibhost$ tar xvf zlib-1.2.5.tar.gzhost$ cd zlib-1.2.5/host$ ./configure --prefix=/home/user/mtd/install打开其根目录下的 Makefile,替换 gcc, ldshared, cpp, ar , ranlib 为如下:host$ gedit MakefileCC=arm-arago-linux-gnueabi-gccLDSHARED=arm-arago-linux-gnueabi-gcc -shared -Wl,-soname,libz.so.1,--version-script,zlib.mapCPP=arm-arago-linux-gnueabi-gcc -EAR=arm-arago-linux-gnueabi-ar rcRANLIB=arm-arago-linux-gnueabi-ranlib保存,退出host$ makehost$ make installhost$ cd ..生成的 zlib.a 存放在 /home/user/mtd/install/lib 中;生成的 zlib 的头文件存放在 /home/user/mtd/install/include 中。
Ubuntu下arm交叉编译环境的创建及基于s3c2410的linux2.6.22移植
cp –r asm- ${TARGET_PREFIX}/include
$root@host:/home/arm/kernel/linux-2.6.22/include# cp –r linux ${TARGET_PREFIX}/include
GCC是C编译器,用来将C代码编译成汇编代码;
Glibc就是gcc编译时需要的库了,glibc-ports是提供glibc对ARM的支持;
Linux-2.6.22.tar.bz2是内核源代码包。
需要注意的是gcc和glibc以及linux内核版本需要保持对应。如果用比较老的编译器去编译新的内核,或者用新的编译器编译老版本的内核,会出现一些莫名其妙的错误。另外补丁包也是必备的,否则编译过程中也会出错。刚开始我就深受其害。
$root@host:/home/arm# TARGET=arm-linux
$root@host:/home/arm# PREFIX=${PRJROOT}/tools
$root@host:/home/arm# TARGET_PREFIX=${PREFIX}/${TARGET}
$root@host:/home/arm# PATH=${PREFIX}/bin:${PATH}
经历近2周的时间,查阅大量的参考资料和贴子,终于成功将linux2.6.22移植到ARM2410上。中间走了不少弯路,不过走弯路也是一种收获,因为可以碰到和解决许多问题,增长知识。因为linux版本问题以及开发平台的不同,网上的很多文章并不完全适合自己的板子,需要自己摸索和修改。写这点东西算是对前一阶段工作的总结,以免将来忘记。
Ubuntu系统下arm-linux-gcc交叉编译环境搭建过程
Ubuntu系统下arm-linux-gcc交叉编译环境搭建过程搭建所需环境Linux版本:Ubuntu 14.10交叉编译器版本:arm-linux-gcc-4.4.3资源链接何为交叉编译环境搭建交叉编译环境,即安装、配置交叉编译⼯具链。
在Ubuntu环境下编译出嵌⼊式Linux系统所需的操作系统、应⽤程序等,然后再上传到⽬标机上。
交叉编译⼯具链是为了编译、链接、处理和调试跨平台体系结构的程序代码。
对于交叉开发的⼯具链来说,在⽂件名称上加了⼀个前缀,⽤来区别本地的⼯具链。
例如,arm-linux-表⽰是对arm的交叉编译⼯具链,arm-linux-gcc表⽰是使⽤gcc的编译器。
除了体系结构相关的编译选项以外,其使⽤⽅法与Linux主机上的gcc相同,所以Linux编程技术对于嵌⼊式同样适⽤。
不过,并不是任何⼀个版本拿来都能⽤,各种软件包往往存在版本匹配问题。
例如,编译内核时需要使⽤arm-linux-gcc-4.3.3版本的交叉编译⼯具链,⽽使⽤arm-linux-gcc-3.4.1的交叉编译⼯具链,则会导致编译失败。
gcc和arm-linux-gcc的区别就是gcc是linux下的C语⾔编译器,编译出来的程序在本地执⾏,⽽arm-linux-gcc⽤来在linux下跨平台的C语⾔编译器,编译出来的程序在⽬标机(如ARM平台)上执⾏,嵌⼊式开发应使⽤嵌⼊式交叉编译⼯具链。
搭建步骤1.解压缩下载arm-linux-gcc-4.4.3.tar.gz压缩包,并将其放在/usr/local/⽬录下,使⽤解压缩命令将其解压缩⾄该⽂件夹内:tar zxvf arm-linux-gcc-4.4.3.tar.gz现在交叉编译程序集都在/usr/local/arm-linux-gcc-4.4.3/bin⽂件夹下。
2.配置环境变量配置环境变量,把交叉编译⼯具链的路径添加到环境变量PATH中去,这样就可以在任何⽬录下使⽤这些⼯具。
linux下把某些开源库移植到arm开发板的基本流程
linux下把某些开源库移植到arm开发板的基本流程
将某一开源库移植到ARM开发板的基本流程如下:
1. 了解ARM开发板的硬件平台参数(例如CPU架构、内存大小等)以及操作系统类型和版本(例如Linux)。
2. 下载所需的编译工具链,包括ARM交叉编译器、交叉编译时所需的库文件等。
3. 下载需要移植的开源库源代码。
4. 配置交叉编译器,将其与ARM开发板的硬件平台参数进行匹配。
5. 编译并链接代码,生成ARM平台可执行文件。
6. 将编译好的可执行文件拷贝到ARM开发板上进行测试,并根据需要进行调试和修改。
7. 重复上述步骤,直到移植的开源库能够在ARM开发板上正常运行。
需要注意的是,在移植过程中还需要考虑一些特殊情况,例如可能需
要修改源代码中的一些与硬件平台相关的部分,以确保其能够正确地运行在ARM开发板上。
基于ARM的嵌入式linux内核的裁剪与移植
基于ARM的嵌入式linux内核的裁剪与移植前言嵌入式系统一直是计算机行业中的领域之一。
在许多应用程序中,嵌入式系统越来越流行。
嵌入式系统通常使用嵌入式芯片,如ARM芯片,并且它们通常运行Linux内核。
Linux内核是一个开放源代码的操作系统内核。
在嵌入式领域,Linux 内核可以被用于实现各种应用程序。
本文将重点介绍如何基于ARM平台的嵌入式Linux内核进行裁剪和移植。
ARM平台ARM处理器是一种RISC(Reduced Instruction Set Computer)处理器。
这种类型的处理器可用于嵌入式系统开发,因为它具有较低的功耗和高效的性能。
ARM处理器有许多版本,其中包括ARMv6和ARMv7。
ARMv6通常用于嵌入式系统,而ARMv7则用于智能手机和平板电脑等高端设备。
Linux内核的裁剪在嵌入式系统中,Linux内核需要进行裁剪,以适应嵌入式设备的需求。
与桌面计算机相比,嵌入式系统拥有更少的资源,包括RAM、闪存和存储空间。
因此,在将Linux内核移植到嵌入式系统之前,必须将内核进行裁剪。
在裁剪内核之前,您必须确定哪些内核模块是必需的。
一些模块可以从内核中移除,以减少内核的大小。
通常,将不必要的模块和其他功能从内核中移除可以使内核变得更小并具有更好的性能。
另外,裁剪内核时应确保其他组件与内核兼容。
例如,在新内核中可能需要更改驱动程序或实用程序以适应修改后的内核。
裁剪内核可能是一项比较困难的工作,需要深刻了解Linux内核的各个方面,以确保正确地裁剪内核。
移植Linux内核到ARM移植内核是将Linux内核适应新硬件的过程。
在开始移植内核之前,您必须了解嵌入式设备的硬件架构以及所需的内核组件。
移植Linux内核到ARM可以分为以下步骤:1.选择合适的ARM平台和处理器并确定所需的内核选项。
2.下载最新的内核源代码。
3.配置内核选项,并使其适应新硬件。
4.使用交叉编译器编译内核。
自己在Ubuntu上建立ArmLinux开发环境
自己在Ubuntu上建立ArmLinux开发环境Arm9-Linux 交叉编译操作步骤: (2)附件《一》 (5)附件《二》 (11)环境:WMware操作系统:Ubuntu 10.04操作步骤:1.如果未安装VMT ools,请安装。
具体参考附录《一》2.切换目录输入命令:cd /usr/src3.解除系统文件夹src权限:sudo gnome-open /usr/src;4.把内核源码包“2440-linux-2.6.28.tar.gz”和linux交叉编译工具链“cross-3.4.1.tar.bz2”复制到 usr/src 目录下;5.解压: sudo tar -zxvf 2440-linux-2.6.28.tar.gz解压:sudo tar -jxvf cross-3.4.1.tar.bz26.安装配置:安装ncurses ,命令为:sudo apt-get install libncurses5-dev 如果安装了,就不需要安装。
安装标准的C开发环境,由于Ubuntu安装默认是不安装的,所以需要先安装一下:sudo apt-get install gcc g++ libgcc1 libg++ make gdb7.配置环境变量:把交叉编译器的路径加入到PATH,以方便使用:在/etc/profile文件末尾加上PATH=$PATH:/usr/src/usr/local/arm/3.4.1/binsource /etc/profile #使其立即生效8.安装minicom串口工具sudo atp-get install minicom然后配置:sudo minicom -s9.进入/usr/src/linux-2.6.28.7 文件夹修改文件Makefile路径 ,10.把交叉编译的路径改CROSS_COMPILE ?=/usr/src/usr/local/arm/3.4.1/bin/arm-linux- 其中“/usr/src/usr/local/arm/3.4.1/bin”为交叉编译工具链的bin路径。
ubuntu下交叉编译环境构建(arm-linux-gcc-432_).
ubuntu下交叉编译环境构建(arm-linux-gcc-4.3.2 )及第一个linux下的c程序1.解压arm-linux-gcc-4.3.2.tgz#tar -jxvf arm-linux-gcc-4.3.2.tgz解压过程需要一段时间,解压后的文件形成了usr/local/ 文件夹,进入该文件夹,将arm文件夹拷贝到/usr/local/下# cd usr/local/#cp -rv arm /usr/local/现在交叉编译程序集都在/usr/local/arm/4.3.2/bin下面了2. 修改环境变量,把交叉编译器的路径加入到PATH。
修改/etc/bash.bashrc文件#vim /etc/bash.bashrc在最后加上:export PATH=$PATH:/usr/local/arm/4.3.2/binexport PATH(如果不能编辑,先修改相关文件的权限使用chmod命令。
)3.立即使新的环境变量生效,不用重启电脑:对应方法一:#source /root/.bashrc对应方法二:# source /etc/profile4.检查是否将路径加入到PATH:# echo $PATH显示的内容中有/usr/local/arm/bin,说明已经将交叉编译器的路径加入PATH。
至此,叉编译环境安装完成。
5. 测试是否安装成功:首先查看bin目录下可执行文件,或许不是arm-linux-gcc# /arm/4.3.2/bin/arm-none-linux-gnueabi-gcc-4.3.2 –v上面的命令会显示arm-linux-gcc信息和版本,gcc version 4.3.26 .编译Hello World程序,测试交叉工具链#include <stdio.h>int main(){printf("Hello World!\n");return 0;}执行下面的命令:# arm-linux-gcc -o hello hello.c源程序有错误的话会有提示,没有任何提示的话,就是通过了,就可以下载到ARM目标板上运行了!接着可以输入file hello的命令,查看生成的hello文件的类型,要注意的是生成的可执行文件只能在ARM体系下运行,不能在其于X86的PC机上运行。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Linux开发环境的搭建1.arm交叉编译链的安装2.NFS服务器的安装3.tftp服务器的安装4.触摸屏驱动库的安装编译5.编译安装qt-everywhere-opensource-src-4.8.1需要的文件及库:1.arm-2009q1-203-arm-none-linux-gnueabi2.fs.tar.gz3.tslib-1.44.qt-everywhere-opensource-src-4.8.11.arm交叉编译链的安装见附录6:arm-2009q1-203-arm-none-linux-gnueabi安装测试交叉编译器是否安装成功,执行如下命令:HOST $ arm-none-linux-gnueabi-gcc -v如果显示编译器的版本信息说明安装成功。
2.NFS服务器的安装见附录7:安装完成后,在/home/wws/目录下执行如下指令:sudo gedit nfs.shnfs.sh的内容如下:HOST $ sudo /etc/init.d/portmap restartHOST $ sudo /etc/init.d/nfs-kernel-server restart保存后执行source nfs.sh以后只要在主目录下执行上述source命令就可以重启nfs服务器测试 NFS 服务器是否安装成功,执行如下命令:HOST $ showmount -e若显示 /home/wws/wws_nfs*则说明安装成功。
3.tftp服务器的安装具体安装过程见附录8:安装完成后,执行:sudo gedit tftp.sh其内容如下:HOST $ sudo /etc/init.d/xinetd restartHOST $ sudo /etc/init.d/tftpd-hpa restart保存在主目录下,当开发板找不到链接,出现T T T T.......等时,无需重启系统,只需执行source tftp.sh重启tftp服务器即可,或者直接执行上述两条指令来重启服务器。
4.触摸屏驱动库的安装编译Tslib是一个开源的程序,能够为触摸屏驱动获得的采样提供诸如滤波、去抖、校准等功能,通常作为触摸屏驱动的适配层,为上层的应用提供了一个统一的接口。
在采用触摸屏的移动终端中,触摸屏性能的调试是个重要问题之一,因为电磁噪声的缘故,触摸屏容易存在点击不准确、有抖动等问题。
安装触摸屏驱动库tslib-1.4新建文件夹my_qt,在该文件夹下进行解压解压wws@ubuntu:~/my_qt/tslib1.4$ tar -zxvf tslib-1.4.tar.gz进入目录wws@ubuntu:~/my_qt$ cd tslib-1.4wws@ubuntu:~/my_qt/tslib1.4$配置wws@ubuntu:~/my_qt/tslib1.4$ ./autogen.sh若出现如下错误./autogen.sh: line 4: autoreconf: command not found解决办法:sudo apt-get install autoconf automake libtool指定安装目录wws@ubuntu:~/my_qt/tslib1.4$./configure --prefix=/usr/local/Trolltech/tslib-1.4 --host=arm-none-linux-gnueabi ac_cv_func_malloc_0_nonnull=yes(提示:在这个配置中/usr/local/ Trolltech/tslib-1.4就是我们指定的安装路径,也就是执行make install后,tslib就被安装到这个目录了)编译安装wws@ubuntu:~/my_qt/tslib1.4$ make20120726 Q:若报错提示/usr/include/bits/fcntl2.h:51: error: call to ‘__open_missing_mode’ declared with attribute error: open with O_CREAT in second argument needs 3 arguments In function ‘open’,A:因为gcc-4.3.3对语法检查严格的结果,需要添加一个参数,即在tslib1.4/tests/ts_calibrate.c 中227行与229行,open函数中添加第三个参数0777,如下图wws@ubuntu:~/my_qt/tslib1.4$ sudo make install进过上述操作,就可以在/usr/local/qte-arm/tslib-1.4目录下看到相关的应用程序、共享库、配置文件等,这些库和配置文件都是要拷到文件系统的usr/lib 里面的。
编译成功后在目标位置产生/bin、/etc、/include、/lib 4个文件夹至此在PC机上的tslib环境已经安装完成。
5.编译安装qt-everywhere-opensource-src-4.8.1在文件夹my_qt 下解压文件wws@ubuntu:~/my_qt$ tar -zxvf qt-everywhere-opensource-src-4.8.1.tar.gz进入目录wws@ubuntu:~/my_qt$ cd qt-everywhere-opensource-src-4.8.1配置-prefix:预设安装目录动态库:./configure -prefix /usr/local/Trolltech/QtEmbedded-4.8.1-arm-nostatic -opensource -no-qt3support -no-xmlpatterns -no-multimedia -no-phonon -no-phonon-backend -no-svg -no-webkit -no-javascript-jit -no-scripttools -declarative -declarative-debug -qt-mouse-tslib -DQT_QWS_CLIENTBLIT -xplatform qws/linux-arm-g++ -embedded arm -confirm-license静态:(目前用静态库)./configure -prefix /usr/local/Trolltech/QtEmbedded-4.8.1-arm-static -opensource -no-qt3support -no-xmlpatterns -no-multimedia -no-phonon -no-phonon-backend -no-svg -no-webkit -no-javascript-jit -no-scripttools -declarative -declarative-debug -qt-mouse-tslib -static -DQT_QWS_CLIENTBLIT -xplatform qws/linux-arm-g++ -embedded arm -confirm-license静态(arm-none-linux-gnueabi-gcc编译链)./configure -prefix /usr/local/Trolltech/QtEmbedded-4.8.1-arm-gnueabi-static -opensource -no-qt3support -no-xmlpatterns -no-multimedia -no-phonon -no-phonon-backend -no-svg -no-webkit -no-javascript-jit -no-scripttools -declarative -declarative-debug -qt-mouse-tslib -static -DQT_QWS_CLIENTBLIT -xplatformqws/linux-arm-g++ -embedded arm -confirm-license静态:(目前用arm-arago-linux-gnueabi编译链)./configure -prefix /usr/local/Trolltech/QtEmbedded-4.8.1-arm-static -opensource -no-qt3support -no-xmlpatterns -no-multimedia -no-phonon -no-phonon-backend -no-svg -no-webkit -no-javascript-jit -no-scripttools -declarative -declarative-debug -qt-mouse-tslib -static -DQT_QWS_CLIENTBLIT -xplatform qws/linux-arm-g++ -embedded arm -confirm-license20120726 Q:若出现报错如下修改qt-everywhere-opensource-src-4.8.1/mkspecs/qws/linux-arm-g++/qmake.conf如下20120727 Q:若提示如下/home/wws/CodeSourcery/Sourcery_G++_Lite/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/../../../../arm-none-linux-gnueabi/bin/ld:warning:libts-0.0.so.0,neededby /home/giant/my_qt/qt-everywhere-opensource-src-4.8.1/lib/libQtGui.so, not found (try using -rpath or -rpath-link)/home/wws/my_qt/qt-everywhere-opensource-src-4.8.1/lib/libQtGui.so: undefined reference to `ts_read_raw'/home/wws/my_qt/qt-everywhere-opensource-src-4.8.1/lib/libQtGui.so: undefined reference to `ts_open'/home/wws/my_qt/qt-everywhere-opensource-src-4.8.1/lib/libQtGui.so: undefined reference to `ts_fd'/home/wws/my_qt/qt-everywhere-opensource-src-4.8.1/lib/libQtGui.so: undefined reference to `ts_config'/home/wws/my_qt/qt-everywhere-opensource-src-4.8.1/lib/libQtGui.so: undefined reference to `ts_close'/home/wws/my_qt/qt-everywhere-opensource-src-4.8.1/lib/libQtGui.so: undefined reference to `ts_read'A:修改qt-everywhere-opensource-src-4.8.1/mkspecs/qws/linux-arm-g++/qmake.conf/usr/local/Trolltech/tslib-1.4/include/usr/local/Trolltech/tslib-1.4/lib最后两句是tslib的安装路径,如果设置不对则生成的库文件没办法支持触摸屏然后执行 make再执行 sudo make install编译成功之后,配置环境变量为了方便以后的开发,因此编写一个导入环境变量的脚本。