内核及驱动相关
文章平均质量分 79
June_Hou
这个作者很懒,什么都没留下…
展开
-
rc0 - rc6 各启动级别的启动脚本
rc0 - rc6 各启动级别的启动脚本rc0: 停机(不能使用)rc1: 单用户模式rc2: 多用户模式,但是没有NFSrc3: 完全多用户模式rc4: 没有使用,系统预留rc5: 图形界面模式rc6: 重启模式(不能使用)init 系统启动超级进程rcS 单用户模式启动脚本init.d 启动脚本存放目录...原创 2020-09-04 17:30:31 · 407 阅读 · 0 评论 -
kernel 选项详解(stlinux2.3) 2-2
kernel 选项详解(stlinux2.3) 2-2 []IP:TCP syncookie support(disabled per default) //TCP cookie同步支持(默认关闭) []TCP:advanced congestion cont转载 2013-11-07 17:41:59 · 1361 阅读 · 0 评论 -
ubuntu qt 4.6.3 交叉编译环境搭建
一.搭建PC平台环境:系统:ubuntu 12.10开发板:mini2440gcc编译器:gcc-4.6.3 (ubuntu 自带更新gcc为4.7.1版本,先卸载gcc-4.7.1,然后sudo apt-get install gcc-4.6,至少为什么要gcc-4.6.3,因为最新版本的gcc对语法要求高,所以在编译的时候时常通不过,还得需要修改文件中的内容.以前完原创 2013-10-20 14:50:00 · 1416 阅读 · 0 评论 -
chroot,pivot_root和switch_root 区别
一. chrootchroot 机制目的 为了进一步提高系统的安全性,linux引入了chroot机制,chroot是一个系统调用,可以更改一个进程所能看到的根目录。 类似创建一个沙盒,进程运行在沙盒之内,进程运行正常与否,并不会影响这个台器的其他进程。chroot(change to root) 改变根目录,也就是改变一个程序运行时参考的根目录位置。例如...原创 2019-10-15 13:59:28 · 9326 阅读 · 0 评论 -
内核定时器 用法与实法 init_timer timer
内核定时器的实现,依赖时钟滴答中断来实现, 实时性比较好 open_softirq(TIMER_SOFTIRQ, run_timer_softirq);// 时钟中断 init_timer(); //初始 timer_list 的结构的一些变量add_timer() //将timer 加入内核timer列表中,等待处理 以下为例子源码,仅供参考 #inc...原创 2017-01-12 22:12:28 · 14790 阅读 · 0 评论 -
posix timer 应用
以实例解释timer的应用 #include <stdio.h>#include <stdlib.h>#include <string.h>#include <signal.h> #include <time.h>#include <sys/types.h>#include <pthread.h&g原创 2017-01-10 17:42:44 · 1013 阅读 · 0 评论 -
蜂鸣器驱动 mini2440 kernel2.6.32.2 之蜂鸣器
#include <linux/types.h>#include <linux/module.h>#include <linux/init.h>#include <linux/fs.h>#include <linux/cdev.h>#include <linux/slab.h>#include <linux/...原创 2014-03-26 16:46:30 · 933 阅读 · 0 评论 -
linux 内核--EXPORT_SYMBOL
1.作用EXPORT_SYMBOL标签内定义的函数或符号对内核代码会开,其他内核模块中可以直接调用.2.本质在内核中所有代码,类似一个进程,地址空间共用.所以EXPORT_SYMBOL标签内定的义函数是全局的,整个进程都可以调用.为什么必须用EXPORT_SYMBOL呢,这是高版本的内核需要做的,低版本内核全局函数默认就是全局的,不必export出来.3.注意内核中EXPORT_SYMBOL出来的...原创 2018-07-05 10:19:29 · 453 阅读 · 0 评论 -
进程间通信之信号
1. 信号是进程间通信的一种机制。信号可以在进程任何状态下发送。如果一个信号被进程阻塞,则信号的传递被延迟,直到阻塞被取消时才被传递给进程。2. 信号也属于一种模仿软中断机制,是一种异步通信方式,信号可以在用户空间进程和内核之间直接交互。内核可以利用信号来通知用户空间的进程发生了哪些事件。3. 信号事件有两种来源:按键触发的事件与使用系统调用或者命令发出的信号。4. 进程对信号一般有三...原创 2018-04-18 22:26:03 · 285 阅读 · 0 评论 -
embedded linux login
1. 在系统中增加用户并设置密码。(useradd)2. login 需要CONFIG_LOGIN和CONFIG_GETTY两个模块,如果没有配置,那么添加配置,然后编译,重新烧写。3. 修改/etc/inittab, 例如添加:ttyS0::respawn:/sbin/getty -L /dev/ttyS0 115200 vt100...原创 2018-03-06 15:06:43 · 266 阅读 · 0 评论 -
Timer 超时等待资源及处理方法
Timer使用的需要注意的地方及解决方法 1.Timer超时函数,在处理的时候是通过软中断实现,即处理函数是在中断上下文去实现的,而中断上下文:第一:不充许sleep; 第二不允许schedule. 如果有类似的操作,都将可能发生错误及crash问题。2.有时候一些功能需要在超时函数中做一个sleep或者等待一些信号号或者一些资源,那么就需要一种解决方法,去处理这些情况。3.处理这...原创 2018-03-13 10:54:58 · 2362 阅读 · 0 评论 -
mmap and mmap (invild argument)
Mmap参数及解决mmap : invild argument1. 简介Mmap设计的目的是为共享内存及映射一个普通文件到内存。(还有一种posix共享内存IPC则纯粹用于共享目的)共享内存通信有一个好处就是效率比较高,进程只需要读写内存,而不需要管道或消息队列等操作。对于普通文件来说,每次读写都需要进四次的数据复制(对于读来说先读到内核buf,然后再copy到用户空间buf原创 2018-02-05 15:58:09 · 486 阅读 · 0 评论 -
kernel crash dump info 保存
Kernelcrash dump1. 在系统运行过程中,如果系统发生了crash, 那么开发人员需要通过crash信息来进行debug. 并进一步定位问题。而crash信息存在于内核ring buffer中,系统重启后就丢失了,所以需要一种方法,可以在系统发生crash时,将crash info保存于非易失存储器中,那么下面就来介绍一种方法实现这种功能。2. 预备:...原创 2018-02-05 11:02:40 · 1293 阅读 · 0 评论 -
linux disable_irq() and disable_irq_nosync()
1.在中断调用disable_irq();会导致cpu stuck,这个其实就是中断的禁忌,不能被调度或者挂起,而disable_irq()不符合这个条件,所以要慎用,最好不要用,除非你能保证它不被挂起,不过这是不可能的。2.在中断可以调用disable_irq_nosync()这个函数不会pend;实现现象,多核cpu, cpu2被lock,watchdog被触发重启。[ 54...原创 2018-01-03 17:32:13 · 1340 阅读 · 0 评论 -
gpio 注册中断 例子
example:int gpio = 10;int irq_num = 0;irq_num = gpio_to_irq(gpio); //gpio 到irq的映射, 不可使用gpio直接做request_irqrequest_irq(irq_num, irq_handler, IRQF_TRIGGER_RISING, "gpio_irq", arg ); // 注册原创 2017-12-15 14:12:52 · 1820 阅读 · 0 评论 -
内核workqueue
/**任务队列的运用,有两种方式*1。创建工作队列,初始化一个任务,添加任务,然后调度*2。初始化一个任务,然后调度该任务*/#include <linux/init.h>#include <linux/kernel.h>#include <linux/module.h>#include <linux/workqueue.h>...原创 2017-01-13 18:00:53 · 471 阅读 · 0 评论 -
设备树中address-cells和size-cells的含义
出处:http://blog.csdn.net/violet089/article/details/53670758 #address-cells = <1>;基地址、片选号等绝对起始地址所占字长(32位)#size-cells = <1>; 长度所占字长(32位) 譬如 [cpp] view plain copy cpus { ...转载 2017-03-27 14:47:39 · 5231 阅读 · 3 评论 -
vga分辨率与时序配置
http://www.tinyvga.com/vga-timing/1024x768@60Hz原创 2019-08-13 11:30:13 · 1516 阅读 · 0 评论 -
内核等待队列相关实例(二)
一.通常有两种方式,其本质上是一样的,第二种更灵活一点,容易出错;第一种不易出错.第一种:static wait_queue_head_t wait_queue;static int is_empty = 0;void init(){ init_waitqueue_head(&wait_queue);}int read(){ if(is_e...原创 2019-08-09 15:22:20 · 229 阅读 · 0 评论 -
内核等待队列相关操作(kernel waitqueue) (一)
一.介绍linux内核中等待队列应用非常广泛,比如进程调度或者一些中断处理下半部处理,对于进程来说,当进程在等待某些条件时,希望等待条件满足的进程把自己放在相应的队列,并放弃控制权给其他进程,当条件被满足时,由内核唤醒. 等待队列由循环链表实现,其元素包括指向进程描述符的指针。每个等待队列都有一个等待队列头(wait queue head),等待队列头是一个类型为wait_queue_hea...原创 2019-08-09 14:33:24 · 885 阅读 · 0 评论 -
kernel 编译与配置和uboot编译与配置
内核编译:例如:TI AM437x 为例tisdk_am437x-evm_defconfig: arch/arm/configs1.配置 make ARCH=ARM CROSS_COMPILE=arm-linux-gnueabihf- tisdk_am437x-evm_defconfig2.修改配置(可选) make ARCH=ARM CROSS_COMPILE=...原创 2019-08-05 14:58:38 · 1018 阅读 · 0 评论 -
SPI_FLASH时序描述及驱动编程
转载:https://www.cnblogs.com/strongerHuang/p/5730253.htmlSPI_FLASH时序描述及驱动编程推荐分享一个朋友的人工智能教程,零基础!通俗易懂!希望你也加入到人工智能的队伍中来!http://www.captainbed.net/strongerhuangⅠ、写在前面前面文章讲述过关于SPI...转载 2019-07-08 10:23:39 · 611 阅读 · 0 评论 -
local_irq_enable 与 local_irq_disable 不支持嵌套
1. 实现代码如下:#define local_irq_enable() do { raw_local_irq_enable(); } while (0)#define local_irq_disable() do { raw_local_irq_disable(); } while (0)#define raw_local_irq_disable() arch_local_irq...原创 2019-05-23 16:56:02 · 581 阅读 · 0 评论 -
linux 驱动之input子系统(gpio-keys)实现
1.概述 Gpio-keys 是基于input子系统实现的一个通用按键驱动,该驱动也符合linux驱动实现模型,即driver和device分离模型.一般按键驱动,都是基于gpio-keys进行开发的.2. gpio-keys 代码分析(基于 linux 4.14.40)(1)整体来说分为以下四步static int gpio_keys_probe(struct platfo...原创 2019-03-28 14:16:19 · 6495 阅读 · 1 评论 -
Initrd
Linux2.6 内核的 Initrd 机制解析 李大治 (dazhi.li@gmail.com),软件工程师 简介: Linux 的 initrd 技术是一个非常普遍使用的机制,linux2.6 内核的 initrd 的文件格式由原来的文件系统镜像文件转变成了 cpio 格式,变化不仅反映在文件格式上, linux 内核对这两种格式的 initrd 的处理有着截然的不同。本...转载 2018-12-17 15:49:39 · 1005 阅读 · 0 评论 -
dump device tree, 打印出整个设备树
1. 打印出整个设备树,只需要一个参数,那就是设备树的root结点,打印出整个设备树,有利于调试内核或调试uboot传参等2. 添加打印整个设备的代码在什么位置linux/driver/of/fdt.c ----------->__unflatten_device_tree() //函数中第一行添加即可3,添加代码如下:dump_blob(blob) 4.以下代码...原创 2018-08-14 18:00:56 · 3848 阅读 · 0 评论 -
switch mii psgmii mdio 之间的关系
QCA8075: 是有5个端口Gigabit Ethernet PHY 芯片。PSGMII:连接MAC与PHY芯片的接口, 也称为数据接口。(PSGMII可以配置为5个copper or 4 个copper 1个COMBO)MDC/MDIO:控制总线接口。 这是一个标准连接图,只是稍加解释,cpu端内置switch,笔者在看驱动的时候,对其中关系比较混乱,故记下跟踪笔记。...原创 2017-07-18 11:32:28 · 8516 阅读 · 0 评论 -
MII/MDIO接口详解
MII/MDIO接口详解 本文主要分析MII/RMII/SMII,以及GMII/RGMII/SGMII接口的信号定义,及相关知识,同时本文也对RJ-45接口进行了总结,分析了在10/100模式下和1000M模式下的设计方法。MII接口提供了MAC与PHY之间、PHY与STA(Station Management)之间的互联技术,该接口支持10Mb/s与100Mb/s的数据传...转载 2017-06-05 18:08:36 · 591 阅读 · 8 评论 -
USB contorller: OHCI UHCI EHCI XHCI
1. OHCI(Open Host Controller Interface)是支持USB1.1的标准,但它不仅仅是针对USB,还支持其他的一些接口,比如它还支持Apple的火线(Firewire,IEEE 1394)接口。与UHCI相比,OHCI的硬件复杂,硬件做的事情更多,所以实现对应的软件驱动的任务,就相对较简单。主要用于非x86的USB,如扩展卡、嵌入式开发板的USB主控。2. U翻译 2017-09-07 14:58:47 · 688 阅读 · 0 评论 -
mtparts & dts partition
Uboot: bootargs mtdparts=4m(kernel:0),25856k(rootfs:0)设置分区 Uboot传给内核mtdparts分区表优先级高于在flash在设备树中的分区表 /** *mtd_device_parse_register - parse partitions and register an MTD device. * *@mtd...原创 2017-07-13 13:29:17 · 1615 阅读 · 0 评论 -
#define __builtin_constant_p(x)
__builtin_constant_p 是编译器gcc内置函数,用于判断一个值是否为编译时常量,如果是常数,函数返回1 ,否则返回0。此内置函数的典型用法是在宏中用于手动编译时优化。原创 2014-04-12 16:50:31 · 1587 阅读 · 0 评论 -
input_allocate_device浅析
一.input_allocate_device分析,看看这个东西,到底完成了什么样的工作,应该不是简单的kmallocstruct input_dev *input_allocate_device(void){ struct input_dev *dev; //一个input_dev的指针 dev = kzalloc(sizeof(str原创 2014-04-11 15:45:12 · 4828 阅读 · 0 评论 -
mini2440 adc for input_dev kernel2.6.32.2
下面为mini2440的ADC驱动源码今天看了看源码,发现,确实很精彩#include <linux/errno.h>#include <linux/kernel.h>#include <linux/module.h>#include <linux/slab.h>#include <linux/input.h>#includ...原创 2014-04-22 15:57:31 · 815 阅读 · 0 评论 -
mini2440 led驱动代码 基于kernel2.6.32.2 之led
#include <linux/module.h>#include <linux/init.h>#include <linux/mm.h>#include <linux/slab.h>#include <linux/types.h>#include <linux/semaphore.h>#include <l...原创 2014-03-26 08:41:33 · 630 阅读 · 0 评论 -
信号量,等待队列,异步通知,驱动例子
#include #include #include #include #include #include #include #include #include #include #include #include #define GLOBALMEM_SIZE 0X1000#define MEM_CLEAR 0X1#define GLOB原创 2014-03-23 15:40:53 · 871 阅读 · 0 评论 -
chrdev表的操作与使用
设备表结构与源码分析一。设备结构体#define CHRDEV_MAJOR_HASH_SIZE 255static DEFINE_MUTEX(chrdevs_lock);static struct char_device_struct { struct char_device_struct *next; //结构体指针 unsigned int原创 2014-03-19 19:30:37 · 1147 阅读 · 0 评论 -
device 结构与简单注册
device注册分析一.devcie结构体struct device { struct device *parent; //父设备指针 struct device_private *p; //很重要 struct kobject kobj; //目录与属性管理 const char原创 2014-04-14 20:53:03 · 695 阅读 · 0 评论 -
device_driver 注册分析
一.device_driver与driver_private结构体struct device_driver { const char *name; //驱动名 struct bus_type *bus; //所要依附的总线类型 struct module *owner; //所原创 2014-04-14 19:29:15 · 604 阅读 · 0 评论 -
bus总线分析与注册
bus总线注册及内部结构一.下面是bus_type的结构struct bus_type { const char *name; //总线的名字 struct bus_attribute *bus_attrs; //总线的属性 struct device_attribute *dev_attrs; //总线上设原创 2014-04-14 15:38:02 · 1831 阅读 · 0 评论 -
kernel2.6.32.2 mini2440 led 驱动 之 中断(去抖动)处理
#include <linux/module.h>#include <linux/init.h>#include <linux/mm.h>#include <linux/slab.h>#include <linux/types.h>#include <linux/semaphore.h>#include <l...原创 2014-03-29 15:34:18 · 842 阅读 · 0 评论