首页 嵌入式系统第八讲_嵌入式Linux交叉编译环境

嵌入式系统第八讲_嵌入式Linux交叉编译环境

举报
开通vip

嵌入式系统第八讲_嵌入式Linux交叉编译环境null第八讲 嵌入式Linux交叉编译环境第八讲 嵌入式Linux交叉编译环境电信学院 崔寅鸣 Email: ymcui@scut.edu.cn主要内容主要内容综述 Redhat9.0虚拟机环境的建立与配置 交叉编译工具ToolChain的建立 Bootloader编译 Kernel编译 Root-disk编译 Gdbserver 远程调试(选读) 怎么搭建开发环境?怎么搭建开发环境?主机 安装Linux操作系统(本系统采用虚拟机Redhat9.0) 在Linux下安装交叉编译工具链 开发板 建立eLinu...

嵌入式系统第八讲_嵌入式Linux交叉编译环境
null第八讲 嵌入式Linux交叉编译环境第八讲 嵌入式Linux交叉编译环境电信学院 崔寅鸣 Email: ymcui@scut.edu.cn主要 内容 财务内部控制制度的内容财务内部控制制度的内容人员招聘与配置的内容项目成本控制的内容消防安全演练内容 主要内容综述 Redhat9.0虚拟机环境的建立与配置 交叉编译工具ToolChain的建立 Bootloader编译 Kernel编译 Root-disk编译 Gdbserver 远程调试(选读) 怎么搭建开发环境?怎么搭建开发环境?主机 安装Linux操作系统(本系统采用虚拟机Redhat9.0) 在Linux下安装交叉编译工具链 开发板 建立eLinux操作系统(主机是Windows或Linux均可)交叉编译环境交叉编译环境嵌入式系统的开发需要宿主机(Host pc),因为嵌入式系统一般没有大容量的存储设备。 由于host pc的处理器与嵌入式微处理器通常不同,为了生成能够在嵌入式系统中运行的代码,需要进行交叉编译。 交叉编译:在宿主机(x86)上编译可以在目标系统(ARM)上运行的二进制文件。交叉编译环境交叉编译环境开发板是嵌入式Linux操作系统,故交叉编译环境要求在主机的Linux操作系统下建立 本系统交叉编译环境,是在主机的Redhat 9.0 Linux操作系统下建立。 Linux主机Linux主机本系统要求主机的环境是Redhat 9.0 Linux操作系统,基本上可以有两种方法来建立: 建立独立的主机Redhat Linux操作系统 在Window下,利用虚拟机管理软件,建立一个可以在Windows启用和管理的虚拟Redhat Linux操作系统(本系统采用)why虚拟机Linux?why虚拟机Linux?采用虚拟机,有如下原因和方便: 虚拟机也能够控制系统硬件 完全能够满足交叉编译环境需要 方便与Windows系统进行切换 使用Windows下文件来作为硬盘空间,相对于双系统,不需复杂的硬盘分区 虚拟机在Windows下,是几个文件,方便备份和恢复 在本实验系统中,Windows系统和Redhat系统都必不可少,虚拟机比较方便null第一部分 Redhat9.0 虚拟机本系统软件环境本系统软件环境在windows系统下,安装vmware软件 该软件是一个虚拟机系统的管理软件,可以方便地建立和配置虚拟机 null建立新的虚拟机(实验室已建)建立新的虚拟机(实验室已建)直接点击“new virtual machine”建立新的虚拟机(实验室已建)建立新的虚拟机(实验室已建)选择安装文件建立新的虚拟机(实验室已建)建立新的虚拟机(实验室已建)选择操作系统类型建立新的虚拟机(实验室已建)建立新的虚拟机(实验室已建)选择虚拟机在硬盘的保存目录建立新的虚拟机(实验室已建)建立新的虚拟机(实验室已建)选择虚拟机占用硬盘空间大小,以文件形式建立新的虚拟机(实验室已建)建立新的虚拟机(实验室已建)注意在安装过程中,虚拟机硬盘分区: 100M大小的boot区 2倍RAM大小的SWAP区 剩下为根文件系统挂载区(常用ext3文件系统)null安装完毕启动安装完毕启动登录系统登录系统本系统用户本系统用户超级管理员 用户名root,密码eescut 普通用户 用户名emb,密码embedded进入系统进入系统全屏与释放鼠标全屏与释放鼠标全屏方式 按Ctrl+Alt+Enter 释放鼠标到windows Ctrl+Alt启用终端启用终端启用终端启用终端为虚拟机添加服务为虚拟机添加服务ftp与telnet服务ftp与telnet服务ftp——文件传输协议;Linux开此服务以方便通过网络来传输文件 须启用vsftpd服务 telnet——远程登录协议;方便通过远程来登录Linux系统 须启用xinetd服务和telnet服务ftp与telnet服务ftp与telnet服务ftp服务配置ftp服务配置启用ftp服务,还需要修改配置文件 /etc/vsftpd.ftpusers /etc/vsftpd.user_list 这两个文件中列出的用户,会被禁止使用ftp服务;将不希望被禁止的删除即可,如root用户虚拟机的设置虚拟机的设置虚拟机的设置虚拟机的设置虚拟机的设置虚拟机的设置可以配置虚拟机现有硬件,或添加新的硬件 硬盘(本地硬盘在Windows和Linux互访) 网络(实现Linux虚拟机上网) 串口(用于Linux主机与开发板通信)保持连接保持连接保持连接保持连接如果虚拟机想使用网络或串口,必须保证前页中connected 串口是独占性资源,windows与Linux虚拟机同时只能有一个使用虚拟机的网络设置虚拟机的网络设置网络有三种方式 Bridged(桥接)——虚拟机分配静态IP,直接连到局域网,与windows主机地位相同,相当于独立主机 NAT(地址解析协议)——虚拟机与Windows主机组成局域网,并通过Windows主机来访问外网 Host-only——仅与主机通信,适合于没有网卡等情况 虚拟机的网络设置虚拟机的网络设置虚拟机的网络设置虚拟机的网络设置本系统为方便进行gdb远程调试,采用了Bridged(桥接)方式。虚拟机IP统一配置为218.192.169.239,为避免IP冲突,在可访问外网时,不要启动虚拟机。 虚拟机仅供与实验箱直联,编译调试程序时使用。Bridged方式IP配置Bridged方式IP配置设置好网络方式是Bridged后,类似与windows主机的网络设置 设置IP(与windows主机同网段) 设置网关(同windows主机) 设置DNS(同windows主机)虚拟机中网络设置虚拟机中网络设置虚拟机中网络设置虚拟机中网络设置虚拟机中网络设置虚拟机中网络设置需要设置内容 IP 网关 DNS 设置好后,可以解除网卡eth0,然后再激活,来使新IP生效 当前IP设置,可用ifconfig命令查看虚拟机中网络设置虚拟机中网络设置用ifconfig命令查看当前网络设置NAT或Host-only的IP配置NAT或Host-only的IP配置例:NAT网络配置例:NAT网络配置此页为NAT网关,在vmware软件菜单中例:NAT网络配置例:NAT网络配置Windows中,用ipconfig /all 来查看vnet8例:NAT网络配置例:NAT网络配置本例中的配置 网关192.168.254.2 Windows vnet8 192.168.254.1 ,是虚拟机访问外网的出口 Linux 虚拟机需设置: IP = 192.168.254.xxx Mask=255.255.255.0 gateway=192.168.254.2 DNS=192.168.254.2null第二部分 交叉编译环境交叉编译环境交叉编译环境一般包括: Gcc编译器,for c,c++ Binutil,一些辅助工具,包括objdump(可反编译二进制文件)、as(汇编器)、ld(链接器)等 Glibc,提供系统调用和基本函数的c库 C header Gdb调试器本系统交叉编译环境的建立本系统交叉编译环境的建立以root用户登陆linux系统 创建/XSBase270目录 上传EELiod Linux2.5到上述目录 拷贝 cp /XSBase270/ToolChain/xscalev1_010001.tar.gz /opt 解压工具包: cd /opt tar xvfz xscalev1_010001.tar.gz 进入/opt/xcalev1/bin,可见下列编译工具 (注意:实验室已建,不要重复建立)null本系统交叉编译环境的建立本系统交叉编译环境的建立设置PATH环境变量 在用户(root用户或其他用户)根目录下,打开.bash_profile,添加环境变量如下: PATH=$PATH:/opt/xscale1/bin 使用source 命令使上述变量有效 #source ~/.bash_profilenullHelloworld例程Helloworld例程#include int main(void) { int i; for(i=0;i<10;i++) printf("hello world! i=%d \n",i); return 0; }HelloWorld例程HelloWorld例程生成helloworld.c 执行gcc –o hello helloworld.c 执行arm-linux-gcc –o hello-arm helloworld.c 用file命令分别查看 #file hello #file hello-armMakefile简介Makefile简介Linux开发一般有大量源代码,为了避免大量重复的键入gcc进行编译,定义了Makefile文件,用于自动编译 # make 该操作会调用Makefile Makefile一般定义了: Gcc编译工具 编译命令 目标文件 依赖关系 Makefile简介Makefile简介例: test.o: test.c test.h gcc –g –o test.o test.c -g 生成调试信息 -c 只编译不链接成为可执行文件 -o 确定输出文件名称 -O 优化 -w 禁止警告信息 -Wall 打开所有类型警告信息 Makefile变量Makefile变量makefile 变量-预定义变量 $* 不包含扩展名的目标文件名 $+ 所有的依赖文件,以空格分开,并以出现的先后为序,可能包含重复的依赖文件。 $< 第一个依赖文件的名称 $? 所有的依赖文件,以空格分开,这些依赖文件的修改日期比目标的创建日期晚。 $@ 目标的完整名称。 $^ 所有的依赖文件,以空格分开,不包含重复的依赖文件。 简单Make指令说明简单Make指令说明# Make clean ——清除编译过程的中间文件 # make dep ——设置Makefile文件中各个目标所依赖的文件列 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 简单例makefile简单例makefileCC=arm-linux-gcc all:hello-arm hello-arm:hello.c $(CC) -Wall -g -o hello-arm hello.c clean: rm -f hello-arm参考参考请参考Linux上级实验2“Makefile实验”Bootloader源代码编译Bootloader源代码编译进入/XSBase270/Bootloader 解压tar xvfz Boot-XSBase270_010005.tar.gz 进入解压后的./Boot-XSBase270目录 执行make,生成boot文件nullKernel源代码编译Kernel源代码编译进入目录/XSBase270/Kernel 解压tar xvfz linux-2.4.21-51Board_EDR.tar.gz 进入上步生成的目录linux-2.4.21-51Board_EDR make xsbase270_config make oldconfig make menuconfig进行选项配置 make dep 生成文件依赖关系 make zImageMenuconfigMenuconfignull见“内核编译实验.pdf”根文件系统编译根文件系统编译进入目录/XSBase270/Filesystem (以带QT的文件系统为例)解压 tar xvfz eeliod_2.4_qt_rootfs.tar.gz 生成rootfs270目录 使mkfs.jffs2可执行: chmod +x ./mkfs.jffs2 执行事先编辑好的Shell命令 sh ./mkrootfs.sh 会在当前目录生成rootfs270.imgnullnull第三部分 Gdbserver 远程调试概述概述Gdb 是GNU在Linux平台下调试工具 Gdb & gdbserver:目标板运行gdbserver,主机运行gdb进行调试。需要: Gdb要针对ARM平台配置后,重新编译。运行于主机。 Gdbserver需要用arm-linux-gcc重新编译。因为其运行于目标机上。 Gdb源码:http://ftp.gnu.org/gun/gdb/ (服务器上面已有) 概述概述Gdb & gdbserver可以通过网络或者串口来调试 内核模块,可以采用printk打印输出信息的方式来进行调试。例如在设备驱动程序中。 Gdb只适合于应用程序。 Gdbserver+gdb的重新编译 Gdbserver+gdb的重新编译 重新编译gdb: ftp传输gdb-6.5.tar.gz到/root/gdb下 #tar xvfz gdb-6.5.tar.gz #cd gdb-6.5 #./configure --target=arm-linux (会生成Makefiel) #make #make install (此时arm-linux-gdb应该可用,在目录/usr/local/bin 下) 编译gdbserver 编译gdbserver #cd /root/gdb/gdb-6.5/gdb/gdbserver #./configure --target=arm-linux --host=arm-linux (如果执行时找不到arm-linux-gcc,请检查交叉编译环境是否建立好。应该在/opt/xscalev1/bin下) (会生成Makefile) #make CC=/opt/xscalev1/bin/arm-linux-gcc (会生成gdbserver。可以用file gdbserver来查看文件是否是ARM平台文件) #make install Gdb & gdbserver 调试 Gdb & gdbserver 调试 下面以一个hello-arm的应用程序为例。该例程在redhat中由交叉编译生成。 (由C文件和makefile文件构成的简单例程,用arm-linux-gcc –g 编译,带调试信息) Gdb & gdbserver 调试Gdb & gdbserver 调试在minicom的目标板端口,用FTP协议下载gdbserver和hello-arm到目标板 #ftp 218.192.170.242 会要求输入用户名和密码。输入后会显示正确登录。 ftp> cd 到gdbserver文件所在目录 ftp> get gdbserver ftp> cd 到hello-arm文件所在目录 ftp> get hello-arm ftp> bye Gdb & gdbserver 调试Gdb & gdbserver 调试在目标板启动gdbserver,运行应用程序 #chmod +x ./gdbserver (给可执行权限) #chmod +x ./hello-arm #./gdbserver 218.192.170.100:1234 ./hello-arm 会显示如下提示信息: Process hello-arm created: PID=xxx Listening on port 1234 Gdb & gdbserver 调试Gdb & gdbserver 调试在主机启动arm-linux-gdb进行远程调试: #cd 到hello-arm所在目录 #arm-linux-gdb ./hello-arm 可看到如下提示信息: This GDB was configured as “--host=i386-pc-linux-gnu --target=arm-linux”… #(gdb) 此时输入 #(gdb)target remote 218.192.170.100:1234 会提示:Remote debugging using 218.192.170.100:1234 #(gdb) 进入GDB调试过程。 此时在目标板有响应信息:Remote debugging from host 218.192.170.242 课后学习课后学习有条件同学自己安装虚拟机 阅读 EELiod Linux使用手册 实验一 常用命令及工具实验 实验二 Makefile实验 实验三 Bootloader实验 实验四 内核编译实验 实验五 文件系统制作实验练习练习在windows主机用ftp连接虚拟机Redhat系统,进行文件传输 在windows主机telnet登陆虚拟机Redhat系统,进行指令操作 编写简单应用程序和makefile,并运行得到结果 试建立gdbserver调试环境,进行上述应用程序调试 练习使用minicomnull
本文档为【嵌入式系统第八讲_嵌入式Linux交叉编译环境】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_226069
暂无简介~
格式:ppt
大小:1MB
软件:PowerPoint
页数:0
分类:互联网
上传时间:2011-07-22
浏览量:34