最近在学习linux驱动的知识,虽然也写了个简单地led驱动,但整个驱动模块的概念还是很模糊,这篇博客就结合郑强老师的《linux驱动开发入门与实践》来梳理一驱动模块的框架、体系。 声明:入门阶段以使用目的为主,并不过多涉及内核。一、驱动模块的组成如图所示,一个驱动模块由头文件、模块参数、模块功能函数、模块加载函数、模块卸载函数、模块许可声明组成,其中头文件、模块加载函数、模块卸载函数、模块许可
对于linux 的根文件系统,目前有三种块设备的驱动可以选择,它们都可以用来包含根文件系统。分别是:a) Blkmem 驱动b) MTD 驱动c) RAM disk 驱动       Blkmem 驱动是专门为嵌入式linux 开发的一种块设备驱动,它是嵌入式linux系统中最为古老和通用的块设备驱动。它原理相对简单但是配置比较复杂,需要
学习地址:http://edu.51cto.com/lesson/id-63015.html 1、用 USB  下载 比较方便2、用 SD 卡 更新产品 程序,有时候 会 比较 方便一点3、我的S5PV210 开发板 有个 拨码开关,拨到USB 启动 或者 EMMC 启动4、选择EMMC启动 会首先从 SD 的通道0(已经接了EMMC 芯片 )  启动,如果通道0启动
        在嵌入式linuxEMMC和SD Card是比较常用的存储设备,我们记录一使能一个MMC/SD控制器驱动的过程,基本可以在大多数soc上作为配置参考。第一步:menuconfig        老规矩,想使能一个驱动先把配置项搞定,使用命令make menuconfig:make menuconfi
