- 博客(18)
- 收藏
- 关注
转载 驱动调试方法
驱动调试方法内核打印函数printk调试内核、驱动最简单的方法就是使用printk函数打印信息;printk函数的打印级别printk函数与用户空间的printf函数格式完全相同,它所打印的字符串头部可以加入“”样式的字符,其中n为0~7,表示这条信息的打印级别;在内核代码:include/linux/kernel.h中,下面几个宏控制了printk函数所能输出的信息的记录级别...
2019-09-23 11:04:00 405
转载 触摸屏驱动
触摸屏驱动input子系统框架:输入子系统的核心文件input.c,其中的file_operations中的.open会找到input_handler得到具体的fops,在linux内核中是evdev.c来提供handler,它里面有一个evdev_handler,这个evdev_handler中提供了更为详细的fops(evdev_fops),所以应用程序通过标准的接口(open...
2019-09-23 10:59:00 243
转载 I2C总线、设备、驱动
I2C总线、设备、驱动框架I2C驱动框架可分为3个部分,分别是:I2C核心层、I2C总线驱动层(适配器层)以及I2C设备驱动层;I2C核心层提供了统一的I2C操作函数,主要有两套函数smbus(system manager bus)和i2c_transfer;其中smbus是i2c_transfer的一小部分,有一些适配器只支持smbus,当驱动中只是用部分I2C协议功能时可...
2019-09-22 20:35:00 388
转载 字符设备驱动的另一种写法
字符设备驱动的另一种写法在Linux2.6内核中,使用cdev结构体描述一个字符设备;cdev结构体(include/linux/cdev.h)定义如下:struct cdev { struct kobject kobj; /* 内嵌的kobject对象 */ struct module *owner; /* 所...
2019-09-14 15:03:00 132
转载 input子系统驱动
input子系统驱动框架分析核心层文件为:/drivers/input/input.c;首先找到入口函数为**static int __init input_init(void)**,在该函数中主要做了如下几件事:创建了一个input_class类;初始化/proc/input路径下的文件;使用register_chrdev()注册了一个名为input_fops的file...
2019-09-01 22:11:00 134
转载 字符设备驱动程序分析
字符设备驱动程序分析下面是针对jz2440开发板写的一个led驱动程序,重点不在于该程序,而是以此为例,对字符设备驱动程序框架的分析总结;/* * jz2440 leds driver**/#include <linux/module.h>#include <linux/kernel.h>#include <linux/fs.h>#in...
2019-08-27 16:30:00 161
转载 构建根文件系统
构建根文件系统根文件系统的基本概念在Linux中,是以树状结构管理所有目录、文件,其他分区挂接在某个目录上,这个目录被称为挂接点或者安装点,然后就可以通过这个目录来访问这个分区上的文件了;在一个分区上存储文件时需要遵循一定的格式,这种格式称为文件系统类型,比如fat16、fat32、ext2、ext3、jffs2、yaffs等,除了这些实实在在的存储分区的文件系统类型外,Linux...
2019-08-27 08:47:00 133
转载 内核启动流程分析
内核启动流程分析内核启动的终极目的是挂载根文件系统,运行应用程序;内核基础操作解压缩,并打补丁;配置(有三种方法):直接执行make menuconfig,从头到尾每一项都自己配置;使用默认的配置,在此基础上来修改;可以使用如下命令查找目前都有哪些默认配置:find -name "*defconfig*" *查找发现在./arch/arm/configs/目录下有很...
2019-08-24 10:09:00 162
转载 u-boot移植易用性设置
u-boot移植易用性设置以下设置使用的u-boot版本为u-boot-2012.04.01环境参数在Flash上划分了一块区域用于存储环境变量,所以当u-boot启动时会有如下操作:读取Flash上的环境变量;判断读取到的环境变量是否有效;如果判断有效则用,无效则使用默认参数;当还没有在Flash上设置环境变量时,u-boot在启动的时候会打印出 Warning - ...
2019-08-23 10:39:00 156
转载 u-boot从nand 启动时的问题解决记录
u-boot从nand 启动时的问题解决记录问题描述:使用u-boot-1.1.6版本u-boot移植到JZ2440开发板上,当前已经能够从Nor启动,但是不能从Nand正常启动(u-boot大小为95.8k,已经超过的2440从Nand启动时所能拷贝的4k大小),当前代码中只具备从Nor启动时,重定位代码到SDRam的功能,所以需要添加从Nand启动时将u-boot代码重定位到SD...
2019-08-21 12:32:00 414
转载 嵌入式Linux应用开发完全手册读书笔记——常用的命令
嵌入式开发中常用的命令grep命令用法:grep [option] PATTERN [FILE...]例如:在内核目录下查找包含“request_irq”字样的文件grep "request_irq" * -R注:*表示查找当前目录下的所有文件、目录,-R表示递归查找子目录;在内核的kernel目录下查找包含“request_irq”字样的文件grep "request...
2019-07-18 17:08:00 179
转载 嵌入式Linux应用开发完全手册读书笔记——交叉编译工具选项说明
交叉编译工具选项说明arm-linux-gcc一个c/c++文件要变成可执行文件需要4步:预处理 -> 编译 -> 汇编 -> 链接;在使用arm-linux-gcc时的常用选项:可使用的选项功能描述-c预处理、编译和汇编文件,但是不作链接,GCC通过用“.o”替换源文件名的后缀“.c”,“.i”,“.s”等生成OBJ文件(.o文件)-...
2019-07-18 15:54:00 194
转载 ARM体系结构与编程读书笔记——处理器的寄存器
ARM处理器共有37个寄存器,其中包括:31个通用寄存器,包括程序计数器(PC)在内,寄存器都是32位;6个状态寄存器,这些寄存器都是32位的,目前只使用了其中12位;通用寄存器可以分为下面3类:未备份寄存器,包括R0~R7;对于每一个未备份寄存器来说,在所有的处理器模式下指的都是同一个物理寄存器。在异常中断造成处理器模式切换时,由于不同的处理器模式使用相同的物理寄存...
2019-07-16 19:38:00 214
转载 ARM体系结构与编程读书笔记——处理器的运行模式
ARM处理器共有7种运行模式,如下表:处理器模式描述用户模式(User, usr)正常程序执行的模式快速中断模式(FIQ, fiq)用于高速数据传输和通道处理外部中断模式(IRQ, irq)用于通常的中断处理特权模式(Supervisor, sve)供操作系统使用的一种保护模式数据访问中止模式(Abort, abt)用于虚拟存储及存储...
2019-07-16 16:29:00 253
转载 uCos-II移值(二)
os_cpu_c.c文件该文件主要是根据处理器平台特点完成任务堆栈初始化函数OSTaskStkInit以及其他几个用户Hook函数的编写,其中必须要实现的函数是OSTaskStkInit(在创建任务函数中被调用),且该函数与处理器关系密切,是系统中任务能够正常切换的基础;其他几个Hook函数,可以不包含任何代码,但是必须声明;第一部分任务堆栈初始化函数OSTaskStkInit()...
2019-05-05 20:07:00 193
转载 uCos-II移值(一)
os_cpu.h文件该文件主要是完成操作系统使用的内部数据类型、常数以及宏的定义,这些都是与处理器平台密切相关的;第一部分以下部分定义了系统内部常用的数据类型,为了增加系统的可移植性,系统内核只使用自己定义的INT8U、INT8S等数据类型,而不使用和编译器密切相关的unsigned char、unsigned short等数据类型;所以,在不同处理器或者不同编译器平台下,这些数...
2019-04-28 21:46:00 170
转载 uCos-II中任务的同步与通信
任务的同步与通信任务间的同步在多任务合作工作过程中,操作系统要解决两个问题:各任务间应该具有一种互斥关系,即对某些共享资源,如果一个任务正在使用,则其他任务只能等待,等到该任务释放资源后,等待任务之一才能使用它;相关的任务在执行上要有先后次序,一个任务要等其伙伴发来通知,或建立了某个条件后才能继续执行,否则只能等待;任务之间的这种制约性的合作运行机制叫任务间的同步;任务中...
2019-04-25 21:07:00 675
转载 uCosII中的任务
任务基本概念任务是一个接受操作系统管理的独立运行单元,在uCosII中类似与普通平台上的main()函数,需要自己来保护其因调用或中断二产生的断点,所以需要一个自己的私有堆栈,即任务堆栈;任务有两种,分为:用户任务和系统任务;uCosII中并没有给任务分配独立的运行空间,而是所有的任务共同使用一个内存空间,所以这里的任务属于线程;系统中的任务共有5种状态:睡眠状态:任务只是以...
2019-04-25 21:03:00 420
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人