自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(83)
  • 收藏
  • 关注

原创 Linux字符设备驱动中同类型多设备节点的创建---一个驱动程序支持多个同类型设备

本期分享的内容相对比较简单,那就是同时注册多个同类型的字符设备驱动,那么这样我们就可以同时支持多个同类型的设备了!本期的分享相对来讲比较简单,就是需要将以前的设备修改为数组,那么在驱动程序的入口和出口函数中都需要进行着重修改,也就是循环创建和删除!

2024-02-25 21:00:16 759

原创 Linux字符设备驱动中itcol的使用

在Linux字符设备驱动中,ioctl是必须掌握一个函数,其实在软件层面它就是一个函数,但是我愿意称之为强大的硬件控制器!在应用中,让我深刻感受到了ioctl的魅力所在,既能够在软件层面实现应用层和驱动层的数据交互,也能够搭配一定的逻辑对硬件进行控制!本期分享的主要是ioctl在驱动程序中的使用,这是一个非常重要的函数,希望各位小伙伴们不仅能使用,也能够理解其底层原理!

2024-02-25 20:35:01 490

原创 字符设备驱动的代码优化(container_of)、全局结构体和全局指针的应用

本质就是我们的确实定义了struct mychar_dev gmydev这个实体,并且我们使用gmydev.mydev将其加入内核的设备链表中,通过struct inode *pnode可以找到它,因此就有了在mychar_open函数中使用container_of函数,结合已经知道的pnode->i_cdev设备节点地址就能够找到定义的结构体。希望大家能够认真阅读我个人的浅显理解,如果能理解我相信大家都会恍然大悟!

2024-02-23 15:50:40 383 1

原创 内核驱动层与应用层的数据交互copy_to_usr和copy_from_usr

希望大家在条件允许的情况下还是需要亲自动手验证一下,这些比较基础的驱动程序代码不需要依赖硬件,所以一定得亲手验证一下!不懂的小伙伴可以评论区留言,博主知无不言,言无不尽!

2024-02-23 12:17:29 499

原创 字符设备驱动基本框架详解、注册设备号、添加字符设备、以及注销删除设备

时隔很久,我又来开始更新驱动模块的学习了,希望在我学习的过程中,能够把自己遇到的问题和干货分享给大家,如果遇到问题,恳请大家评论区及时订正!本文主要分享的分两个部分,一个是驱动程序,另一个是应用程序,主要介绍驱动程序的基本框架。

2024-02-23 12:03:08 321

原创 安防监控项目---mjpeg-streamer视频图像显示(实时视频流实现)

书接上期,我们已经实现了许多功能了,但是对于视频流的实时上传还未实现,本期主要分享的就是如何具体实现网页实时显示摄像头采集到的视频,从而实现安防中监控的功能,这个功能完成后呢,就只剩下一个功能需求了,那就是GPRS模块,能够实现危险报警的功能,也能够打电话警报;只有这些功能完全实现,我们才能完整的结束这个项目!下面来带大家看一下视频流信息究竟是如何一步步上传到网页的呢?

2023-11-03 06:00:00 1258

原创 安防监控项目---Cortex-A9和zigbee传感器数据上传至网页

书接上期,我们大概来梳理一下,已经完成的需求有哪些了,从html下发指令控制Cortex-A9平台硬件,其中主要实现的有控制LED,蜂鸣器,LED模拟数码管,这些是已经实现的硬件设备,实现了html和Cortex-A9平台的通信,是不是主要通过boa服务器呢,仔细想一下,是不是主要依赖于boa服务器搭载了CGI接口呢,那在CGI中我们进行了CGI编程,使用接口库函数进行网页(form表单)数据的接收,并且呢使用消息队列进行应用层的进程间通信,进而主框架进行客户端请求的处理,判断消息类型,唤醒相应等待线程!

2023-11-02 08:00:00 735

原创 安防监控项目---web网页通过A9控制Zigbee终端节点的风扇

书接上期,我们可以看一下前面的功能设计的部分,网页端的控制还有一个,那就是通过网页来控制zigbee上的风扇节点,这部分的工作量是相当大的,既要实现HTML发送控制命令到A9平台进行接收,又要实现A9平台串口通信控制zigbee协调器,通过zigbee协调器控制zigbee终端节点(这一步是建立在zigbee协调器和终端节点调试好的基础上的);最终呢实现网页控制zigbee节点,这也实现了无线控制!

2023-11-01 08:00:00 437

