嵌入式常问问题和知识
12、并发和并行的区别?
最本质的区别就是:并发是轮流处理多个任务,并行是同时处理多个任务。
你吃饭吃到一半,电话来了,你一直到吃完了以后才去接,这就说明你不支持并发也不支持并行。
你吃饭吃到一半,电话来了,你停了下来接了电话,接完后继续吃饭,这说明你支持并发。 (不一定是同时的)
你吃饭吃到一半,电话来了,你一边打电话一边吃饭,这说明你支持并行。
并发的关键是你有处理多个任务的能力,不一定要同时。
并行的关键是你有同时处理多个任务的能力。
所以我认为它们最关键的点就是:是否是『同时』。
并发是轮流处理多个任务,并行是同时处理多个任务
原文链接:https://blog.csdn.net/weixin_30363263/article/details/80732156
1、const 含义
只读
问题:const char* name = “hello word”,是否可以改变name里存放的字符串?
不可以,指针指向常量,内容不可变,指针可以变。
const char *p; //*p是const,p可变
const (char *) p;//p是const,*p可变
char* const p; //p是const,*p可变
const char* const p; //p和*p都是const
char const * p;// *p是const,p可变
(char*) const p;//p是const,*p可变
char* const p;// p是const,*p可变
2、C语言中strlen和sizeof的区别
1.strlen是一个库函数使用时需要引用#include<string.h>这个头文件,而sizeof是一个运算符号;
2.strlen计算的是’\0’之前的字符个数,sizefo计算的是所占空间内存的大小,单位是字节;
3.strlen计算时不包含’\0’,而sizeof包含’\0’;
4.strlen遇到’\0’才结束;
5.sizeof的类型是unsigned int ,是一个无符号的整型;
6.strlen只能用char做参数,sizeof可以用类型做参数;
3、ioctl如何确保命令的唯一性?
ioctl 用户与驱动之间的协议
前文提到 ioctl 方法第二个参数 cmd 为用户与驱动的 “协议”,理论上可以为任意 int 型数据,可以为 0、1、2、3……,但是为了确保该 “协议” 的唯一性,ioctl 命令应该使用更科学严谨的方法赋值,在linux中,提供了一种 ioctl 命令的统一格式,将 32 位 int 型数据划分为四个位段,如下图所示:
// include/uapi/asm-generic/ioctl.h
#define _IOC(dir,type,nr,size)
(((dir) << _IOC_DIRSHIFT) |
((type) << _IOC_TYPESHIFT) |
((nr) << _IOC_NRSHIFT) |
((size) << _IOC_SIZESHIFT))
dir(direction),ioctl 命令访问模式(数据传输方向),占据 2 bit,可以为 _IOC_NONE、_IOC_READ、_IOC_WRITE、_IOC_READ | _IOC_WRITE,分别指示了四种访问模式:无数据、读数据、写数据、读写数据;
type(device type),设备类型,占据 8 bit,在一些文献中翻译为 “幻数” 或者 “魔数”,可以为任意 char 型字符,例如
‘a’、’b’、’c’ 等等,其主要作用是使 ioctl 命令有唯一的设备标识;
nr(number),命令编号/序数,占据 8 bit,可以为任意 unsigned char 型数据,取值范围 0~255,如果定义了多个 ioctl 命令,通常从 0 开始编号递增;
size,涉及到 ioctl 函数 第三个参数 arg ,占据 13bit 或者 14bit(体系相关,arm 架构一般为 14 位),指定了 arg 的数据类型及长度,如果在驱动的 ioctl 实现中不检查,通常可以忽略该参数;
4、copy_from_user 返回值含义
copy_from_user失败返回没有被拷贝的字节数,成功返回0.
5、linux设备驱动注册流程
- 驱动程序入口 module_init (at6600efb_init)
- 模块初始化 platform_driver_register(&at6600efb_platform_driver);
- 驱动程序注册 platfrom_driver_register() 是在设备注册时进行绑定的.以USB为例:先插上USB设备并挂到总线上,然后在安装USB设备驱动的过程中,从总线上遍历各个设备,看是否有与驱动相匹配的设备,如果有,则两者绑定,就是platfrom_driver_register()
platfrom_device_register() 是在驱动注册时进行绑定的.以USB为例:先安装USB驱动程序,然后当USB设备插入时,就遍历总线上各个驱动,看两者是否匹配,如果相配则绑定,这就是platfrom_device_register()
6、platform目录在哪里?
/sys/bus/platform/drivers
7、问:用宏定义一年有多少秒(忽略闰年)
答:
#define SECONDS_PER_YEAR 60 * 60 * 24 * 365UL //加UL,是为了防止溢出
8、IPC摄像头含义
internet protocol camera
9、vmalloc 和 kmalloc区别
.kmalloc分配的页在物理地址上是连续的(虚拟地址自然也是连续的)
vmalloc只确保页在虚拟地址空间内是连续的。它通过非连续的物理内存块,再“修正”页表,把内存映射到逻辑地址空间是连续的区域内。
10、单精度和双精度
单精度是这样的格式,1位符号,8位指数,23位小数。
单精度和双精度精确的范围不一样:单精度,也即float,一般在计算机中存储占用4字节,也32位,有效位数为7位;

