《嵌入式系统的原理及应用》课程讲义_5-8

合集下载

嵌入式系统原理与应用课程教学大纲

嵌入式系统原理与应用课程教学大纲

《嵌入式系统原理与应用》课程教学大纲一、课程基本信息课程代码:230449课程名称:嵌入式系统原理与应用英文名称:Principle and Application of Embedded System课程类别:专业课学时:72(其中实验18学时)学分:3.5适用对象: 计算机科学与技术业考核方式:考试(平时成绩占总评成绩的30%,期末考试成绩占70%)先修课程:计算机组成原理、操作系统、编译原理二、课程简介嵌入式系统原理与应用是计算机科学技术专业的一门专业课,讲述嵌入式系统的基本理论、原理。

本课程是一门既与硬件关系紧密,又与嵌入式操作系统、嵌入式软件关系十分紧密课程。

它围绕目前流行的32位ARM处理器和源码开放的Linux操作系统,讲述嵌入式系统的概念,软、硬件组成,开发过程以及嵌入式应用程序开发设计方法。

本课程的知识将为学生今后从事嵌入式系统研究与开发打下坚实的基础。

The principle of embedded system is an important course of computer science and technology, which introduce the principles and the theory of embedded system.T his curriculum is tied closely with not only hardware but also embedded operating system and embedded software. It introduce the conception of embedded system, components of software and hardware, developing progresses and designing methods of embedded programming which based on the 32bit arm processor and operating system of opened linux.The knowledge of this course would be solid foundation for the student who would be engaged in researching or developing about embedded system.三、课程性质与教学目的嵌入式系统原理与应用课程的性质:该课程是计算机科学与技术专业的专业课。

嵌入式系统的原理及应用.ppt

嵌入式系统的原理及应用.ppt
17
VIVI 第2阶段介绍
第5步:mtd_dev_init()
mtd_dev_init()用来扫描所使用的NAND Flash的型号,构造 MTD设备,即构造一个mtd_info的数据结构。对于本开发板,它 直接调用mtd_init(),mtd_init又调用smc_init(),此函数在 drivers/mtd/maps/s3c2410_flash.c中。
嵌入式系统的原理及应用
3.3 嵌入式Linux系统的开发
编写BootLoader; 裁减嵌入式Linux内核; 裁减嵌入式Linux文件系统; 烧写BootLoader到目标板; 烧写嵌入式Linux内核和文件系统到目标板。
2
3.3.1 编写BootLoader
一个嵌入式Linux系统从软件角度看可以分为四个层次:
怎样编写BootLoader程序?
初学者最好采用拿来主义,在别人的BootLoader源代码基础上 进行修改、编译、调试。
19
18
VIVI 第2阶段介绍
第7步:misc()和init_builtin_cmds()
这两个函数都是简单地调用add_command函数,给一些命令 增加相应的处理函数。在vivi启动后,可以进去操作界面,这些命 令,就是供用户使用的。
第8步:boot_or_vivi()
此函数根据情况,或者启动“vivi_shell”,进入与用户进行交 互的界面,或者直接启动linux内核。
9
head.S通常完成如下几件事情:
(5) 检查是否从掉电模式唤醒,若是,则调用WakeupStart函数进 行处理——这是一段没用上的代码,vivi不可能进入掉电模式; (6) 点亮所有LED (7) 初始化UART0:

《嵌入式系统原理和应用》教学大纲

《嵌入式系统原理和应用》教学大纲

《嵌入式系统原理与应用》教学大纲一、课程基本信息二、课程性质、地位和任务嵌入式系统原理与应用是计算机科学技术专业的一门专业课,讲述嵌入式系统的基本理论、原理。

本课程是一门既与硬件关系紧密,又与嵌入式操作系统、嵌入式软件关系十分紧密课程。

它围绕目前流行的32位ARM处理器和源码开放的Linux操作系统,讲述嵌入式系统的概念,软、硬件组成,开发过程以及嵌入式应用程序开发设计方法。

本课程的知识将为学生今后从事嵌入式系统研究与开发打下坚实的基础。