使能 8 线 EMMC 驱动Linux 内核驱动里面 EMMC 默认是 4 线模式的,4 线模式肯定没有 8 线模式的速度快,所以将 EMMC驱动修改为 8 线模式。修改方法很简单,直接修改设备树即可,打开文件 imx6ull-mybsp-emmc.dts,找到如下所示内容: gedit arch/arm/boot/dts/imx6ull-mybsp-emmc.dts 关键字:&
1.写在前面  “24系列”的EEPROM,一般地我们认为是以i2c为通信接口的一系列串行EEPROM,各大半导体厂商出产的该系列EEPROM都遵循这个规则,而且电路和控制程序上也兼容。如AT24C02、ST24C02等。  EEPROM在嵌入式开发中使用广泛,在此之前,有总结过MCU24系列EEPROM的驱动接口——“24系列EEPROM/FRAM通用接口”。根据该文章中的接口,作调整,使在嵌
文章目录前言一、修改设备树文件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
由于我的工作与sd/emmc存储相关,所以在接下来的分析重启的过程中,如果有涉及到该部分的流程,或者我认为有可能但是还没确认的流程,我都会贴上来;如果与其无关,我会略过,敬请谅解; 一、kernel_restart 废话不说,从reboot函数的kernel_restart函数开始,代码如下: /** * kernel_restart - reboot the system * @cmd:
一 回忆昨天的昨天的内容 作业: ROM:只读存储器 PROM:只能写入一次 EPROM:光可擦除 EEPROM: 电可擦除 norfalsh:片内执行 nandflash:片内执行,速度快 EMMC二. 移植Linux操作系统 2.1 烧录uboot mkdir porting cp ubootpak.bin ./2.2 将Uboot烧录到TF卡中 2.2.1
Linux系统已经成为许多嵌入式设备的首选操作系统,而在嵌入式设备中,u-boot作为引导加载程序起到了至关重要的作用。同时,eMMC作为一种存储介质也越来越受到了广泛的应用。 在嵌入式设备中,u-boot作为引导加载程序,负责引导Linux内核的启动。对于采用eMMC存储介质的设备来说,u-boot中的eMMC驱动显得尤为重要。eMMC(embedded Multi-Media Card)是一
原创 4月前
40阅读
misc 设备驱动简介         那么杂项设备驱动是属于我们 linux 三大设备驱动的哪一项呢? 由于linux 驱动倾向于分层设计, 所以每个具体的设备都可以找到它归属的类型, 从而可以套到它相应的架构里面去, 我们只需要实现它最底层的那部分。 但是也有部分字符设备, 确实不知道它属于哪种类型, 一般推荐大家采用 miscdevice 的框架结构。
基于A5D36平台eMMC驱动分析,设备和驱动匹配之后调用atmci_probe。
原创 2023-03-20 10:19:27
1255阅读
1. 构建测试模块:hello1.1 在linux-3.4/drivers/新建目录hellocd linux-3.4/drivers/ mkdir hello1.2 在hello/新建hello.c Makefile Kconfig三个文件hello.c:#include <linux/module.h> //所有模块都需要的头文件 #include <linux/ini
目的:梳理ARM Linux驱动开发所需的环境和流程,记录遇到的问题。 环境介绍:pc机:编写驱动程序和测试代码服务器:编译驱动程序生成.ko文件,编译测试代码生成执行程序单板:jz2440 准备工作:linux内核:linux-2.6.22.6以及对应的补丁文件工具链:gcc version 3.4.5uboot:引导内核uImage:引导根文件系统根文件系统:运行应用程序在
山寨机的时代,很多年轻的朋友可能比较陌生,手机上会安装一个SD卡,做存储扩展;目前的智能手机会在PCB板上焊接一个EMMC芯片,做大容量数据存储,安全性好了很多,手机丢了也不用担心照片或者资料泄露的问题;1、EMMC特性-符合JEDEC/MMC标准版本5.0-高级12信号接口-x1、x4和x8I/O,可由主机选择-SDR/DDR模式,可达52MHz时钟速度-HS200/HS400模式-命令类:cl
一. 将bootloader烧入SD卡 1.格式化SD卡(不挂载): fdisk /dev/sdx -d 删除 -n 新建分区 -w 保存退出 6~default sdx1 两种格式化方式: mkfs -t vfat /dev/sdx1 mkfs.vfat /dev/sdx1 2.将bootloader烧入SD卡: 注意--不挂载 ./sd_fusing
修改Linux内核添加Air72X 4G模块支持这话从何说起呢,还是疫情之前吧,那会合宙刚刚推出Air724模块,脑子一热,团购了一个,以为没团上,然后小号又团了一次,然后就有了两个了。然后和囤积的大多数东西一样没有然后了 。类似这款,但是显然比他早。最近有个需求用上了,所以寻思用一,结果发现竟然不行,原因么应该是因为Linux内核太老了,我这里有个树莓派4代,直接插上USB也是不行的,但是更新
使能 8 线 EMMC 驱动Linux 内核驱动里面 EMMC 默认是 4 线模式的,4 线模式肯定没有 8 线模式的速度快,所以将 EMMC驱动修改为 8 线模式。修改方法很简单,直接修改设备树即可,打开文件 imx6ull-mybsp-emmc.dts,找到如下所示内容:gedit arch/arm/boot/dts/imx6ull-mybsp-emmc.dts关键字:&usdhc
1、 linux 内核模块简介内核整体结构非常庞大,其包含的组件也非常多。我们怎么把需要的部分都包含在内核中呢?一种办法是把所有的需要的功能都编译到内核中。这会导致两个问题,一是生成的内核会很大,二是如果我们要在现有的内核中新增或删除功能,不得不重新编译内核,工作效率会非常的低,同时如果编译的模块不是很完善,很有可能会造成内核崩溃。 提供了另一种机制来解决这个问题,这
一、硬件环境Intel Baytrail处理器,自带eMMC-4.5控制器CentOS-7.1-1503-X86_64.isolinux-3.10.0-229.el7.x86_64eMMC存储芯片——KLMxGxGEND-B031(支持eMMC-5.0协议标准)二、软件环境 1、MMC子系统框架2、子系统代码结构   Linux MMC子系统主要分成三个部分: Card:存放闪存卡(块设
转载 2月前
74阅读
  • 1
  • 2
  • 3
  • 4
  • 5