记ubuntu的uClinux交叉编译环境的搭建以及操作系统的引导

合集下载

linux交叉编译环境搭建步骤

linux交叉编译环境搭建步骤

linux交叉编译环境搭建步骤在Linux系统下搭建交叉编译环境主要涉及以下几个步骤:2. 配置环境变量:将交叉编译工具链的路径添加到系统的环境变量中以便于使用。

可以在用户的`.bashrc`或`.bash_profile`文件中添加如下行:```bashexport PATH=<path_to_toolchain>/bin:$PATH```其中`<path_to_toolchain>`是指交叉编译工具链所在的路径。

3.设置目标平台的系统根目录:交叉编译时需要使用目标平台的系统库和头文件,因此需要设置目标平台的系统根目录。

可以通过以下方式设置:```bashexport SYSROOT=<path_to_sysroot>```其中`<path_to_sysroot>`是指目标平台的系统根目录。

4.编写一个简单的交叉编译项目:为了验证交叉编译环境是否搭建成功,可以编写一个简单的交叉编译项目进行测试。

例如,编写一个简单的C程序,将其交叉编译为ARM平台下的可执行文件。

```c#include <stdio.h>int maiprintf("Hello, world!\n");return 0;```将上述代码保存为`hello.c`文件。

然后,使用以下命令进行交叉编译:```basharm-linux-gnueabi-gcc -o hello hello.c```编译完成后,会生成一个名为`hello`的可执行文件。

在ARM平台上执行该可执行文件,将输出`Hello, world!`。

以上就是在Linux系统下搭建交叉编译环境的基本步骤。

根据具体的需求,可能还需要进行其他的配置和设置。

ubuntu10.04全过程创建交叉编译环境

ubuntu10.04全过程创建交叉编译环境

ubuntu10.04下建立交叉编译工具链(支持软浮点)全过程参考了网上的不少的资料,花了五个小时终于完成了,记录下全过程供大家分享。

用到的源码包如下,建议新手全部放在/home/usr/downloads/ 目录下。

以下操作在用户权限下进行。

=======================================================================arm-linux-gcc-3.4.1.tar.gzglibc-2.3.3.tar.gzlinux-2.6.8.tar.gzcrosstool-0.43.tar.gzbinutils-2.15.tar.gzglibc-linuxthreads-2.3.3.tar.gzbinutils-2.18.tar.gz --安装用编译一次至少要花半个小时,如果因为依赖软件没有安装中途会报错退出,只有从头再来,那样很浪费时间的。

sudo apt-get install bison flex build-essential patch libncurses5-dev由于ubuntu10.04自带的ld ,as版本太高的原因,需要安装binutils的2.18版本,然后替换系统中的2.20版本。

方法如下:$cd downloads$tar xzvf binutils-2.18.tar.gz$cd binutils-2.18$./configure --prefix=/tmp/binutils --disable-nls (-prefix后面的是生成可执行文件存放的位置可以自己定义)$make all$make install编译成功后在/tmp/binutils/bin/中就生成了ld和as程序的可执行文件重新链接/usr/bin/ld 和/usr/bin/as文件$sudo rm /usr/bin/ld /usr/bin/as //删除2.20的ld,as$sudo ln –s /tmp/binutils/bin/ld /usr/bin/$sudo ln –s /tmp/binutils/bin/as /usr/bin/然后可运行ld –v 和as –v 查看版本是否为2.18。

ubuntu下交叉编译环境构建(arm-linux-gcc-432_).

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机上运行。

ubuntu10.10下建立交叉编译环境

ubuntu10.10下建立交叉编译环境

1. 安装标准的C开发环境,由于Ubuntu 9.04 Linux安装默认是不安装的,所以需要先安装一下(如果已经安装好的话,就可以免去这一步了):$ sudo apt-get install gcc g++ libgcc1 libg++ make gdb如果上面这个安装不行,可以试试$ sudo apt-get install build-essential2. 下载arm-linux-gcc-4.3.2.tgz到任意的目录下,进入这个文件夹$ sudo tar xvzf arm-linux-gcc-4.3.2.tgz –C /注意:C 后面有个空格,并且 C 是大写的,它是英文单词“Change”的第一个字母,在此是改变目录的意思。

执行该命令,将把 arm-linux-gcc 安装到/usr/loca/arm/4.3.2 目录。