三、课程基本要求通过对基于ARM嵌入式芯片的系统的基本组织结构与工作原理的学习,使学生对计算机系统的硬件部分有一个全面的了解,对嵌入式软件的开发过程有一个清楚的认识,通过对嵌入式操作系统的工作原理的学习,使学生对嵌入式操作系统有一个清晰的认识,提高学生在嵌入式软件设计设计能力及解决实际问题的动手能力,为后续专业课程的学习打下坚实的基础。

四、课程内容第一章嵌入式系统导论教学内容:1.1嵌入式系统概述1.2嵌入式系统的实时性与可靠性1.3嵌入式系统的应用领域和发展趋势教学目的:掌握嵌入式系统的特点、与通用计算机系统的区别、影响嵌入式系统实时性和可靠性的主要因素、了解嵌入式系统的发展趋势教学重点:嵌入式系统的特点、与通用计算机系统的区别、影响嵌入式系统实时性和可靠性的主要因素教学难点:影响嵌入式系统实时性和可靠性的主要因素教学方法:课堂讲授为主,布置部分作业,在讲解时多举一些嵌入式系统的应用实例,使学生对嵌入式系统有更好的认识与理解。

第二章嵌入式硬件系统教学内容:2.1嵌入式微处理器概述2.2嵌入式微处理器内核原理和指令系统教学目的:掌握嵌入式系统的硬件的基本组成、了解嵌入式微处理器的基本组成和运行模式、基本了解ARM芯片的指令系统教学重点:嵌入式系统的基本组成、CISC与RISC指令系统的对比、嵌入式微处理器的特点、嵌入式微处理器的体系结构、嵌入式微处理器的分类、AMBA总线、PCI总线、ARM指令系统教学难点:嵌入式微处理器的体系结构、ARM指令系统教学方法:课堂讲授为主,结合课堂练习为辅,布置部分作业。

《嵌入式系统开发与应用》教学教案

《嵌入式系统开发与应用》教学教案

《嵌入式系统开发与应用》教学教案一、教学目标1. 了解嵌入式系统的概念、特点和应用领域。

2. 掌握嵌入式系统的基本组成部分,包括硬件和软件。

3. 熟悉嵌入式操作系统的基本原理和常用嵌入式操作系统。

4. 学习嵌入式系统开发流程,包括需求分析、系统设计、硬件选型、软件开发、系统集成和测试。

5. 掌握嵌入式编程语言,如C/C++,并能应用于实际项目开发。

二、教学内容1. 嵌入式系统概述嵌入式系统的定义嵌入式系统的特点嵌入式系统的应用领域2. 嵌入式系统的基本组成嵌入式处理器嵌入式外围设备嵌入式操作系统3. 嵌入式操作系统原理嵌入式操作系统的概念嵌入式操作系统的特点常用嵌入式操作系统简介4. 嵌入式系统开发流程需求分析系统设计硬件选型软件开发系统集成和测试5. 嵌入式编程语言及应用C/C++编程语言基础嵌入式编程规范实际项目开发案例分析三、教学方法1. 讲授法:讲解嵌入式系统的基本概念、原理和开发流程。

2. 案例分析法:分析实际项目开发案例,让学生了解嵌入式系统开发的整个过程。

3. 实验法:安排实验室实践环节,让学生动手实践,加深对嵌入式系统的理解。

4. 小组讨论法:分组讨论嵌入式系统开发中的问题,培养学生的团队合作能力。

四、教学资源1. 教材:《嵌入式系统开发与应用》2. 实验室设备:嵌入式开发板、编程器、仿真器等。

3. 在线资源:嵌入式系统相关论文、博客、论坛等。

五、教学评价1. 课堂表现:考察学生的出勤、发言、讨论等参与程度。

2. 课后作业:布置相关课后练习,巩固所学知识。

3. 实验报告:评估学生在实验室实践环节的表现。

4. 课程设计:让学生完成一个嵌入式系统开发项目,综合评估学生的实际应用能力。

