文章目录前言一、修改设备树文件1.1 添加pinctrl节点1.2 添加beep设备节点1.3 检查beep对应的pin脚是否被占用1.4 编译设备树1.5 将新的设备树文件烧录到开发板中1.6 重启后检查beep节点是否存在二、详细驱动程序2.1 驱动代码2.2 驱动Makefile代码2.3 编译三、详细应用测试代码3.1 应用代码3.2 应用程序编译四、测试4.1 拷贝beep.ko4.2
转载
2024-06-21 06:28:33
137阅读
一 回忆昨天的昨天的内容
作业:
ROM:只读存储器
PROM:只能写入一次
EPROM:光可擦除
EEPROM: 电可擦除
norfalsh:片内执行
nandflash:片内执行,速度快
EMMC二. 移植Linux操作系统
2.1 烧录uboot
mkdir porting
cp ubootpak.bin ./2.2 将Uboot烧录到TF卡中
2.2.1
转载
2024-03-26 08:39:40
454阅读
进程几种状态:就绪态(运行态)、占有态、等待态(可中断,不可中断)、停止态、僵尸态。驱动程序无法立刻满足用户层的请求时如何处理:驱动程序应该(缺省的)进行阻塞进程,使其进入睡眠直到请求可以满足为止。阻塞型驱动操作:在阻塞型操作的驱动中,应用层调用read方法时,如果驱动中的数据不足或是没有数据可读,进程阻塞;当数据达到要求时,进程被唤醒并将数据返回给用户层。当应用层调用write的时候,驱动程序没
转载
2024-07-15 15:33:51
43阅读
1案例1:Linux基本防护措施1.1问题本案例要求练习Linux系统基本防护措施,完成以下任务:修改用户zhangsan的账号属性,设置为2019-12-31日失效(禁止登陆)临时锁定用户lisi账户,使其无法登陆,验证效果后解除锁定修改tty终端提示,使得登陆前看到的第一行文本为“Windows Server 2012 Enterprise R2”,第二行文本为“NT 6.2 Hybrid”锁
转载
2024-10-13 17:18:34
20阅读
存储器按在计算机中的作用分类主存储器
RAM 随机存储器
静态 RAM
触发器保存高低电平
根据是否具有闩锁电路,判断是否具有触发器特点:保持(存储特别稳定);集成度不高动态 RAM(现在用的主存都是动态 RAM)
电容保存高低电平特点:容易掉电,存储不稳定;集成度高
如何解决掉电问题?
刷新内存
转载
2024-05-21 10:10:25
270阅读
问题这段时间实验室要完成一个内存故障注入工具和寄存器故障注入工具,在编写驱动的过程中,调试起来很麻烦(一般都是printk打印出来的,调试起来太不方便),于是想“可不可以在调试设备驱动的时候,利用一个小工具来读写内存某块区域的值以及CPU中寄存器的值?这点前辈的大神已经为我们找到了,参见《LDD3》的《第十五章 内存映射和DMA》目前已经有这样的工具了devmem和devkmem,就是通过mmap
转载
2024-04-17 11:14:14
289阅读
迅捷(FAST)免驱无线网卡插到电脑上无法识别CD驱动器怎么解决?“fast迅捷免驱版网卡插上后无法识别到CD驱动器怎么办?”“怎么解决fast无线网卡识别不了驱动的问题呢?”现在多数的无线网卡都已经是免驱的网卡了,但是所谓免驱并不是说不需要安装驱动,而是将驱动集成在了网卡上。当网卡查到电脑的USB接口上的时候,电脑桌面会自动弹出驱动安装界面。网卡CD驱动盘符我们知道了迅捷无线网卡免驱的基本原理,
转载
2024-10-19 11:17:43
45阅读
在嵌入式linux中EMMC和SD Card是比较常用的存储设备,我们记录一下使能一个MMC/SD控制器驱动的过程,基本可以在大多数soc上作为配置参考。第一步:menuconfig 老规矩,想使能一个驱动先把配置项搞定,使用命令make menuconfig:make menuconfi
转载
2024-04-30 00:00:06
805阅读
这一期我们来制作一个Linux的最小系统,让它在虚拟开发板上运行。整体的流程类似于LFS(
http://www.linuxfromscratch.org/),不过LFS的目标是制作一个功能较完善的Linux发行版,而我们要做的是一个最小系统,步骤会精简很多,大体就分成三个步骤:1.编译内核;2.制
转载
2024-05-06 15:53:23
230阅读
上一节中体验了一下如何通过tftp加载内核和设备树,并挂载nfs文件系统启动linux,这样的方法很时候调试阶段,可以把需要的执行的代码或者镜像文件放在虚拟机上就可以了,不需要每次都烧写到开发板中。但是在开发完成后不可能一直在使用一台电脑来给开发板加载系统使用,所以今天我们就学习一下如何将系统文件烧写到eMMC中,并让开发板上电后从eMMC中加载系统文件。这一节中的内容相比与上一节就要少很多:1、
转载
2024-04-20 16:59:16
117阅读
Linux开机加载驱动时,涉及到了initramfs文件中包含的驱动以及硬盘中包含的驱动两个部分;而系统启动后手动加载驱动时只会用到硬盘中的驱动库,与initramfs无关。首先介绍下initramfs文件生成的原理及流程,然后在介绍下开机加载的流程及本地验证步骤。 一、 initramfs文件生成原理 1、 镜像安装时生成initramfs文件 在安装镜像时,会去扫描所安装的服务器中在位的设备,
转载
2024-10-28 21:59:24
94阅读
嵌入式Linux驱动开发(2):字符设备LED驱动Linux 下 LED 灯驱动原理I/O 内存访问函数实验(手动创建设备号、设备节点)1、建立工程2、编写驱动程序led.c3、测试应用程序ledApp.c4、编译驱动程序和编译测试应用程序实验(自动申请设备号、自动创建设备节点)1、分配和释放设备号2、字符设备注册和删除3、自动创建设备节点4、设置文件私有数据5、程序编写驱动程序编写运行测试 L
1.写在前面 “24系列”的EEPROM,一般地我们认为是以i2c为通信接口的一系列串行EEPROM,各大半导体厂商出产的该系列EEPROM都遵循这个规则,而且电路和控制程序上也兼容。如AT24C02、ST24C02等。 EEPROM在嵌入式开发中使用广泛,在此之前,有总结过MCU下24系列EEPROM的驱动接口——“24系列EEPROM/FRAM通用接口”。根据该文章中的接口,作调整,使在嵌
转载
2024-08-20 20:53:33
181阅读
使能 8 线 EMMC 驱动Linux 内核驱动里面 EMMC 默认是 4 线模式的,4 线模式肯定没有 8 线模式的速度快,所以将 EMMC 的驱动修改为 8 线模式。修改方法很简单,直接修改设备树即可,打开文件 imx6ull-mybsp-emmc.dts,找到如下所示内容:
gedit arch/arm/boot/dts/imx6ull-mybsp-emmc.dts
关键字:&
转载
2024-05-13 20:18:39
256阅读
01. 基本概念缓存缓存是用来减少高速设备访问低速设备所需平均时间的组件,文件读写涉及到计算机内存和磁盘,内存操作速度远远大于磁盘,如果每次调用read、write都去直接操作磁盘,一方面速度会被限制,一方面也会降低磁盘使用寿命,因此不管是对磁盘的读操作还是写操作,操作系统都会将数据先缓存起来。Page Cache页缓存(Page Cache)是位于内存与文件之间的缓冲区,它实际上也是一块内存区域
快捷导航私家云二代/比特米盒安装Armbian Blueseye到Emmc设备介绍前期准备硬件清单Windows电脑一台Type-C数据线一根U盘或SD卡一个键盘一把显示器+HDMI数据线软件清单Amlogic USB Burning ToolUSB烧录工具SSH工具下载清单Amlogic刷机工具USB烧录工具ATV6.imgDTB文件BIN文件切换卡载系统APP风扇控制刷入ATV60. 吐槽1
Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信 一、安装libevent
缘起: 在数据驱动的web开发中,经常要重复从数据库中取出相同的数据,这种重复极大的增加了数据库负载。缓存是解决这个问题的好办法。 Memcached是什么? Memcached是由Danga Interactive开发的,高性能的,分布式的内存对象缓存系统,用于在动态应用中减少数据库负载,提升访问速度。 Memcached能缓存什么? &nbs
转载
2024-09-30 10:33:36
51阅读
最近在学习linux驱动的知识,虽然也写了个简单地led驱动,但整个驱动模块的概念还是很模糊,这篇博客就结合郑强老师的《linux驱动开发入门与实践》来梳理一下驱动模块的框架、体系。 声明:入门阶段以使用目的为主,并不过多涉及内核。一、驱动模块的组成如图所示,一个驱动模块由头文件、模块参数、模块功能函数、模块加载函数、模块卸载函数、模块许可声明组成,其中头文件、模块加载函数、模块卸载函数、模块许可
转载
2024-03-02 09:41:20
228阅读
misc 设备驱动简介 那么杂项设备驱动是属于我们 linux 三大设备驱动的哪一项呢? 由于linux 驱动倾向于分层设计, 所以每个具体的设备都可以找到它归属的类型, 从而可以套到它相应的架构里面去, 我们只需要实现它最底层的那部分。 但是也有部分字符设备, 确实不知道它属于哪种类型, 一般推荐大家采用 miscdevice 的框架结构。
转载
2024-06-03 22:46:20
134阅读