3. 修改环境变量,把交叉编译器的路径加入到PATH。

方法一:修改/etc/bash.bashrc文件(此文件只对当前用户适用)$sudo gedit /etc/bash.bashrc在最后加上export PATH=$PATH:/usr/local/arm/4.3.2/bin方法二:修改/etc/profile文件(此文件属于系统级别的环境变量,设置在里面的东西对所有用户适用):$sudo gedit /etc/profile增加路径设置,在末尾添加如下,保存/etc/profile文件:export PATH=$PATH:/usr/local/arm/4.3.2/bin方法三:修改/etc/environment文件$sudo gedit /etc/environment原文件应为PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin: /usr/games“将其改为PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/arm/4.3.2/bin"保存退出即可4. 立即使新的环境变量生效,不用重启电脑:对应方法一:$ source /root/.bashrc对应方法二:$ source /etc/profile方法三立即生效5. 检查是否将路径加入到PATH: $ echo $PATH显示内容/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr /games:/usr/local/arm/4.3.2/bin 说明已经将交叉编译器的路径加入PATH。

Ubuntu18.04安装arm-linux-gcc交叉编译器的两种方法(附下载地址)

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交叉编译环境的搭建以及操作系统的引导

记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学习之交叉编译环境

linux学习之交叉编译环境

linux学习之交叉编译环境⼀在Linux上配置交叉编译环境:1. 根据芯⽚型号确定芯⽚指令集架构,并根据该架构选择合适的交叉编译⼯具2. 将交叉编译⼯具解压,添加到环境变量。

3. 编译⽬标⽂件,并想法设法将⽬标⽂件整到开发板上,有以下⽅法:将⽬标⽂件先整到windows PC下,拷贝到U盘/SD卡然后再插⼊开发板;⽤⽀持SSH的⼯具如putty登陆板⼦linux服务器;⽤NFS实现。

⼆ Uboot:⽤来启动内核(CPU不能直接从块设备中执⾏代码): 执⾏uboot代码,在uboot中把块设备中的内核代码复制到某内存地址处,然后再执⾏这个地址,即可启动内核。

uboot代码(uboot 根⽬录的spl⽂件夹u-boot-spl.bin和uboot根⽬录下u-boot.bin)需要⽤make(makefile配置+“.config”(make menuconfig图形化配置⼯具的输出⽂件))出来。

然后分别烧录进板⼦。

三编译kernel,并将其烧写进板⼦,启动板⼦后linux的shell环境应该跑起来了。

注意烧录内核的位置和内核运⾏环境: ramdisk根⽂件系统,这个⽂件系统是存在RAM⾥的,所以你在⾥⾯写⼊东西,⼀断电就没有了。

NAND Yaffs2⽂件系统:断电后还是存在的,使⽤busybox⽤来⽣成linux⽂件系统的⼏个基本⽂件夹,然后通过打包⼯具mkyaffs2,它⽤来⽣成能直接烧录到板⼦⾥的镜像⽂件,以下都是要烧写的⽂件。

Image Name Image Type Image start offsetu-boot-spl.bin uboot0x200u-boot.bin data 0x100000env.txt env0x80000970uImage data0x200000rootfs_yaffs2.img data 0x2000000四:将⾃⼰编写的程序的可执⾏⽂件拷贝到/opt⽬录下,并拷贝所需的库⽂件到/lib下,即可通过命令⾏来运⾏⽂件了。

交叉编译环境的配置与使用

交叉编译环境的配置与使用

交叉编译环境的配置与使用交叉编译是指在一个不同的开发环境中编译程序,以在目标平台上运行。

目标平台可以是不同的硬件架构、操作系统或操作系统版本。

交叉编译可以有效地减少在目标平台上进行开发和测试的时间,尤其是在限制了资源的嵌入式系统中。

配置交叉编译环境的步骤主要包括以下几个方面:1. 选择交叉编译工具链:交叉编译工具链是包含了交叉编译器、交叉链接器和相关工具的集合。

根据目标平台的特点,可以选择使用已有的工具链,或者自己构建定制的交叉编译工具链。

常见的交叉编译工具链有Cygwin、GCC等。

3.配置交叉编译环境:在配置交叉编译环境之前,首先需要确定目标平台和目标操作系统的相关信息,例如:处理器架构、操作系统版本、库文件位置等。