六、教学安排1. 课时:共计32课时,包括课堂讲授、实验和讨论。

2. 授课方式:每周4课时,共8周完成教学内容。

3. 实验安排:每2周安排1次实验,共4次实验。

七、教学进程第1-4周:嵌入式系统概述、基本组成和操作系统原理。

嵌入式系统原理及应用课件全书教学教程电子教案

嵌入式系统原理及应用课件全书教学教程电子教案

嵌入式系统原理及应用课件全书教学教程电子教案目录1. 内容概括 (3)1.1 课程简介 (3)1.1.1 课程目标 (4)1.1.2 适用范围 (4)1.2 嵌入式系统的基本概念 (5)1.2.1 定义与发展 (6)1.2.2 特点与应用场景 (8)2. 嵌入式系统硬件架构 (8)2.1 处理器概论 (9)2.1.1 微处理器类型 (10)2.1.2 性能比较 (11)2.2 嵌入式SoC (13)2.2.1 构成与功能 (14)2.2.2 成本与优势 (15)2.3 存储器系统 (16)2.3.1 主存与缓存 (18)2.3.2 非易失性存储技术 (20)3. 嵌入式操作系统简介 (20)4. 嵌入式系统编程基础 (21)4.1 汇编语言编程入门 (23)4.1.1 编译原理 (25)4.1.2 编程技巧与示例 (27)4.2 C语言在嵌入式系统中的应用 (27)4.2.1 语言特点与适用场景 (29)4.2.2 项目实践 (30)5. 无线通信技术在嵌入式系统中的应用 (31)6. 以太网通信技术 (33)6.1 以太网基础知识 (34)6.1.1 以太网结构与协议 (35)6.1.2 接口类型与特点 (36)6.2 实时以太网 (36)6.2.1 技术特点 (37)6.2.2 在工业自动化中的应用 (39)7. 嵌入式系统中的电源管理 (40)7.1 电源管理概述 (41)7.1.1 节电方式 (42)7.1.2 电源管理系统 (43)7.2 低功耗设计技术 (45)7.2.1 微处理器节电策略 (46)7.2.2 集成电路设计 (46)8. 嵌入式系统设计及开发工具 (47)8.1 开发板与套件 (49)8.1.1 开发板概述 (50)8.1.2 选择与使用 (51)8.2 集成开发环境 (52)8.2.1 常见IDE简介 (53)8.2.2 设计与开发流程 (54)8.3 嵌入式软件调试和测试 (54)8.3.1 调试工具介绍 (55)8.3.2 测试方法和规范 (57)9. 实验与实践 (58)1. 内容概括本课件全书以嵌入式系统原理及应用为核心,旨在为广大师生提供一套系统、全面的教学教程。

嵌入式系统的原理和应用

嵌入式系统的原理和应用

嵌入式系统的原理和应用嵌入式系统是一种计算机系统,它通常是用于控制、监视、数据采集等特定目的的。

与个人计算机和服务器等通用计算机系统不同,嵌入式系统的硬件和软件被特别设计和优化,以适应其特定用途的要求。

本文将介绍嵌入式系统的工作原理和应用领域。

一、嵌入式系统的工作原理嵌入式系统通常由处理器、存储器、输入输出接口电路、外设模块等组成。

其核心是处理器,嵌入式系统所用的处理器性能越来越强大,从较老的8位、16位微控制器到现在的ARM Cortex-A 系列、RISC-V等高性能嵌入式处理器。

嵌入式系统可分为硬件和软件两个方面。

嵌入式硬件和通用计算机硬件类似,都由处理器、存储器、I/O模块等部件组成。

相比通用计算机硬件,嵌入式系统硬件的主要特征是小巧、低功耗,通常单板上能整合处理器、存储器、外设模块以及工业标准I/O接口。

嵌入式软件通常是裁剪优化过的,因为嵌入式系统的存储器容量有限,CPU速度也低于PC等通用计算机,所以软件需要更少的计算成本。

通常情况下,嵌入式软件是为相应硬件设计的,并通过编程语言(如C/C++)来进行编写。

