嵌入式day31

2024-08-22 01:04
文章标签 嵌入式 day31

本文主要是介绍嵌入式day31,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

mplayer项目问题分析:

知识短时间内可以获取到

能力的提升一定需要练习

IPC 进程间通信方式

共享内存 //最高效的进程间通信方式

共享内存:

1.是一块 内核预留的空间

2.最高效的通信方式

//避免了用户空间到内核空间的数据拷贝

操作:

system v:共享内存

IPC对象操作通用框架:

1.key值的产生:

ftok

将pathname和proj_id 转换为key值

参数:

pathname //给一个路径名

proj_id //工程id eg:‘A’

返回值:

成功 返回key值

失败 返回-1

2.通过key获取ipc对象(共享)

shmget

使用唯一键值key向内核一处共享内存使用申请

参数:

key 唯一键值

size 要申请的共享内存大小

shmflg 申请的共享内存访问权限,八进制表示

返回值:

成功 返回共享内存id

失败 返回-1

3.绑定地址空间

shmat

将指定的shmid对应的共享内存映射到本地内存

参数:

shmid 要映射的本地内存1

shmaddr 本地可用的地址,如果不确定则用NULL,表示由系统自动分配

shmflg 0, 表示读写

SHM_RDONLY 只读

返回值:

成功 返回映射的地址,一般等于shmaddr

失败 返回(void *)-1

pause

等待一个信号

4.解除绑定

shmdt

将本地内存与共享内存断开映射关系

参数:

shmaddr 要断开的映射地址

返回值:

成功 返回0

失败 返回-1

5.销毁IPC对象

shmctl

修改共享内存属性,也可以删除指定的共享内存对象

参数:

shmid 要删除的共享内存对象

cmd IPC_RMID 删除对象的宏

buff NULL 表示只删除对象

返回值:

成功 返回0

失败 返回-1

总结:

1、共享内存数据的存储方式是拷贝还是剪切?

拷贝

2、共享内存的数据如果措辞不同进程读写会怎么样?

同一操作对象,数据没有偏移情况下会覆盖

IPC对象 --- 共享内存

消息队列 信号量集

网络通信

网络: 不同主机间的通信问题

实现网络通信:

1.物理层面 有一个信息通路

有线

无线 5G 4G 星链

2.软件层面(逻辑层面) 也需要一个通路

网络编程:

Open System Interconnect(OSI网络模型)

为了解决不同体系结构的网络的互联问题,忘记标准化组织ISO 于1981年制定了开放系统互联参考模型

Open System Interconnection Reference Model, OSI/RM

osi七层协议:
1、物理层

规定了物理层面的电气特征及相关的机械特性

物理层面数据的传输 --- 一位的二进制数据 //比特流

2、数据链路层

规定了传输数据的格式 //(一)帧数据

//控制传输过程可靠

3、网络层(网际层)

用于解决网络与网络之间数据传输 //数据包

4、传输层

传输控制层,控制传输过程,保证数据完整和可靠

5、会话层

处理一次会话过程

6、表示层

规定了 传输数据的格式和方式

7、应用层

就是直接获取要收发的数据

实际应用到的是 tcp/ip 模型:

应用层

传输层

网络层

数据链路层

4层模型:

应用层

传输层

网络层

网络接口层

每个层次中,都有自己的一套规范 --- 协议

操作系体角度:

IP

用来标识网络中的一台主机 --- 通过ip可以找到对应一台主机

本质:32位整型数值

表示方式 点分十进制 0 - 255

ip地址的组成:网络号 + 主机号

网络号 --- 表示所处的网络

主机号 --- 表示能容纳的主机

端口号

用来表示主机中某一个具体(进行网络通信)进程

ip + 端口号 //进程在网络的地址

网络编程:

tcp / udp

TCP:

TCP(即传输控制协议):是一种面向连接的传输层协议,它能提供高可靠性通信(即数据无误、数据无丢失、数据无失序、数据无重复到达的通信)

适用情况:

1、适合于对传输质量要求较高,以及传输大量数据的通信。

2、在需要可靠数据传输的场合,通常使用TCP协议

3、MSN/QQ 等即时通讯软件的用户登录账户管理相关的功能通常采用TCP协议

TCP协议特点:

1.面向链接 //类似打电话之前,必须先打通

2.可靠传输 //保证数据准确可靠(tcp协议机制里面的功能)

3.面向字节流

UDP:

用户数据报协议,是不可靠的无连接的协议。

在数据发送前,因为不需要进行连接,所以可以进行高效率的数据传输。

适用情况:

1、发送小尺寸数据(如对DNS服务器进行ip地址查询时)

2、在接收到数据,给出应答较困难的网络中使用UDP。(如:无线网络)

3、适合于广播 / 组播式通信中。

4、MSN/QQ/Skype 等即时通讯软件的点对点文本通讯以及音视频通讯通常采用UDP协议

5、流媒体、VOD、VOIP、IPTV等网络多媒体服务中通常采用UDP方式进行实时数据传输

UDP特点:

1.不可靠

2.无连接

3.数据报

编程

编程模型:

c/s client server 客户端,服务器模型 ---专用客户端

b/s browser server 浏览器,服务器模型 ---通用的客户端

p2p peer to peer 点对点传输

基于UDP c/s通信模型:

//client --- 客户端 --- 角色 --- 主动的角色

socket

1.一种特殊的文件 --- 专门用于网络通信(不同主机间的进程)

2.socket编程接口 --- socket函数 提供了一个可以访问 操作系统 网络功能的接口

sendto

发数据

...

