基于ARM的嵌入式Linux开发与应用(第2版)83_第1页
基于ARM的嵌入式Linux开发与应用(第2版)83_第2页
基于ARM的嵌入式Linux开发与应用(第2版)83_第3页
基于ARM的嵌入式Linux开发与应用(第2版)83_第4页
基于ARM的嵌入式Linux开发与应用(第2版)83_第5页
已阅读5页,还剩78页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第1讲:嵌入式系统概述1.嵌入式系统定义2.嵌入式系统的特点3.嵌入式系统与PC的比较4.嵌入式系统的发展历史5.物联网的架构6.嵌入式系统的课程架构1.嵌入式系统定义“以应用为中心、以计算机技术为基础、软件硬件可裁剪、功能、可靠性、成本、体积、功耗严格要求的专用计算机系统”。1.嵌入式系统定义计算机系统工作原理框图2.嵌入式系统的定义(1)从定义上看:MCU属于嵌入式系统-单片机课程(2)从行业上看:软件有操作系统运行的嵌入式系统-本课程的内容两者区别是什么?2.嵌入式系统的特点

(1)联网

(2)UI以上两点:也是选择嵌入式系统的依据。3.嵌入式系统与PC的比较

(1)硬件方面标准依据应用场合

(2)软件方面标准依据应用场合

(3)运行环境好恶劣

(4)功耗高低4.嵌入式系统的发展历史

(1)2005年出现

(2)2005年-2010年

缓慢发展期

(3)2010年后,快速发展期为什么?

(4)未来前景怎样?

5.物联网架构传感终端传感终端传感终端网关网关网关服务器移动终端移动终端5.物联网架构6.嵌入式系统的课程架构第2讲

第一个嵌入式LinuxC程序1.安装环境2.熟悉Linux环境之shell命令3.程序编辑器之vi4.程序编译器之gcc5.运行程序1.安装环境

(1)独立安装(2)vmwarelinuxshare

2.熟悉Linux环境之shell命令mkdirrmdirsulscdsu:$#cd:cd..3.程序编辑器之vi

4.程序编译器之gccgcc程序名----》a.outgcc程序名-o生成结果名

5.运行程序./a.out--

相对路径/……/a.out--

绝对路径

第3讲怎样理解嵌入式LinuxC的地址1.CPU为什么要有地址总线?2.怎样理解数据类型与变量?3.怎样理解数组?4.复杂地址的理解?5.存储(地址)空间的划分、生命周期和作用域第3讲怎样理解嵌入式LinuxC的地址CPU为什么要有地址总线?

让CPU自动运算->程序->语言->编译器->开发环境2.怎样理解数据类型与变量?

什么是数据类型,什么是变量?

变量本质:有存储空间和编号(地址)

数据类型:不占存储空间,决定房间的内容形态和大小

涉及运算符:&,*,sizeofprintf:%p

指针(地址)变量的理解

例子:

第3讲怎样理解嵌入式LinuxC的地址3.怎样理解数组(包括二维数组)?

本质:多个变量的组合(具有变量的特点)

特点:名有规律,地址有规律

为何要使用数组?(可以使用控制语句)

例子:

二维数组:C语言不存在二维数组,为什么?

本质是:数组的数组

例子:第3讲怎样理解嵌入式LinuxC的地址4.复杂地址的理解?

指针数组:是数组,是指针的数组;

数组指针:是指针,是数组的指针

二级指针:是指针,是指针的指针

函数指针:是指针,是函数的指针

指针函数:是函数,返回值为指针的函数

结构体

typedef

例子:

第3讲怎样理解嵌入式LinuxC的地址5.存储空间的划分、生命周期和作用域静态全局代码栈堆const

例子:

第3讲怎样理解嵌入式LinuxC的地址总结:

问题:Inta;变量与数据类型Int*a;变量指针变量或地址变量Inta[3];多个变量的组合Inta[3][4];数组的数组Int*a[3];指针的数组Int(*a)[3];数组的指针Int**a;存放指针变量地址的指针第3讲怎样理解嵌入式LinuxC的地址问题:Int(*a)(void)Int*(*a)(int,int)typedefintA[3];A(*a)();A(*a)[3];Charstr[5][32]={“abc”,”def”,”aaa”,”mmm”,”ccc”}第3讲怎样理解嵌入式LinuxC的地址第4讲嵌入式LinuxC之函数的理解(通信)1.无参函数

2.有参函数,无返回值3.有参函数,有返回值4.有参函数,无返回值返回数据5.有参函数,无返回值返回多个相同类型的数据6.有参函数,无返回值返回多个不同类型的数据例子讲述(图案)1.无参函数

2.有参函数,无返回值3.有参函数,有返回值4.有参函数,无返回值返回数据第4讲嵌入式LinuxC之函数的理解(通信)例子讲述(交换)5.有参函数,无返回值返回多个相同类型的数据6.有参函数,无返回值返回多个不同类型的数据第4讲嵌入式LinuxC之函数的理解(通信)嵌入式系统及应用

之系统编程

IO文件管理进程管理网络管理系统调用函数应用程序库应用程序系统编程应用层内核层硬件层课程内容1

什么是IO?2

为什么要学习IO?3

IO相关的系统调用函数4

IO之open、write、read函数1.什么是IOoutputinput应用层内核层硬件层用户程序文件第二次仍要输入2.为何要学习IO?第一次输入文件2.为何要学习IO3.IO相关的系统调用函数在内核中创建或打开某个文件—open函数写数据到内核文件中—write函数从内核文件中读取数据—read函数操作之后,还要关闭这些文件—close函数4.IO之open函数Flag功能O_RDONLY只读O_WRONLY只写O_RDWR读写O_CREAT创建一个文件O_EXCL如果使用O_CREAT时文件存在,则可返回错误消息。测试文件是否存在O_TRUNC打开文件(会把已经存在的内容给删除)O_APPEND追加方式打开文件(不会把已经存在的内容给删除)函数形式:int

open(constchar*pathname,intflag,mode_tmode);功能:打开或创建文件。参数:

pathname打开和创建的文件名及路径 flag打开文件的方式 mode如果是创建,则为文件的权限返回值:正常返回文件的ID号,它是一个非负的正整数,即,相当于人的身份证号;出错:-1函数形式:ssize_twrite(intfd,void*buf,intnbyte);功能:从用户空间写数据到内核的文件中。参数:fd

写到内核中哪个文件buf写什么内容nbyte

想写多少个字节返回值:正常是实际写的字节数;出错为-1。4.IO之write函数QQ号及QQ密码之保存问题解决4.IO之read函数函数形式:ssize_tread(intfd,void*buf,intnbyte);功能:从用户空间写数据到内核的文件中。参数:fd从内核中哪个文件读buf读到哪里去nbyte

想读多少个字节返回值:正常是实际读的字节数;出错为-1。QQ号及QQ密码之读取问题解决问题一:如何让同一个QQ软件同时多个用户登录?(也即多任务处理)

答案:进程

后续课程:系统编程之进程(一)—多进程创建fork问题二:多个多个用户登录人QQ可以相互聊天(通信),如何实现?

答案:进程通信后续课程:系统编程之进程(二)—进程通信当前QQ程序的问题?ThankYou!嵌入式系统及应用

之系统编程

进程文件管理进程管理网络管理系统调用函数应用程序库应用程序系统编程应用层内核层硬件层课程内容1

什么是进程2

为何学习进程3

怎样创建进程4

进程创建的两个问题1.什么是进程?

进程是一个程序的一次执行的过程进程1ps-axj运行一次进程2运行2次1.什么是进程?

进程存在状态的变化进程运行20秒后开始2.为何要学习进程实例2实例2的问题两个任务总是存在先后,但实际需要两个任务要求同时运行怎样解决呢?答案:多进程处理之fork()函数3.怎样创建一个进程

函数原型pid_tfork(void);函数返回值成功:返回二个值(>0和=0)出错:-1;fork函数的问题:怎么会返回两个值呢?不符合嵌入式LinuxC规则内核提供的创建子进程函数—