嵌入式系统的软件基本上由一个实时操作系统(RTOS)和应用程序组成,RTOS通常是实时性高、稳定性好的嵌入式系统操作系统,常见的RTOS产品有uC/OS、FreeRTOS等。

嵌入式系统使用可升级的固件,这种固件是在嵌入式系统启动时加载到处理器的固定内存区域。

由于它是硬件的一部分,因此它对CPU运行的速度、可靠性和稳定性都有重要影响。

固件可以像软件一样升级,因此在需要升级时,制造商可以通过远程升级(OTA)来即时更新固件软件。

二、嵌入式系统的应用领域近年来,嵌入式系统在各种领域广泛应用,包括飞行器、工业控制、医疗设备、智能家居、汽车电子、IoT等等。

下面简单介绍一些典型的应用领域。

1. 工业自动化嵌入式系统在工业控制、机器人、智能制造等领域得到广泛应用,可以实现工厂资产管理、自动化生产线、产品检测和数据采集等功能。

嵌入式系统及应用第五讲PPT课件

嵌入式系统及应用第五讲PPT课件

BL …… NEXT …… MOV
NEXT PC,LR
;跳转到子程序NEXT处执行 ;从子程序返回
CHANG’AN UNIVERSITY
长安大学电子与控制工程学院
嵌入式系统及其应用
7、堆栈寻址
第五讲 ARM指令寻址方式与指令系统
堆栈是一种数据结构,按先进后出(First In Last Out,FILO)的方式工作,使用一个称作堆栈指针的专 用寄存器指示当前的操作位置,堆栈指针总是指向栈顶。 存储器堆栈可分为两种:
CHANG’AN UNIVERSITY
长安大学电子与控制工程学院
嵌入式系统及其应用
5、多寄存器寻址
第五讲 ARM指令寻址方式与指令系统
多寄存器寻址一次可传送几个寄存器值,允许一条指令传送16个 寄存器的任何子集或所有寄存器。多寄存器寻址指令举例如下:
LDMIA R1!,{R2-R4,R6} ;将R1指向的单元中的数据读出到R2~R7、 R12中(R1自动加4)
MOV R1,R2
;将R2的值存入R1
SUB R0,R1,R2 ;将R1的值减去R2的值,结果保存到R0
R2 0xAA R1 0x55
0xAA
CHANG’AN UNIVERSITY
MOV R1,R2
长安大学电子与控制工程学院
嵌入式系统及其应用
3、寄存器间接寻址
第五讲 ARM指令寻址方式与指令系统
寄存器间接寻址指令中的地址码给出的是一个通用寄存器的编号,所 需的操作数保存在寄存器指定地址的存储单元中,即寄存器为操作数的 地址指针。寄存器间接寻址指令举例如下:
LDR R0,[R2];将R2指向的存储单元的数据读出,保存在R1中
SWP R1,R1,[R2];将寄存器R1的值和R2指定的存储单元的内容交换

嵌入式系统教学:嵌入式系统及应用PPT课件

嵌入式系统教学:嵌入式系统及应用PPT课件

仿真器
用于模拟嵌入式系统的运行环境,便 于开发者在真实硬件之前进行调试和 测试。
调试器
用于在嵌入式系统运行过程中进行实 时调试,帮助开发者定位和解决问题。
交叉编译器
将应用程序代码编译为目标硬件平台 上的可执行文件,实现跨平台开发。
03 嵌入式系统的应用
智能家居
智能家居是嵌入式系统的重要应用领域之一,通过嵌入式系 统可以实现家庭设备的智能化控制和管理,提高生活便利性 和舒适度。
、医学影像设备等。
汽车电子
嵌入式系统用于汽车电 子控制系统,如发动机
控制、车身控制等。
嵌入式系统的发展历程
01
02
03
起源
嵌入式系统的概念起源于 20世纪70年代,主要用于 工业控制领域。
发展
随着微处理器技术的发展, 嵌入式系统逐渐普及,应 用领域不断扩大。
趋势
未来嵌入式系统将朝着智 能化、网络化、低功耗等 方向发展。
RTOS技术具有可移植性和可裁 剪性,可以根据实际需求进行 定制化开发,提高系统的可靠 性和性能。
06 嵌入式系统发展趋势与挑 战
物联网时代的嵌入式系统
嵌入式系统在物联网中的应用
嵌入式系统作为物联网的重要组成部分,广泛应用于智能家居、智能交通、智能制造等领域,实现设备间的互联 互通和智能化控制。
提高实际操作能力。
项目实践
组织学生进行嵌入式系统的项目 实践,将理论知识应用于实际项 目中,提高学生的综合应用能力。
注重培养学生的实际动手能力
提供实验设备和实验环境
学校应提供先进的实验设备和实验环境,满足学生进行实验和实 践的需求。
加强实验课程建设
增加实验课程的比重,设计更多具有挑战性和实用性的实验项目, 引导学生主动实践。

