随笔分类 -  Linux

上一页 1 ··· 6 7 8 9 10 11 12 下一页
Linux 应用编程、驱动编程、内核知识、读书笔记
摘要:#ifndef _LINUX_LIST_H#define _LINUX_LIST_H/** Simple doubly linked list implementation.** Some of the internal functions ("__xxx") are useful when* manipulating whole lists rather than single entries, as* sometimes we already know the next/prev entries and we can* generate better code by u 阅读全文
posted @ 2013-10-23 15:38 摩斯电码 阅读(450) 评论(0) 推荐(0) 编辑
摘要:如何根据一个结构体成员的地址、结构体类型以及该结构体成员名获得该结构体的首地址?#define list_entry(ptr, type, member) \ ((type *)((char *)(ptr)-(unsigned long)(&((type *)0)->member)))其中,ptr为指向该结构体成员的指针,type为该结构的类型,member为该结构成员的名称。理解: &((type *)0)->member的目的是为了获得上图中问号表示的范围的大小。这段代码等价于:type * p = (type *)0; //便于获得某个结构体成员相对于该结构体 阅读全文
posted @ 2013-10-23 15:19 摩斯电码 阅读(917) 评论(0) 推荐(0) 编辑
摘要:参考:http://www.cyberciti.biz/faq/linux-unix-bsd-xargs-construct-argument-lists-utility/http://linux.101hacks.com/linux-commands/xargs-command-examples/http://www.computerhope.com/unix/xargs.htmhttp://offbytwo.com/2011/06/26/things-you-didnt-know-about-xargs.htmlhttp://unixhelp.ed.ac.uk/CGI/man-cgi?xa 阅读全文
posted @ 2013-10-23 14:02 摩斯电码 阅读(1790) 评论(0) 推荐(0) 编辑
摘要:转:http://blog.chinaunix.net/uid-26813001-id-3282954.html首先介绍一下diff和patch。在这里不会把man在线文档上所有的选项都介绍一下,那样也没有必要。在99%的时间里,我们只会用到几个选项。所以必须学会这几个选项。1、diff--------------------NAME diff - find differences between two filesSYNOPSIS diff [options] from-file to-file--------------------简 单的说,diff的功能就是用来比较两个文件的不同,然后 阅读全文
posted @ 2013-09-26 17:10 摩斯电码 阅读(5197) 评论(0) 推荐(0) 编辑
摘要:转:http://blog.chinaunix.net/uid-22030783-id-3347621.html在XC2440开发板上做uboot从nandflash启动时,需要检测硬件启动方式,启动方式是由硬件OM管脚决定的,软件无法检测硬件电平状态,但可以根据CPU的启动特性来检测。通过深入研究2440的启动方式,总结了几点:如果将S3C2440配置成从NANDFLASH启动(将开发板的启动开关拔到nand端,此时OM0管脚拉低)S3C2440的Nand控制器会自动把Nandflash中的前4K代码数据搬到内部SRAM中(地址为0x40000000),同时还把这块SRAM地址映射到了0x0 阅读全文
posted @ 2013-09-25 19:58 摩斯电码 阅读(361) 评论(0) 推荐(0) 编辑
摘要:转:http://blog.chinaunix.net/uid-22030783-id-3350840.html获得dnw4linux.tar.bz2 源码包,可在xcembed论坛下载:http://www.xcembed.com/forum.php?mod=viewthread&tid=1018&extra=解压源码包:tar xjvf dnw4linux.tar.bz2cd dnw4linux会得到两个目录app driver编译dnw应用程序:cd appmake编译出dnw可执行文件,将它放到/usr/bin目录下sudo cp dnw /usr/bin/这样就可以在 阅读全文
posted @ 2013-09-25 19:56 摩斯电码 阅读(548) 评论(0) 推荐(0) 编辑
摘要:转:http://www.360doc.com/content/11/0415/21/1317564_109922388.shtmludev 是Linux kernel 2.6系列的设备管理器。它主要的功能是管理/dev目录底下的设备节点。它同时也是用来接替devfs及hotplug的功能,这意味着它要在添加/删 除硬件时处理/dev目录以及所有用户空间的行为,包括加载firmware时。udev的最新版本依赖于升级后的Linux kernel 2.6.13的uevent接口的最新版本。使用新版本udev的系统不能在2.6.13以下版本启动,除非使用noudev参数来禁用udev并使用传 统的 阅读全文
posted @ 2013-09-18 19:21 摩斯电码 阅读(410) 评论(0) 推荐(0) 编辑
摘要:转:http://www.360doc.com/content/10/0527/18/9922_29835045.shtml这篇文章说的很好http://blog.chinaunix.net/u1/38994/showart_2022040.html: 如何使用busybox精简版本udev程序--mdev动态创建插入的u盘和鼠标等设备 busybox的mdev是一个精简了的udev管理程序,它可以间接的以hotplug方式被内核调用,进而在arm平台上/dev目录下动态创建设备 节点,因为hotplug会被内核发送uevent之前调用,所以如果动态可插拔设备很多,很频繁,那么每次内核都会调. 阅读全文
posted @ 2013-09-18 19:21 摩斯电码 阅读(1334) 评论(0) 推荐(0) 编辑
摘要:转:http://www.360doc.com/content/11/1203/09/7378000_169310928.shtml一、devfslinux下有专门的文件系统用来对设备进行管理,devfs和sysfs就是其中两种。在2.6内核以前一直使用的是devfs,devfs挂载于/dev目录下,提供了一种类似于文件的方法来管理位于/dev目录下的所有设备,我们知道/dev目录下的每一个文件都对应的是一个设备,至于当前该设备存在与否先且不论,而且这些特殊文件是位于根文件系统上的,在制作文件系统的时候我们就已经建立了这些设备文件,因此通过操作这些特殊文件,可以实现与内核进行交互。但是devf 阅读全文
posted @ 2013-09-18 19:17 摩斯电码 阅读(564) 评论(0) 推荐(0) 编辑
摘要:转:http://www.360doc.com/content/12/0102/11/1299815_176623363.shtml一直缠绕的两个问题:怎样标识的内核栈与用户栈?如何在内核态堆栈与用户态堆栈之间切换?用户态堆栈指针:ss和esp;内核态堆栈指针:ss0和esp0;二者均位于任务的tss结构中。这里的任务是指除任务0和1之外的普通任务。CPU进行用户态堆栈到内核态堆栈的切换操作时,CPU会从当前任务的任务状态段TSS中取得新堆栈的段选择符和偏移值,即从TSS的ss0和 esp0字段中获取,在定位了新堆栈(内核态堆栈)之后,CPU就会首先把原用户态堆栈指针ss和esp压入内核态堆栈 阅读全文
posted @ 2013-09-18 19:15 摩斯电码 阅读(769) 评论(0) 推荐(0) 编辑
摘要:转:http://www.360doc.com/content/11/1219/16/1299815_173418267.shtml看了一段时间的驱动编程,从LDD3的hello wrod到后来的字符设备以至于更加复杂的驱动,越看越是觉得对linux驱动的结构不清楚,越看越是迷糊。于是就停下脚步搜索一下资料理一下头绪:以下四个方面来总结一些内容:1.底层数据结构:kobject,kset.2.linux设备模型层次关系:bus_type,device,device_driver.3.集成:PCI设备驱动模型实例及设备,设备驱动注册源码的简单分析.4.面向对象的思想在linux设备模型中的应用分 阅读全文
posted @ 2013-09-18 19:13 摩斯电码 阅读(730) 评论(0) 推荐(0) 编辑
摘要:转:http://www.360doc.com/content/12/0506/19/1299815_209093142.shtmlhi all and barry, 最近在学习字符设备驱动,不太明白private_data在字符驱动中的作用,我们在驱动中添加一个设备结构体,然后定义了这个结构体的全局指针变量,接着我们就能在驱动程序中使用这个指针了。我看到很多驱动程序中都把结构体指针付给private_data,然后对private_data操作。 为什么要使用private_data,难道仅仅是避免使用全局变量,还有没有其他的作用,请大侠们指点。thanks allliaoye2011-.. 阅读全文
posted @ 2013-09-18 19:12 摩斯电码 阅读(1995) 评论(0) 推荐(0) 编辑
摘要:转:http://www.360doc.com/content/11/1218/16/1299815_173168170.shtmlsysfs把连接在系统上的设备和总线组织成为一个分级的目录及文件,它们可以由用户空间存取,向用户空间导出内核数据结构以及它们的属性,这其中就包括设备的主次设备号。新的设备文件系统udev的工作过程就依赖于sysfs文件系统的这些功能特点。udev文件系统在用户空间工作,它可以根据sysfs文件系统导出的信息(设备号(dev)等),动态建立和删除设备文件(下文详细介绍),而不再需要使用mknod来手动建立设备文件,也不必为查找设备号(尤其是驱动中动态申请产生的设备号 阅读全文
posted @ 2013-09-18 19:09 摩斯电码 阅读(705) 评论(0) 推荐(0) 编辑
摘要:转:http://www.360doc.com/content/11/0418/00/5087210_110410837.shtml版权声明本 文作者是一位自由软件爱好者,所以本文虽然不是软件,但是本着 GPL 的精神发布。任何人都可以自由使用、转载、复制和再分发,但必须保留作者署名,亦不得对声明中的任何条款作任何形式的修改,也不得附加任何其它条件。您可 以自由链接、下载、传播此文档,但前提是必须保证全文完整转载,包括完整的版权信息和作译者声明。其他作品本文作者十分愿意与他人共享劳动成果,如果你对我的其他翻译作品或者技术文章有兴趣,可以在如下位置查看现有作品的列表:金步国作品列表BUG报告,切 阅读全文
posted @ 2013-09-18 19:00 摩斯电码 阅读(623) 评论(0) 推荐(0) 编辑
摘要:转:http://www.360doc.com/content/09/0315/10/26398_2812414.shtml一:前言上个星期同事无意间说起,在用核中创建的用户空间进程中,使用printf不能显示的问题.这个问题我当时一时半会没有解释清楚.现在就从linux kernel的源代码的角度来分析该问题的原因所在.二:fork()与execve()中stderr,stdio.stdout的继承关系其实用继承这个词好像不太准确,要准确一点,可能复制更适合.首先有二点:1:父进程fork出子进程后,是共享所有文件描述符的(实际上也包括socket)2:进程在execve后,除了用O_CLO 阅读全文
posted @ 2013-09-18 18:58 摩斯电码 阅读(383) 评论(0) 推荐(0) 编辑
摘要:转:http://www.360doc.com/content/11/1208/15/3700464_170655736.shtml大大小小事情一堆,好久不更新了,这次记录下移植ubifs文件系统步骤。虽然通常是先kernel后rootfs,但是kernel要不停改,rootfs却必须得先存在,所以先搞定rootfs,rootfs采用据说是nand flash上最先进的ubifs。上http://www.busybox.net/下载busybox源代码,目前最新的稳定版本为1.18.1,解压至Workspaces。以下切换到root用户进行操作(在其他用户模式下编译出来的rootfs登录时不是 阅读全文
posted @ 2013-09-18 18:50 摩斯电码 阅读(1155) 评论(0) 推荐(0) 编辑
摘要:转:http://www.360doc.com/content/05/0915/14/1429_12641.shtmlBabyLinux制作过程详解作者:GuCuiwen email:win2linux@163.com版权声明:本文档可以在网络上在非商业范围内自由转载,转载请注明出处如果转载版面包含商业广告,请向作者支付至少每千字100园的稿费以书面,书籍形式转载和出版请按至少每千字100园人民币的标准向作者支付稿费一,什么是BabyLinux二,为什么要做这样一个linux三,什么人适合读这篇文档四,应该具备的知识 五,linux系统引导过程简介六,编译内核七,编译busybox八,制作根文 阅读全文
posted @ 2013-09-18 18:49 摩斯电码 阅读(1371) 评论(0) 推荐(0) 编辑
摘要:转:http://www.360doc.com/content/11/1013/22/7775902_155877501.shtml这几天在使用Busybox制作FS2410开发板的CRAMFS文件系统,由于开始 下载的是Busybox1.10,每次下载到开发板中,然后启动总是出现”Failed to execute /linuxrc. Attempting defaults...“的错误。到网上查了大量的资料,并做了大量的实验,发现都不能成功。今天下午突然发现一个能够仿真arm的软件qemu,在 Ubuntu中的安装方法:sudo apt-get install qemu,Busybox编译 阅读全文
posted @ 2013-09-18 18:46 摩斯电码 阅读(691) 评论(0) 推荐(0) 编辑
摘要:当编写驱动程序时,一般情况下不能使用C标准库的函数。Linux内核也提供了与标准库函数功能相同的一些函数,但二者还是稍有差别。类别函数名功能函数形成参数描述字符串转换simple_strtol把一个字符串转换为一个有符号长整数long simple_strtol (const char * cp, char ** endp, unsigned int base)cp指向字符串的开始,endp为指向要分析的字符串末尾处的位置,base为要用的基数。simple_strtoll把一个字符串转换为一个有符号长长整数long long simple_strtoll (const char * cp, 阅读全文
posted @ 2013-09-18 15:42 摩斯电码 阅读(483) 评论(0) 推荐(0) 编辑
摘要:GNU汇编语言结构 主要包括三个常用的段: data 数据段 声明带有初始值的元素 bss 数据段 声明使用0或者null初始化的元素 text 正文段 包含的指令, 每个汇编程序都必须包含此段 使用.section 指令定义段, 如: .section .data .section .bss .section .text 起始点: gnu汇编器使用_start标签表示默认的起始点, 此外如果想要汇编内部的标签能够被外部程序访问, 需要使用.globl 指令, 如:.globl _start 使用通用库函数时可以使用: ld -dynamic-linker /lib/ld-linux.so.2 阅读全文
posted @ 2013-09-18 11:46 摩斯电码 阅读(620) 评论(0) 推荐(0) 编辑

上一页 1 ··· 6 7 8 9 10 11 12 下一页