fork()函数fork函数内核原理fork函数内核原理实例3fork为何返回两个值实例3的问题解决利用返回值的不同,使父子进程执行不同的代码区,从而完成两个任务的处理实例3的问题:任务重复执行if(pid>0){//父进程运行的代码区}if(pid==0){//子进程运行的代码区}fork为何返回两个值实例2的问题解决if(pid>0){//读电子书}if(pid==0){//听音乐}问题一:如果子进程为另外一个人写的程序或C++、

java、android的程序等,是否可以呢?

答案:可以

后续课程:系统编程之进程(二)—exec函数族问题二:实际应用中,经常两个任务之间要进程交互,

比如手机短信APP中要添加通讯录APP中的联

系人信息,如何交互呢?

后续课程:系统编程之进程(三)—进程通信

4.进程创建的两个问题ThankYou!嵌入式系统及应用

之系统编程

进程通信/ent/文件管理进程管理网络管理系统调用函数应用程序库应用程序系统编程应用层内核层硬件层课程内容1

什么是进程通信2为何要学习进程通信3

进程通信之信号通信4

信号通信的缺点1.什么是进程通信?两个应用程序(进程)之间的交互过程称为进程通信应用层Android内核层Linux硬件层ARM2.为何要学习进程通信进程通信需求案例监听电话电话事件处理监听电话听音乐暂停听音乐进程一:听音乐进程二:监听电话2.为何要学习进程通信进程二:监听电话进程一:听音乐标志:flag=0监听电话电话事件处理监听电话听音乐暂停if(flag==1)听音乐flag=1flag=0案例中为何不能实现两个进程之间的通信?2.为何要学习进程通信3.进程通信之信号通信内核原理进程一发送信号给B应用层内核层硬件层进程二signal(信号处理)kill(信号发送)3.进程通信之信号通信信号的发送函数函数原型intkill(pid_tpid,intsig)函数参数pid:是接收信号的进程;sig:是信号ID值函数返回值成功:0出错:-13.进程通信之信号通信信号的处理函数函数原型signal(intsignum,A)int(*handler)(int)

---A函数参数signum:是告诉内核要处理信号ID值handler:为告诉内核收到信号后的处理方式(函数)函数返回值函数指针3.进程通信之信号通信内核发送信号给B3.进程通信之信号通信

应用进程二:监听电话进程一:听音乐监听电话电话事件处理监听电话听音乐暂停听音乐内核发送信号给任务一4.信号通信缺点信号通信能够实现两个进程之间信息的告知,但实际应用中不仅要告知,还要传递一些信息数据,怎么解决?

后续课程:

系统编程之进程通信(二)—共享内存通信

ThankYou!第8讲网络通信1.TCP/IP由来2.TCP/IP的四层协议及与嵌入式课程之间关系第8讲网络通信3.相关函数(5元组文件)文件I/O网络编程功能opensocketbindlistenacceptconnect打开或创建文件closeclose关闭文件writewrite写文件readread读文件第8讲网络通信4.什么是5元组文件?

源IP、源端口号(进程号)、目的IP、目的端口号(进程号)、协议族第8讲网络通信5.什么是C/S?

第8讲网络通信6.循环服务器7.并发服务器(多进程、多线程和多路复用IO)8.多进程之并发服务器的问题?(子进程僵尸)9.多进程之并发服务器问题的解决办法?-信号

驱动IO。

第9讲ARM体系结构ARM概述2.开发环境熟悉3.写程序(汇编-了解(能看懂)、C、混合编程)4.函数和异常(了解)第9讲ARM体系结构ARM概述(1)什么是ARM(2)cpusoc嵌入式产品第9讲ARM体系结构基于ARM的嵌入式开发环境(1)ADS(淘汰)(2)Keil:keil3keil4keil5(3)熟悉开发环境(能看懂arm的文档)pc、sp、lr(4)汇编-汇编调C(混合编程)-进一步理解CPU保护现场第9讲ARM接口开发-GPIO1.SOC的GPIO模块-会看懂SOC文档2.电路原理图-会看懂电路原理图

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论