嵌入式系统原理及应用理论课程大纲

嵌入式系统原理及应用理论课程大纲

《嵌入式系统原是及应用开发》教学大纲适用专业:计算机科学与技术课程类别:专业课授课学时:54学时学分:3学分总纲课程的性质:嵌入式系统原理与应用开发是计算机科学技术专业的一门专业课。

课程基本任务:讲述嵌入式系统的基本理论、原理。

本课程是一门既与硬件关系紧密,又与嵌入式操作系统、嵌入式软件关系十分紧密课程。

它围绕目前流行的32位ARM 处理器和源码开放的Linux操作系统,讲述嵌入式系统的概念,软、硬件组成,开发过程以及嵌入式应用程序开发设计方法。

本课程的知识将为学生今后从事嵌入式系统研究与开发打下坚实的基础。

课程内容概要:本课程由十章构成同,前八章为理论部分,后两章为实践实验内容。

实验根据所购实验教学平台进行。

课程教学形式:班级授课制。

课程学时分配:课程考核方式:闭巻考试。

成绩评定:采用总分百分制计分方式。

平时成绩(考勤、作业、态度等)占10%,考试成绩占70%,课程实验占20%。

选用教材及参考书目:谭会生.ARM嵌入式系统原理及应用开发.西安电子科技大学出版社韦东山.嵌入式Linux应用开发完全手册.人民邮电出版社孙琼.嵌入式Linux应用程序开发详解.人民邮电出版社课程教学内容提要第一章嵌入式系统及应用开发概述(一)基本要求:掌握嵌入式系统的特点掌握嵌入式系统与通用计算机系统的区别了解嵌入式系统在日常生活种的应用掌握影响嵌入式系统实时性和可靠性的主要因素了解嵌入式系统的发展趋势(二)主要教学内容:嵌入式系统的定义、嵌入式系统的发展和应用、嵌入式系统的总体组成、常用的嵌入式处理器、常用的嵌入式操作系统、嵌入式系统的设计方法、嵌入式系统的应用开发、嵌入式系统的学习探讨。

基本概念与知识点嵌入式系统的发展过程、嵌入式系统的特点、嵌入式系统的分类、嵌入式系统的应用领域、嵌入式系统的可靠性、嵌入式系统的实时性、嵌入式系统的发展趋势。

(三)教学重点难点:掌握嵌入式系统的概念。

嵌入式系统与通用计算机系统的区别是什么?了解嵌入式系统在发展历程中的几个阶段?掌握嵌入式系统的特点是什么?了解嵌入式系统的分类。

嵌入式系统原理及应用教程第5章-精选文档

嵌入式系统原理及应用教程第5章-精选文档

OM(1:0)=00 SROM/SDRAM (nGCS7)
2M/4M/8M/16M /32M/64M/128M 2M/4M/8M/16M /32M/64M/128M 128M
SROM/SDRAM (nGCS6)
SROM (nGCS5)
SROM (nGCS4) SROM/SDRAM (nGCS3) SROM (nGCS2) SROM (nGCS1) SROM (nGCS0)


