- 博客(53)
- 资源 (6)
- 收藏
- 关注
原创 u-boot-1.1.6配置与编译
两条命令搞定:1、make smdk2410_config2、makemake smdk2410_config命令分析:顶层Makefile中有如下内容:(后面版本的uboot的Makefile不一定是这样的内容,如u-boot-2012.04.01,把板子的Architecture CPU Board [VEDOR] [SOC]信息全部集中在boards.cfg文件中)MKCON...
2018-01-09 21:09:24
1561
原创 3线接口与wm8976声卡驱动
JZ2440使用WM9876声卡,其硬件原理图: 其控制接口有2线和3线模式,有MODE管脚决定,高电平为3线模式,低电平为2线模式,我们这里MODE接高电平,使用3线接口模式。 3线接口不是L3接口,但与L3接口相似,s3c2410-uda1341.c已经有了L3接口的操作,但没有3线接口的操作,我们把L3接口的操作修改一下支持3线接口,用3线接口接到的那三个GPIO来...
2018-01-08 22:58:09
4097
原创 L3接口介绍及UDA1341声卡测试
mini2440内部集成了IIS控制单元(源码中配置了几个寄存器,使5个脚用于IIS).对外引出了五个引脚:CDCLK : 为编解码芯片提供系统同步时钟(芯片工作时钟)I2SSCLK: IIS控制器提供的串行时钟信号I2SLRCK: 声道控制信号,当为低电平时是左声道,为高电平是右声道I2SDI : 数据输入信号I2SDO : 数据输出信号mini2440 UDA134
2018-01-08 18:06:15
1705
原创 2.6内核中用register_chrdev_region注册字符设备
之前我们用register_chrdev()注册字符设备驱动,如:major = register_chrdev(0, "hello", &hello_fops); 这样注册的驱动使主设备号major下所有次设备号0-255都对应一个fops,即:(major, 0), (major, 1), ..., (major, 255)都对应hello_fops,这样可能浪费了很多次设备号,在2
2018-01-02 10:51:47
1587
原创 虚拟网卡实验笔记
网络协议方面的东东,我现在一点也不懂,本文只涉及网络驱动最底层网络设备结构体net_device的一些简单操作而已,甚至网卡的硬件操作也不非常清楚,学点大概,能移植芯片厂家的驱动就好。 协议层与网卡设备驱动层的通信,是通过net_device类型结构的hard_start_xmit()成员函数和协议层提供的netif_rx()函数来进行,如分配的一个net_devic
2018-01-01 11:10:33
2144
原创 BootLoader跑飞了
我这两天写一个引导内核的bootloader,程序跑飞了,总以为自己写的代码出了问题,检查来检查去,搞了两天硬是没找到代码哪里出了毛病,后来发现链接地址不是0,这才发现问题所在。这个链接地址不是0,代码就不能随便乱写了。在pc寄存器指向复制到SDRAM的代码之前的那些代码是在steppingstore中运行的,这些代码的链接地址也不是0,则它们要求是位置无关的才行。 小结了一
2017-12-10 19:31:15
2850
原创 UART协议与其基于控制器的裸板驱动(非常简单)
uart协议:1、平时数据处于“空闲”状态(1状态)。2、当要发送数据时,UART改变TxD数据线的状态(变为0状态)并维持1位的时间,这样接收方检测到 开始位之后,再等待1.5位的时间就开始一位一位地检测数据线 的状态得到所传输的数据。3、UART一帧中可以有5 6 7 或8位的收据,发送方一位一位的改变数据线的状态将他们发送出去,首先发送最低位。4、如果使用校验功能,UART在发送...
2017-12-06 11:57:08
2752
原创 超详细的系统时钟和定时器原理解析
非常详细地介绍了系统时钟FCLK、HCLK、PCLK和定时器timer的原理、设置步骤使用方法。并提供了一个通俗易懂的例程。学习系统时钟和定时器,只要研究通透本文即可。
2017-12-01 20:51:51
15250
2
原创 arm工作模式——异常和中断使用方法
Arm920T寄存器简单介绍:R1-R15:通用寄存器R13:栈指针寄存器R14:程序连接寄存器,当执行BL子程序调用指令时,R14中得到R15(程序计数寄存器pc)的备份,而当 发生中断或异常时,对应的R14_svc、R14_irq等保存R15返回值。R15:程序计数器pcCPSR:当前程序状态寄存器 (1)T位(1位) Thumb/Arm (
2017-11-27 00:05:29
4925
原创 位置无关码、链接地址与加载地址
从Nand Flash 启动CPU的时候,内部硬件自动将Nand Flash 开始的4KB 数据复制到4KB的内部RAM“Steppingstore”(起始地址为0)中,cpu是从pc寄存器指向的地址取指令执行的,pc指向的地址应该存放有对应的指令才能正确执行。刚开始的时候pc寄存器是指向0地址的,CPU从0地址取指令开始执行。 链接地址是我们写Makefile的...
2017-11-25 23:38:17
3114
原创 块设备驱动学习
块设备的读写,与字符设备的不同之处是它把读写构造为读写请求结构体,并没有立即读写,到了一定的时候把一系列的读写请求统一优化处理后,再统一读写。本文并没有分析块设备内核的东西,只是分析了如何利用系统提供的东西来处理请求和请求队列,进而写块设备驱动。
2017-11-19 17:21:52
2396
原创 分离分层结构与平台设备驱动
本文根据自己的理解分析了分离分层结构和机制,后面也结合点灯例子分析了平台设备驱动,水平有限,错误之处欢迎批评指正。同时也希望能对大家有点帮助。概念: 分层: 核心层和设备相关层分开,如输入子系统分核心层input.c 和设备相关层 evdev.c ,button.c 分层思想的优点就是能把很多文件共用的代码抽离集中起来成为一个或者多个核心...
2017-10-13 23:06:42
2556
原创 Linux输入子系统过程分析笔记
这篇笔记的目的不是把input子系统应用起来,而是解答我自己在学习使用input子系统的时候心里的一些疑惑。供有相同疑惑的朋友参考。其中可能有错误或理解不正确之处,欢迎批评指正。 输入子系统核心层 driver/input/input.c 文件里做了如下工作: 入口函数 input_init()里面调用register_chardev(INPUT_MAJOR,"inpu...
2017-10-03 00:02:11
2578
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人