刘彦文等《Linux环境嵌入式系统开发基础》第9章
刘彦文等《Linux环境嵌入式系统开发基础》第6章
⒉ 定时器配置寄存器1 定时器配置寄存器1,即TCFG1,用于选择DMA 请求通道和选择各定时器MUX(多路开关)的 输入。其地址为0x51000004,可读写,Reset 值为0x00000000,具体含义见表6.3(p185)。
⒏ DMA请求模式 定时器在每段指定时间后(一次定时结束)能 够产生DMA请求信号。 DMA模式配置和DMA/中断操作见表6.1(p184)。 图6.9(p185)表明,定时器3一旦设置为DMA模 式,将不产生中断请求。定时器3的DMA请求和 响应时间关系,也在图6.9中给出。
6.1.3 PWM定时器特殊功能寄存器 ⒈ 定时器配置寄存器0 定时器配置寄存器0,即TCFG0,用于对两个8 位预分频器配置,并且设置死区长度。其地址 为0x51000000,可读写,Reset值为 0x00000000,具体含义见表6.2(p185)。
第6章 片内功能模块
本章重点: ⑴ S3作;PWM定时器特殊功能寄存器; PWM定时器应用举例。在PWM定时器操作中, 详细讲述了自动重装与双缓冲、手动更新、脉宽 调制、输出电平控制、死区发生器、DMA请求模 式等内容。 ⑵ S3C2410A RTC(实时时钟)概述;RTC组成与 操作;RTC特殊功能寄存器;RTC程序举例。在 RTC组成与操作中,详细讲述了闰年产生器、读/ 写寄存器、后备电池、报警功能、节拍时间中断 等内容。
6.2 实时时钟
6.2.1 RTC概述 S3C2410A芯片内部有一个实时时钟(Real Time Clock,RTC)模块,当系统电源闭合时,使用系 统提供的电源,当系统电源切断时,由后备电池 为RTC模块供电。无论系统加电或切断电源, RTC都在运行;可以对RTC设定报警时间。使用 STRB/LDRB指令,可以在RTC和CPU之间传送8 位BCD码的数据,包括秒、分、时、日、星期、 月、年。RTC模块使用32.768kHz的外部晶振工 作。
《嵌入式原理与接口技术》刘文彦 知识点考点总结
第一章概述1、ARM系列处理器核命名规则附加信息:(1)JTAG是由IEEE 1149.1标准,即测试访问端口和边界扫描结构来描述的,它是ARM与测试设备之间,接收和发送处理器内核调试信息的一系列协议;(2)内嵌的在线调试宏单元是建立在处理器内部,用来设置断点和观察点的硬件调试点。
HB总线连接的控制器2、嵌入式微处理器分类:嵌入式微控制器(EMU)、嵌入式数字信号处理器(EDSP)、嵌入式微处理器(EMPU)、嵌入式片上系统(ESOC)。
嵌入式系统专用微处理器可以分为单片机、嵌入式微处理器、数字信号处理器和片上系统。
3、嵌入式系统发展历程:(1)虽然在1971年Intel公司生产出世界上第一片4位集成电路微处理器Intel 4004之前,也有许多计算机系统是作为某种专门的用途与具体产品结合在一起被使用,也被称为嵌入式系统,但是由于体积较大,使用不方便等原因并没有得到广泛的应用;(2)Intel 4004微处理器的出现,看作是嵌入式系统发展的初始阶段;(3)20世纪70年代之后,大规模和超大规模集成电路技术迅速发展,将微处理器分为通用微处理器和专门用于嵌入式系统的专用微处理器。
4、嵌入式系统与通用计算机相比的主要特点:(1)与应用密切相关(2)实时性(3)复杂的算法(4)制造成本(5)功耗(6)开发和调试(7)可靠性(8)体积5、嵌入式系统的应用:(1)家庭中的全自动洗衣机、空调机、微波炉、电饭煲、数字电视、机顶盒、智能手机、上网终端、数字音响、数字门锁、智能防盗系统等;(2)办公室中的传真机、复印机、打印机、扫描仪、数字化仪、绘图机、键盘等;(3)手持设备MP3、GPS手持机、数码相机、数码摄像机、数码伴侣、个人数字助理(PDA)等;(4)医用电子设备,如电子血压计、心电图仪、脑电图仪等;6、嵌入式微处理器通常可以分为以下2类:(1)通用微处理器(2)嵌入式微处理器第二章S3C2410A微处理器组成1、存储器控制器:全部寻址空间为1GB,分为8个banks,每个128MB;bank1~bank7支持可编程的8/16/32位数据总线宽度,bank0支持可编程的16/32位数据总线宽度bank0~bank7支持ROM/SRAM,其中bank6和bank7也支持SDRAM对ROM/SRAM,支持外部等待信号(nWAIT)扩展总线周期。
嵌入式Linux系统开发—基于ARM处理器通用平台 第9章
基于UDP
服务器模型
在网络程序里面,一般来说都是许多客户对应 一个服务器,为了处理客户的请求, 对服务 端的程序就提出了特殊的要求。目前最常用 的服务器模型有: • 循环服务器:服务器在同一个时刻只可以响应 一个客户端的请求 • 并发服务器:服务器在同一个时刻可以响应多 个客户端的请求
UDP循环服务器
struct hostent
{
char *h_name;
/* 主机的正式名称 */
char *h_aliases; /* 主机的别名 */
int h_addrtype; /* 主机的地址类型 AF_INET*/
int h_length;
/* 主机的地址长度 */
char **h_addr_list; /* 主机的IP地址列表 */
IP协议
IP包由IP协议头与协议数据两部分 构成。
IP协议头
TCP协议
TCP是重要的传输层协议,目的是允许数据同 网络上的其他节点进行可靠的交换。它能提供 端口编号的译码,以识别主机的应用程序,而 且完成数据的可靠传输。 • TCP 协议具有严格的内装差错检验算法确保数 据的完整性。 • TCP 是面向字节的顺序协议,这意味着包内的 每个字节被分配一个顺序编号,并分配给每包 一个顺序编号。
基于TCP-服务器
1. 创建一个socket,用函数socket() 2. 绑定IP地址、端口等信息到socket上,用函
数bind() 3. 设置允许的最大连接数,用函数listen() 4. 接收客户端上来的连接,用函数accept() 5. 收发数据,用函数send()和recv(),或者
read()和write() 6. 关闭网络连接
应用协议
刘彦文-嵌入式系统原理及接口技术--习题解答--定稿
刘彦文编《嵌入式系统原理及接口技术》习题解答第1章(1) 以应用为中心、以计算机技术为基础,软、硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗等有严格要求的专用计算机系统。
与通用计算机的区别是:·嵌入式系统是一个专用计算机系统,有微处理器,可编程;·嵌入式系统有明确的应用目的;·嵌入式系统作为机器或设备的组成部分被使用。
(3) 硬件组成: 微处理器、存储器、输入设备和输出设备。
软件组成: 板级支持包和硬件抽象层、嵌入式操作系统、应用编程接口、嵌入式应用程序。
(5)ARM、MIPS、PowerPC、68xxx。
(7) v4T(9) 增加了:·半字装入/存储指令;·装入并且扩展字节/半字带符号指令;·增加了Thumb 指令集,指令能转换到Thumb状态;·增加了一种新的特权处理方式(系统方式),使用用户寄存器。
(11) 嵌入式Linux操作系统是以Linux为基础开发出来的,保留了Linux的主要特点,可以分为:实时的嵌入式Linux版本、非实时的嵌入式Linux版本、针对没有MMU处理器的μCLinux版本。
主要特点有:开放源码;内核小、功能强大、运行稳定、效率高;易于定制裁剪;可移植到数十种微处理器上;支持大量的外围硬件设备,驱动程序丰富;有大量的开发工具,良好的开发环境;沿用了UNIX的发展方式,遵循国际标准,众多第三方软硬件厂商支持;对以太网、千兆以太网、无线网、令牌网、光纤网、卫星网等多种联网方式提供了全面的支持。
第2章(1) AHB总线连接了:存储器控制器、Nand Flash控制器、中断控制器、LCD控制器、USB主控制器、时钟与电源管理、ExtMaster等;APB总线连接了:通用异步收发器(UART)、通用I/O端口(GPIO)、定时器、实时时钟(RTC)、看门狗定时器、ADC与触摸屏接口、IIC总线接口、IIS总线接口、SPI、MMC/SD/SDIO主控制器、USB设备控制器等。
嵌入式linux入门培训资料第9章
9.3 工程管理
工程管理的操作---打开工程
点击菜单项File > Open Workspace,在弹出的工作区对话框中选择 要打开的工程所在目录路径及工程文件名(或对应的工作区文件名),点 击打开按钮,即可打开该工程。打开工程的同时会打开对应的工作区。另 外菜单项File > Recent Workspaces列出了最近打开过的4个工作区。 Embest IDE除了可以打开其自身产生的软件工程外,还可以打开 ARM SDT/ADS软件生成的工程文件。方法如下:点击菜单项File > Open Workspace,在弹出的工作区对话框中选择打开文件类型为ARM SDT Project或ARM ADS Project,SDT的软件工程文件后缀名为.apj,ADS的 软件工程文件后缀名为.mcp。选择要打开的SDT工程文件或ADS工程文 件,按打开按钮,即可打开该工程。在打开SDT或ADS工程的同时集成环 境会自动生成对应该工程的Embest IDE工作区和工程文件。
工程管理的操作---工作区操作
第三级目录的右键菜单为文件组右键菜单,分别对应:向该文件 组中增加一个文件、切换工作区窗口显示方式、隐藏工作区窗口和显 示文件夹属性对话框操作。
ቤተ መጻሕፍቲ ባይዱ
工程管理的操作---工作区操作
第四级目录的右键菜单为文件操作右键菜单,分别对应:打开、编 译文件、切换工作区窗口显示方式、隐藏工作区窗口和显示文件属性对 话框操作。
9.4 编译、汇编和链接
链接器选项设置
链接器的Linker属性 页如左所示,用户 的 所有设置显示在Link Options的编辑框 中。改变Category 下 拉窗口,分别设置 GNU Tools for ARM
嵌入式Linux编程入门与开发实例-第9章
02
使用适当的杜邦线将LED的正极连接到GPIO引脚上,并将LED
的负极接地。
连接开发板与计算机
03
将开发板通过USB线连接到计算机上,确保电源适配器为开发
板提供稳定的电源。
LED闪烁程序代码解析
打开LED闪烁程序代码
通常在嵌入式Linux系统中,LED闪烁程序代码位于 `/usr/src/`目录下。
的增删改查操作。
简易文件系统烧录与测试
烧录文件系统
将编译好的文件系统镜像烧录到SD卡或U盘等存 储介质中。
启动测试
将存储介质插入目标设备,启动设备并进入文件 系统进行测试。
测试内容
测试文件和目录的创建、读写、删除等操作是否 正常,以及权限控制是否有效。
05
嵌入式Linux开发实例: 网络编程
TCP/IP协议栈简介
线程同步
使用互斥锁、条件变量等 机制实现线程同步,避免 竞态条件。
线程间通信
使用信号量、消息队列等 机制实现线程间通信,协 调多个线程的工作。
03
嵌入式Linux开发实例: LED闪烁程序
LED硬件连接
确定LED连接的GPIO引脚
01
首先需要查阅开发板的文档,了解LED连接的GPIO引脚。
准备硬件连接线
基于TCP的服务器端实现需要创 建一个Socket,绑定到一个特定 的端口,并开始监听客户端的连
接请求。
基于TCP的客户端实现需要向服 务器发送连接请求,连接成功 后可以发送和接收数据。
当有客户端请求连接时,服务 器端接受请求并建立连接,然
后可以发送和接收数据。
客户端和服务器端的实现可以 使用不同的编程语言和工具, 如C、Python等。
嵌入式系统Linux内核开发实战指南(ARM平台)
12.1安装Linux host 12.2在虚拟机中安装Linux host 12.3安装Linux交叉编译环境 12.4在主机上设置TFTP Server 12.5在主机上设置DHCP Server 12.6在主机上设置TeInet server 12.7在开发过程中使用NFS 12.8设置超级终端
目录分析
0 1
第1章嵌入 式系统概述
0 2
第2章 ARM 处理器概述
0 3
第3章 ARM 指令及其寻 址方式
0 4
第4章 ARM 处理器内存 管理单元 (MMU)
0 6
第6章 ARM 处理器存储 访问一致性 问题
0
5
第
5
章
ARM
处理器的
Cache和
Write
Buffer
第7章 ARM处理器工 作模式与异常中断处
谢谢观看
系统参数设置
第27章
2
2Linux内核调
试
3 第28章 Linux
内核移植
4 第29章 Linux
内核优化
5 第30章 Linux
定时器
第31章杂项
第32章编译 链接文件说 明
26.1旗语系统参数(tag) 26.2前期命令行设置的系统参数 26.3老式命令行系统参数 26.4命令行系统参数
27.1打开Linux内核及其各模块自带的调试开关 27.2内核剖析(ProfiIing) 27.3通过打印调试(printk) 27.4使用proc文件系统调试 27.5 oops消息 27.6通过跟踪命令strace调试 27.7使用gdb、kdb、kgdb调试
21.1 Linux模块设计概述 21.2 Linux的内核空间和用户空间 21.3内核模块与应用程序的区别 21.4编译模块 21.5装载和卸载模块 21.6模块层叠 21.7模块版本依赖 21.8模块编程示例
基于Linux的ARM9嵌入式系统设计基础理论
基于Linux的ARM9嵌入式系统设计基础理论作者:刘阳龙潜孙永政来源:《艺术科技》2016年第09期当前,嵌入式的技术应用越来越广发,从航天科技到民用产品,嵌入式产品的身影无处不在,而这些嵌入式产品的核心——处理器决定了产品的市场和性能。
在32位嵌入式处理器市场中,ARM处理器占有很大份额。
ARM不仅是一个公司、一种技术也是一种经营理念,即由ARM公司提供核心技术,只出售芯片中的IP授权,采取了别具一格的“Chipless模式”(无芯片的芯片企业),不参与生产,而是由合作厂商去生产具体的芯片和产品。
现在由于存储空间等原因,在嵌入式芯片上编程有较大的困难,选取合适的平台就显得很重要。
由于Linux是开放源码的操作系统,吸引着全世界的程序员参与到发展和完善的工作中来,所以Linux保持了稳定而且卓越的性能。
由于源代码可以修改、移植,Linux在嵌入式领域中的应用也越来越广。
选用Linux作为平台,可以根据具体需要自由裁减源码,打造适合目标平台的环境,编写最有效率的应用程序。
可以预见,ARM与Linux在未来已经越来越壮大,在嵌入式产品市场上会占有越来越大的份额。
在这种形式下,学习和研究ARM非常有必要,所以在这里介绍一下关于基于Linux 系统的ARM9嵌入式系统设计的基础理论。
首先进行一下ARM开发环境的简介:根据功能的不同,ARM应用软件的开发工具可分为编辑软件、编译软件、汇编软件、链接软件、调试软件、嵌入式实时操作系统、函数库、评估板、JTAG仿真器、在线仿真器等。
因此,一套含有编辑软件、编译软件、汇编软件、链接软件、调试软件、嵌入式实时操作系统及函数库的集成开发环境一般来说是必不可少的。
至于嵌入式实时操作系统、评估板等其他开发工具则可以根据应用软件规模和开发计划选用。
使用集成开发环境开发基于ARM的应用软件时,其中涉及的编辑、编译、汇编、链接等工作可全部在PC机上完成,调试工作则需要配合其他的模块或产品完成。
嵌入式系统第九章 Linux环境下应用程序开发
❖ 为了在多个进程间交换数据,内核专门留出一块 共享内存区域,所有需要访问该共享区域的进程 都要把该共享区域映射到本进程的地址空间中。 每个内存区域都有一个标识符(shmid),进程通 过该标识符访问内存区域。
系统调用shmget()
该系统调用获得(或新建)一个共享内存区域,调 用成功返回该区域的ID,即shmid,若出错返回-1。函 数原型为:
perror(" detach error ");
return 0; }
9.1.2 消息队列
❖ 消息队列就是一个消息的链表。可以把消息看做一 个记录,具有特定的格式及特定的优先级。对消息 队列有写权限的进程可以向其中按照一定的规则添 加新消息;对消息队列有读权限的进程则可以从消 息队列中读走消息。
嵌入式系统
1
主讲内容
第1章 嵌入式系统概述 第2章 ARM微处理器概述 第3章 熟悉ARM嵌入式实验系统 第4章 ARM指令集及汇编 第5章 ADS1.2集成开发环境和ARM仿真器介绍 第6章 Linux使用基础 第7章 Linux系统开发环境 第8章 Linux环境下的驱动程序开发 第9章 Linux环境下应用程序开发
if(shm_id<0){ perror("shmget error"); return 1;
刘彦文等《Linux环境嵌入式系统开发基础》附录A
A.2.2 创建和删除目录 ⑴ 创建目录命令mkdir ① 一般格式 mkdir [选项] 路径 ② 说明 该命令用于创建一个目录,要求创建目录的用户 ,在所创建目录的上级目录中具有写权限,并且 路径名不能与当前目录中已有的目录或文件名同 名。 ③ 选项 mkdir主要选项参数如表A.8所示(p489)。
账户名与用户名的意思相同。 账户实际上是一个用户在系统上的标识,系统依 据账户来区分每个用户的文件、进程和任务,给 每个用户提供特定的工作环境,使得每个用户的 工作能够独立而不受干扰的进行。 例如,单击Linux的“系统工具”下的“终端” ,这时屏幕上显示类似于“[buct@localhost home] $”的信息,其中buct是指系统的普通用 户,localhost是指本地主机,而home是指当前 所在的目录。
A.1.3 与用户和组相关的命令 ⑴ 用户切换命令su ① 一般格式 su [选项] [使用者] ② 说明 变更为另一个用户,主要用于将普通用户身份转 变为超级用户,而且需要输入相应的口令。 ③ 选项 su主要选项参数如表A.4所示(p486)。
④ 使用实例 [buct@localhost home]$ su - root 口令: [root@localhost ~]# 实例表明su命令将普通用户变更为root用户,并 使用选项“-”携带root环境变量。将普通用户变 更为root用户时建议使用“-”选项,这样可以将 root环境变量和工作目录同时带入,否则在以后 使用时可能会由于环境变量的原因而出错。 在转变为root权限后,提示符变为#。
缺省情况下,useradd所做的初始化操作,包括 在“/home”目录下为对应账户建立一个名为同 名的主目录,并且还为该用户单独建立一个与用 户名同名的组。 passwd命令用于更改对应用户账户口令,修改 口令时所输入内容不像windows的那样回显为* 号,所输入的这些字符用户是看不见的。口令最 好包括字母、数字和特殊符号,并且设成6位以 上。
嵌入式系统开发基础—基于8位单片机的C语言程序设计(第二版)第九章简明教程PPT模板
9.2 定时/计数器的工作方式寄存器和 控制寄存器
9.2.1 定时/计数器的方式寄存器TMOD 方式寄存器TMOD用于设定定时/计数器T0和T1
的工作方式,格式如图9-2所示。
TMOD高4位控制T1,低4位控制T0,每位都有一个 大写的、在头文件<reg52.h>中定义过的名字,在 程序中,引用头文件<reg52.h>后,可以对TMOD 按位访问。
9.2.2 定时/计数器的控制寄存器TCON
控制寄存器TCON用于控制定时/计数器的启动、 停止和记载溢出情况。控制寄存器TCON的结构如 图9-3所示。
其中:
TF1:定时/计数器T1的溢出标志位,当T1计满溢出时, 由硬件使TF1=1,可以使用此信号向CPU申请中断,在中断 程序中要清TF1。
9.1 定时器/计数器接口概述
9.1.1 定时/计数器的主要特性 1.MCS-51中有两个16位的可编程定时/计数器:定时/
计数器T0和定时/计数器T1,MCS-52中还有一个定时/计数 器T2。 2.每个定时/计数器既可以对系统时钟计数实现定时, 也可以对外部信号计数实现计数功能,通过编程设定来实现。
定时/计数器T0、T1的结构如图9-1所示,它由 加法器、方式寄存器TMOD、控制寄存器TCON等 组成。
定时/计数器的核心是16位加法器,在图9-1 中就是TH1、TL1;TH0、TL0,它们都是8 位的特殊功能寄存器,它们可以单独使用, 也可以连起来使用,TH1和TL1连起来使用 就是T1的16位加法器;TH0和TL0连起来使 用就是T0的16位加法器;
3.每个定时/计数器都有多种工作方式,其中T0有四种 工作方式;T1有三种工作方式,T2有三种工作方式。通过编 程可设定工作于某种方式。
嵌入式Linux09
❖ 在同一时刻只能有一个线程掌握某个互斥量上 的锁,拥有上锁状态的线程能够对共享资源进 行操作。若其他线程希望上锁一个已经上锁了 的互斥量,则该线程就会挂起,直到上锁的线 程释放掉互斥量上的锁为止。可以说,这把互 斥锁使得各个线程按序操作共享资源。
❖ Linux 实现了POSIX 的无名信号量(基于内存的信号 量),主要用于线程间的互斥、同步。这里主要介绍 几个常见函数。
❖ sem_init用于创建一个信号量,并能初始化它的值。
❖ sem_wait和sem_trywait函数用于等待共享资源,相当 于P操作,它们都能将信号量的值减一,两者的区别在 于若信号量小于零时,sem_wait将会阻塞进程,而 sem_trywait则会立即返回。
第9章 嵌入式Linux多线程开发
本章教学目的及要求
➢ 了解Linux的多线程概念 ➢ 掌握Linux多线程相关的API ➢ 理解Linux多线程的通信机制及常用方法
线程的概念
进程是系统中程序执行和资源分配的基本单位。 每个进程都拥有自己的数据段、代码段和堆栈段, 这就造成了进程在进行切换等操作时都需要有比 较费时的上下文切换等动作。为了进一步减少处 理机的空转时间支持多处理器和减少上下文切换 开销,进程在演化中出现了另一个概念——线程
❖ PV 原语主要用 于进程或线程间 的同步和互斥这 两种典型情况。 若用于互斥,几 个进程(或线程 )往往只设置一 个信号量sem, 它们的操作流程 如图。
❖ 当信号量用 于同步操作 时,往往会 设置多个信 号量,并安 排不同的初 始值来实现 它们之间的 顺序执行, 它们的操作 流程如图。
第九章 嵌入式开发基础
Chapter
7
9.1.2 嵌入式系统的现状
嵌入式系统的应用领域
Chapter
8
9.1.2 嵌入式系统的现状
Chapter
9
9.1.2 嵌入式系统的现状
嵌入式系统网络发展
Chapter
10
9.1.2 嵌入式系统的现状
Chapter
11
9.1.2 嵌入式系统发展趋势
联网成为必然趋势 小尺寸、低功耗和低成本 提供精巧的多媒体人机界面 无所不在的智能
信息家电、
医疗、 军工、
控制、监视或管理
工业控制、
航空航天等
用户的应用程序
Chapter
6
9.1.1 嵌入式系统的特点
特点
低功耗、体积小、集成度高 技术密集、资金密集、高度分散、不断创新的知识集成系统 嵌入式系统和具体应用有机地结合在一起,具有较长的生命周 期。 嵌入式系统中的软件一般都固化在存储器芯片或单片机本身中。 嵌入式系统本身不具备自举开发能力
Chapter
26
9.2.3 常用工具介绍
名称 归属 作用
arm-linux-as
arm-linux-ar arm-linuxran-lib arm-linux-ld arm-linuxobjdump arm-linuxobjcopy arm-linux-strip arm-linux-readelf arm-linux-gcc arm-linux-g++
嵌入式系统: 嵌入到对象体系中的专用计算机系统 三个基本要素 “嵌入性”、 “专用性”与 “计算机系统” 对象系统则是指嵌入式系统所嵌入的宿主系统。
Chapter 5
9.1.1 嵌入式系统的构成
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
9.1.3 如何获取工具链 根据自己的开发环境,通过以下4种途径可以获 得工具链: 购买一个商业版的工具链。 网上下载一个免费的工具链。 购买目标板时,附带的光盘上通常会带有一个工 具链。 网上下载组成工具链的源代码,使用工具自行创 建一个工具链。 购买目标板所附带的工具链,是大多数用户最常 使用的工具链,使用时要安装到主机Linux系统 下。
GCC是一个能够控制很多其他工具的前端软件, 被控制的工具在编译过程中会使用到,如cpp预 处理器、C编译器、汇编器、链接器等。
⑵ GNU binutils 工具链的另一个重要的组件是GNU binutils套 件,此套件中含有两个重要的工具程序,GNU 汇编器as以及GNU链接器ld。此外还有10多个 工具程序,如ranlib是为archive(静态程序库) 的内容产生索引、strip是用于去除目标文件中 的符号,等等。
交叉编译器可以从光盘或U盘拷贝到Linux的 /usr/local子目录下,然后在该子目录下建立 arm子目录,交叉编译器解压缩后存放在 /usr/local/arm子目录下。 安装、解压缩交叉编译器后,要在 /root/.bashrc文件中增加路径环境变量,并重 启这个文件,之后系统就能够在指定路径下自 动找到该交叉编译器,而不用每次使用时都要 指出其绝对路径。
上面代码的第1行表示用vi打开这个文件,其余 部分为文件内容。 将其中代码: PATH=$PATH:$HOME/bin:/opt/crosstools/gcc -3.4.6-glibc-2.3.6/bin 修改为: PATH=$PATH:$HOME/bin:/opt/host/armv4l/bin 然后保存该文件,并退出vi。
2. 对查找工具链的路径变量进行修改 主机Linux启动时,在/root/.bash_profile文件 中,设置了查找交叉工具链的路径,安装光盘 内容以前,这个文件的内容可能是:
[root@vm-dev /]# vi /root/.bash_profile # .bash_profile # Get the aliases and functions if [ -f ~/.bashrc ]; then . ~/.bashrc fi # User specific environment and startup programs PATH=$PATH:$HOME/bin:/opt/crosstools/gcc-3.4.6glibc-2.3.6/bin export PATH unset USERNAME
9.1.4 工具链的组件及GDB简介 ⒈ 工具链组件简介 ⑴ GCC编译器集 GCC(GNU Compiler Collection,GNU编译器集) 并不仅仅是个C编译器,它是一个GNU编译器集, 能够支持对C、C++、Objective C、Java、 Fortran(F77)以及Ada语言的编译。 可以对GCC进行配置,使GCC能够为不同的目标 处理器生成代码,使之成为一个交叉编译器。目 前GCC支持的处理器体系结构有40余种,常见的 有x86、ARM、PowerPC等。GCC除了能够在 Linux环境下运行,还可以在Windows下运行。
工具链通常包含以下二进制(可执行文件)工具 程序:预处理器、链接器、汇编器、打包器 (archiver)、C(或其他语言的)编译器,以及 C程序库与它的头文件。 其中,C程序库与它的头文件是一种共享程序库, 其行为有如内含“原始Linux内核API”的打包程 序,而且在Linux系统中执行的任何应用程序几 乎都会用到它。
⑶ 标准C程序库 Linux用到的标准C程序库就是GNU C程序库, 常被写作glibc。glibc是一个可移植、高性能的 C程序库,支持所有相关标准(ISO C 99、 POSIX.1c、POSIX.lj、POSIX.1d、Unix98以及 Single Unix Specification)。
修改后保存的文件,要在下一次启动Linux时才 会执行,因此要用以下命令通知系统现在执行这 个文件: [root@vm-dev /]# source /root/.bash_profile 此后系统会根据这个文件指定的路径,自动找到 新安装的工具链了。 可以用如下命令检查路径变量值: [root@localhost local]# echo $.6版之前对线程的支持非常有限。 Linux 2.6系列随附了一个新的线程实验品,称 为New POSIX Threading Library,即新的 POSIX线程库NPTL。NPTL所依靠的是Linux内 核对线程新的支持。NPTL被当作glibc新近版 本的一部分对外发布。
9.1 交叉开发平台基础
9.1.1 本地开发及交叉开发 ⒈ 本地开发 本地开发(native development)也称本机开发, 指的是在主机某种操作系统下对源程序进行编译、 链接,产生的可执行文件仍然能够在相同的主机 和相同的操作系统下运行。 Linux系统支持本地开发的软件,主要指编译器 及C程序库等,它们通常包含在Linux发行套件中, 主机安装Linux系统时,会同时将其安装在硬盘。
第9章 主机开发环境配置
本章重点:
⑴ 交叉开发平台基础; ⑵ 交叉工具链安装举例; ⑶ 主机Linux环境网络配置举例(S3C2410A)。
虽然Linux编程环境能够支持众多编程语言, 例如C、C++、Java、Perl、Python、Ada、 Forth、Lisp、Fortran等等,但是目前最常用 的是C语言。 本章主要描述了使用C语言编程时,主机开发 环境的跨平台工具链的安装。 另外目标板在运行程序时,使用到网口和串 行端口,因此需要事先对主机Linux环境网络 和串行端口进行配置。
⑸ Linux内核头文件 工具链中会用到某一版本的Linux内核头文件, 目的是支持程序员编程中使用到的对Linux内 核的系统调用。构建工具链用到的Linux内核 文件,应该与目标板上使用的Linux内核,来 自相同的版本。
⒉ GDB简介 GDB(GNU Debugger)通常不包括在工具链中, 是一个Linux上最常用的调试器工具。 GDB需要进行编译,使之能够调试运行在目标板 处理器上的代码。调试器本身运行在主机,能够 对目标板上的代码进行调试,被称为远程调试。 运行被调试的程序时,目标板上同时还要运行一 个占位程序,占位程序通常是gdbserver,通过 串口或网口连接,负责与运行在主机上的GDB调 试程序进行通信。
9.2 交叉工具链安装举例
通常购买目标板时会随附一张光盘,光盘上不 同目录下可能会有支持Linux、Windows CE和 µ C/OS系统的程序。Linux环境工具链安装到主 机的方法有两种:
一种是在主机运行Linux系统时,进入光盘中与 Linux相关的目录,启动install.sh安装脚本程序, 系统会自动将交叉工具链(包含相关库)安装到 主机硬盘指定的目录。另外光盘上还可能有一些 实验例程,将会一同被安装到主机硬盘指定的目 录。 另一种是手工安装,例如输入命令将光盘工具链 压缩包拷贝到主机Linux指定目录、输入命令解 压缩并安装到指定目录。
vi是一个文本编辑程序,如同Windows下的记事 本。进入vi后,输入“a”或“i”即进到插入状态。 输入Esc、Esc、:、w、q、!键后,保存文件并退 出vi程序。
9.2.2 交叉工具链安装举例(OMAP3530) 以下将交叉工具链称为交叉编译器,安装过程 针对EL-ARM860教学实验系统。 要安装的交叉编译器压缩包文档名为: arm-2007q3-51-arm-none-linux-gnueabii686.tar.bz 假定主机在Windows环境下已经安装了虚拟机 及Red Hat Enterprise Linux 5操作系统
叉开发过程中,在主机输入源程序、编译、 链接,仅仅在目标板上运行程序,主要原因是 目标板上硬件资源少,缺少键盘、显示器、硬 盘;内存容量比较小;处理器速度比较慢。
9.1.2 GNU跨平台工具链组成 跨平台工具链(cross-platform toolchain)经常 被简写为交叉工具链(cross toolchain),或者 就称为工具链(toolchain)。本书中出现的工具 链一词,通常指的是跨平台工具链,有时也称为 交叉编译器。Linux使用的工具链的大部分组件 来自GNU项目。
drwxr-xr-x 3 root root 4096 3月 9 16:39 09_dcmotor drwxr-xr-x 2 root root 4096 3月 9 16:39 10_led drwxr-xr-x 2 root root 4096 3月 9 16:39 11_int drwxr-xr-x 4 root root 4096 3月 9 16:38 12_pwm drwxr-xr-x 3 root root 4096 3月 13 10:48 bin drwxr-xr-x 4 root root 4096 3月 9 16:38 CAN kuozhan drwxr-xr-x 2 root root 4096 3月 9 16:39 keyboard -r-xr--r-- 1 root root 341 3月 9 16:35 Makefile -r-xr--r-- 1 root root 307 3月 9 16:35 Makefile~ -r-xr--r-- 1 root root 172 3月 9 16:35 readme.txt -r-xr--r-- 1 root root 167 3月 9 16:35 Rules.mak
9.2.1 交交叉工具链安装举例(S3C2410A) 1. 交交叉工具链及实验例程安装位置 以下内容为博创科技UP-CUP目标板随附光盘内 容的安装位置: 主编译器armv4l-unknown-linux-gcc,被安装在 主机硬盘的/opt/host/armv4l/bin目录下。该目录 下还有预处理器cpp、汇编器armv4l-unknownlinux-as、链接器armv4l-unknown-linux-ld等交 叉工具链的其他工具软件。