原创 安防监控项目---web网页下发命令控制蜂鸣器(蜂鸣器响起来)

书接上期,和大家分享了web下发命令控制led之后呢,相信大家已经迫不及待的想要试一下是不是蜂鸣器也能响起来呢!哈哈哈,别说是你们了,我也有点迫不及待,其实led的控制中,我们把框架已经解释的非常清楚了,所以接下来要做的事情就变得非常简单了,只需要怎么办呢,就是往框架里面添加具体的蜂鸣器控制内容;下面我们具体来看看!至此呢蜂鸣器的控制完结了,是不是感觉非常简单呢,这个就是照猫画虎了;可以说没啥技术含量,但是其中的细节还是值得大家注意的!最后呢希望大家能够遇到困难后,经过折腾后把这个操作完成!

2023-10-31 12:47:54 329

原创 安防监控项目---web点灯(网页发送命令控制A9的led)

书接上期,和大家分享的是web点灯,哈哈哈,谈论起点灯这个词,这么久以来我已然已经成长为一名合格的点灯大师了;点灯是一个很好的测试办法,不仅要去测试开发板是否正常,也要去测试网页是否能够顺利下发数据,接下俩让我们仔细来看一下这个过程!!!好啦,本期的分享大概就到这里结束了,是不是点个灯这个操作还是具有一定的难度的呢,虽然步骤过程很多,但是每一步都需要我们谨小慎微,把每一步做好,最后自然就能把灯点亮;

2023-10-31 08:00:00 612 1

原创 安防监控项目---CGI接口的移植和使用

书接上期,上期与大家分享的是boa服务器的移植,那么几天要和大家介绍的呢是一款接口,哈哈哈,用起来也是有点难度的,但是,大家要知道,有些东西虽然很高深,但是只要我们会使用能够使用最基本的就可以;这也间接证明了我们嵌入式设计的一个特点,那就是够用就行,但对于学习者来说,肯定是懂得越多越好,那我认为呢,在设计时,当黔驴技穷时,做到够用就行是OK的,但是如果说作为学习者而言,肯定是不够滴!所以学无止境呀,哈哈哈哈~,下面看下CGI!

2023-10-30 13:00:10 396

原创 安防监控项目---boa服务器的移植

书接上期,在配置完成环境后,那么接下来呢还得移植两个非常关键的东西,一个呢时boa服务器,另一个呢时cgi接口,boa服务器能够使得我们更好的与web进行交互,cgi接口能够更好的实现c语言和html语言的交互;两者在网页和A9平台交互之间起着至关重要的作用;接下来呢,看我手把手教学,哈哈哈哈,大家好好学哦!首先要清楚boa是一个web服务器,它其实就是用来实现网页和终端通信的一段软件代码;

2023-10-28 11:08:37 1151

原创 安防监控项目---环境配置

书接上期,在这里呢还是需要强调一下项目环境的重要性,不论是在本次项目开发或者是在未来的项目开发中移植是非常重要的一项内容,作为开发者而言,需要考虑移植的平台是否适配,硬件平台是否兼容软件,因此不仅需要选择有用的技术栈,而且得选择移植性好的接口和平台,这样是不是也可以能最大化的做到一劳永逸,哈哈哈!

2023-10-27 10:31:17 161

原创 安防监控项目---通信结构体设计

书接上次项目概要,本期和大家主要分享的此项目中通信结构体的设计,那么这部分是非常重要的,可以说,在了解清楚了项目需求之后,接下来软件设计中通信结构体的设计是非常重要的一环!本期只介绍关于结构体的设计,后期各个模块的具体实现中再带大家来看具体结构体在软件中的巧妙用处!

2023-10-26 18:13:49 241 3

原创 安防监控项目---概要

各位小伙伴,在蛰伏了将近有半年的时间又要和大家分享新的知识了,这次和大家分享的是一个项目,因此呢我准备分项目阶段去和大家分享,希望大家都能够在每一期的分享中有所收获;想要学习的小伙伴可以关注私信我,项目资料都是可以和大家一起分享的!每个项目的用户最终都需要去切身的体验项目的产品,因此纵使技术千万种 ,能适应客户的需求才是王道,记住,适应客户的需求才是王道;在项目设计中其实最重要的一部分就是确定好用户的需求,主要是为了前中后期避免走一些弯路;

2023-10-26 11:29:13 260

原创 嵌入式web项目框架解读

