
BSP_Driver
文章平均质量分 80
漫步的风暴
敏于思而慎于言
展开
-
Linux2.6.32驱动笔记(1)驱动开发概述及硬件访问技术
摘要:介绍了linux下驱动的分类和学习方法,描述了linux下硬件访问的思路和具体实现方法。一、linux下设备驱动分类 linux系统的设备常规分为字符设备(char device),块设备(block device)和网络设备(network device),对应的驱动也分为这三类。 字符设备:字符设备是一种按照字节来访问的设备,并且存取时没有缓存设备。这样的驱动通原创 2015-09-14 16:10:04 · 796 阅读 · 0 评论 -
imx6q flexcan初始化流程
imx6 flexcan的初始化流程复位flexcan有两种复位模式:1.包括芯片在内的硬复位,这时候会异步的清空所有映射的寄存器2.MCR寄存器中的soft_rst位,该寄存器会同步的重置一部分映射的寄存器软复位是需要时间的,在软复位期间,SOFT_RST该位会挂起,所以可以通过poll该位来判断软复位是否结束,注意的是在时钟模块没有开启的时候,不能进行软复位,在低功耗模式下...原创 2018-11-09 14:44:44 · 2184 阅读 · 0 评论 -
S3C2440 linux LCD驱动分析
环境: 硬件平台 TQ2440 东华3.5 inch TFT LCD linux-2.6.30.4 1. LCD工作的硬件需求: 要使一块LCD正常的显示文字或图像,不仅需要LCD驱动器,而且还需要相应的LCD控制器。在通常情况下,生产厂商把LCD驱动器会以COF/COG的形式与LCD玻璃基板制作在一起,而...转载 2018-10-23 11:19:48 · 348 阅读 · 1 评论 -
EMMC驱动中常用命令说明及初始化顺序
一、命令说明 mmc_go_idle 发送CMD0指令,GO_IDLE_STATE 使mmc card进入idle state。 虽然进入到了Idle State,但是上电复位过程并不一定完成了,这主要靠读取OCR的busy位来判断,而流程归结为下一步。 mmc_send_op_cond 发送CMD1指令,SEND_OP_COND 这里会设置card的工作电压寄...原创 2018-09-12 18:16:28 · 15769 阅读 · 8 评论 -
ZYNQ7000(ZC7045)时钟配置方法
为了将ZYNQ的PS测的两个核运行频率提升到1GHZ,同时正确的配置我的时钟定时器以及时间戳,需要了解ZYNQ的时钟管理系统和配置方法。1.ZYNQ PS侧的时钟子系统及默认配置解释上图:PS_CLK:系统晶振的时钟,这个是PS端的的时钟来源,经过一个叫PLL的锁相环功能部件,输出到ARM PLL和I/O PLL以及DDR PLL,后续的子部件均由这三个时钟源输出。这里对于cp...原创 2018-08-01 16:23:06 · 17208 阅读 · 1 评论 -
bcm54xx系列phy光口电口的配置方法
1.芯片型号及平台BCM54XX是博通公司的一个系列的PHY芯片,这里是BCM54616芯片所在平台为zynq7000系列的自制ZC7045板卡,要支持两路网卡,一路光口一路电口 2.问题电口的配置,大同小异,不管是哪一个Phy芯片,主要就是以下寄存器:Auto-negotiation advertisement register1000BASE-T control r...原创 2018-06-07 17:58:02 · 8629 阅读 · 6 评论 -
2017年7月问题记录与总结——16位nvram读写对齐操作
16位nvram读写地址对齐方法,当以4字节32位方式往nvram的奇地址读写数据的时候,需要注意对齐的问题,因为数据只能16位16位的往里面写,这里采用一个2个字节的数组来作为对齐的中间buff,具体操作见源码。/********************************************************************************************...原创 2018-02-09 15:11:00 · 687 阅读 · 0 评论 -
2017年6月问题记录与总结——ZYNQ_7000(PL35X)模块(NOR/SRAM/NAND FLASH 控制器)读取NAND FLASH ID
1.NAND FLASH1.flash型号MT29F4G082.FLASH基本信息位宽:8位容量大小:4Gb = 512MBBLOCK大小:128K +4kpage大小:2K + 64bytesblock数量:4096(2*2048)每个block的pages数量:128K/2K = 643.FLASH的物理组织这里plane的概念,应该是两个面,每一面有2048个block其于信息在图中标注清楚...原创 2018-02-09 14:10:20 · 3727 阅读 · 0 评论 -
2017年5月问题记录与总结——powerpc p1020 spi flash驱动
p1010 spi flash驱动原创 2017-09-20 10:34:12 · 1976 阅读 · 0 评论 -
Linux2.6.32驱动笔记(4)ioctl方法解析及mini2440-led驱动实现
摘要: 介绍了字符设备驱动的控制方式——ioctl,同时利用该方式在mini2440上实现led驱动。驱动中,除了read,write,open,close之外,还有很多的访问方式,其中对于设备的控制,ioctl是一种重要的方式。一、ioctl函数 int ioctl(int fd,unsigned long cmd,…) fd:要控制的设备文件描述符原创 2015-09-18 18:26:04 · 1999 阅读 · 0 评论 -
Linux2.6.32驱动笔记(3)分析应用程序read访问驱动过程
摘要: 利用objdump反汇编编译好的应用程序,分析了应用程序程序中调用read时时候,如何一层层的找到驱动中我们自己实现的对应的read方法。一、反汇编编译好的应用程序之前有一个读的应用程序read-mem.c,具体内容如下:#include #include #include #include int main(){ intfd = 0原创 2015-09-17 23:13:55 · 828 阅读 · 0 评论 -
Linux2.6.32驱动笔记(2)字符设备驱动编程模型
摘要:如何安装使用字符设备驱动,总结了字符设备驱动编程模型,初始化,注册等,最后分析了file_operations。一、如何安装使用字符设备驱动 参见内核模块,比如有一个驱动叫led.ko # insmodled.ko 创建设备文件节点,我们应用程序看驱动也是当做文件一样,这个设备文件节点就是这个作用。一般有两种方法,一种是相当于动态地,一种是静态的,我原创 2015-09-17 11:44:12 · 869 阅读 · 0 评论 -
ARM独占访问指令ldrex、strex
为了实现线程间同步,一般都要在执行关键代码段之前加互斥(Mutex)锁,且在执行完关键代码段之后解锁。为了实现所谓的互斥锁的概念,一般都需要所在平台提供支持。本文主要用来说明ARM平台上特有的独占访问指令LDREX和STREX的工作原理,以及如何使用。而它们也是ARM平台上,实现互斥锁等线程同步工具的基础。我们先来看看LDREX和STREX两条指令的语义。其实LDREX和STREX指令,是...转载 2019-03-24 11:44:35 · 1365 阅读 · 0 评论