交叉编译相关知识

1、目标板与主机之间的连接:

目标板和主机之间通常可以使用串口、以太网接口、USB接口以及JTAG接口等连接方式。

(1)、串行通信:

串行通信接口常用的有9针串口( DB9 )和25针串口(DB25),通信距离较近时(﹤12m),可以用电缆线直接连接标准RS-232C端口;如果距离较远,就采用RS-422或者RS-485接口,需附加调制解调器(Modem)。其中最常用的是三线制接法,即地、接收数据和发送数据三脚相连,直接用RS-232C相连,PC上一般带有两个9针串口。串口常用信号引脚如下所示:
交叉编译相关知识_第1张图片
在这里插入图片描述
通过串口既可以作为控制台,向目标板发送命令,显示信息;也可以通过串口传送文件;还可以通过串口调试内核及程序。串口的设备驱动实现也比较简单。
其缺点是通信速率慢,不适合大数据量传输。

(2)、以太网传输:

以太网以其高度灵活,相对简单,易于实现的特点,成为当今最重要的一种局域网建网技术。
以太网IEEE 802.3通常使用专门的网络接口卡或通过系统主电路板上的电路实现。以太网使用收发器与网络媒体进行连接。收发器可以完成多种物理层功能,其中包括对网络碰撞进行检测。收发器既可
以作为独立的设备通过电缆与终端站连接,也可以直接被集成到终端站的网卡当中。
以太网采用广播机制,所有与网络连接的工作站都可以看到网络上传递的数据。通过查看包含在帧中的目标地址,确定是否进行接收或放弃。如果证明数据确实是发给自己的,工作站将会接收数据并传
递给高层协议进行处理。
以太网采用CSMA/CD媒体访问机制,任何工作站都可以在任何时间访问网络。在发送数据之前,工作站首先需要侦听网络是否空闲。如果网络上没有任何数据传送,工作站就会把所要发送的信息投放到网络当中。否则,工作站只能等待网络下一次出现空闲的时候再进行数据的发送。
作为一种基于竞争机制的网络环境,以太网允许任何一台网络设备在网络空闲时发送信息。因为没有任何集中式的管理措施,所以非常有可能出现多台工作站同时检测到网络处于空闲状态,进而同时向
网络发送数据的情况。这时,发出的信息会相互碰撞而导致损坏。工作站必须等待一段时间之后,重新发送数据。补偿算法用来决定发生碰撞后,工作站应当在何时重新发送数据帧。
网 络 接 口 一 般 采 用 RJ-45 标 准 插 头 , PC 上 一 般 都 配 置10M/100Mbit/s以太网卡,实现局域网连接。通过以太网连接和网络协议,可以实现快速的数据通信和文件传输。
其缺点是驱动程序实现比较麻烦,好在以太网接口的设备驱动也很多。

(3)、USB接口:

USB(Universal SerialBus)接口支持热插拔,具有即插即用的优点,最多可连接127台外设,所以USB接口已经成为PC外设的标准接口。USB2有多个规范。
USB 1.1是较早的USB规范,其高速方式的传输速率为12Mbit/s,低速方式的传输速率为1.5Mbit/s。
USB 2.的最大传输速率达到480Mbit/s,USB 3.0的最大传输速率高达50G bit/s。USB的设备支持热插拔,通讯速率也很快。
其缺点是USB设备区分主从端,两端分别要有不同的驱动程序支持。

(4)、JTAG等接口:

JTAG技术是一种嵌入式调试技术,它在芯片内部封装了专门的测试电路测试接口(Test Access Port,TAP),通过JTAG测试工具对芯片的核进行测试。它是联合测试行动小组(Joint Test Action
Group,JTAG)定义的一种国际标准测试协议,主要用于芯片内部测试及对系统进行仿真、调试。
目前大多数比较复杂的器件都支持JTAG协议,如ARM、DSP、FPGA器件等。标准的JTAG接口是4线:TMS、TCK、TDI、TDO,分别为测试模式选择、测试时钟、测试数据输入和测试数据输出。
JTAG接口的时钟一般为1~16MHz,所以传输速率可以很快。但是实际的数据传输速度要取决于仿真器与主机端的通信速度和传输软件。

2、主机开发环境配置:

(1)、环境变量的设置:

把交叉开发工具链的路径添加到环境变量PATH中,这样可以方便地在Bash或者Makefile中使用这些工具。通常可以在环境变量的配置文件有3个,分别在不同的范围生效。

  • /etc/profile是系统启动过程执行的一个脚本,对所有用户都生效。
  • ~/.bash_profile是用户的脚本,在用户登录时生效。
  • ~/.bashrc也是用户的脚本,在~/.bash_profile中调用生效。

