交叉开发模式:宿主机(PC机:VMware下的Ubuntu)+目标板(IMX6实验箱: 超级终端Xshell)
宿主机与目标板的连接方式:
① 串口(COM1 TO USB) ② 以太网接口(RJ45) ③ USB接口 ④ JTAG接口(Joint Test Action Group)
GNU软件:
① Shell:Shell基本上是一个命令解释器
② glibc:glibc是GNU发布的libc库,即c运行库
③ GCC:GCC(GNU Compiler Collection,GNU编译器套件)是由 GNU 开发的编程语言编译器
④ gdb: UNIX及UNIX-like下的调试工具
⑤ vim:vim是一个类似于Vi的著名的功能强大、高度可定制的文本编辑器,在vi的基础上改进和增加了很多特性
⑥ Emacs: Emacs是著名的集成开发环境和文本编辑器
2.宿主机环境 2.1串口终端Windows下的超级终端,如Xshell 2.0
Linux下的minicom
2.2 BOOTBOOTP:引导程序协议。
BOOTP用于无盘工作站的局域网中,可以让无盘工作站从一个中心服务器上获得IP地址。
通过BOOTP协议可以为局域网中的无盘工作站分配动态IP地址,这样就不需要管理员去为每个用户去设置静态IP地址。
BOOT工作流程
① 由BOOTP启动代码来启动BOOTP客户端。
② BOOTP客户端使用广播形式、向网络中发出IP地址查询要求。
③ 运行BOOTP协议的服务器接收到这个请求,会根据请求中提供的MAC地址找到BOOTP客户端,并发送一个含有IP地址、服务器IP地址、网关等信息的回应帧。
④ BOOTP客户端会根据该回应帧来获得自己的IP地址并通过专用文件服务器 下载启动镜像文件,模拟成磁盘来完成启动。
2.3 TFTP简单文件传输协议。TFTP是简化了的FTP,TFTP没有用户权限管理的功能。
2.4交叉编译在x86架构的宿主机(PC机,Ubuntu)上编译生成适用于ARM 架构(IMX6实验箱)的ELF格式的可执行代码。
ELF:可执行与可链接格式 ,是一种用于 二进制文件、可执行文件、目标代码、共享库和核心转储格式文件。
3.目标板环境 3.1 JTAG接口简介是一种国际标准测试协议(IEEE 1149.1兼容),主要用于芯片内部测试。标准的JTAG接口是5线:TMS、TCK、 TDI、TDO、nTRST,分别为模式选择、时钟、数据输入、数据输出线、系 统复位。
3.2 Boot Loader简介Bootloader:引导加载程序;是在操作系统内核运行之前用来初始化硬件设备、建立内存空间的映射图的小程序。
嵌入式Linux系统启动后,先执行Bootloader,进行硬件和内存的初始化 工作,然后加载Linux内核和根文件系统映像,完成Linux系统的启动。
常见的Bootloader:
• u-boot
• vivi
4.交叉编译工具链 4.1 交叉编译的构建**交叉编译工具链:**是一个由编译器、链接器、解释器组成的集成开发环境。
ARM平台的交叉编译工具:arm-poky-linux-gnueabi-gcc
制作交叉编译工具链的方法:
① 从头编译 ② 脚本编译 ③ 下载使用
4.2相关工具1.glibc(库)
2.gcc(编译器)
3.binutils(链接器+汇编器)(与gcc配套的工具集)
gcc编译四阶段
① 预处理(-E):生成“*.i”文件 *
② 汇编(-S):用as命令,编译源文件,生成汇编文件(“.s”文件)
③ 编译(-c):用cc命令,生成目标文件(“*.o”文件)
④ 链接(-o):用ld命令,生成可执行文件
5.本地调试(gdb:GNU Debugger)1、调试ARM可执行文件:
常见命令
2、调试x86可执行文件:
6.远程调试(gdb + gdbserver)远程调试:用于调试ARM程序,在Ubuntu(宿主机)上调试运行在实验箱(目标机)上的程序
实验箱运行:gdbserver
宿主机运行:arm-linux-gdb
7.内核调试(gdb + kgdb)使用printk函数:使用printk函数显示有关信息。
目标机运行kgdb
宿主机运行gdb
8.网络调试嗅探器(Sniffer):tcpdump、arp、ping、route、netstat。



