交叉编译相关知识

news2024/9/24 1:23:44

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

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

(1)、串行通信:

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

(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个阶段,如图所示。
在这里插入图片描述

  • 第一阶段是目标板硬件初始化,解压内核映像,再跳转到内核映像入口。这部分的工作一般由目标板的引导程序和内核映像的自引导程序完成。不同体系结构的目标板引导的方式和程序都有差异。
  • 第二阶段是内核的初始化,初始化设备驱动,挂接根文件系统。这里是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为根文件系统。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/908361.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

IDEA创建Mybatis格式XML文件

设置位置&#xff1a;File | Settings | Editor | File and Code Templates 选择Files&#xff0c;点击号 Name中输入xml模板名&#xff08;名称自行决定&#xff09;&#xff0c;后缀名extension输入xml&#xff08;固定&#xff09; 内容处输入Mybatis的xml文件模板内容&…

数据结构 - 线性表的定义和基本操作

一、定义 线性表是具有相同特性的数据元素的一个有限序列。 线性表&#xff1a; 由n(n≥0)个数据元素&#xff08;结点&#xff09;组成的有限序列。线性表中数据元素是一对一的关系&#xff0c;每个结点最多有一个直接前驱&#xff0c;和一个直接后继 二、线性表的基本操作 …

【AI绘画--七夕篇】:七夕特别教程,使用SDXL绘制你的心上人(Stable Diffusion)(封神榜—妲己)

目录 前言0、介绍0-0、结果展示0-1、Stable Diffusion0-2、sdxl介绍 一、云端部署Stable Diffusion1-1、云端平台的优势 二、平台介绍三、注册账号并且开始炼制3-1、购买算力并创建工作空间3-2、启动工作空间3-3、应用市场一键安装3-4、使用Stable-Diffusion作图 四、有女朋友的…

cuda gdb调试

如果cudaDeviceEnablePeerAccess函数不支持或不起作用&#xff0c;您仍然可以尝试其他方法来实现GPU之间的数据交换和通信。以下是一些替代方法&#xff1a; 通过主机内存进行数据传输&#xff1a; 如果GPU之间的数据交换不是非常频繁&#xff0c;您可以将数据从一个GPU复制到…

【c语言】五子棋(EasyX图形库+背景音乐)

大家好&#xff0c;有没有觉得写了好多c语言代码&#xff0c;面对的都是黑框框控制台&#xff0c;当我们学习了基础的c语言知识&#xff0c;和EasyX图形库后&#xff0c;终于可以和黑框框saygoodbye,今天要分享给大家的是小游戏五子棋&#xff0c;跟着小张一起学习吧 EasyX图形…

(四)Doceke安装MySQL镜像+Docker启动MySQL容器

Doceke安装MySQL镜像/Docker启动MySQL容器 一、doceke安装MySQL镜像 切换到root用户&#xff0c;su root 。 1、启动Docker 启动&#xff1a;sudo systemctl start docker 停止&#xff1a;systemctl stop docker 重启&#xff1a;systemctl restart docker 查看docker运行…

视频汇聚平台EasyCVR安防视频监控在地下停车场中的具体应用方案

一、背景 随着我国城市化进程的加快&#xff0c;汽车已成为人们生活中不可缺少的交通工具&#xff0c;但在许多城市中&#xff0c;买车容易&#xff0c;停车难的问题愈发突出。特别是在人群密集的商场、写字楼和地下停车场&#xff0c;车流量大、车况复杂。传统的人工判断方式耗…

go、java、.net、C#、nodejs、vue、react、python程序问题进群咨询

1、面试辅导 2、程序辅导 3、一对一腾讯会议辅导 3、业务逻辑辅导 4、各种bug帮你解决。 5、培训小白 6、顺利拿到offer

【网络基础实战之路】基于三层架构实现一个企业内网搭建的实战详解

系列文章传送门&#xff1a; 【网络基础实战之路】设计网络划分的实战详解 【网络基础实战之路】一文弄懂TCP的三次握手与四次断开 【网络基础实战之路】基于MGRE多点协议的实战详解 【网络基础实战之路】基于OSPF协议建立两个MGRE网络的实验详解 【网络基础实战之路】基于…

Lombok生成的Getter和Setter的名称对于“eMail”或“xAxis”等属性存在大小写转换异常

问题 最新开发中&#xff0c;遇到一个字段映射问题。我们先看问题案例&#xff1a; 明明代码中第二个字母是大写&#xff0c;结果测试接口时发现变成了小写字母。 分析 通过网上查询发现&#xff0c;这属于Lombok的bug。而且早在2015年就有人在GitHub上提出了issues。 Names o…

基于SpringBoot房产销售系统【附ppt|开题|万字文档(LW)和搭建文档】

主要功能 前台界面&#xff1a; ①首页、房源信息推荐、房源信息展示、查看更多等 ②房源信息、房源名称、房源户型、销售姓名等 ③购房、预约、点我收藏、评论等 ④个人中心、我的收藏、支付等 后台登录&#xff1a; ①首页、个人中心&#xff1a;修改密码、用户信息管理等 ②…

三角函数与圆,角度和弧度 (草稿,建设中)

目录 1 三角函数与圆&#xff0c;角度和弧度 1.1 三角形 1.2 圆形 2 角度 3 弧度 rad 4 角度&#xff0c;弧度的换算 2 三角函数 1 三角函数与圆&#xff0c;角度和弧度 1.1 三角形 角度弧长sin()cos()tan() 1.2 圆形 半径&#xff0c;周长&#xff0c;弧长半径面积 …

Linux面试笔试题(2)

27、按下( A ) 键能终止当前运行的命令 A. Ctrl-C B. Ctrl-F C. Ctrl-B D. Ctrl-D 28、下面哪个命令用来启动X Window ( C ) A. runx B. Startx C. startX D. xwin 29、用 “rm -i”,系统会提示什么来让你确认( B ) A.命令行的每个选项 B.是否真的删除 C.是否有写的权限 D…

计算机网络第2章(物理层)

计算机网络第2章&#xff08;物理层&#xff09; 2.1 物理层的基本概念2.2 物理层下面的传输媒体2.2.1 导引型传输媒体2.2.2 非导引型传输媒体 2.3 传输方式2.3.1 串行传输和并行传输2.3.2 同步传输和异步传输2.3.3 单向通信&#xff08;单工&#xff09;、双向交替通信&#x…

【Leetcode】105.从前序与中序遍历序列构造二叉树

一、题目 1、题目描述 给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点。 示例1: 输入: preorder = [3,9,20,15,7], inorder = [9,3,15,20,7] 输出: [3,9,20,null,null,15,7]示例…

口腔牙科门诊挂号系统 微信小程序的设计与实现_1171u-

随着信息时代的来临&#xff0c;过去的“口腔助手”管理方式缺点逐渐暴露&#xff0c;现在对过去的“口腔助手”管理方式的缺点进行分析&#xff0c;采取计算机方式构建“口腔助手”小程序。本文通过阅读相关文献&#xff0c;研究国内外相关技术&#xff0c;提出了一种预约信息…

睿趣科技:抖音小店新人最适合卖什么产品

随着移动互联网的不断发展&#xff0c;短视频平台如今已经成为了人们日常生活中不可或缺的一部分。其中&#xff0c;抖音作为国内短视频平台的代表&#xff0c;不仅让用户可以欣赏到各种有趣、创意的短视频内容&#xff0c;同时也为创业者提供了一个广阔的创业机会——抖音小店…

【数据结构入门指南】二叉树顺序结构: 堆及实现(全程配图,非常经典)

【数据结构入门指南】二叉树顺序结构: 堆及实现&#xff08;全程配图&#xff0c;非常经典&#xff09; 一、前言&#xff1a;二叉树的顺序结构二、堆的概念及结构三、堆的实现&#xff08;本篇博客以实现小堆为例&#xff09;3.1 准备工作3.2 初始化3.3 堆的插入3.3.1 向上调…

【五子棋】

五子棋 文章目录 五子棋前言一、登录功能二.哈希表管理用户的会话和房间三.基于Websocket连接开发的功能1.匹配功能2.游戏房间3.挑战功能4.人机对战5.聊天功能 前言 这篇博客主要详细介绍我的五子棋项目的核心功能的实现细节&#xff0c;也就是详细介绍五子棋各个功能是如何实…

Java IO流(三)线程模型

传统阻塞I/O模式 其中黄色框表示对象,蓝色框表示线程,白色框表示API方法 特点 采用阻塞IO模式获取输入数据每个连接都需要独立的线程完成数据的输入,业务处理和处理结果数据返回 潜在问题 并发数很大时,需要对应每个连接请求创建一个线程,所以占用资源很大连接创建后,若当前…