Linux Kernel Programing
Embedded菜鸟
嵌入式菜鸟
love Linux
love Embedded Linux
展开
-
Linux DMA分析
DMA ~~~~~~~ 传输过程 ~~~~~~~~~ 两种方式 1.软件请求 2.硬件中断请求 方式一: 1)App调用read函数,驱动分配DMA缓冲区,硬件设备将数据传输到缓冲区。进程休眠。 2) 当硬件写完数据,产生中断。 3)中断处理程序获得数据,应答中断,唤醒休眠的进程。 方式二: 1)数据采集硬件产生中断,通知有数据要来。 2)中断处理程序分配缓冲区,告诉原创 2011-10-21 21:45:45 · 2627 阅读 · 0 评论 -
Linux USB device 枚举过程分析
枚举命令 ~~~~~~~~~~ 1.设置地址:指示设备更改其当前的地址设置 2.取设备描述符 3.取配置描述符 4.取接口描述符 5.取字符串描述符 枚举过程 ~~~~~~~~~~ *device 插入HUB *HUB开始让HOST每秒产生的的帧开始包(SOF)能通过该HUB *设备枚举默认使用地址0(HOST会子枚举过程中为设备分配新的地址,其实就是ID号)端口0原创 2012-04-15 11:58:59 · 959 阅读 · 0 评论 -
Linux USB Device Driver Primer
Linux USB Device driverProgramming Data Flow Types ~~~~~~~~~~~~~~~~ a) Controltransfers:are used to request and send reliableshort data packets. It is used to configure devices and every on原创 2012-04-15 12:04:21 · 909 阅读 · 0 评论 -
Linux Kernel Module init 实现分析
Moudle Init 实现 ~~~~~~~~~~~ __init & __exit 标记:/include/linux/init.h 原理: #define __init __section(.init.text) __cold notrace //看看__seciton()就了然了 #define __exit __section(.exit.te原创 2012-04-15 11:51:31 · 1201 阅读 · 0 评论 -
如何向Linux内核提交驱动
当Linux驱动程序开发到一定阶段,向kernel.org提交代码是一个很好的选择。对于很多没有向上游提交过代码的开发者来说,还是有很多疑问需要解决的。比如,究竟我们向哪里提交驱动程序?提交时我们的代码应该处于什么状态?提交的过程又如何呢? 向哪里提交 Linux staging tree是Greg KH建立的用于提交驱动程序的git仓库。我们可以把staging tree看作是代码进入mai转载 2011-11-11 14:08:21 · 584 阅读 · 0 评论 -
谈谈Linux内核驱动的coding style
来至:http://www.cnblogs.com/wwang/archive/2011/02/24/1960283.html 最近在向Linux内核提交一些驱动程序,在提交的过程中,发现自己的代码离Linux内核的coding style要求还是差很多。当初自己对内核文档里的CodingStyle一文只是粗略的浏览,真正写代码的时候在很多细节上会照顾不周。不过, 在不遵守规则的程序员队伍转载 2011-11-11 13:37:45 · 304 阅读 · 0 评论 -
我的内核开发策划书
(写了快一年了,一直发布在linux.cn上,今天把它贴过来,希望对大家有所帮助,当时写的时候有所参考) 使用语言:ARM汇编,C语言。 使用工具:gcc,codeblocks,makefile 1硬件方面 1.1阶段一 实现目标:熟悉ARM的体系结构,C/汇编编程,接口技术,裸跑。实现方法:精读《嵌入式系统开发与应用教程》,《飞凌TE2440开发板试验手册》,《基于ARM嵌入原创 2011-10-24 22:07:42 · 442 阅读 · 3 评论 -
linux内核源码结构
源代码所有在目录:/usr/src/linux (大部分linux发行版本中) |--Documentation /*对于内核的文档说明*/ | |--arm /* Advanced RISC Machines 所生产的芯片结构体系*/ | | `--nwfpe | |--cdrom /*光驱*/ | |--fb /* Framebuffer的一些文档*/ | |--fil转载 2011-10-24 22:01:09 · 532 阅读 · 0 评论 -
linux内核中的数据结构
1. 前言 本文介绍linux内核中一些常用的数据结构和操作。 2. 双向链表(list) linux内核中的双向链表通过结构 struct list_head来将各个节点连接起来,此结构会作为链表元素结构中的一个参数: struct list_head { struct list_head *next, *prev; }; 链表头的初始化,注意,结构中的指针为NUL转载 2011-10-24 21:58:45 · 263 阅读 · 0 评论 -
Linux work queue 笔记(半原创)
R: 工作队列可以把工作推后,交由一个内核线程去执行,也就是说,这个下半部分可以在进程上下文中执行。这样,通过工作队列执行的代码能占尽进程上下文的所有优势。最重要的就是工作队列允许被重新调度甚至是睡眠。 struct work_struct{ unsigned long pending; /* 这个工作正在等待处理吗?*/ struct list_h原创 2011-10-21 21:43:35 · 553 阅读 · 0 评论 -
Linux内核空间
From: http://ilinuxkernel.com/?p=1013 Linux内核地址映射模型 x86 CPU采用了段页式地址映射模型。进程代码中的地址为逻辑地址,经过段页式地址映射后,才真正访问物理内存。 段页式机制如下图。 Linux内核地址空间划分 通常32位Linux内核地址空间划分0~3G为用户空间,3~4G为内核空间。注意转载 2012-05-10 15:22:13 · 492 阅读 · 0 评论