5.1.1 存储器控制器
S3C2440A片内集成了存储器控制器,提供了访问存储器所需 的全部控制信号。 1.外部存储空间特点
S3C2440A芯片外部可寻址的存储空间是1GB,被分成8个存储 模块,每块128MB。如图5-1所示。
5.1.1 存储器控制器
0x40000_0000 0x3800_0000 0x3000_0000 0x2800_0000 0x2000_0000 0x1800_0000 0x1000_0000 0x800_0000 OM(1:0)=01,10 SROM/SDRAM (nGCS7) SROM/SDRAM (nGCS6)
0x3040 _0000 0x307f 0ff _ffff
0x3100 _0000 0x31ff _ffff
0x3200 _0000 0x33ff _ffff
0x340 0 _0000 0x37ff _ffff
0x3800 _0000 0x3fff _ffff
0x303f _ffff
0x3000 _0000
0x307f _ffff
0x3000 _0000
0x30ff _ffff
0x3000 _0000
0x31ff _ffff
0x3000 _0000
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《嵌入式系统的原理及应用》课程讲义5-8目录第3章嵌入式Linux应用程序开发 (2)3.1 Linux开发环境的建立 (2)3.2 交叉编译器和工程管理器make (3)3.2.1 GNU gcc (3)3.2.2 编写Makefile文件 (9)3.3 嵌入式Linux系统的开发 (15)3.3.1 编写BootLoader (15)3.3.2 嵌入式Linux2.6系统的裁减 (21)3.3.3 根文件系统的裁减 (28)3.4 嵌入式Linux应用程序的开发流程 (30)3.4.1 开发方式 (30)3.4.2 应用程序实例 (33)第5次课:嵌入式Linux应用程序开发(10学时)主要介绍3个方面的内容:(1) Linux开发环境的建立;(2) GNU gcc交叉编译器;(3) Makefile文件书写规则。

第3章嵌入式Linux应用程序开发传统的嵌入式开发环境需要单片机的仿真器,包括C语言、汇编语言、调试工具等的集成开发环境IDE、实时操作系统等。

购买一个仿真器一般要花上千元,购买C编译器或IDE也要花几千元以上,而购买实时操作系统则要花上十万元乃至几十万元。

由于Flash技术的发展,特别是一些CPU可以用JTAG口在背景模式BDM(Back ground Debug Mode)下调试,故仿真器已可以省去。

随着BDM调试工具的标准化,BDM调试工具会变得越来越简单、越来越通用,一些BDM调试工具已经简单到仅仅在PC机并行口和单片机的JTAG接口之间加一道5~3.3V的缓冲,自制BDM调试工具变得越来越容易。

软件方面,Linux下的自由软件GNUgcc可以完成几乎所有知名CPU以及DSP的交叉C编译和调试,故IDE可以省去。

至于操作系统,uClinux、RTLinux、μC/OS等源码开放的、免费的嵌入式操作系统也都性能稳定可靠。

因此,全部使用遵循GPL的自由软件开发嵌入式应用无疑是一种不错的选择。

Linux是遵循GPL的自由软件的典型代表。

然而,使用自由软件有一定的难度,例如如果采用Linux,首先要熟悉Linux 的使用,学会看Linux下的帮助信息。

然后是学会遇到问题如何解决。

向高手请教是解决问题的办法之一。

还有一个方法是上BBS,在网上搜索,因为你遇到的问题其他人以前或许也遇到过,解决办法可能网上就有。

再有一个办法就是直接给作者发电子邮件。

自由软件有源码、大多都有作者的Email地址。

使用Linux 下的GNUgcc等软件的难点主要在使用环境的建立上,一旦使用环境建立起来了,仅仅是使用并不难。

在国外,这部分工作有专门的系统管理员为你做好,而国内这部分工作往往要自己做,故增加了Linux系统的使用难度。

以GNUgcc为例,根据经验,建立并熟悉使用的过程大约需要2个月的时间。

而熟悉一个买来的商业软件也需要2周乃至1个月的时间。

也就是说,买商业软件可以节省1个月的时间。