然后设置环境变量,包括设置交叉编译工具链的路径、目标平台和操作系统的相关信息。

4. 编写和编译代码:在配置好交叉编译环境后,可以使用常规的编程工具,如IDE或命令行工具,编写程序代码。

在编译时,需要使用交叉编译工具链中的编译器和相关工具来进行编译。

例如,使用交叉编译工具链中的gcc来代替本机的gcc进行编译。

5.链接和生成目标文件:编译成功后,会生成目标文件,即在目标平台上可以运行的可执行文件或库文件。

在链接时,需要使用交叉链接器来链接目标文件和相关库文件。

6.在目标平台上运行:将生成的目标文件复制到目标平台上,并通过目标平台的方式运行。

例如,在嵌入式系统中,可以通过串口或其他方式加载程序并运行。

1.确定目标平台和操作系统的要求:在进行交叉编译之前,需要确保了解目标平台和操作系统的相关要求,例如处理器架构、操作系统版本、库文件位置等。

这些信息将有助于选择合适的交叉编译工具链和配置交叉编译环境。

2.编写适用于目标平台的代码:在进行交叉编译时,需要注意编写适用于目标平台的代码。

例如,需要避免使用与目标平台不兼容的库函数和系统调用,以及考虑目标平台的资源限制等。

3.调试和测试:由于交叉编译环境和目标平台的不同,可能会遇到一些问题,如编译错误、链接错误或运行错误等。

【整理】Ubuntu 16.04[64bit]交叉编译环境搭建过程图解

【整理】Ubuntu 16.04[64bit]交叉编译环境搭建过程图解

开发裸机环境之前需要先搭建其开发环境,毕竟工欲善其事必先利其器嘛。

安装步骤1、准备工具安装目录将压缩包arm-Linux-gcc-4.4.3.tar.gz存放在一个目录下,这个目录就是你等会解压缩的目录,以后这个目录就不能随便删掉了,我的存放路径是/home/aldrich/arm,如下图,记住这个路径,等会还会用到。

1. .tar.gz 和.tgz2. 解压:tar zxvf FileName.tar.gz3. 压缩:tar zcvf FileName.tar.gz DirName2、安装软件使用tar命令:tar zxvf arm-linux-gcc-4.3.2.tgz将software文件夹下的arm-linux-gcc-4.3.2.tgz解压缩安装到当前目录。

通过下图可以看到解压成功了,并且解压后的文件存放在了1. /home/aldrich/arm/arm-linux-gcc-4.3.2文件夹下,如下图所示,这个存放路径可得记住,如下图3、配置系统环境变量配置环境前先坐下普及:Ubuntu不同目录下profile与bashrc的区别/etc/profile此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行,并从/etc/profile.d目录的配置文件中搜集shell的设置。

/etc/bash.bashrc为每一个运行bash shell的用户执行此文件,当bash shell被打开时,该文件被读取。

~/.bash_profile每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次,默认情况下,他设置一些环境变量,执行用户的.bashrc文件。

~/.bashrc该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该文件被读取。

~/.bash_logout当每次退出系统(退出bash shell)时,执行该文件。

linux操作系统交叉编译环境的建立

linux操作系统交叉编译环境的建立

linux 操作系统交叉编译环境的建立
基于linux 操作系统的应用开发环境一般是由目标系统硬件(开发板)和宿主PC 机所构成。

目标硬件开发板用于运行操作系统和系统应用软件,而
目标板所用到的操作系统的内核编译、应用程序的开发和调试则需要通过宿
主PC 机来完成(所以称为交叉编译)。

双方之间一般通过串口,并口或以太网接口建立连接关系。

但在此我建议构建如下的交叉编译环境,适合个人或研发小组使用:单独
拿出一台PC 机(PII 以上即可,就用以前淘汰的旧机器就可以),在该PC 上安装桌面的Linux 操作系统(如Red Hat Linux 8.0 及以上),可以采用默认的安装选项(注意要包含ftp 服务),这台PC 作为Linux 服务器,除管理员以外,一般不直接让其他人去操作。

将该Linux 服务器接入局域网,并新建一些合法用户,以便其他的PC 机(在此我们将其称为工作站)的合法用户能访问到Linux 服务器。

而其他的PC 机(工作站)仍然使用Windows 操作系统,原来干啥继续干啥。

