随笔分类 -  kernel

摘要:在linux2.6.30内核中,内核也提供了相关的平台驱动来操作gpio或LED,但更简便的方法是直接操作GPIO来控制led。 网上一博文中介绍直接封装led_on和led_off()函数直接调用即可。 void led1_on() { s3c_gpio_cfgpin(LED_ID1, S3C_G 阅读全文
posted @ 2016-10-30 12:22 yuxi_o 阅读(254) 评论(0) 推荐(0)
摘要:一. 内核编译 1) linux 2.4make clean/make mrpropermake depmake zImagemake modules //编译模块2) linux 2.6make clean/make mrpropermake // 编译内核同时编译了模块3) 模块安装上述步骤完成 阅读全文
posted @ 2016-10-30 10:18 yuxi_o 阅读(477) 评论(0) 推荐(0)
摘要:若要板卡支持CPU内置看门狗,可做如下修改。 1. bootstrap中开启cpu内置看门狗。 2. uboot中增加喂狗。 1)定义看门狗宏定义:include\configs\at91sam9260ek.h #define CONFIG_HW_WATCHDOG 2)增加看门狗函数:board/a 阅读全文
posted @ 2016-10-25 21:00 yuxi_o 阅读(846) 评论(0) 推荐(0)
摘要:1. cdev是linux用来管理字符设备的结构体,其在内核中采用数组结构设计,这样系统中有多少个主设备号就约定了数组大小,此设备号采用链表管理,同一主设备号下可以有多个子设备。设备即文件,上层应用要访问设备,必须通过文件,cdev中包含file_operations结构体,该结构体就是驱动的文件操 阅读全文
posted @ 2016-10-25 20:38 yuxi_o 阅读(5869) 评论(0) 推荐(0)
摘要:输入设备(如按键、键盘、触摸屏、鼠标等)是典型的字符设备,其一般的工作机理是底层在按键、触摸等动作发送时产生一个中断(或驱动通过timer定时查询),然后CPU通过SPI、I2 C或外部存储器总线读取键值、坐标等数据,放入1个缓冲区,字符设备驱动管理该缓冲区,而驱动的read()接口让用户可以读取键 阅读全文
posted @ 2016-10-23 17:36 yuxi_o 阅读(1309) 评论(0) 推荐(0)
摘要:rx-8025是片外I2C实时时钟,其应用于9260板卡方法如下。总体思想是配置内核添加驱动(I2C驱动,内核已提供的很完备),板级文件添加设备,添加设备文件以应用程序操作。 1. 配置内核 1)I2C支持(可选择debug信息)。 2)I2Chw选择gpio作为I2C硬件。 3)不选择片上RTT, 阅读全文
posted @ 2016-10-23 16:14 yuxi_o 阅读(2638) 评论(0) 推荐(0)
摘要:一般情况下,与板卡相关的内容都在bsp中(即arch/arm/mach-xxx/board-xxx.c)中,但norflash的分区直接放在norflash驱动中。由于norflash应用基于mtd,所以驱动位于drivers/mtd/目录下,chips目录是norflash相关公用驱动,maps是 阅读全文
posted @ 2016-10-09 20:39 yuxi_o 阅读(1865) 评论(0) 推荐(0)
摘要:likely()与unlikely()在2.6内核中,随处可见,那为什么要用它们?它们之间有什么区别呢?首先明确: if (likely(value))等价于if (value) if (unlikely(value))等价于if (value) 也就是说likely()和unlikely()从阅读 阅读全文
posted @ 2016-10-09 20:22 yuxi_o 阅读(21641) 评论(0) 推荐(0)
摘要:文章来源:http://blog.csdn.net/uyiwfn/article/details/7172339在Linux中,给kernel传递参数以控制其行为总共有三种方法:1.build kernel之时的各个configuration选项。2.当kernel启动之时,可以参数在kernel被 阅读全文
posted @ 2016-10-09 20:21 yuxi_o 阅读(1302) 评论(0) 推荐(0)
摘要:Linux内核源码分析方法 转自:http://www.cnblogs.com/fanzhidongyzby/archive/2013/03/20/2970624.html 一、内核源码之我见 Linux内核代码的庞大令不少人“望而生畏”,也正因为如此,使得人们对Linux的了解仅处于泛泛的层次。如 阅读全文
posted @ 2016-10-09 20:14 yuxi_o 阅读(173) 评论(0) 推荐(0)
摘要:Linux模块机制浅析 转自:http://www.cnblogs.com/fanzhidongyzby/p/3730131.htmlLinux允许用户通过插入模块,实现干预内核的目的。一直以来,对linux的模块机制都不够清晰,因此本文对内核模块的加载机制进行简单地分析。模块的Hello Worl 阅读全文
posted @ 2016-10-09 20:10 yuxi_o 阅读(261) 评论(0) 推荐(0)
摘要:驱动程序的角色 作为一个程序员, 你能够对你的驱动作出你自己的选择, 并且在所需的编程时间和结果的灵活性之间, 选择一个可接受的平衡. 尽管说一个驱动是"灵活"的, 听起来有些奇怪, 但是我们喜欢这个字眼, 因为它强调了一个驱动程序的角色是提供机制, 而不是策略. 机制和策略的区分是其中一个在 Un 阅读全文
posted @ 2016-10-09 10:37 yuxi_o 阅读(1027) 评论(0) 推荐(0)
摘要:转自:http://blog.csdn.net/adaptiver/article/details/7425496 保留内存防止泄漏的机制:进程退出会调用 do_exit->exit_files->put_files_struct->close_files->filp_close->fput->__ 阅读全文
posted @ 2016-09-21 11:04 yuxi_o 阅读(1198) 评论(0) 推荐(0)
摘要:内核中判断返回指针是否错误的方法:使用IS_ERR或者IS_ERR_OR_NULL。 参考include/linux/err.h #define MAX_ERRNO 4095 #ifndef __ASSEMBLY__ #define IS_ERR_VALUE(x) unlikely((x) >= ( 阅读全文
posted @ 2016-09-21 10:56 yuxi_o 阅读(1039) 评论(0) 推荐(0)
摘要:系统的NAND FLASH分区依赖于u-boot和Linux内核两方面的设置。 1. uboot中主要配置uboot和params占用空间 文件:include/configs/开发板.h 这是Phy3250的参数,Phy3250采用32MB的NAND FLASH,扇区大小为16KB: 189 /* 阅读全文
posted @ 2016-09-21 10:55 yuxi_o 阅读(1528) 评论(0) 推荐(2)
摘要:转自:linux设备驱动的分层设计思想 宋宝华 http://blog.csdn.net/21cnbao/article/details/5615493 1.1 设备驱动核心层和例化 在面向对象的程序设计中,可以为某一类相似的事物定义一个基类,而具体的事物可以继承这个基类中的函数。如果对于继承的这个 阅读全文
posted @ 2016-09-20 22:27 yuxi_o 阅读(449) 评论(0) 推荐(0)
摘要:platform device<==> platform bus <==> platform driver platform 总线是 bus_type 的一个具体实例,定义在文件 drivers/base/platform.c。当驱动和设备匹配成功以后 probe函数就会执行,具体的驱动程序在 pr 阅读全文
posted @ 2016-09-20 22:23 yuxi_o 阅读(385) 评论(0) 推荐(0)
摘要:一.重要数据结构 1.irq_desc 内核中记录一个irq_desc的数组,数组的每一项对应一个中断或者一组中断(使用同一中断号)。一句话,irq_desc几乎记录所有中断相关的东西,这个结构是中断的核心。其中包括两个重要的数据结构irq_chip和irqaction。 include/linux 阅读全文
posted @ 2016-09-20 14:53 yuxi_o 阅读(2162) 评论(0) 推荐(0)
摘要:linux中init相关内容定义在include/linux/init.h 先看下文件说明,此文件定义的宏主要用于初始化阶段标记函数或初始化数据,之后占用的资源会被释放掉。 /* These macros are used to mark some functions or * initialize 阅读全文
posted @ 2016-09-19 14:40 yuxi_o 阅读(1095) 评论(0) 推荐(0)
摘要:供head.S调用,其中__mmap_switched的b start_kernel跳转到C执行,且永不返回。 跳转到start_kernel时寄存器值: R0 = cp#15 control register R1 = machine id R2 = atags/dtb pointer R9 = 阅读全文
posted @ 2016-09-11 09:46 yuxi_o 阅读(687) 评论(0) 推荐(0)