- 博客(22)
- 收藏
- 关注
原创 【韦东山驱动入门实验班】APP和驱动的交互方式
通过之前的学习,我们学习到这样一个共识:应用程序调用read,就提供一个驱动程序版的read;应用调用write,就提供一个驱动程序版本的write。bufbuf在linux 系统中,应用程序无法直接访问内核或者驱动程序中的各种变量,并且在物理上隔离开。如果随意的让应用程序访问内核空间,低水平的开发者或者一些“邪恶”的开发者,就会无意或者有意的导致系统崩溃。其中__user只是一个空的宏,用于指示说明作用。
2024-11-16 09:16:40
395
原创 【C++】内联函数
调用函数实际上是将程序执行顺序从函数调用处跳转到函数所存放在内在中的某个地址,将调用现场保留,跳转到那个地址将函数执行,执行完毕后再回到调用现场,所以频繁的函数调用会带来很大开销。编译器将函数嵌入到调用处,编译器会根据函数的长度、复杂度等自行决定是否把函数作为内联函数来调用。为了解决频繁的函数调用,增加时间和空间的花销而造成的效率低下问题,C++提供了。,因此一般都将结构简单语句少的函数定义为内联函数。这样虽然节省了开销,但是又会造成。
2024-11-14 14:54:26
128
原创 【C++基础】默认参数
在C++中,函数可以有默认的参数。函数的默认参数值,即在定义参数的时候同时给它一个。这样的操作是不允许的,默认参数的连续性可以保证编译器正确的匹配参数。在函数调用的时候,我们可以省略含有默认参数值的参数。函数,可以输出默认的调试信息,也可以输出特定的调试信息。这种情况下,编译器就不知道到底选择哪个函数。当我们调试追踪代码时,可以实现这样的一个。
2024-11-14 13:38:32
208
原创 【C++】引用
是一个,它是某个已存在的变量的另外一个名字。编译器不会为开辟内存空间,它和它引用的变量共用同一块内存空间。一旦把引用初始化为某个变量,就可以使用引用名称(别名)来指向变量。(它们在内存空间的地址完全一样)
2024-11-14 11:56:18
273
原创 【韦东山驱动入门实验班】如何写一个简单的驱动程序
在linux系统中,无论是普通文件、设备文件,我们都是调用同一套接口:open、read、write、ioclt…那么,最简单的写驱动程序的办法就是在。
2024-11-13 12:10:22
378
原创 PARA系统:一种重行动、轻分类的信息组织法
从《第二大脑》这本书中进行借鉴,是一次实验!信息组织的目的在于更好的推进目标,而非造就“笔记学博士”,实践是知识最佳的归宿。在。
2024-11-01 03:34:49
744
原创 【韦东山驱动入门实验班】通用驱动框架1之超声波测距模块驱动
超声波测距模块是利用超声波来测距。模块先发送超声波,然后接收反射回来的超声波,由反射经历的时间和声音的传播速度 340m/s,计算得出距离。SR04 是一款常见的超声波传感器,模块自动发送 8 个 40KHz 的方波,自动检测是否有信号返回,。SR04 采用 5V 电压,静态电流小于 2mA,。SR04 模块上面有四个引脚,分别为:VCC、Trig、Echo、GNDTrig10us840KhzEcho总而言之,我们只要在Echo引脚电平为高时,开启定时器计数,在该引脚变为低时,结束定时器计数。
2024-10-30 22:59:44
914
1
原创 【韦东山STM32MP157】烧写完整系统心得
(3)根据图片上的信息,替换为最新编译生成的文件。唯一需要注意的是,编译生成的是。,编译过程中会显示编译的进度,等待编译完成,调整到emmc启动,重启开发板即可。(2)修改到这个目录,下载完后我放到了D盘中(这个文件从韦东山的百度网盘下载)起因:改设备树把系统搞崩溃了,导致开发板一直重启加载不了内核。选择百问网提供的ubuntu镜像(里面已经配置好了环境);文件夹进行编译(可能会报错,自己尝试下,我的是这样)等待编译完成就可以了,过程挺长的。不要直接选择这个文件夹下面的。软件进行文件传输,比较方便。
2024-10-30 19:22:41
381
原创 【韦东山驱动入门实验班】通用驱动框架1之人体红外感应驱动
人体都有恒定的体温,一般在37度,所以会发出特定波长10uM左右的红外线,被动式红外探头就是靠探测人体发射的10uM左右的红外线而进行工作的。人体发射的10uM左右的红外线通过菲泥尔滤光片增强后聚集到红外感应源上。红外感应源通常采用热释电元件,这种元件在接收到人体红外辐射温度发生变化时就会失去电荷平衡,向外释放电荷,后续电路经检测处理后就能产生报警信号。通过跳线来设置是否可以重复触发,默认为 L。其中 L 表示不可重复,H 表示可重复。不可重复方式当传感器感应到人体输出高电平之后,延时一段时间,
2024-10-28 20:14:56
1029
原创 【韦东山驱动入门实验班】通用驱动框架1之LED驱动
在学习完通用驱动框架1之后,下面就是使用通用驱动框架去写各种硬件的驱动程序了。小插曲:就是本来已经买了通用模块,不过收到货发现多发了个stm32mp157的开发板,我就联系客服退回开发板,然后准备使用转接板的时候又发现转接板发成了6ull的,最终结果就是估计还有两天我才能完成后面的实验。
2024-10-26 03:44:45
1145
原创 【驱动开发】编译内核模块的通用Makefile规则
在驱动开发中,我们不会在内核源码目录中直接编写和编译内核模块,通常是在自己建立的文件夹下编写驱动程序,然后使用内核的Makefile规则编译驱动程序。4.如有其他文件需要编译,比如驱动测试程序,只需要在此基础上添加相关命令即可。3.如有其他驱动程序需要编译:直接在。2.指定自己的交叉编译工具链;1.指定自己的内核源码路径;
2024-10-24 12:31:03
315
原创 【嵌入式八股文】C/C++面试问题总结(持续更新)
野指针是指指向不可用内存的指针。当指针被创建时,指针不可能自动指向NULL,这时默认值是随机的,此时指针成为野指针。当指针被 free 或 delete 释放掉时,如果没有将指针指向 NULL,就会产生野指针。因为释放掉的是指针指向的内存,没有将指针本身释放掉。造成野指针的原因也可能是指针操作超越了变量的作用范围。避免野指针的方法即使使用完之后释放内存,并将指针赋 NULL内联函数在编译时展开,宏定义在预编译时展开。在编译时,内联函数直接嵌入到目标代码中,而宏定义仅是简单的文本替换。
2024-10-24 11:50:00
952
原创 【韦东山驱动入门实验班】交互流程解读
在驱动入门实验班的课程里讲到了APP使用驱动程序的四种方式。分别是:阻塞、非阻塞、poll、异步通知。本文是在前面所描述的概念之上,对驱动程序交互流程的解读。
2024-10-23 22:39:01
524
原创 【数据结构】顺序队列(环形缓冲区)的实现
队列是限制在两端进行插入操作和删除操作的线性表。特点 :先进先出(FIFO)允许进行存入操作的一端称为“队尾”允许进行删除操作的一端称为“队头”当线性表中没有元素时,称为“空队”顺序队列的本质就是一个数组,只不过限制在一端进行插入(入队),一端限制删除(出队)
2024-10-23 16:33:12
523
原创 MATLAB神经网络实验-非线性逼近
一、导入数据filename = 'data';[data] = xlsread(filename,'A2:B72');p = data( :,1);t = data( :,2);%保存数据到matlab的工作路径里面save p.mat;save t.mat; %赋值给输出p和输入t p=p';t=t'; 年龄(天)重量(mg)15.0021.6615.0022.7515.0022.3018.0031.25860.00246.7
2021-12-20 19:25:40
1295
原创 李宏毅机器学习-卷积神经网络
1.为什么用CNN处理图像CNN做的事就是简化neural network的架构,用比较少的参数来做影像处理这件事。所以CNN比一般的DNN还要简单的。为什么可以用比较少的参数可以来做影像处理这件事情在图片处理中,大部分的pattern其实要比整张的image还要小,对一个neural来说,假设它要知道一个image里面有没有某一个pattern出现,它其实是不需要看整张image,它只要看image的一小部分。样的pattern在image里面,可能会出现在image不同的部分,但是代表的是同样
2021-08-28 23:43:43
635
原创 李宏毅机器学习-神经网络设计(2021版)
1.局部最小值和鞍点local minima:局部最小值saddle point:鞍点它们统称为critical point(临界点)。如何知道是哪个?举例这是saddle point。saddle point比local minima更加常见。2.批次(Batch)与动量(Momentum)左边没有用batch,右边是使用了batch的。左边的更新所要花的时间更长,结果更加稳定;右边花费的时间短,但是有噪声。小的batch size 有更好的表现,大的batch siz
2021-08-26 01:34:03
350
原创 李宏毅机器学习-深度学习介绍
1.深度学习的三个步骤2.神经网络神经网络中有很多不同的连接方式,因此会产生不同的网络结构。神经网络的节点,类似于人脑的神经元。我们有很多逻辑回归函数,每个逻辑回归都有自己的权重和自己的偏差,这些权重和偏差就是参数。完全连接前馈神经网络...
2021-08-22 22:09:45
224
原创 李宏毅机器学习——回归
先给出回归的实际应用例子:股票预测(stock market forecast)自动驾驶(self-driving car)推荐系统(recommendation)接下来,我们将通过宝可梦进化的例子,来学习认识回归。1.宝可梦进化的例子setp1:选择模型——线性模型b:表示偏移量xi:表示各种特征,如生命值、体重、身高…wi:表示各种特征的权重set2:找出最好的function——损失函数首先,b和w都是未知数,所以在这个函数集合中,包含了成千上万个函数,那么我们
2021-08-17 21:24:07
291
原创 task01-机器学习介绍
task01-机器学习介绍1.人工智能、机器学习、深度学习关系人工是智能实现目标,而机器学习是想要实现目标的手段,而深度学习就是就是学习的其中一种方法。2.谈谈机器智能机器智能不能像生物的本能,就像李宏毅老师举的例子,河狸堵水坝,当条件为听到水流声它就会去堵水坝。那么如果用一个人为的办法来播放流水声,比如在水泥墙里,河狸就在水泥墙上面放了很多的树枝;如果你把声音的来源放到地上,河狸就会用树枝把它盖住直到听不见为止,这就是生物的本能。如果只是单纯的if嵌套,那不叫机器智能,只是按照人为的规则去运行
2021-08-16 15:57:50
202
原创 基于AT89C52单片机的数字电压表设计
一、系统组成及工作原理1.1 系统组成该基于AT89C52单片机的数字电压表设计由AT89C51单片机,ADC0809芯片(A/D转换器),LED数码管显示电路以及蜂鸣器电路等几部分组成。系统结构图 单片机AT89C52芯片 AT89C52是一个低电压,高性能CMOS8位单片机,片内含8kbytes的可反复擦写的Flash只读程序存储器和256bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令...
2021-06-19 10:55:43
5205
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人