项目框架敬上!!!本期主要分享的是使用网页控制硬件的流程,主要是梳理了整个项目的基本框架,项目内容相对来讲比较单一,后续会逐步添加功能;

2023-09-20 14:31:27 368

原创 linux内核模块编译方法之模块编程详解

本期主要分享的是关于驱动开发过程中一些基础必备的知识点,除过基本的知识点,还有一些常用操作,掌握了这些能够帮助我们提升工作效率,希望大家都联练习起来,学以致用!!!

2023-09-11 14:30:46 390

原创 linux内核模块编译方法详解

本期和大家主要分享的是关于驱动开发中内核模块的编译方法(向内核中增加新功能),主要分为两种方法,静态加载法和动态加载法,两种方法分别有它们各自的优缺点,接下来一起看看吧!提示:以下是本篇文章正文内容,下面案例可供参考本期主要分享的是两种非常重要的内核加载方法,每种方法都有各自的优缺点,在开发中,经常使用动态加载法来提高开发效率;不仅给出了两种加载新内核功能的方法,并且给出了内核驱动的编写基本框架,希望小伙伴们认真掌握理解哦!!!

2023-09-10 10:39:57 1307

原创 IIC协议原理及IIC通信的具体实现(S3C2440裸机开发)

本期和大家主要分享的是一种非常常见并且非常常用的的一种协议------IIC通信协议;既然能称为一种协议,那么一定是通信中人们需要去遵守的一种通信标准,接下来让我们细细来了解一下!本期和大家分享的是IIC协议以及IIC编程,将数据写入板载的EEPROM中,再从EEPROM中读出来,实现一个IIC协议的demo,希望通过这个demo各位小伙伴们能够掌握IIC通信的全过程。

2023-07-31 23:18:05 495

原创 ADC模数转换电路的编程使用(S3C2440裸机开发)

功能: 能够将模拟信号转换成数字信号表示值的电路量程位数 精度–》数字信号改变1对应多大的模拟信号变化精度=量程/2的位数次方速率(转换速率)误差2440的adc是内部电路;量程为0-3.3V,位数为10,转换速率最高位500k(工作在2.5M);

2023-07-31 23:17:53 633

原创 WDT看门狗电路的喂狗操作以及定时器功能的实现(S3C2440裸机开发)

本期主要分享的内容是S3C2440平台下的看门狗定时器,它的作用主要是用于当由于噪声和出现系统错误引起的故障时,看门狗定时器会将电路复位;接下来带大家认真学习一下看门狗定时器;本期和大家分享的是WDT电路下实现的喂狗操作以及定时器的功能,喂狗操作能够使得系统正常进行工作,定时器功能依旧是用到了中断的知识点,因此相对来说还是比较简单的,希望各位小伙伴们加油理解!

2023-07-31 23:17:35 556

原创 PWM定时器精准定时实现led闪烁(S3C2440裸机开发)

上期和大家分享了使用PWM定时器输出周期方波驱动蜂鸣器,那么本期分享的内容是使用PWM定时器实现定时器的功能,有了上期的基础,这期分享的内容大家理解起来应该非常easy,接下来看一下吧!本期主要分享的是pwm定时器的功能,能够实现自主精确定时,希小伙伴们和上期分享的内容进行对比,掌握PWM定时器的相关知识;

2023-07-26 08:33:54 246

原创 PWM定时器产生周期方波驱动蜂鸣器(S3C2440裸机开发)

本期和大家来分享一下S3C2440平台下PWM的使用原理,以及PWM控制板子蜂鸣器的具体过程;建立一个从认识PWM信号到对PWM信号使用的全过程,希望各位小伙伴们加油哦!本期主要分享的使用PWM定时器输出周期方波以此来驱动板载的蜂鸣器,主要具体介绍了输出PWM方波的整个详细流程,希望各位小伙伴们能够认真掌握这个流程,必要的时候可以用示波器对信号进行捕捉,来验证自己设置的信号究竟是否正确;

2023-07-25 08:33:18 805 2

原创 S3C2440中断处理机制及具体实现(裸机开发)

本期主要分享的是中断处理机制,具体分析S3C2440开发板的中断处理流程,通过此流程来学习中断处理的整个过程;中断是一种资源,更是一种特殊的业务处理方法,在什么时候使用中断,中断处理函数中怎样处理都是需要程序编写者去仔细斟酌的;本期和大家主要分享的是S3C2440裸机开发中中断处理机制以及中断处理函数的具体编写过程,本其内容可以和启动代码对照结合理解,这样就能够理解启动代码中一些中断处理原理,希望小伙伴们能够在练习后得到深刻理解!