//server --- 服务器端 --- 角色 --- 被动的角色

socket
recvfrom

接收数据

...

socket

程序向内核提出创建一个基于内存的套接字描述符

sendto

man 7 ip

man inet_addr

端口号:

htons

转换大小端(网络传输统一用大端)

---------------------------------------------------

嵌入式学习第三十一天,前两天结束了mplayer项目,今天讲了进程剩下的东西,IPC进程间的通信,再学习了网络通信的相关知识,了解了OSI七层协议,进行了c/s编程。后面继续加油了。

这篇关于嵌入式day31的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1094798

相关文章

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

荣耀嵌入式面试题及参考答案

在项目中是否有使用过实时操作系统? 在我参与的项目中,有使用过实时操作系统。实时操作系统(RTOS)在对时间要求严格的应用场景中具有重要作用。我曾参与的一个工业自动化控制项目就采用了实时操作系统。在这个项目中,需要对多个传感器的数据进行实时采集和处理,并根据采集到的数据及时控制执行机构的动作。实时操作系统能够提供确定性的响应时间,确保关键任务在规定的时间内完成。 使用实时操作系统的

嵌入式Openharmony系统构建与启动详解

大家好,今天主要给大家分享一下,如何构建Openharmony子系统以及系统的启动过程分解。 第一:OpenHarmony系统构建      首先熟悉一下,构建系统是一种自动化处理工具的集合,通过将源代码文件进行一系列处理,最终生成和用户可以使用的目标文件。这里的目标文件包括静态链接库文件、动态链接库文件、可执行文件、脚本文件、配置文件等。      我们在编写hellowor

嵌入式方向的毕业生,找工作很迷茫

一个应届硕士生的问题: 虽然我明白想成为技术大牛需要日积月累的磨练,但我总感觉自己学习方法或者哪些方面有问题,时间一天天过去,自己也每天不停学习,但总感觉自己没有想象中那样进步,总感觉找不到一个很清晰的学习规划……眼看 9 月份就要参加秋招了,我想毕业了去大城市磨练几年,涨涨见识,拓开眼界多学点东西。但是感觉自己的实力还是很不够,内心慌得不行,总怕浪费了这人生唯一的校招机会,当然我也明白,毕业

深入探索嵌入式 Linux

摘要:本文深入探究嵌入式 Linux。首先回顾其发展历程,从早期尝试到克服诸多困难逐渐成熟。接着阐述其体系结构,涵盖硬件、内核、文件系统和应用层。开发环境方面包括交叉编译工具链、调试工具和集成开发环境。在应用领域,广泛应用于消费电子、工业控制、汽车电子和智能家居等领域。关键技术有内核裁剪与优化、设备驱动程序开发、实时性增强和电源管理等。最后展望其未来发展趋势,如与物联网融合、人工智能应用、安全性与

嵌入式技术的核心技术有哪些?请详细列举并解释每项技术的主要功能和应用场景。

嵌入式技术的核心技术包括处理器技术、IC技术和设计/验证技术。 1. 处理器技术    通用处理器:这类处理器适用于不同类型的应用,其主要特征是存储程序和通用的数据路径,使其能够处理各种计算任务。例如,在智能家居中,通用处理器可以用于控制和管理家庭设备,如灯光、空调和安全系统。    单用途处理器:这些处理器执行特定程序,如JPEG编解码器,专门用于视频信息的压缩或解压。在数字相机中,单用途

基于微信小程序与嵌入式系统的智能小车开发(详细流程)

一、项目概述 本项目旨在开发一款智能小车,结合微信小程序与嵌入式系统,提供实时图像处理与控制功能。用户可以通过微信小程序远程操控小车,并实时接收摄像头采集的图像。该项目解决了传统遥控小车在图像反馈和控制延迟方面的问题,提升了小车的智能化水平,适用于教育、科研和娱乐等多个领域。 二、系统架构 1. 系统架构设计 本项目的系统架构主要分为以下几个部分: 微信小程序:负责用户界面、控制指令的

嵌入式面试经典30问:二

1. 嵌入式系统中,如何选择合适的微控制器或微处理器? 在嵌入式系统中选择合适的微控制器(MCU)或微处理器(MPU)时,需要考虑多个因素以确保所选组件能够满足项目的具体需求。以下是一些关键步骤和考虑因素: 1.1 确定项目需求 性能要求:根据项目的复杂度、处理速度和数据吞吐量等要求,确定所需的处理器性能。功耗:评估系统的功耗需求,选择低功耗的MCU或MPU以延长电池寿命或减少能源消耗。成本

嵌入式Linux C基本知识点总结

学习这块知识点有好久了,最近借一本书的框架来对基本的知识点进行总结,参考《嵌入式Linux上的C语言编程实践》进行总结记录之。 一、 基本开发环境 Linux下C语言开发环境 使用工具:程序生成工具GCC、程序调试工具GDB、工程管理工具为make和Makefile。 开发流程:使用编辑工具编写C语言源文件,然后编译生成机器代码为主的二进制可执行程序。 编译流程:C语言经过编译-汇

诺瓦星云校招嵌入式面试题及参考答案(100+面试题、10万字长文)

SPI 通信有哪些内核接口? 在嵌入式系统中,SPI(Serial Peripheral Interface,串行外设接口)通信通常涉及以下内核接口: 时钟控制接口:用于控制 SPI 时钟的频率和相位。通过设置时钟寄存器,可以调整 SPI 通信的速度以适应不同的外设需求。数据发送和接收接口:负责将数据从主机发送到从机以及从从机接收数据到主机。这些接口通常包括数据寄存器,用于存储待发