需要的软件工具包括:
1、ftp 客户端程序(如Cuteftp,可到网上下载)
2、Telnet 工具(如SecureCRT,可到网上下载)。

Linux交叉编译环境搭建

Linux交叉编译环境搭建

目录前言 (2)一、安装Ubuntu 10.10 (3)二、Ubuntu 10.10的基本设置 (4)三、Ubuntu 10.10下的NFS服务器配置 (5)四、Ubuntu10.10下的“超级终端” (9)五、开发板与Ubuntu10.10共享NFS目录 (13)六、Ubuntu10.10下的交叉编译器的安装配置 (15)前言关于嵌入式LINUX开发环境主要有以下几个方案:1、直接安装 LINUX 操作系统;2、在 WINDOWS 下安装虚拟机后,再在虚拟机中安装LINXUX操作系统;3、两台电脑,一台 Linux 服务器,一台 Windows 客户端。

三种方案各有各的好处,第三种方案,这种方式适合多人同时开发。

可是需要以下设备:1台 Linux 服务器服务器,用来交叉编译 bootlaoder、内核以及应用程序等,1台 Windows 机器机器,SSH远程登陆至 Linux 服务器进行操作。

考虑到开发人员并不是那么多,也为了节省一台服务器,我们选择第一种方案:直接安装 LINUX 操作系统。

一、安装Ubuntu 10.10至于以前使用Windows XP的选手,突然让我们换装Linux系统构成双系统,会有许多麻烦,因为Linux文件系统为EXT2、EXT3等文件系统,如果我们直接安装Linux,将使Linux系统文件与原Windows XP系统文件隔离,访问起来麻烦。