2023-07-24 12:15:27 500

原创 S3C2440的串口通信(UART)

UART是通用异步收发器,它可以用作中断和主机之间的通信,因此得到了极其广泛的应用;本期主要分享的是关于S3C2440的UART编程以及UART的硬件相关知识,它是一种非常常用的通信方式,有了这个串口通信方式,在后续学习中就可以对程序进行调试;希望小伙伴们掌握好UART的编程流程,加油哦!

2023-07-19 11:50:19 549

原创 S3C2440使用GPIO输入功能控制按键

由于上期分享的使用GPIO去控制引脚输出模式点亮LED,那么本期主要介绍一下使用GPIO设置为输入模式,用到的硬件有板载的按键;开发环境也是依赖于S3C2440开发板;本期主要介绍了GPIO的输入功能的模式配置以及使用方法,当开关按下的时候能够观察到的现象是灯会被点亮,当按键松开的时候灯会熄灭;

2023-07-18 12:10:54 265

原创 S3C2440点亮LED(裸机开发)

本期和大家主要分享的是使用S3C2440开发板点亮一个LED灯,可能大家拿到开发板之后做的第一件事情都是点灯,这是为什么呢?因为点灯这件事情不仅能够检验是否对GPIO接口有一个良好的应用,而且更重要的是能够检验开发环境是否正常,硬件电路,下载器是否能够正常工作;开发环境:S3C2440开发板开发工具:jlink+keil需要做的事情是:编写程序控制SOC内部电路,按照外接电路要求进行信号的发送或者接收;GPIO:可编程的输入输出引脚。

2023-07-16 08:49:04 1664

原创 哈希表(hashtable)的数据插入、查找和遍历

本期主要和大家介绍一下哈希算法,这里主要给出哈希算法的实现方法;本期主要分享的是数据插入哈希表,在哈希表中查找数据,并且遍历哈希表的操作,哈希表是一种散列存储结构,在嵌入式应用中比较广泛,希望各位小伙伴们学起来,练起来,一起加油!

2023-07-15 19:50:43 1089

原创 二叉树及完全二叉树的前序遍历、中序遍历、后序遍历及层序遍历

本期主要分享的是树形结构的基本概念,树型结构中完全二叉树的创建以及二叉树的一些基本操作,其中主要包括了二叉树的创建,销毁以及二叉树的前序遍历中序遍历及后序遍历,主要用到的思想的函数递归思想,希望小伙伴们一定要注意基础知识的重要性,不能急于求成;加油小伙伴们!

2023-06-29 08:14:54 4870

原创 栈、队列和表数据结构特点的实现

本期和大家主要分享的栈的基本概念;在学习了顺序表和链式表的基础上,将顺序表和链式表的数据结构套用在栈中,以此实现了顺序栈和链式栈,是两种不同方式实现的栈的这种数据结构;顺序栈的缺点是插入元素的个数是有限的,但是链式栈继承了链表的优势,在理论上来讲它的数据存储个数是无限的(只要系统空间够用);本期的分享就到这里结束啦,希望小伙伴们练习起来哦!

2023-06-27 08:06:35 141

原创 ldr、str、ldm、stm、msr、mrs、swi、svc、mrc等ARM指令详解及具体应用

本期和大家主要分享的是ldr、str、ldm、stm、msr、mrs、swi、svc、mrc等ARM指令的具体介绍,对这些基础概念掌握后,接下来就能够读懂基本的2440A的启动代码了,也有助于自己去独立的书写启动代码,依次更好的实现自己想要实现的功能,更好的理解正式启动代码设计流程的巧妙之处,对CPU处理事务的流程以及处理细节会有更深的认识;

2023-06-19 06:55:17 5192 1

原创 数据结构中链式队列和顺序队列的实现

本期和大家主要分享的是数据结构中的队列,队列是一种常见的数据结构,那么它的最大特点就是先进先出(跟平时排队买早点一样,先排队的人会先买完然后走);本期主要分享的是顺序队列和链式队列,其实内容上来说并不是非常难,只要认真还是可以将其融汇贯通的,所以各位小伙伴们一定得多练习,如果手头有使用到链表存储的项目就抓紧练习起来,体验和感受队列这种数据结构的快捷;加油,小伙伴们!

2023-06-18 09:08:49 273

原创 mov、mvn、cmp等ARM汇编指令集数据处理类指令(三星2440A)

