![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
驱动
文章平均质量分 74
魔动山霸
欢迎多多交流嵌入式
展开
-
树莓派数据手册(BCM2835)GPIO剖析
树莓派简介Raspberry Pi(中文名为“树莓派”,简写为RPi,(或者RasPi / RPI) [1] 是为学习计算机编程教育而设计),只有信用卡大小的微型电脑,其系统基于Linux。 [2] 随着Windows 10 IoT的发布,我们也将可以用上运行Windows的树莓派。 [3]自问世以来,受众多计算机发烧友和创客的追捧,曾经一“派”难求。别看其外表“娇小”,内“芯”却很强大,视频、音频等功能通通皆有,可谓是“麻雀虽小,五脏俱全”。 [4]1.资源介绍BCM2835包含下面的外围原创 2021-11-23 11:01:29 · 1874 阅读 · 1 评论 -
Linux下串口的编程使用
Linux发烧友Linux下串口的使用串口对应的API1.引脚号的设置2.打开串口3.串口的设置4.向串口发送一个字符5.向串口接收一个字符6.关闭串口Linux下串口的使用一般我们使用串口有两种方式,一是自己编写驱动程序通过操作寄存器的方式,然后编译进Linux中供应用层调用,二是直接使用Linux提供的设备系统来进行编程,绝大多数的人都采取第二种方式,,他是基于TTY的驱动程序框架来进行编程串口对应的API在Linux系统中,操作设备的统一接口就是:open/ioctl/read/write。原创 2021-11-14 19:09:22 · 2243 阅读 · 7 评论 -
内核的移植
环境介绍1、 kernel环境: linux-3.4.1102、 ext4文件系统源码包3、 交叉编译器 arm-linux-4.3.2二、修改编译内核.解压 linux-3.4.110源码包,可以从Linux官网上下载,对应的是你自己内核的版本修改内核根目录下的makefile文件,修改成下面信息修改板子的支持复制原内核(kernel-3.4.39) arch/arm 下的(palt-s5p6818 和 mach-s5p6818)两个文件夹到新内核(kernel-3.4.110)对原创 2021-11-11 15:48:15 · 1821 阅读 · 0 评论 -
嵌入式系统裸机程序开发与调试
文章目录????1.GUN工具的使用????1.1符号显示器nm????1.2objdump:信息查看器????1.3objcopy:段剪辑器⚡️2.程序编译过程♐2.1程序链接过程2.2指定头文件????2.3 指定库文件⌛3.裸机开发流程????1.GUN工具的使用GUN是一个开源的组织,给我们带来了很多开源软件和编译工具,如我们常用的C编译器 :gcc预处理器 :cppC++编译器 g++汇编器 :as链接器 :ld二进制工具集 :objcopy二进制工具集的含义:他们专门用于控制原创 2021-11-08 16:23:49 · 2681 阅读 · 3 评论 -
嵌入式系统的开发概述(三星s5p6818系统为例)
文章目录♐1.嵌入式系统的组成☕2.S5p6818系统资源介绍????3.s5p6818试验仪????4.s5p6818寻址空间♐1.嵌入式系统的组成==嵌入式系统可以分为软件层和硬件层软件层又可以分为应用层,os层,驱动层应用层:应用程序/文件系统,交互界面等os层:操作系统/windows,Linux等,嵌入式系统多为Linux驱动层:设备驱动,HAL,BSP硬件层硬件层可以理解为都是一些实体的硬件设备几乎所有的嵌入式系统都会有处理器,MMU./Cache虚拟内存设备管理,和内存,片上原创 2021-11-08 10:13:07 · 2459 阅读 · 7 评论 -
Framebuffer编程总结,希望人人都能学会
????Linux发烧友????0.FrameBuffer的引入☕1.LCD如何显示的原理⌛2.如何修改LCD指定的像素呢♐3.获取framebuffer基地址????4.像素绝对地址的计算????5.像素的颜色的表示????6,LCD参数的获取????7.设备的打开????8.framebuffer完整代码演示????0.FrameBuffer的引入FrameBuffer是出现在 2.2.xx 内核当中的一种驱动程序接口。在Linux系统中通过Framebuffer驱动程序来控制LCD。Frame是帧原创 2021-11-02 22:24:48 · 2974 阅读 · 5 评论 -
Linux下的内核线程threaded irq机制分析与应用
⭐Linux发烧友????threaded irq的引入☁️使用哪一个中断函数⌛内核机制实现♐编程要点分析????完整驱动代码演示????基础应用层代码演示????threaded irq的引入我们知道,工作队列可以用来处理中断的一些耗时的事情,但是他又一个缺点,就是如果有多个事件同时放入工作队列中,如果前面的事件处理得太久,那么就会影响到后面的事件的执行,因为内核线程事一个个依次执行的,如果一个事件真的非常耗时间,那么我们可以用 threaded irq来处理,大概意思就是中断上半部不变,中断的下半原创 2021-11-02 17:57:49 · 1099 阅读 · 6 评论 -
Linux内核下的工作队列workqueue应用与扩展
这里写自定义目录标题⌚1.工作队列的引入????2.如何使用工作队列????2.1把一个函数放入工作队列中????2.2工作队列常用的函数合集????开发流程讲解????完整驱动代码演示⌚1.工作队列的引入我们平常在使用定时器或者下半部tasklet时都是通过中断的上下文来执行,我们知道中断是无法休眠的,如果休眠了就没有人来调用相应的函数了。如果一个事件非常的耗时,会让系统变得很卡,这时可以通过内核线程来解决,因为线程可以休眠,在内核中线程的创建可以使用工作队列(workqueue),当有一个你想要执行原创 2021-11-02 16:56:01 · 619 阅读 · 8 评论 -
Linux内核中断(上半部和下半部tasklet)
文章目录????中断的概念????中断下半部tasklet????tasklet_struct结构体的定义????使用tasklet⌛销毁tasklet(下半部)⚡️实战篇:重点代码分析♐终极篇: 完整代码演示????中断的概念中断是整个系统的核心,用来事件的切换或者响应。在Linux内核下又分为上半部中断和下半部中断,他们都遵循以下两个规律。① 不能嵌套;② 越快越好。在上半部处理紧急的事情,在上半部的处理过程中,中断是被禁止的;在下半部处理耗时的事情,在下半部的处理过程中,中断是使能的。原创 2021-11-02 15:50:47 · 1345 阅读 · 3 评论 -
Linux内核下的定时器的应用与分析
定时器的概念从大众的角度,定时器就是一个闹钟,到时间了就会工作,从程序员的角度,定一个时间,到时间了就会调用你写的函数事件定时器在内核的实现机制所谓实现机制,我觉得就是代码的追踪,一步一步的追踪,这其中大部分都是结构体的封装。逻辑上的定时器是正常的中断,即发生硬件中断,会去查看有没有软中断要处理,定时器通过软中断来实现,属于TIMER_SOFTIRQ软中断void __init init_timers(void){ init_timer_cpus(); init_timer_stats();原创 2021-11-02 14:31:07 · 756 阅读 · 6 评论 -
Linux内核下的异步通知(信号,platform_driver)
文章目录功能机制工作流程具体分析设备树如何编写确定引脚修改设备树驱动程序的编写确定入口,出口函数probe里面做得事中断函数里面做什么异步通知的使用方法环形缓冲区的定义remove函数里面做什么应用层的编写驱动程序总体代码编写功能机制功能:Linux开发板按下按键应用层程序将会调用产生的信号并执行相对应的函数知识点:内核,用户的信号量,进程,文件io,platform_driver,环形缓冲区,中断,等待队列,poll机制,设备树工作流程通过更改设备树来改变相对应的io引脚的作用,如更改按键所对原创 2021-11-02 11:34:47 · 366 阅读 · 2 评论 -
⭐❤️浅谈Linux用户空间与内核空间的理解❤️⭐
Linux-yyds为什么要分用户空间和内核空间优点内核空间与用户空间的数据交互两种空间的内存分配为什么要分用户空间和内核空间我的脑子里一直有这样一个问题,为什么要区分内核空间和用户空间呢,本质上不都是两套代码吗,还要搞得这么麻烦,还有最主要的一个问题问题,内核空间和用户空间的区分在哪里,于是我带着这个问题去了解了一下,顺便记录下来。优点用户空间的崩溃不会造成内核空间的崩溃,每个进程之间都有自己特定的地址和数据空间,并且相互独立,提高系统运行的稳定性统一接口,让用户不需要关注底层如何实现,只需要原创 2021-10-25 11:17:37 · 297 阅读 · 1 评论 -
⭐❤️如何安装ARM交叉编译工具链❤️⭐
下载arm-linux-gcc-4.3.2.tar.bz2的压缩包sudo mkdir /usr/local/arm/sudo tar jxvf arm-linux-gcc-4.3.2.tar.bz2 -C /usr/local/arm打开配置文件添加环境变量sudo vi ~/.bashrc在配置文件里面添加export PATH=/usr/local/arm/4.3.2/bin:$PATH更新配置文件 source ~/.bashrc使用 #arm-linux-..原创 2021-10-18 10:32:45 · 415 阅读 · 3 评论 -
❤️⭐万字长文玩转总线设备驱动platform_device与platform_driver⭐❤️
文章目录前言一、Linux总线的重要函数1.1注册与销毁函数1.2获得资源1.3获得中断1.4通过名字获得资源或者中断1.5同时注册多个dev二、总线设备里面含有什么结构体?1.1从platform_device 开始1.1.2 struct resource资源存储1.2与platform_driver结合1.3platform_driver与platform_device 如何进行关联1.3.1比对规则1.4 匹配成功后三.代码示范3.1平台设备案例3.2资源设备案例前言总线设备驱动的引入是主要解原创 2021-10-10 17:17:56 · 364 阅读 · 4 评论 -
驱动之路之踩坑日记-dht11温湿度传感器
在我们用到一些延时时,精确到的时微秒级的时候,一条执行语句都可能影响到你的这个精确的时间,因为执行一条语句也是需要时间的,比如我们在开发dht11时,必须要在那个时间点之内,比如dht11拉高80us,等待80us,如果加多了几条语句,那么即使我们udealy(80);那么可能延时的时90us,那么就不准确了,所以我们在执行微妙级,纳秒级的语句时,不要加打印函数。...原创 2021-09-11 14:05:09 · 546 阅读 · 0 评论 -
❤️imx6ull按键的唤醒与休眠升级版,通过socket与外界通信❤️
运行效果通过按键控制灯的亮灭,并通过网络编程把按键的状态传到外界,驱动代码运用到了中断,还有唤醒与休眠机制,当没有数据产生时,app会进入到休眠状态,直到按键产生了数据,这个时候就会唤醒app。可减少cpu的工作效率驱动代码#include <linux/module.h>#include <linux/fs.h>#include <linux/errno.h>#include <linux/miscdevice.h>#include &l原创 2021-09-10 13:15:57 · 445 阅读 · 0 评论 -
驱动之路学习笔记-IMX6ULL的启动流程
1.芯片手册讲解IMX6ULL芯片内部有一个boot ROM,上电后boot ROM上的程序就会运行。它会根据BOOT_MODE[1:0]的值,以及eFUSE或GPIO的值决定后续的启动流程。注:eFUSE即熔丝,只能烧写一次,一般正式发布产品时烧写最终值;平时调试时通过GPIO来设置开发板的启动方式。boot ROM上的程序功能强大,可以从USB口或串口下载程序并把它烧写到Flash等设备上,也可以从SD卡或EMMC、Flash等设备上读出程序、运行程序。boot ROM上的程序功能强大,可以从U原创 2021-09-06 22:26:53 · 1136 阅读 · 0 评论 -
⭐❤️万字长文带你了解Linux最核心的部分--中断❤️⭐
系列文章目录文章目录系列文章目录前言一、Linux中断发生的条件二、Linux内核对中断如何处理1.中断的处理流程2.异常向量表3.Linux内核对中断如何处理3.1中断处理的核心-栈3.2.中断在Linux中的演进3.3使用tasklet处理下半部3.4中断上半部和下半部的关系中断下半部使用work_queue(工作队列)总结![请添加图片描述](https://img-blog.csdnimg.cn/6ddb65baba224123ae6d133daed10b2e.gif)前言中断是指原创 2021-09-06 00:03:59 · 596 阅读 · 2 评论 -
❤️你见过Linux下内核的应用程序hellowolrd吗?你说你会用c语言写hellowolrd?我不信❤️
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、pandas是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代码原创 2021-08-31 17:36:56 · 3781 阅读 · 10 评论