而且Linux的安装很容易破坏原XP的启动,为此,我们选择Ubuntu的简单安装方式,在Windows 环境下,像安装软件一样使用WUBI安装Ubuntu 10.10,简单方便,至于具体安装步骤,网上有的是,不多罗嗦,也不是本文的重点`````至此Ubuntu 10.10算是安装结束。

二、Ubuntu 10.10的基本设置为了接下来的配置方便,这里先对Ubuntu进行一些简单的配置。

1、右键增加“以管理员身份打开“。

在终端输入sudo apt-get install nautilus-gksu,然后回车就可以了。

Ubuntu系统下arm-linux-gcc交叉编译环境搭建过程

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中去,这样就可以在任何⽬录下使⽤这些⼯具。

Ubuntu下arm交叉编译环境的创建及基于s3c2410的linux2.6.22移植

Ubuntu下arm交叉编译环境的创建及基于s3c2410的linux2.6.22移植
$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
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上搭建zynqlinux 编译环境

从零开始-ubuntu上搭建zynqlinux 编译环境

主机环境:ubuntu10.04 lts X64_64bit编译器:arm gnu tools for Xilinx参考网址:/zynq-tools(这个网址的内容真的需要更新了)详细步骤:以下操作均在root用户下进行,官方参考网址的东西仅是“参考”的1,下载交叉编译器在ubuntu里下载arm-2010.09-62-arm-xilinxa9-linux-gnueabi.bin安装文件,网址:https:///GNUToolchain/kbentry62,放到<myPath>/tools/中2,同步xilinx的linux kernelmkdir <myPath>/kernelcd <myPath>/kernelgit clone git:///linux-2.6-xlnx.git然后就等着吧,总共1.3G的代码,下载完毕后,cd <myPath>/kernel/ls有个新的文件夹linux-2.6-xlnx,这个就是zynq的linux kernel代码了。

需要注意的是,虽然名字里面有个2.6,但实际的kernel是3.3的,因为这个是主线版本,下载下来的是xilinxpatch的最新kernel。

说不定你同步的时候已经是3.4/3.5了。

如果你的网络不支持git,可以用http代理服务,先建立一个git-proxy.sh 文件,在里面写上:#!/bin/shexec corkscrew <name of proxy server> <port> $*然后export一下,bash> export GIT_PROXY_COMMAND="/<path>/git-proxy.sh"上面/using-git 上的方法,我的实际情况比较特殊,网络服务器还要用户名和密码,怎么办呢,稍微麻烦一点:将git-proxy.sh中的内容修改成这样滴:#!/bin/shexec corkscrew 172.16.0.252 8080 $* /disk2data/authfile然后再在git-proxy.sh同目录下建立一个authfile文件,内容为用户名:密码最后export GIT_PROXY_COMMAND="/<path>/git-proxy.sh"至此我的电脑也可以无忧无虑的git啦3,安装交叉编译器cd /<myPath>/tools/chmod 755 arm-2010.09-62-arm-xilinxa9-linux-gnueabi.bin./ arm-2010.09-62-arm-xilinxa9-linux-gnueabi.bin然后出现了安装界面,选择安装的文件夹等等,可以自己设,嫌麻烦就一路回车或者“yes”就行了。

linux交叉编译环境搭建步骤

linux交叉编译环境搭建步骤

linux交叉编译环境搭建步骤正文:在进行Linux交叉编译之前,我们需要先搭建好相应的交叉编译环境。

下面是搭建步骤的详细说明:步骤一:安装必要的软件包首先,我们需要安装一些必要的软件包,包括GCC、binutils、glibc 以及交叉编译工具链等。

可以通过包管理器来安装这些软件包,比如在Ubuntu上可以使用apt-get命令,CentOS上可以使用yum命令。

步骤二:下载交叉编译工具链接下来,我们需要下载相应的交叉编译工具链。

可以从官方网站上下载已经编译好的工具链,也可以通过源码自行编译得到。

下载好之后,将工具链解压到一个目录下。

步骤三:配置环境变量为了方便使用交叉编译工具链,我们需要将其添加到系统的环境变量中。

可以通过编辑.bashrc文件来实现,添加类似下面的内容:```shellexport CROSS_COMPILE=/path/to/cross-compiler/bin/arm-linux-export ARCH=arm```其中,/path/to/cross-compiler是你下载的交叉编译工具链的路径。

步骤四:测试交叉编译环境在配置好环境变量之后,我们可以通过简单的测试来验证交叉编译环境是否搭建成功。

比如,可以尝试编译一个简单的Hello World程序,并在目标平台上运行。

步骤五:编译其他软件当交叉编译环境搭建成功,并且测试通过之后,我们就可以使用这个环境来编译其他的软件了。

比如,可以使用交叉编译工具链来编译Linux内核、U-Boot引导程序、驱动程序等。

总结:搭建Linux交叉编译环境是进行嵌入式开发的基础工作之一。

在搭建好环境之后,我们可以使用交叉编译工具链来编译适配于目标平台的软件,从而实现在开发主机上进行开发和调试的目的。

在Ubuntu下建立交叉编译环境并编译UBoot和Linux内核

在Ubuntu下建立交叉编译环境并编译UBoot和Linux内核

在Ubuntu下建立交叉编译环境并编译UBoot和Linux内核luweixuan一、实验环境:Ubuntu 12.04 32位系统二、准备的软件包:(baremetal compiler toolchain)裸机交叉编译工具链软件,主要用来编译Uboot或者裸机环境下的应用程序。

其实质为:Sourcery CodeBench Lite 2012.09-63软件包。

下载地址:https:///GNUToolchain/package10928/public/arm-none-eabi/arm-2012.09-63-arm-none-eabi.bin(Linaro GCC),是基于开源代码的ARM V7A体系结构(ARM Cortex-A8 & Cortex-A9 processors)的系统开发工具链软件,用来编译Linux系统内核和运行于Linux系统下的应用程序。

下载地址:ftp:///outgoing/SoC_FPGA/ethernet_3.7/gcc-linaro-arm.tar.bz2(compiler toolchain for ARM GNU/Linux)基于ARM GNU/Linux下的交叉编译环境包,主要用来编译Linux系统内核和运行于Linux系统下的应用程序。

其实质为:Sourcery CodeBench Lite 2012.03-57 for ARM GNU/Linux软件包。

此软件包是可选安装的。

下载地址为:https:///GNUToolchain/package10382/public/arm-none-linux-gnu eabi/arm-2012.03-57-arm-none-linux-gnueabi.bin4.linux-socfpga-13.02-bin.tar.gz(socfpaga SD Card image)包含已经编译好的应用于CV5系统的SD卡启动镜像文件的包。

ubuntu下建立交叉编译环境

ubuntu下建立交叉编译环境

ubuntu 10.04 建立交叉编译环境arm-linux-gcc-4.3.21. 将arm-linux-gcc-4.3.2.tgz复制到任意路径下;2. 确保安装了标准C开发环境,一句命令搞定:sudo apt-get install build-essential libncurses5-dev;3.在终端进入arm-linux-gcc-4.3.2.tgz存放目录,再sudo tar -zxvf arm-linux-gcc-4.3.2.tgz -C /(注意大写C字母后留一个空格,这样会自动解压缩到/usr/local/4.3.2目录下)修改环境变量,使交叉编译环境生效。

我是执行如下命令:yagerya@yagerya-desktop:~$ echo $PATH/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/gamesyagerya@yagerya-desktop:~$ sudo gedit /etc/environment原文件应为PATH="/usr/local/sbin:/usr/local/bin:/usr /sbin:/usr/bin:/sbin:/bin: /usr/games“将其改为PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin: /sbin:/bin:/usr/games:/usr/local/arm/4.3.2/bin"保存退出即可.然后注销重新登录就可使环境变量生效了。

我不推荐大家这样做,我试过了在编译内核时无论执行sudo -s后,再执行arm-linux-gcc -v也没有出现环境变量的信息,故cd /opt/FriendlyARM/mini2440后,无论make zImage或sudo make zImage 都出现无法再到arm-linux的情况!所以我推荐大家这样做:yagerya@yagerya-desktop:~$ vim ~/.profile在这个文件最后添加上自己的环境变量:export PATH=$PATH:/usr/local/arm/4.3.2/bin然后在终端执行source ~/.profile ,即可立即生效。

blackfin_uclinux交叉编译环境的建立

blackfin_uclinux交叉编译环境的建立

blackfin_uclinux交叉编译环境的建立最近在研究uboot,做正式样机需要移植uboot,而不用自己写的boot程序。

现将搭建toolchain的过程记录下来,其实用Ubuntu操作系统搭建交叉编译非常简单。

分下面几步:1.安装Ubuntu系统,这个不用多说,下载,安装在虚拟机上就可以直接用。

下载uboot最新版本。

打开Blackfin的开源网站的uboot页面/gf/project/u-boot/左边栏有个SVN,点开。

找到Anonymous users stuck behind a firewall may use:svn checkout svn://:80/svn/u-boot/trunk u-boot复制后半部分svn checkout svn://:80/svn/u-boot/trunk u-boot直接放在Ubuntu命令行,就可以直接下载uboot的最新版本了。

2.安装toolchain交叉编译环境。

Ubuntu系统可以直接设置软件源,直接用命令行下载自己所需要的软件,很方便。

把这句话写入软件源“deb /27516/distros/debian stable m ain”,手册上说可以直接用命令行添加,但是我试了很多次在命令行下直接添加老是出错,干脆在图形界面下直接添加了。

接着执行以下两个命令:sudo apt-get updatesudo apt-get install blackfin-toolchain-uclinux blackfin-toolchain-linux-uclibc前面一句是更新软件,后一句说明是安装blackfin-toolchain-uclinux 和blackfin-toolchain-linux-uclibc两个工具,这就是交叉编译工具。

一般不会出错。

但是有的Ubuntu版本会提示你没有安装什么什么软件,但是它也会提示你该怎么做,你就按它提示的做就行了,一般就是输入一个命令的事,很简单,这里不详细说了。

嵌入式Linux的交叉编译环境的搭建

嵌入式Linux的交叉编译环境的搭建

主机:
目标机:
掌握嵌入式开发工具的使用是进行嵌入式开发的前提条件之一
与主流开发工具类似,嵌入式交叉开发工具也包括 编译器,即能够把一个源程序编译生成一个可执行程序的软件 调试工具,即能够对执行程序进行源码或汇编级调试的软件 软件工程工具,用于协助多人开发或大型软件项目的管理的软件
安装交叉编译器
超级终端和Minicom配置及使用 超级终端 打开Windows下的“开始”→“附件”→“通讯”→“超级终端” 设置串口连接参数:波特率:115200,数据为8位,无奇偶校验位,停止位1,无硬件流 把开发板的串口线和PC机相连 ,在超级终端的窗口里应能显示相关的串口信息。
超级终端和Minicom配置及使用 2.Minicom 首先在命令行中键入“minicom”,这就启动了minicom软件。 Minicom在启动时默认会进行初始化配置 CTRL+A Z,来查看minicom的帮助 CTRL-A O配置minicom的串口参数,选择“Serial port setup”子项,上面列出的配置是minicom启动是的默认配置,用户可以通过键入每一项前的大写字母,分别对每一项进行更改。要对波特率、数据位和停止位进行配置,键入“E”,在该配置界面中,可以键入相应波特率、停止位等对应的字母,即可实现配置,配置完成后按回车键就退出了该配置界面。在确认配置正确后,可键入回车返回上级配置界面,并将其保存为默认配置。 可重新启动minicom使刚才配置生效,在连上开发板的串口线之后,就可在minicom中打印出正确的串口信息
11.2.2 U-Boot的常用命令 0. help命令 bootm命令可以引导启动存储在内存中的程序HCP服务器分配IP地址,然后通过TFTP协议下载指定的文件到内存。 cmp命令可以比较两块内存中的内容。.b以字节为单位;.w以字为单位;.l以长字为单位。 cp命令可以在内存中复制数据块,包括对Flash的读写操作。 crc32命令可以计算存储数据的校验和。 echo命令回显参数。 erase命令可以擦除Flash。参数必须指定Flash擦除的范围。 nand命令可通过不同的参数实现对Nand Flash的擦除、读、写操作 flinfo命令打印全部Flash组的信息,也可以只打印其中某个组。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
void Delay(unsigned int x) { unsigned int i,j,k;
for(i=0;i<=x;i++) for(j=0;j<0xff;j++) for(k=0;k<0xff;k++); } 将这两个文件放到“~/uClinux-dist/user”下新建的文件夹“new_ap”中,接下来就是为 这两个文件建立 Makefile
Delay(10000); \\即 00000100B,16 进制为 0x04
IOPDATA=0x02;
Delay(10000);
IOPDATA=0x04;
Delay(10000);
IOPDATA=0x08;
Delay(10000);
}
return 0;
}
第二个程序 串口通信
#define IOPMOD (* (volatile unsigned *) 0x03ff5000)
#define UTXBUF1 (* (volatile unsigned *) 0x03ffe00c) \\定义 UART1 发送缓存寄存器
#define URXBUF1 (* (volatile unsigned *) 0x03ffe010) \\定义 UART1 接收缓存寄存器
#define UBRDIV1 (* (volatile unsigned *) 0x03ffe014) \\定义 UART1 波特率分频寄存
#define ULCON0 (* (volatile unsigned *) 0x03ffd000) \\定义 UART0 线控制寄存器地址
#define UCON0 (* (volatile unsigned *) 0x03ffd004) \\定义 UART0 控制寄存器地址
#define USTAT0 (* (volatile unsigned *) 0x03ffd008) \\定义 UART0 状态寄存器
**要注意到 all、romfs、clean 等后面是具体 GCC 命令,必须换行后 Tab 一下才能识别,这 是语法问题! 下一步建立 user 文件夹下的 Makefile
添加如标注的两行,这样就能告诉编译器我们需要编译的东东
下面我们需要让“make menuconfig”能够显示出我们的程序来就还需要设置 "~/Uclinux-dist/config"目录下的“config.in”文件
在开始我们的烧写工作之前,需要先处理一件很重要的事情,这个就是我们的 Boot Loader, 这是启动系统的关键。
在 ADS 中编写 Boot Loader 程序。
;**************************Boot Loader By Leo 2011 All Rights Reserved**************************************
保存,退出
一步步执行,直到在“Main Menu“中选上我们的“Test Program“
这样我们就设置结束了,保存退出,分别执行"make dep"、"make clean"、"make lib_only"、 "make user_only"、"make_romfs"、"make image"生成我们的 rom 文件,值得注意的是有时 在"make image"时会出错,这个时候需要用"make linux"命令重新编译 linux 内核即可。
记 ubuntu 的 uClinux 交叉编译环境的搭建以及操作系统的引导
1、uClinux 交叉编译环境的搭建
从 下载好的文件有 arm-elf-tools-20030314.sh 和 uClinux-dist.tar.gz, 其中前者是编译工具,后者是 uClinux 的内核源码,我们就是利用这个工具编译裁剪好了的 系统。
终于让我找到了最好的解决方法,就是用 vi 修改这个文件的文件头。
我是把 arm-elf-tools-20030314.sh 放在 root 里面的,所以命令如下
sudo su
cd ~/
vi arm-elf-tools-20030314.sh
将这个文件的第 38 行改成这个样子
然后重启系统之后,就可以用 root 登录终端./arm-elf-tools-20030314.sh 命令安装了(具 体 vi 命令请参见网络上的说明)

#define ULCON1 (* (volatile unsigned *) 0x03ffe000) \\定义 UART1 线控制寄存器地址
#define UCON1 (* (volatile unsigned *) 0x03ffe004) \\定义 UART1 控制寄存器地址
#define USTAT1 (* (volatile unsigned *) 0x03ffe008) \\定义 UART1 状态寄存器
IOPMOD EQU 0x3FF5000 IOPCON EQU 0x3FF5004 IOPDATA EQU 0x3FF5008 CODE32 AREA Init,CODE,READONLY ENTRY B RESET NOP NOP NOP NOP NOP NOP NOP RESET
;*************************************************** ;MASK ALL INTERRUPTS ;***************************************************
#define UTXBUF0 (* (volatile unsigned *) 0x03ffd00c) \\定义 UART0 发送缓存寄存器
#define URXBUF0 (* (volatile unsigned *) 0x03ffd010) \\定义 UART0 接收缓存寄存器
#define UBRDIV0 (* (volatile unsigned *) 0x03ffd014) \\定义 UART0 波特率分频寄存
第一个程序------跑马灯
#define IOPMOD (*(volatile unsigned *) 0x03ff5000) \\定义 IO 工作方式寄存器端口地 址 #define IOPDATA (*(volatile unsigned *) 0x03ff5008) \\定义 IO 数据寄存器地址
rSYSCFG EQU 0xE7FFFF90 ;各寄存器的待设数值 rEXTDBWTH EQU 0x00003002 rREFEXTCON EQU 0xCE338360
rfROMCON0 EQU 0x02000060 rfSDRAMCON0 EQU 0x14010380 rsROMCON0 EQU 0x14048060 rsSDRAMCON0 EQU 0x10000380 rROMCON1 EQU 0x0 rROMCON2 EQU 0x0 rROMCON3 EQU 0x0 rROMCON4 EQU 0x0 rROMCON5 EQU 0x0 rSDRAMCON1 EQU 0x0 rSDRAMCON2 EQU 0x0 rSDRAMCON3 EQU 0x0
LDR R1,=SYSCFG LDR R0,=rSYSCFG STR R0,[R1]
LDR R1,=EXTDBWTH LDR R0,=rEXTDBWTH STR R0,[R1]
LDR r0,=ROMCON0
LDR r1,=rfROMCON0
LDR r2,=rROMCON1 LDR r3,=rROMCON2 LDR r4,=rROMCON3 LDR r5,=rROMCON4 LDR r6,=rROMCON5 LDR r7,=rfSDRAMCON0 LDR r8,=rSDRAMCON1 LDR r9,=rSDRAMCON2 LDR r10,=rSDRAMCON3 LDR r11,=rREFEXTCON STMIA r0,{r1-r11}
这个很坑爹的工具安装好了以后,就可以解压 uClinux-dist.tar.gz,解压在主文件夹是个 不错的选择,root 里面要向外复制的话文件权限 不好解决。
解压好了 uClinux-dist.tar.gz 之后,就可以先在目录下 make menuconfig 看一看内核设置 之类的东东了
当然,现在只是一个开始,还是得添加自己的一些程序到系统里,所以先退出,编写下要用 到的东西
添加如图所示的代码。
最后,需要这两个程序自动启动的话还需要修改 “~/uClinux-dist/Vendors/Samsung/4510B/"下的 rc 文件,向其最后添加 “./bin/led& ./bin/uart&" 两行代码。 完成这些以后,我们就可以开始编译了
在“Target Platform Selection"中选择“Customize Kernel Settings (NEW)“和”Customize Vendor/User Settings (NEW)“
void InitUART(int Port,int Baudrate) \\串口初始化函数体 { if(Port==0) { ULCON0=0x03; UCON0=0x09; UBRDIV0=Baudrate; } if(Port==1) { ULCON1=0x03; UCON1=0x09; UBRDIV1=Baudrate; } }
\\定义 IO 工作方式寄存
器地址
#define IOPCON (* (volatile unsigned *) 0x03ff5004)
\\定义 IO 控制寄存器
地址
#define IOPDATA (* (volatile unsigned *) 0x03ff5008)
相关文档
最新文档