本期和大家主要分享的是ARM指令集,也就是通常所说的汇编;汇编是一门机器语言,比起c语言而言,它更加偏向于底层一点,更加贴切CPU执行任务的流程;并且呢汇编代码是整个ARM代码执行流程中必不可少的一部分;比如通常芯片的启动代码都是运用使用汇编语言所写的;汇编语言的特点是在起初学习时比较晦涩,但是在有了一定的基础之后再去反观像启动代码这样的文件时还是可以看得懂的,为了更好的了解CPU的任务调度以及它执行代码的逻辑顺序,学习汇编语言是至关重要的;接下来我们来看看吧!

2023-06-16 11:09:02 1073

原创 中断处理流程以及程序状态寄存器CPSR的本质

在前面已经介绍了通用寄存器r0-r14,其中包括r13(SP)堆栈指针寄存器(比如c语言的执行,子函数的调用都会用到堆栈指针),r14(LR)程序链接寄存器保存子程序的返回地址以及保存异常发生时PC-4(当前执行的指令地址,执行完异常处理后继续回来处理)的值;实现异常等操作后程序的返回;PC(R15)是程序计数器,用来存放即将要执行程序的地址;功能寄存器有CPSR和SPSR,CPSR是当前程序状态寄存器,SPSR是保存程序状态寄存器,所以spsr能够保存cpsr中的值;有了这些概念以后,接下来看一下异常发生

2023-06-15 09:20:51 2618

原创 S3C2440A的ARM工作模式以及寄存器种类

本期和大家主要分享的是ARM工作模式以及寄存器种类,不同系列的ARM的工作模式以及寄存器的种类大同小异,所以针对于S3C2440A,一定得通过这一种ARM能够去分析其他的ARM架构,这就要求我们对S3C2440A认真剖析并且进行原理上的理解而不是一味的背诵记忆,包括对特殊寄存器的理解;那么接下来看一下它的工作模式和寄存器的种类吧!

2023-06-13 07:34:44 325

原创 初识s3c2440A之ARM体系架构入门linux硬件

如果大家在前期学习了c语言,并且具备了一定的c语言功底,且学习了shell,文件IO,进程线程,网络编程、数据库以及数据结构等基本的嵌入式软件的基础知识,以及做过一定项目的前提下,可以进入到本章内容的学习,那么接下来我将主要分享的是嵌入硬件部分的学习;各位同学可以跟着每期的分享一步步来,那么最终达到我们想要的高度并不是一件非常难的事情;

2023-06-12 14:07:37 1505

原创 数据结构中双向链表(doublist)的实现以及排序

链表的优点:双向链表可以克服单链表查找链表中某结点不方便的缺点。既然它有单链表没有的优点,所以它在一些操作的时候也需要同时注意前驱和后继;本期的分享就到这里结束啦,总结一下,双向链表也是必须掌握的一种数据结构,是闭着眼睛都要能写出来的一种数据结构,所以必须多练习,多思考;

2023-06-08 18:05:01 192

原创 数据结构中链表的实现以及排序

链表的优点:原则上只要系统的内存足够大,那么链表能够进行无限存储;而且存一个申请一个,不会提前占用空间,它是一种空间上不连续的存储方式;本期的分享就到这里结束啦,总结一下,链表是必须掌握的一种数据结构,是闭着眼睛都要能写出来的一种数据结构,所以必须多练习,多思考;

2023-06-06 23:49:13 1657 1

原创 数据结构中的顺序表的实现

本期主要分享了数据结构的总体章程以及数据结构中顺序表的实现过程,那么给出了顺序存储的两种形式(定义结构体不同),当然,萝卜白菜各有所爱,我比较喜欢第一种,操作起来比较方便,因为它在结构体中直接存储了顺序表的总个数,显得整个顺序表具有整体性;但是两种形式在本质上气势上是一样的,都是顺序表且本质完全一致;小伙伴们学起来,加油!

2023-06-05 21:15:10 851

原创 select、poll、epoll、多线程在多任务并发设计中的应用

这三个的运行结果大家可以参见前几期分享的《使用select实现TCP并发服务器模型》一文,运行结果是完全一致的,那么到这里呢,tcp并发服务器模型在目前已经给大家介绍了四个了,所以大家可以用这个模型着手去做其他服务器多任务并发的设计,以此实现更加符合人们需求的产品!

2023-06-03 10:35:04 869

S3C2440点亮LED(裸机开发)

点亮世界的一盏灯

2023-07-18

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除