最新2019-嵌入式软件开发简介以linux为例-PPT课件
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
全称为GNU CC ,GNU项目中符合ANSI C标准的 编译系统 编译如C、C++、Object C、Java、Fortran、Pascal、 Modula-3和Ada等多种语言 一个交叉平台编译器 ,适合在嵌入式领域的开发 编译
35
GCC编译器
GNU Compiler Collection C, C++, Objective-C, Fortran, Java, Ada
GCC 4.2.2 GCC 3.3 GCC 3.2 GCC 3.0 GCC 2.95 July 31, 2019 June 18, 2019 August 14, 2019 Oct 9, 2019
May 13, 2019
December 3, 2019
36
GCC简介
gcc所支持后缀名解释
.c C原始程序 .C//.cxx C++原始程序 .m Objective-C原始程序 .i 已经过预处理的C原始程序 .ii 已经过预处理的C++原始程序 .s/.S 汇编语言原始程序 .h 预处理文件(头文件) .o 目标文件 .a/.so 编译后的库文件
37
编译器的作用
源代码 *.c 预处理器 头文件 *.h
系统调用(system calls)
文件 系统
内核
I/O
内存 管理
调度
Cache
中断 异常 处理
14
内核结构
15
Linux优点
提供了先进的网络支持 多任务、多用户 符合IEEE POSIX标准 核心能仿真FPU 支持数十种文件系统格式 完全运行于保护模式 开放源代码 采用先进的内存管理机制,更加有效地利用物理 内存
23
需要熟悉的内容
开发板硬件基本配置 开发板与PC机连接方式 PC机相关配置 熟悉bootloader的使用 深入理解开发内容 巩固开发流程
24
Bootloader烧写示范
Linux环境(虚拟机)简介 超级终端和DNW的配置
Bootloader的显示信息简介(标准BIOS)
<b>移动到当前单词的开始 <e>移动到当前单词的结尾 <w>向前移动一个单词 <h>向前移动一个字符 <j>向上移动一行 <k>向下移动一行 <l>向后移动一个字符
31
vi--改变与替换操作命令
<r>替换光标所在的字符 <R>替换字符序列 <cw>替换一个单词 <ce>同<cw> <cb>替换光标所在的前一字符 <c$>替换自光标位置至行尾的所有字符 <C>同<c$> <cc>替换当前行
主版本
1.0 2.0 2,3年更新
2.2
2.4
2.6
稳定版
2.0.40 2.2.12 2.4.18 1,2月更新 2.6.23.1 ~ 2.6.23.7 1,2周更新
2.6.7 2.6.30
稳定版更新
13
Linux体系结构
命令、程序或shell脚本 shell
用户空间 内核空间
41
GNU GCC
GNU GLibc
GCC交叉编译器的生成
第1步,取得Binutils、GCC、Glibc 源码。 第2步,配置并编译Binutils 取得我们所需要的汇编和连接 程序。 第3步,配置并编译GCC 源码生成GCC 编译器。一般是C 编译器首先生成,然后以这个为基础在结合下一步生成的 Glibc 的C 函数库,再编译生成其它编译器。 第4步,配置Glibc 并编译生成Glibc 的C 函数库。 第5步,再次配置和编译GCC 源码,生成其它语言的编译 器,如C++编译器等。
内核、文件系统的演示
25
嵌入式Linux下的应用程序开发
26
开发工具--编辑器vi
vi的基本使用方法
•输入模式
•命令模式
27
vi--开始编辑
新增 (append) -- a 从 光 标 所 在 位 置 後 面 开 始 新 增 资 料, 光 标 後 的 资 料 随 新 增 资 料 向 後 移 动。 -- A 从 光 标 所 在 列 最 後 面 的 地 方 开 始 新 增 资 料。 插 入 (insert) -- i 从 光 标 所 在 位 置 前 面 开 始 插 入 资 料, 光 标 後 的 资 料 随 新 增 资 料 向 後 移 动。 -- I 从 光 标列 的 第 一 个 非 空 白 字 符 前 面 开 始 插 入 资 料。 开 始 (open) -- o 在 光 标 所 在 列 下 新 增 一 列 并 进 入 输 入 模 式。 -- O 在 光 标 所 在 列 上 方 新 增 一 列 并 进 入 输 入 模 式。
vi--退出命令
<:q>不保存退出 <:q!>不保存强制性退出 <:w>保存编辑 <:w filename>存入文件filename 中 <:w! filename>强制性存入文件filename 中 <:wq>(<:x>)保存并退出(shift+zz)
30
vi--光标移动命令
19
Linux的基本命令(3)
ห้องสมุดไป่ตู้
echo:显示文本 date:显示时间和日期 gzip:压缩文件 gunzip:解压缩文件 bzip2:压缩文件 tar:打包和解包文件 whereis:查找命令 which:查找实用程序
20
Linux的基本命令(4)
ps:列出进程 df :检查文件系统空间占用情况 du:显示磁盘空间的使用情况 kill:杀死进程 chmod :改变文件或目录的访问权限 chown:改变文件或目录的属主和组
Gcc的编译流程分为 四个步骤
编译器
汇编处理 引导代码 目标代码 *.o 库函数 链接
预处理(PreProcessing) 编译(Compiling) 汇编(Assembling) 链接(Linking)
可执行文件
38
“hello”的演变历程
hello.c (text)
44
交叉编译流程
45
crosstool介绍
crosstool是由Dan Kegel开发的一套脚本程序,可 以自动编译不同版本的gcc、glibc,并做出测试。 在crosstool软件包中,提供了从互联网下载软件包 的脚本,例如glibc-get.sh脚本可以下载glibc软件包 。 有关crosstool的详细信息,读者可以访问其官方网 站和其他一些网络资源:
Preprocessor (cpp / Gcc -E)
hello.i (text)
Compiler (cc1 / Gcc -S)
hello.s (text)
Assembler (as / Gcc -c)
hello.o (binary)
Linker (ld)
hello (binary)
printf.o (binary)
gcc,glibc,binutils,make等
GNU = GNU is Not Unix GPL = General Public License
11
一些发行版
RedHat Fedora Core Suse Debian Ubuntu Cent OS Aisanux
12
认识Linux内核版本
28
vi--删除与修改
x 删除光标所在字符。 dd 删除光标所在的列。 r 修改光标所在字符,r後接著要修正的字符 R进入取代状态,新增资料会覆改原先资料, 直到按[ESC]回到指令模式下为止。 s 删除光标所在字符,并进入输入模式。 S 删除光标所在的列,并进入输入模式。
29
嵌入式软件开发简介
以linux为例
课程安排
嵌入式Linux开发环境搭建 嵌入式Linux概述 Linux快速入门 熟悉嵌入式开发平台 熟悉引导启动代码和内核的烧写 NFS环境构建
2
课程安排
嵌入式Linux下的应用程序开发 嵌入式Linux开发工具与开发流程 理解交叉编译 嵌入式Linux下的应用程序调试技巧 Make工程管理器
32
vi--拷贝与粘贴命令
</yw>将光标所在单词拷入剪贴板 <y$>将光标至行尾的字符拷入剪贴板 <Y>同<y$> <yy>将当前行拷入剪贴板 <p>将剪贴板中的内容粘贴在光标后 <P>将剪贴板中的内容粘贴在光标前
•利用Vi编写一个helloworld程序!
33
34
开发工具 --编译器GCC
4
如何选择嵌入式CPU?
ARM PowerPC MIPS Xscale DSP X86 ……
5
典型的嵌入式操作系统
Linux
uC/OS
Windows CE
VxWorks
Palm OS
Symbian
6
嵌入式系统开发流程
7
嵌入式系统开发的内容
8
嵌入式Linux开发模式
串口 Flash
BootLoader
JTAG
Linux Root fs Host 网口
内核
CPU CORE
Target
NFS模式
9
Linux快速入门
10
Linux简介
Linus Torvalds于1991编写 Linux是一个Unix兼容的系统,大部分通用的Unix 工具和程序都可以在Linux系统下运行。UNIX-堂 兄 Linux—表弟 使用GNU工具开发:
39
理解交叉编译及环境建立
40
GCC 交叉编译器
GNU Binutils
GNU Binutils 的主要工具有两个,一个是连接程序ld, 另外一个是汇编程序as。其主要目的是为GNU 系统, 提供汇编和连接工具。
GNU GCC 就是上面提到的GCC,GCC 主要是为 GNU 系统提供C 编译器。现在支持多种语言,这其 中包括C/C++、Fortran、Java、Objective-C、甚至还 有Ada。 用于定义系统调用和其它一些基本的函数调用。
18
Linux的基本命令(2)
cat:显示文本文件 less/more:分屏显示文件 grep:查找字符串(ls –all | grep ***) head:显示文件开头 tail:显示文件结尾 sort:按次序显示文件 uniq:去掉文件中重复的行 diff:比较两个文件 file:测试文件内容
3
嵌入式系统的特点
嵌入式系统低功耗、体积小,专用性强。嵌入式系统与PC 机的最大不同就是嵌入式CPU大多工作在为特定用户群设 计的系统中,能够把PC机中许多由板卡完成的任务集成在 芯片内部,从而有利于嵌入式系统设计趋于小型化。 为了提高执行速度和系统可靠性,嵌入式系统中的软件一 般都固化在存储器芯片或单片机本身中,而不是存贮于磁 盘等载体中。 嵌入式系统的硬件和软件都必须高效率地设计,系统要精 简。操作系统一般和应用软件集成在一起。 对软件代码质量要求很高。应该尽最大可能避免死机的情 况发生。 嵌入式系统开发需要专门的开发工具和开发环境。
16
Linux分区
Linux分区的形式 Swap分区 根分区/ Boot分区 其他
17
Linux的基本命令
Shell命令行使用技巧 :Tab自动补齐、 ctrl+a\+e等 cd:转换目录 ls:列出文件名(根目录浏览) ll:查看文件属性(文件属性与权限 ) cp:复制文件(cp /mnt/hgfs/share/*.* /root/) mv:移动文件(可用于文件或目录的改名) rm:删除文件(rm –rf (目标)) mkdir:创建目录 rmdir:删除目录
42
工具链代码结构
43
TARGET常用的值
实际平台 PowerPC ARM MIPS (big endian) TARGET的值 powerpc-linux arm-linux mips-linux
MIPS (little endian)
SuperH 4
mipsel-linux
sh4-linux
chgrp:改变文件或目录所属的组
info:获得帮助
21
Linux的基本命令(5)
pwd:显示当前工作目录的绝对路径 rpm:文件包管理 clear:清屏 ln:创建文件链接 who:列出系统上的用户名单 write:发送消息
talk:与其他用户通信
man:获取帮助
22
熟悉嵌入式开发平台 熟悉引导启动代码和内核的烧写