嵌入式linux开发流程.ppt
合集下载
《嵌入式Linux开发》课件
交叉编译工具链的安装
指导如何安装适用于目标板的交叉编译工具 链。
测试交叉编译环境
提供一种简单的方法来测试交叉编译环境是 否设置成功。
目标板与宿主机的连接方式
串口通信
介绍如何通过串口连接目标板和宿主机 ,以及串口通信的配置和常用命令。
USB连接
介绍如何通过USB连接目标板和宿主 机,以及USB通信的配置和常用命令
02
03
嵌入式系统
是一种专用的计算机系统 ,主要用于控制、监视或 帮助操作机器与设备。
特点
具有实时性、硬件可裁剪 、软件可定制、低功耗、 高可靠性等特点。
应用
汽车电子、智能家居、医 疗设备、工业自动化等领 域。
Linux作为嵌入式操作系统的优势
开源
Linux是开源的,可以免费使用和定制,降 低了开发成本。
路由与交换
介绍路由器和交换机的原理及在网 络中的作用。
03
02
IP地址
解释IP地址的分类、寻址方式以及子 网掩码的作用。
网络安全
简述常见的网络安全威胁和防范措 施。
04
TCP/IP协议栈简介
TCP/IP协议栈结构
详细描述TCP/IP协议栈的层次结构,包括应 用层、传输层、网络层和链路层。
IP协议
解释IP协议的核心功能,如地址解析、路由 选择等。
调试工具
介绍常用的调试工具,如gdbserver和gdb等,并说明如何使用这些 工具进行远程调试。
调试过程
详细描述调试过程,包括启动调试会话、设置断点、单步执行代码等 操作。
调试技巧与注意事项
提供调试过程中的一些技巧和注意事项,以提高调试效率和准确性。
03
嵌入式Linux系统开发基础
嵌入式Linux编程基础幻灯片PPT
(cont.)
❖ # objdump –d exam6-1-1 ❖ # arm-linux-objdump –d exam6-1-2 ❖ 可以看出这两个可执行程序的汇编码并不
完全相同
Host与Target
串口
开发板 (Target)
客户机1
客户机2
客户机3
客户机4
•Target是目标平台,比如 ARM、MIPS、SuperH、
Binutils工具包介绍
strings :打印某个文件的可打印字符串, 这些字符串最少4个字符长,也可以使用 选项-n设置字符串的最小长度。默认情况 下,它只打印目标文件初始化和可加载段 中的可打印字符;对于其它类型的文件它 打印整个文件的可打印字符,这个程序对 于了解非文本文件的内容很有帮助。
目标系统
汇编源文件 file.s
Liber
操作系统库 标准C库
file.lib
OS lib
ANSI lib
转换工具 二进制文件
烧结工具
编译器和汇编器的作用
编译器将C文件转换成为汇编文件 汇编器将汇编文件转换成为二进制指令流
*.o文件(目标文件) 每个目标文件是独立编址的,也就是说每个
目标文件的第一条指令都从相同的地址开始 存放
gcc -E -o game_precompile.txt game.c
❖ 预编译过程通过完成三个主要任务给了代码 很大的灵活性。
➢ 把"include"的文件拷贝到要编译的源文件 中。
➢ 用实际值替代"define"的文本,在调用宏的地 方进行宏替换。
➢ 条件编译
编译
作为一个中间步骤,gcc把你的代码翻译成 汇编语言。它一定要这样做,它必须通过分 析你的代码搞清楚你究竟想要做什么。如果 你犯了语法错误,它就会告诉你,这样编译 就失败了。人们有时会把这一步误解为整个 过程。但是,实际上还有许多工作要gcc去 做呢。
构建嵌入式Linux开发平台(1)幻灯片PPT
➢ U-Boot支持多种系列的处理器体系结构。
➢ U-Boot的前身是PPCBOOT。经由德国DENX软件工程 中心的Wolfgang Denk发起并完善起来。
1.U-Boot的主要特点
重庆工商大学
开放源码; 支持多种嵌入式操作系统内核:如Linux、NetBSD、
VxWorks、QNX、RTEMS、ARTOS、LynxOS; 支持多个处理器系列:如PowerPC、ARM、x86、MIPS、
码包版本为1.3.2。将源码包u-boot-1.3.2.tar.bz2拷贝到自 己的工作目录下,并解压源码包。 [root@vm-dev 2410-s]# tar jxvf u-boot-1.3.2.tar.bz2 [root@vm-dev 2410-s]# cd u-boot.1.3.2
说明:解压后,当前目录下产生u-boot.1.3.2子目录,可进 入该目录查看相关信息。
说明:编译路径保存在/etc/的profile文件中,因此打开的是profile文 件,并在路径字段添加上/3.3.2/bin,示例中的下划线语句。也可以使用 环境变量添加编译器路径。
6.2 U-Boot移植
重庆工商大学
系统启动程序Bootloader是在操作系统内核运行之前运 行的一段程序,类似于通用计算机中的BIOS程序。通过这 段程序,可以完成硬件设备的初始化,并建立内存空间的 映射图的功能,从而将系统的软硬件环境带到一个合适的 状态,为最终调用操作系统内核做好准备,通常称之为引 导系统。
编译的过程包括编译、汇编、链接等几个阶段,因此, 嵌入式的交叉编译也包括交叉编译、交叉汇编、交叉链接 等过程。
嵌入式交叉编译环境模型
编辑器 交叉编译器
交叉链接器
下载器
➢ U-Boot的前身是PPCBOOT。经由德国DENX软件工程 中心的Wolfgang Denk发起并完善起来。
1.U-Boot的主要特点
重庆工商大学
开放源码; 支持多种嵌入式操作系统内核:如Linux、NetBSD、
VxWorks、QNX、RTEMS、ARTOS、LynxOS; 支持多个处理器系列:如PowerPC、ARM、x86、MIPS、
码包版本为1.3.2。将源码包u-boot-1.3.2.tar.bz2拷贝到自 己的工作目录下,并解压源码包。 [root@vm-dev 2410-s]# tar jxvf u-boot-1.3.2.tar.bz2 [root@vm-dev 2410-s]# cd u-boot.1.3.2
说明:解压后,当前目录下产生u-boot.1.3.2子目录,可进 入该目录查看相关信息。
说明:编译路径保存在/etc/的profile文件中,因此打开的是profile文 件,并在路径字段添加上/3.3.2/bin,示例中的下划线语句。也可以使用 环境变量添加编译器路径。
6.2 U-Boot移植
重庆工商大学
系统启动程序Bootloader是在操作系统内核运行之前运 行的一段程序,类似于通用计算机中的BIOS程序。通过这 段程序,可以完成硬件设备的初始化,并建立内存空间的 映射图的功能,从而将系统的软硬件环境带到一个合适的 状态,为最终调用操作系统内核做好准备,通常称之为引 导系统。
编译的过程包括编译、汇编、链接等几个阶段,因此, 嵌入式的交叉编译也包括交叉编译、交叉汇编、交叉链接 等过程。
嵌入式交叉编译环境模型
编辑器 交叉编译器
交叉链接器
下载器
嵌入式Linux开发【精选-PPT】
为此,结合国情,当前国家对自主操作 系统给予了大力支持,为源码开放的Linux的 推广提供了广阔的发展前景。
当然,对上层应用开发者而言,嵌入式 系统需要的是一套高度简练,界面友善,质 量可靠,应用广泛,易开发,多任务,并且 价格低廉的操作系统。
Linux为嵌入式操作系统提供了一个极有 吸引力的选择,它是一个类UNIX的、以内核 为基础的、有完备内存保护机制的、多任务 多进程的操作系统。
Linux用户遇到问题时可以通过Internet 向网上成千上万的Linux开发者请教,这使 最困难的问题也有办法解决。
Linux带有UNIX用户所熟悉的完善的 开发工具,几乎所有的UNIX系统的应用软 件都已移植到了Linux上。
Linux还提供了强大的网络功能,有多 种可选择的窗口管理器(X Window)。其强 大的语言编译器GCC,G++等也可以很容 易得到。GCC,G++编译器不但成熟完善, 而且使用方便。
随着Linux越来越广泛地应用于嵌入式 领域,它所支持的嵌入式微处理器必定会 进一步增加。
Linux内核已经被移植到多种硬件平台 上,这对受开销、时间限制的研究与开发 项目是很有吸引力的。
应用软件原型可以在标准平台上开发, 然后移植到具体的硬件上,加快了软件与 硬件的开发过程。
2. 可裁剪,性能优异,应用软件丰富
Linux的动态模块加载使Linux的裁剪 极为方便,高度模块化的部件使添加非常 容易。一般来说,经过适当裁剪后的Linux 内核的启动部分的目标代码不到500KB。
用户完全可以把Linux内核和root文件 系统存放在一张软盘上。也可以利用Linux 实现从网络启动,实现网络无盘图形工作 站。
Linux是一个全面的多任务和真正的32 位操作系统。系统运行稳定,功能强大,支 持多种硬件平台,应用工具多。
嵌入式Linux开发环境的搭建(ppt67张)
用户登录后,打开一个终端时,系统启动该用户使用 的shell,关闭这个终端时,终止这个shell的运行。 ①查看使用的shell [root@localhost dev]# ps -e ②临时改用另一种shell [root@localhost ~]# tty /dev/pts/3 [root@localhost ~]# sh sh-3.1# sh-3.1# ps –e sh-3.1# exit exit
计算机内部运行过程,主要包括:
⑴ ①PC机内部有一片ROM存储区,存储 了BIOS(Basic Input Output System,基 本输入输出系统),加电或RESET后, CPU把第一条可执行指令的物理地址设置为 0xFFFF0,即指向BIOS的入口地址; ②CPU执行BIOS中的程序,对底层硬件、 接口和设备进行测试及初始化,例如对中断 控制器、DMA控制器、串行端口等等进行测 试和初始化; ③运行的BIOS中的程序,从指定的引导盘 上将一个引导扇区的内容装入内存。
①在Linux图形桌面环境,打开一个终端,在终 端窗口输入minicom -s并回车,显示的内容如图 所示,选择serial port setup,回车。
minicom仿真终端设置窗口
②然后按下A键,将对应参数设置为/dev/ttyS0并回 车;按下E键,按下I键,将对应参数设置为115200 8N1,回车;按下F键,将对应参数设置为No;设 置参数如图所示,然后回车保存参数,选择save setup as df1。
6 关闭运行的Linux系统
退出命令有shutdown、halt、poweroff、reboot等。 shutdown最为常用,它使用系统提供的脚本,执 行正确的关闭步骤; halt一般会立即关闭系统,不像shutdown命令退出 时执行那么多关闭步骤,这可能会引起文件系统同步 的问题。 poweroff通过切断电源来关闭系统; reboot将先退出然后重新启动系统。
计算机内部运行过程,主要包括:
⑴ ①PC机内部有一片ROM存储区,存储 了BIOS(Basic Input Output System,基 本输入输出系统),加电或RESET后, CPU把第一条可执行指令的物理地址设置为 0xFFFF0,即指向BIOS的入口地址; ②CPU执行BIOS中的程序,对底层硬件、 接口和设备进行测试及初始化,例如对中断 控制器、DMA控制器、串行端口等等进行测 试和初始化; ③运行的BIOS中的程序,从指定的引导盘 上将一个引导扇区的内容装入内存。
①在Linux图形桌面环境,打开一个终端,在终 端窗口输入minicom -s并回车,显示的内容如图 所示,选择serial port setup,回车。
minicom仿真终端设置窗口
②然后按下A键,将对应参数设置为/dev/ttyS0并回 车;按下E键,按下I键,将对应参数设置为115200 8N1,回车;按下F键,将对应参数设置为No;设 置参数如图所示,然后回车保存参数,选择save setup as df1。
6 关闭运行的Linux系统
退出命令有shutdown、halt、poweroff、reboot等。 shutdown最为常用,它使用系统提供的脚本,执 行正确的关闭步骤; halt一般会立即关闭系统,不像shutdown命令退出 时执行那么多关闭步骤,这可能会引起文件系统同步 的问题。 poweroff通过切断电源来关闭系统; reboot将先退出然后重新启动系统。
嵌入式Linux程序开发_3.ppt
IC-MSP V2.0
3.2 进入 Vi
3.2.3 Vi 的各模式功能键 (2)插入模式的功能键只有一个,也就是 Esc退出到命令行模式。 (3)底行模式常见功能键如表所示。
目 :w :q :q! :wq :set nu :set nonu 录 目录内容 将编辑的文件保存到磁盘中 退出Vi(系统对做过修改的文件会给出提示) 强制退出Vi(对修改过的文件不作保存) Vi 存盘后退出 显示行号,设定之后,会在每一行的前面显示对应行号 取消行号显示
IC-MSP V2.0
3.2 进入 Vi
3.2.1 Vi 的模式 Vi有3种模式,分别为命令行模式、插入模式及命令行模式各模式的功能,下面具 体进行介绍。 (1)命令行模式 用户在用Vi编辑文件时,最初进入的为一般模式。在该模式中可以通过上下移动光 标进行删除字符”或“整行删除”等操作,也可以进行“复制”、“粘贴”等操作, 但无法编辑文字。 (2)插入模式 只有在该模式下,用户才能进行文字编辑输入,用户课按[ESC]键回到命令行模式。 (3)底行模式 在该模式下,光标位于屏幕的底行。用户可以进行文件保存或退出操作,也可以设 置编辑环境,如寻找字符串、列出行号等。
MDelete M-d C-k
IC-MSP V2.0
3.3 初探 Emacs
3.进入 Emacs (3)复制文本 在Emacs中的复制文本包括两步:选择复制区域和粘贴文本。选择复制区域的方法 是:首先在复制起始点(A)按下“C-Spase”或“C-@(C-Shift-2)”使它成为一个表示 点,再将光标移至复制结束电(B) ,再按下“M-w” ,就可将 A与 B之间的文本复 制到系统的缓冲区中。在使用功能键 C-y将其粘贴到指定位置。 (4)查找文本 查找文本的功能键如表所示。
最新嵌入式系统软件开发技术PPT课件
Linux驱动程序的加载方式
驱动程序直接编译入内核
驱动程序在内核启动时就已经在内存中 可以保留专用存储器空间
驱动程序以模块形式存储在文件系 统里,需要时动态载入内核
驱动程序按需加载,不用时节省内存 驱动程序相对独立于内核,升级灵活
Linux驱动程序模块加载
Linux驱动程序开发的任务
应用程序通过dev文件节点访问驱动 程序
应用程序通过proc文件节点可以查 询设备驱动的信息
驱动程序位置
驱动程序位于drivers目录下 通常驱动程序占kernel代码的50% Linux设备驱动程序在Linux的内核源代码中占有很大的比例,
源代码的长度日益增加,主要是驱动程序的增加。 在Linux内核的不断升级过程中,驱动程序的结构还是相对
“自底向上”地实现BSP中的初始化操作 “自顶向下”地设计硬件相关的驱动程序
BSP设计方法的不足与改进
目前BSP的设计与实现主要是针对某些特定的 文件进行修改
直接修改相关文件容易造成代码的不一致性, 增加软件设计上的隐形错误,从而增加系统调 试和代码维护的难度
解决这个问题的一个可行办法是:设计实现一 种具有图形界面的BSP开发设计向导,由该向 导指导设计者逐步完成BSP的设计和开发,并 最终由向导生成相应的BSP文件,而不再由设 计人员直接对源文件进行修改。
Linux驱动程序的开发环境
本机编译调试
开发环境配置简单 无需网络环境 适用于配置较高的x86机器
主机+目标机
主机可以自由选择Linux或Windows+Cygwin 主机和目标机通过网络共享文件系统 内核崩溃不会影响主机
Linux驱动程序的开发环境(续)
主机+目标机环境包括 主机运行的工具链∶cross gcc + glibc + gdb, 如果是windows主机还要有cygwin仿真环境 主机运行远程服务,常用的有tftp用来传送内 核映像、initrd,NFS用来共享文件系统 目标机运行ssh或telnet等远程登陆服务,用来 调试驱动程序
嵌入式linux开发PPT教学课件
可用ls –l 查看其可行性 运行
./
4
2020/12/09
如何自动运行用户程序
rc.local
./root/usr/etc/rc.local
#///////////////// #!/bin/sh ifconfig lo 127.0.0.1 route add -net 127.0.0.0 netmask 255.0.0.0 lo portmap if [ -f /mnt/yaffs/init.sh ]; then
12
对文件操作
2020/12/09
Linux下最常用的操作就是对文件操作。 主要操作
文件的创建和读写 文件的各个属性 目录文件的操作
int open(const char *pathname,int flags);
锁定互斥量(阻塞): int pthread_mutex_lock (pthread_mutex_t *__mutex);
解锁互斥量 int pthread_mutex_unlock (pthread_mutex_t *__mutex)
销毁互斥量: int pthread_mutex_destroy (pthread_mutex_t *__mutex)
void
*(*__start_routine) (void *),void *__restrict __arg);
线程退出:
void pthread_exit (void *__retval)
等待指定的线程结束:
int pthread_join (pthread_t __th, void
**__thread_return)
/mnt/yaffs/init.sh fi #Add user’s program ./program #exec /sbin/getty ttyS0 115200
./
4
2020/12/09
如何自动运行用户程序
rc.local
./root/usr/etc/rc.local
#///////////////// #!/bin/sh ifconfig lo 127.0.0.1 route add -net 127.0.0.0 netmask 255.0.0.0 lo portmap if [ -f /mnt/yaffs/init.sh ]; then
12
对文件操作
2020/12/09
Linux下最常用的操作就是对文件操作。 主要操作
文件的创建和读写 文件的各个属性 目录文件的操作
int open(const char *pathname,int flags);
锁定互斥量(阻塞): int pthread_mutex_lock (pthread_mutex_t *__mutex);
解锁互斥量 int pthread_mutex_unlock (pthread_mutex_t *__mutex)
销毁互斥量: int pthread_mutex_destroy (pthread_mutex_t *__mutex)
void
*(*__start_routine) (void *),void *__restrict __arg);
线程退出:
void pthread_exit (void *__retval)
等待指定的线程结束:
int pthread_join (pthread_t __th, void
**__thread_return)
/mnt/yaffs/init.sh fi #Add user’s program ./program #exec /sbin/getty ttyS0 115200
Chap5 嵌入式Linux应用程序开发(ref)PPT62页
Linux常用命令
用户在命令行输入命令后,由外壳进行解释。外壳是一种命令解释器,提供了 用户和操作系统之间的交互接口。外壳是面向命令行的,而X Window则是图形界 面。外壳解释的命令送往操作系统执行。外壳可以执行Linux的系统内部命令,也 可以执行应用程序。用户还可以利用外壳编程,执行复杂的命令程序。
6.改变工作目录 语法:cd [name] 其中name是目录名、路径或目录缩写。cd除了有切换目录的功能外,还有一个功能就 是,不管在哪个目录内,只要输入cd命令,不加任何参数,即可回到用户目录内。 7.复制文件 语法:cp [-r]源地址 目的地址 带目录的拷贝,相当于DOS内的xcopy。 8.移动或更改文件、目录名称 语法:mv源地址 目的地址 可以为文件或目录改名,也可以将文件由一个目录移入另一个目录。
rlogin doc -l user使用user账号登录到工作站doc中。 语法:telnet主机名或telnet IP地址 例如:
telnet 140.109.20.251
Байду номын сангаас
5.列出文件或目录 语法:ls [-atFlgR] [name] 其中name是文件名或目录名。ls命令用来浏览文件与目录,对于每个目录,该命令将 列出其中所有的子目录与文件。
9.建立新目录 语法:mkdir目录名 10.删除目录 语法:rmdir目录名或rm目录名 11.删除文件 语法:rm文件名 12.列出当前所在的目录位置 语法:pwd 13.查看文件内容 语法:cat文件名
14.分页查看文件内容 语法:more文件名或cat文件名| more 15.查看目录所占磁盘容量 语法:du [-s]目录 16.文件传输 (1)拷贝文件或目录至远程工作站。 语法:rcp [-r] 源地址 目的主机名:目的地址。 (2)自远程工作站拷贝文件或目录。 语法:rcp [-r]源主机名:源地址 目的地址。 (3)本地工作站与远程工作站之间的文件传输,必须拥有远程工作站的账号及密码, 才可进行传输工作。
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
嵌入式操作系统LINUX移植
Linux系统:
• 一个嵌入式Linux系统从软件:分为四个层 次:
应用程序
1、 引导加载程序。包括固化在固件 (firmware)中的boot代码(可选),和 BootLoader两大部分。
文件系统
2、 Linux内核。特定于嵌入式板子的定制 内核以及内核的启动参数。
烧写
• 打开超级终端和DNM • 首先进入uboot的下载模式(从Nor Flash启动) • 选择o 烧写u-boot_W35.bin到 Nor Flash • 然后选择1烧写u-boot_W35.bin到 Nand Flash • 选择3可以烧写linux内核zImage_2.6.13_W35_64MB.bin • 选择6烧写文件系统
3、 文件系统。包括根文件系统和建立于 Flash内存设备之上文件系统。通常用 ramdisk来作为rootfs。
4、 用户应用程序。特定于用户的应用程序。 有时在用户应用程序和内核层之间可能还 会包括一个嵌入式图形用户界面。
操作系统内 核
BootLoad er
编译嵌入式linux 内核
编译嵌入式linux内核都是通过make命令实现的,它的执行配置文件就 是makefile. 内核的编译主要分为2个步骤,内核配置和创建内核映像. (1) 内核配置 (体现可裁剪功能) 第一步内核配置中的选项主要是用户用来为目标 板选择处理器的选项,不同的处理器会有不同的处理器选项.我们可以自 己去配置内核.配置内核心命令是:make menuconfig. (为了简化我们的工作,我们可以把内核中自带的配置文件复制到.config 隐藏文件中 cp config_EmbedSky_W35-64MB .config) (2) 创建映像命 Make 在内核文件下产生zImage 文件.
嵌入式开发环境的搭建
搭建交叉编译环境是嵌入式开发的第一步: ➢第一步、下载开发板编译器包 ➢第二步、解压 命令:tar xvjf build.bz2 -C ➢第三步、设置路径 编辑文件 .bashrc 将编译器所在路径添 加到文件.bashrc 中 export PATH=$PATH: /opt/Embed/4.3.3/bin souce .bashrc ➢更新文件实现 ➢Vi 编译器,gedit编译器
root_2.6.13_qt_tp_64MB.bin
正常启动后进入/sbin文件夹可以直接运行测试程序.
通常ARM的交叉编译器为arm-linux-gcc.
交叉调试
嵌入式软件经过编译和链接后即进入调试阶段,调试是软 件开发必不可少的一个环节,嵌入式软件开发过程中的交叉调 试与通用软件开发过程中的调试方法有很大的差别.在常见软 件开发中,调试器与被调试的程序往往运行在同一台计算机上, 而在嵌入式软件开发中,但被调试 的程序却运行在特定的硬件平台(嵌入式开发板)上.
交叉编译
嵌入式软件开发所采用的编译为交叉编译.所谓交叉编 译就是在一个平台上生成可以在另一个平台上执行的代码.
这里一般将进行交叉编译的主机称为宿主机,也就是普 通的PC机,而将程序实际运行环境称为目标机,也就是嵌入 式系统环境.由于一般通用计算机拥有非常丰富的资源,使 用方便的集成开发环境和调试工具等,而嵌入式系统的开 发需要借助宿主机来编译出目标机的可执行代码.