使用自由软件开发嵌入式应用的意义决不仅限于经济上节省开支。

学习使用Linux下自由软件的过程,实际上是培养IT高手的过程。

提倡使用自由软件将造就一大批有共同语言的精英。

3.1 Linux开发环境的建立用Linux开发嵌入式应用,可以在自己的PC机上装一套Linux,例如,RedHat Linux。

可以使用Linux中的Xwindows(xterm)开若干个窗口用于编译、下载、调试等;可以使用Linux中的emacs作文本编译。

Windows中有的软件在Linux中几乎都有。

但由于多数人对Linux环境和Linux中的应用程序不熟悉,宁愿用PC 上基于Windows的操作系统,此时可以在Windows环境下安装VMware虚拟机软件。

VMWare 的Windows 版本能够在Windows 环境下开出Linux 的窗口,但VMWare 不是自由软件,实验室现在正在用这种方式。

另一种办法是用1台PC 机运行Linux 作为服务器。

开发小组中每个成员都可以通过局域网用Telnet 登录到这台Linux 服务器上去,被开发的目标板也挂在网上。

在服务器的Linux 环境下,用GNUgcc 编译生成目标代码,再用FTP 传回到自己的PC 机上,然后通过串行口或网络下载到目标机上。

BDM 工具主要用于硬件调试。

因为BDM 工具的支持软件也是Linux 下的自由软件,故BDM 工具只能接在Linux 服务器的并口上。

硬件调试完成后,可以把Debug 程序写入Flash ,然后就不需要BDM 工具了。

检验开发环境是否建立好了得有1块目标板。

在开发环境建立起来之前,冒然设计自己的硬件,难度较大。

可以用商家提供的评估板作为目标板先把开发环境建立起来。

可以通过用GNUgcc 编译Linux 然后下载到目标板上运行的办法来熟悉Linux 下GNUgcc 的开发环境,检验开发环境是否已建立好。

如果是购买第3方的硬件,则要特别小心。

有些恶劣厂商的产品的确可以运行Linux ,但其是在软件或硬件中做了些陷阱,使用户只能用他的硬件。

3.2 交叉编译器和工程管理器make3.2.1 GNU gcc“交叉编译器”一词,看上去很玄乎,实际上很简单。

如果大家学了单片机就比较容易理解。

不少同学用过C51。

实际上C51就是一个典型的交叉编译器。

理由很简单:C51的编译器是在PC 机上使用的,然而编译出来的目标码却不能在PC 机上运行,只能下载到单片机上才能运行。

编译的最主要的工作就在将你的程序转化成运行该程序的CPU 所能识别的机器代码,不同的CPU 有相应的编译器,另一方面。

编译器本身也是程序,当然也要在某一个CPU 平台上运行。

于是交叉编译的交叉点就在那个编译器本身是CPU1上的一个程序,却在为CPU2编译代码。

当然,假如在你的ARM 系统上,操作系统已经正常运行,并且你的资源足够多,你可以把PC 机上运行的ARM 编译工具移植到ARM 上,然后所有该系统的应用程序都直接在ARM 系统上编译,这就不算交叉编译,但如果有条件这么作,程序的开发或者移植就方便多了,因为整个开发过程又回到在自己PC 机上编应用程序的那种模式了,那就是在自己的地盘上用自己的编译器编自己的应用程序。

与不使用操作系统的开发模式不同(此处的操作系统尤其指提供了专门的接口函数库的操作系统,目前的网线 串口线 并口(JTAG)UCOS就不算),在目标板(就是实现系统的板子)使用操作系统的开发模式下,交叉编译环境中还需要该对应该操作系统的库。

比如uClinux提供的uClibc。

此时,开发用的主机上不光要有目标板CPU所需的编译工具,还要有对应操作系统的库,又因为一般库文件还要在开发机上拿目标CPU的编译器重新编译一下,所以还要把操作系统的原码也放到开发机上。

虽然操作系统的接口库至关重要,但大家似乎已经淡忘了它的存在。