双精度是1位符号,11位指数,52位小数。
双精度(double)在计算机中存储占用8字节,64位,有效位数为16位。

11、cache作用

Cache可以大大提高CPU访问主存的速度,中央处理器绝大多数存取主存储器的操作能为存取高速缓冲存储器所代替,能极大缓和中央处理器和主存储器之间速度不匹配的矛盾。
相关文章:
嵌入式常问问题和知识
12、并发和并行的区别? 最本质的区别就是:并发是轮流处理多个任务,并行是同时处理多个任务。 你吃饭吃到一半,电话来了,你一直到吃完了以后才去接,这就说明你不支持并发也不支持并行。 你吃饭吃到一半&…...
【数据结构】空间复杂度
🚀write in front🚀 📜所属专栏:初阶数据结构 🛰️博客主页:睿睿的博客主页 🛰️代码仓库:🎉VS2022_C语言仓库 🎡您的点赞、关注、收藏、评论,是对…...
湖南中创教育提醒校外培训留意这几点,避免维权
校外教育培训机构是市场经济发展的必然产物,有需求就有市场,这个无可厚非。而校外教育培训机构的火热,正是反映出人民群众对教育发展的需求在不断增强。 培训机构分类中有面对大学生参加公务员招考、教师考编等考证考试的培训机构࿱…...
docker 配置私有/本地镜像仓库
docker 配置私有/本地镜像仓库docker pull registry mkdir -p /usr/local/docker/registry-data docker tag registry 192.168.28.132:5000/registry docker run -di -p 5000:5000 --namelocal_registry --restartalways --privilegedtrue --log-drivernone -v /usr/local/d…...
每日学术速递2.23
Subjects: Robotics 1.On discrete symmetries of robotics systems: A group-theoretic and data-driven analysis 标题:关于机器人系统的离散对称性:群论和数据驱动分析 作者:Daniel Ordonez-Apraez, Mario Martin, Antonio Agudo, F…...
LeetCode 232. 用栈实现队列
LeetCode 232. 用栈实现队列 难度:easy\color{Green}{easy}easy 题目描述 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(pushpushpush、poppoppop、peekpeekpeek、emptyemptyempty): 实现 MyQueueM…...
AI算法创新赛-人车目标检测竞赛总结04
队伍:AI000038 小组成员:杨志强,林松 1. 算法介绍 1.1 相关工作 当前流行的目标检测算法主要分为三种,一阶段算法:SSD,FCOS,Scaled,YOLO系列等;二阶段算法:…...
【C语言进阶】动态内存管理详解与常见动态内存错误以及柔性数组使用与介绍
📝个人主页:Sherry的成长之路 🏠学习社区:Sherry的成长之路(个人社区) 📖专栏链接:C语言进阶 🎯长路漫漫浩浩,万事皆有期待 文章目录1.动态内存1.1 概述…...
【C++】string的模拟实现
文章目录1. string的模拟实现1.构造函数使用new开辟空间优化成全缺省的构造函数2. C_str3. operator[]4.拷贝构造浅拷贝深拷贝5. 赋值三种情况6. 迭代器7.比较(ASCII值)大小8. reserve(扩容)9. push_back(尾插字符)10. append(尾插字符串)11. (字符/字符串)12. insert在pos位置…...
前端借助Canvas实现压缩base64图片两种方法
一、具体代码 1、利用canvas压缩图片方法一 // 第一种压缩图片方法(图片base64,图片类型,压缩比例,回调函数)// 图片类型是指 image/png、image/jpeg、image/webp(仅Chrome支持)// 该方法对以上三种图片类型都适用 压缩结果的图片base64与原类型相同// …...
用ChatGPT生成Excel公式,太方便了
ChatGPT 自去年 11 月 30 日 OpenAI 重磅推出以来,这款 AI 聊天机器人迅速成为 AI 界的「当红炸子鸡」。一经发布,不少网友更是痴迷到通宵熬夜和它对话聊天,就为了探究 ChatGPT 的应用天花板在哪里,经过试探不少人发现,…...
【Kubernetes 企业项目实战】09、Rancher 2.6 管理 k8s-v1.23 及以上版本高可用集群
目录 一、Rancher 介绍 1.1Rancher简介 1.2 Rancher 和 k8s 的区别 1.3 Rancher 企业使用案例 二、安装 Rancher 2.1 初始化环境 2.2 安装 Rancher 2.3 登录 Rancher 平台 三、通过 Rancher 管理已存在的 k8s 集群 3.1 配置 rancher 3.2 导入 k8s 四、通过 Ranc…...
在Excel中按条件筛选数据并存入新的表
案例 老板想要看去年每月领料数量大于1000的数据。手动筛选并复制粘贴出来,需要重复操作12次,实在太麻烦了,还是让Python来做吧。磨刀不误砍柴工,先整理一下思路: 1读取原表,将数量大于1000的数据所对应的行整行提取(如同在excel表中按数字筛选大于1000的) 2将提取的数…...
【面试题】MySQL索引相关知识点
1.什么是索引 索引是存储引擎快速查找记录的一种数据结构,就类似书的目录,通过目录可以快速的查找到想要查找的内容 2.索引的特点 特点:索引是基于数据引擎的,不同的数据引擎实现索引的方式不一定相同 好处:通过索引…...
MySQL索引类型及原理?一文读懂
一、什么是MySQL索引? MySQL索引是一种数据结构,用于提高数据库查询的性能。它类似于一本书的目录,通过在表中存储指向数据行的引用,使得查询数据的速度更快。 在MySQL中,索引通常是在表上定义的,它们可以…...
【C语言】字符分类函数+内存函数
目录 1.字符函数 1.1字符分类函数 1.2.字符转换函数 //统一字符串中的大小写 2.内存处理函数 2.1内存拷贝函数memcpy //模拟实现memcpy 2.2内存移动函数memmove //模拟实现memmove 2.3内存比较函数memcmp 2.4内存设置函数memset 1.字符函数 1.1字符分类函数 头文…...
高通平台开发系列讲解(SIM卡篇)SIM卡基础概念
文章目录 一、SIM卡基本定义二、卡的类型三、SIM卡的作用三、SIM卡基本硬件结构四、SIM卡的内部物理单元五、卡文件系统沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇文章将介绍SIM的相关组件。 一、SIM卡基本定义 SIM卡是一种智能卡(ICC Card/UICC Card) SIM…...
记录一次ubuntu下配置ssh登录出现的问题
现象描述: 1. 配置完服务器端公钥和本地的私钥之后,ssh登录始终会让输入密码,用ssh -vvv rootip 查看发现发送密钥之后就没反应了。 本机debug info: debug1: Trying private key: C:\Users\wangc/.ssh/id_xxxx (私钥文件) debug3…...
深度剖析数据在内存中的存储(下)(适合初学者)
上篇讲解了整形在内存中的存储方式,这篇文章就来继续讲解浮点数在内存中的存储方式。 上篇地址: (5条消息) 深度剖析数据在内存中的存储(上)_陈大大陈的博客-CSDN博客 目录: 3.浮点型在内存中的存储 3.1.浮点数的…...
智慧物联网系统源码:一个用于数据的收集、处理、可视化、设备管理、设备预警、报警的平台
项目简介: 一个用于数据的收集、处理、可视化、设备管理、设备预警、报警的平台,通过平台将所有设备连接起来,为上层应用提供设备的管理、数据收集、远程控制等核心物联网功能。 支持支持远程对设备进行实时监控、故障排查、远程控制&#…...
大模型工具调用乱斗:MCP协议凭什么火?实战踩坑与选型建议
大模型工具调用乱斗:MCP协议凭什么火?实战踩坑与选型建议 作者:戴维1号 来自:NEXUS Tech Curator(https://www.lsn.org.cn) 开场:被"大模型有脑子没手"折磨的第 N 天 你有没有这种感觉——大模型…...
YOLO X Layout部署教程:CentOS 7离线环境安装ONNX Runtime 1.16兼容包
YOLO X Layout部署教程:CentOS 7离线环境安装ONNX Runtime 1.16兼容包 1. 引言 如果你正在CentOS 7服务器上部署YOLO X Layout文档理解模型,可能会遇到一个常见问题:系统自带的ONNX Runtime版本太旧,而YOLO X Layout需要1.16或更…...
5种高效系统清理策略:DriverStore Explorer深度解析与实战指南
5种高效系统清理策略:DriverStore Explorer深度解析与实战指南 【免费下载链接】DriverStoreExplorer Driver Store Explorer 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer Windows系统长期使用后,驱动存储仓库会积累大量冗…...
OpenClaw定时任务技巧:让Kimi-VL-A3B-Thinking自动处理每日图文简报
OpenClaw定时任务技巧:让Kimi-VL-A3B-Thinking自动处理每日图文简报 1. 为什么需要自动化图文简报 每天早上打开电脑,我的第一件事就是浏览行业资讯、技术博客和社交媒体,把有价值的内容整理成简报。这个过程通常要花费30-45分钟࿰…...
Phi-3-mini-4k-instruct-gguf高算力适配:CUDA加速下RTX3090显存占用仅2.1GB实测
Phi-3-mini-4k-instruct-gguf高算力适配:CUDA加速下RTX3090显存占用仅2.1GB实测 1. 模型概述 Phi-3-mini-4k-instruct-gguf是微软Phi-3系列中的轻量级文本生成模型GGUF版本。这个经过优化的模型特别适合问答、文本改写、摘要整理和简短创作等场景。相比原始版本&a…...
FireRedASR Pro优化指南:如何提升长音频识别效率
FireRedASR Pro优化指南:如何提升长音频识别效率 1. 长音频识别的核心挑战 语音识别系统在处理长音频时面临几个关键瓶颈问题: 内存压力:随着音频时长增加,需要缓存的中间状态呈指数级增长计算复杂度:注意力机制的时…...
工业数智化改造避坑:拒绝通用模板,定制化才是最优解
在工业数智化转型浪潮中,不少企业陷入了“投入与回报失衡”的困境:耗费大量资金、人力上线的数智化系统,却因与自身业务脱节、流程适配性差,难以发挥实际价值,最终沦为“摆设”。事实上,工业数智化改造的核…...
6 鸿蒙应用启动速度优化全流程拆解 | 鸿蒙开发筑基实战
6 鸿蒙应用启动速度优化全流程拆解 | 鸿蒙开发筑基实战 作者:杨建宾(华夏之光永存) 摘要 本文面向鸿蒙应用开发工程师,聚焦应用启动慢、首屏白屏等核心痛点,拆解从代码配置到资源处理的全流程优化方案。内容包含启动流…...
解析器开发的终极革命:为什么Ohm比传统解析器更强大?
解析器开发的终极革命:为什么Ohm比传统解析器更强大? 【免费下载链接】ohm A library and language for building parsers, interpreters, compilers, etc. 项目地址: https://gitcode.com/gh_mirrors/oh/ohm Ohm是一个用于构建解析器、解释器和编…...
开源工具Wand-Enhancer功能增强技术解析与实战指南
开源工具Wand-Enhancer功能增强技术解析与实战指南 【免费下载链接】Wand-Enhancer Advanced UX and interoperability extension for Wand (WeMod) app 项目地址: https://gitcode.com/gh_mirrors/we/Wand-Enhancer 一、问题定位:WeMod功能增强的核心挑战 …...