把环境变量配置的命令添加到其中一个文件中即可。

(2)、串口控制台工具:

串口通讯接口设十分适合作为控制台,在各操作系统上都有现成的控制台可用。例如,在windows上可以使用超级终端,在Linux上可以使用Minicom等工具。
Linux系统通常使用minicom串口通信工具。由于minicom不是图形窗口的工具,操作起来要麻烦一些。使用minicom串口终端之前,需要先配置参数。
Minicom的配置界面是菜单方式。在Shell下执行“minicom –s”命令,出现配置菜单。注意minicom程序要访问串口设备,需要以root的权限操作。
在菜单中,可以先通过光标移动键选中菜单项,再按回车键进入子菜单项。
参数设置完成后,按回车键返回主配置菜单。这时可以保存配置参数。移动光标选择“Save setup as dfl”菜单项,按回车键保存为默认设置。最后移动光标选择“Exit from Minicom”选项退出。再启动minicom 的 时 候 , 直 接 在 Shell 下 执 行 minicom 命 令 , 就 可 以 进 入minicom控制台。

3、启动目标板:

(1)、系统引导过程:

在各种体系结构平台上,多数内核映像都采用压缩格式(MIPS平台例外,它的映像采用非压缩格)。Linux系统的一般启动过程通常划分为内核引导、内核启动和应用程序启动3个阶段,如图所示。
交叉编译相关知识_第2张图片

  • 第一阶段是目标板硬件初始化,解压内核映像,再跳转到内核映像入口。这部分的工作一般由目标板的引导程序和内核映像的自引导程序完成。不同体系结构的目标板引导的方式和程序都有差异。
  • 第二阶段是内核的初始化,初始化设备驱动,挂接根文件系统。这里是Linux内核通用的启动函数入口。所有体系结构的目标板都顺序调用统一的函数,尽管有些函数的代码实现是跟体系结构相关的。
  • 第三阶段是执行用户空间的init程序,完成系统初始化、启动相关服务和管理用户登录等工作。这个阶段可以提供给用户交互界面,例如:Shell命令行或者图形化的窗口界面。用户也可以自动执行应用程序。

(2)、内核解压启动:

在Linux系统启动过程中,有两个关键点。一个是内核映像的解压启动,另一个是根文件系统的挂接。
目标板处理器上电或者复位后,首先 执 行 引 导 程 序(Bootloader),初始化内存等硬件,然后把压缩的内核映像加载到内存中,最后跳转到内核映像入口执行。这样就把控制权完全交给内核映像了。
接下来内核映像继续执行,完成自解压或者重定位,然后跳转到解压后的内核代码入口。这部分主要是Linux内核的自引导程序,又叫做Linux Bootloader,包含在内核源代码中。这部分引导代码相对简
单,不可能替代目标板上的Bootloader。
目标板的Bootloader具有加载内核映像的功能。在嵌入式Linux开发中,经常用到网络加载的方式,就是通过TFTP协议把内核映像加载到目标板内存。那么目标板的Bootloader还应该能够驱动网络接口,
配置IP地址。不同的Bootloader还有一系列命令进行配置。

(3)、挂载根文件系统:

因为文件和应用程序都要存储在文件系统中,所以Linux离不开文件系统。在内核启动到最后,必须挂接一个根文件系统。从文件系统的目录下找到init程序,启动init进程。
要使目标板挂接NFS根文件系统,需要做两方面的工作。一方面是在主机端配置相应的网络服务;另一个方面就是配置目标板的内核选项。
Linux内核要挂接NFS根文件系统,必须具备以下条件:

  • 以太网接口驱动正常:这需要配置相应的网络驱动程序。10/100M以太网接口的驱动一般在菜单项“Network device support”下。
  • 配置内核启动命令行参数:实现上述功能,既可以通过DHCP服务动态配置,也可以通过内核命令行参数指定。配置内核启动命令行参数默认值的菜单项“Default kernel command line string”。命令行格式如下:
root=/dev/nfs rw nfsroot=<nfs_server>:<root_path> ip=<target_ip>

● ﹤target_ip﹥:为目标板指定的IP地址。
● ﹤nfs_server﹥:指定NFS服务器的IP
● ﹤root_path﹥:要挂接的NFS服务器的目录
● root=/dev/nfs:指定要挂接NFS根文件系统
● rw:表示按照可读/写属性挂接。

  • 配置内核挂接NFS根文件系统:要使内核挂接NFS根文件系统,首先要支持网络协议配置选项,再选择NFS文件系统的支持,然后选择NFS为根文件系统。

你可能感兴趣的:(嵌入式,linux,嵌入式硬件)