这些多是因为大家已经远离了刀耕火种的年代(需要告诉编译器需要的include路径,lib路径,以及lib的名称),集成的编译环境让我们编译链接的所有繁琐工作化作对BUILD按钮的潇洒一击。

而且不论是windows环境,还是linux环境,都有环境变量去记录这些参数。

但尝试将/usr/lib 目录改一个名字,你就会知道你不能无视他们的存在,因为操作系统的功能都是通过这些库来交给应用层程序使用的。

当然如果你的系统不依靠任何操作系统,像最原始的那种完全自己实现所有代码,就只需要一个编译工具,少了这些罗嗦事。

以上的东西一般时候是没有必要仔细研究,但交叉环境下开发或移植比较大的程序时,你可能就需要了解编译器,链接器等开发工具的几乎所有重要参数。

运行于Linux操作系统下的自由软件GNUgcc编译器,不仅可以编译Linux 操作系统下运行的应用程序、编译Linux本身,还可以作交叉编译,编译运行于其它CPU上的程序。

可以作交叉编译的CPU(或DSP)涵盖了几乎所有知名厂商的产品。

用于嵌入式应用的、众所周知的CPU包括:Intel的i386、Intel960、AMD29K、ARM、M32、MIPS、M68K、ColdFare、PowerPC、68HC11/12、TI 的TMS32等等。

详细列表可查看/reading网站。

GNUgcc编译器是一套完整的交叉C编译器,包括:◇C交叉编译器gcc;◇交叉汇编工具as;◇反汇编工具objdump;◇连接工具Ld;◇调试工具gbd。

常用的交叉编译器为3.4.1和2.95.3两个版本。

可以直接下载编译好的交叉编译器,自己去重新编译一下意义不是很大。

(1) gcc的基本规则Linux系统下的gcc(GNU C Compiler)是GNU推出的功能强大、性能优越的多平台编译器,是GNU的代表作品之一。

gcc是可以在多种硬体平台上编译出可执行程序的超级编译器,其执行效率与一般的编译器相比平均效率要高20%~30%。

gcc 编译器能将C、C++语言源程序、汇程式化序和目标程序编译、连接成可执行文件,如果没有给出可执行文件的名字,gcc将生成一个名为a.out的文件。

在Linux系统中,可执行文件没有统一的后缀,系统从文件的属性来区分可执行文件和不可执行文件。

而gcc则通过后缀来区别输入文件的类别,下面我们来介绍gcc所遵循的部分约定规则。

.c为后缀的文件: C语言源代码文件;.a为后缀的文件: 是由目标文件构成的档案库文件;.C,.cc或.cxx 为后缀的文件: 是C++源代码文件;.h为后缀的文件: 是程序所包含的头文件;.i 为后缀的文件: 是已经预处理过的C源代码文件;.ii为后缀的文件: 是已经预处理过的C++源代码文件;.m为后缀的文件: 是Objective-C源代码文件;.o为后缀的文件: 是编译后的目标文件;.s为后缀的文件: 是汇编语言源代码文件;.S为后缀的文件: 是经过预编译的汇编语言源代码文件。

(2) gcc的执行过程虽然我们称gcc是C语言的编译器,但使用gcc由C语言源代码文件生成可执行文件的过程不仅仅是编译的过程,而是要经历四个相互关联的步骤∶预处理(也称预编译,Preprocessing)、编译(Compilation)、汇编(Assembly)和连接(Linking)。

命令gcc首先调用cpp进行预处理,在预处理过程中,对源代码文件中的文件包含(include)、预编译语句(如宏定义define等)进行分析。

接着调用cc1进行编译,这个阶段根据输入文件生成以.o为后缀的目标文件。

汇编过程是针对汇编语言的步骤,调用as进行工作,一般来讲,.S为后缀的汇编语言源代码文件和汇编、.s为后缀的汇编语言文件经过预编译和汇编之后都生成以.o为后缀的目标文件。

当所有的目标文件都生成之后,gcc就调用ld来完成最后的关键性工作,这个阶段就是连接。

相关文档
最新文档