
Embedded Linux
evilcode
这个作者很懒,什么都没留下…
展开
-
jiffies溢出与时间先后比较
转自:http://decimal.blog.51cto.com/1484476/410673 1. 概述在Linux内核中,TCP/IP协议栈在很多用到时间比较的地方都使用了jiffies?本文介绍了什么是jiffies,jiffies溢出可能造成的问题,使用time_after等宏来正确地比较时间及其背后的原理。2. jiffies简介2.1 时钟中断在Linux内核中,T...转载 2018-09-25 14:17:27 · 293 阅读 · 0 评论 -
使用 /proc 文件系统来访问 Linux 内核的内容
http://www.ibm.com/developerworks/cn/linux/l-proc.html最初开发 /proc 文件系统是为了提供有关系统中进程的信息。但是由于这个文件系统非常有用,因此内核中的很多元素也开始使用它来报告信息,或启用动态运行时配置。/proc 文件系统包含了一些目录(用作组织信息的方式)和虚拟文件。虚拟文件可以向用户呈现内核中的一些信息,也可以转载 2011-12-05 21:42:52 · 703 阅读 · 1 评论 -
USB 2.0 OTG行動版規格概述
http://support.asus.com.cn/documents/detail.aspx?SLanguage=zh-tw&m=a7n8x&p=1&s=10&os=&hashedid=Uz3L1ioFuZkCI0VO&no=775技術文件 :USB 2.0 OTG行動版規格概述網頁小工具解答電子產品在挑戰尺寸、容量、處理速度與便转载 2011-12-02 20:37:07 · 1989 阅读 · 0 评论 -
Mount 使用方法 (中文版man mount)
Man page of MOUNT5559ming1016@gmail.comMOUNTSection: Linux Programmer's Manual (8) Updated: 14 September 1997 Index 返回主目录 NAMEmount - 挂载文件系统 SYNOPSIS 总览mount [-lhV] mount转载 2011-11-24 12:29:34 · 14527 阅读 · 0 评论 -
linux mount挂载设备(u盘,光盘,iso等 )使用说明
对于新手学习,mount 命令,一定会有很多疑问。其实我想疑问来源更多的是对linux系统本身特殊性了解问题。 linux是基于文件系统,所有的设备都会对应于:/dev/下面的设备。如:[chengmo@centos5 dev]$ ls | grep -E "^(sd|hd)"hdcsdasda1sda2sdbsdb1sd*代表scic硬盘转载 2011-11-24 12:42:56 · 1294 阅读 · 0 评论 -
ext4的fsync性能和nodelalloc参数的分析
原文:http://blog.thinksrc.com/?p=189001感叹归感叹,发泄完了还得继续过。前几天忙的不可开交,周报上面竟然能列出11项,想想以前在T公司时候的清闲,现在的老板的真幸运了。好了,言归正传。我们的系统是使用ext4作为文件系统的,ext4怎么好呢? 主要是我对它感觉比较好,呵呵,开玩笑的。还记得第一次使用一个全新的ext4作为文件系统(不转载 2011-11-24 10:23:17 · 10356 阅读 · 2 评论 -
linux reboot/复位 函数
#include #include int reboot(int flag);------------------------------------1 #include 2 #include 3 int main()4 {5转载 2011-08-29 11:20:57 · 4015 阅读 · 0 评论 -
自旋锁及其衍生的锁,值得看看
自旋锁自旋锁(spinlock)是用在多个CPU系统中的锁机制,当一个CPU正访问自旋锁保护的临界区时,临界区将被锁上,其他需要访问此临界区的CPU只能忙等待,直到前面的CPU已访问完临界区,将临界区开锁。自旋锁上锁后让等待线程进行忙等待而不是睡眠阻塞,而信号量是让等待线程睡转载 2011-09-08 10:01:43 · 839 阅读 · 0 评论 -
Linux hrtimer分析(二)
原文地址:http://blog.youkuaiyun.com/walkingman321/article/details/6151172本文介绍Linux2.6.29中,配置高精度模式的hrtimer与未配置高精度模式时行为的区别。本文暂不考虑高精度模式对Linux系统时钟中断转载 2011-09-08 10:03:17 · 1207 阅读 · 0 评论 -
Linux内核红黑树使用方法
转载自Linux2.6.29 内核文档,rbtree.txt如果要使用红黑树,可直接复制内核中的代码rbtree.c/hRed-black Trees (rbtree) in Linux January 18, 2007 Rob Lan转载 2011-09-08 10:00:56 · 1973 阅读 · 0 评论 -
内核中各种出错函数的总结
转:http://blog.sina.com.cn/s/blog_79e6215701010k7x.html1、许多的内核函数需要返回一个指针,但是函数的调用可能失败,一般我们处理这样的情形都是返回一个NULL指针,就像malloc或kmalloc在没有获得指定的空间申请时的返回值一样。但是有时我们想知道导致函数失败的原因,但是返回NULL就显得信息不够。因此有些函数返回一个实际的错误转载 2012-03-29 17:58:10 · 1091 阅读 · 0 评论 -
mmiowb的使用场景
转:http://blog.chinaunix.net/uid-25871104-id-2880884.html摘抄memory-barrier.txt中关于mmiowb的一部分,以解答mmiowb的用法。----------在某些情况下(特别是涉及到NUMA的情况), 两个CPU上发起的属于两个spinlock临界区的IO访问可能被PCI桥看成是交错发转载 2012-04-09 20:02:48 · 2320 阅读 · 1 评论 -
压缩算法效率比较
Quick Benchmark: Gzip vs Bzip2 vs LZMA vs XZ vs LZ4 vs LZO比较了几种算法:1. 压缩效率:LZO <GZIP < BZIP2 < LZMA2. 压缩时间:GZIP <LZO ~= BZIP2 << LZMA3. 解压缩时间:LZO <GZIP < LZMA<< BZIP...转载 2018-08-08 10:01:12 · 9955 阅读 · 0 评论 -
Linux内核调试技巧--current的应用
current 指针指向当前在运行的进程,内核代码可以通过使用 current 来使用进程特定的信息。指向 task_struct 的current指针在内核堆栈内,是一个全局项。为什么要用?查看当前谁在使用内核你关心的那段代码的时候。怎么用?printk(KERN_INFO "The cuurent process commond : \"%s\" the转载 2013-01-16 11:37:45 · 1135 阅读 · 0 评论 -
Linux内核里的DebugFS
转自:http://www.cnblogs.com/wwang/archive/2011/01/17/1937609.htmlDebugFS,顾名思义,是一种用于内核调试的虚拟文件系统,内核开发者通过debugfs和用户空间交换数据。类似的虚拟文件系统还有procfs和sysfs等,这几种虚拟文件系统都并不实际存储在硬盘上,而是Linux内核运行起来后才建立起来。通常情况下,最常用转载 2013-01-16 11:32:26 · 833 阅读 · 0 评论 -
/proc/pid/stat
/proc/ /stat包含了所有CPU活跃的信息,该文件中的所有值都是从系统启动开始累计到当前时刻。[root@localhost ~]# cat /proc/6873/stat6873 (a.out) R 6723 6873 6723 34819 6873 8388608 77 0 0 0 41958 31 0 0 25 0 3 0 5882654 1409024 56 42转载 2012-11-08 11:43:38 · 665 阅读 · 0 评论 -
/proc/stat explained
from: http://www.linuxhowtos.org/System/procstat.htm/proc/stat explainedVarious pieces of information about kernel activity are available in the/proc/stat file.All of the numbers reported in转载 2012-11-08 11:39:45 · 797 阅读 · 0 评论 -
檢查檔案系統 (Filesystem Check, fsck)
转载:http://wiki.debian.org.hk/w/Check_filesystemUnix/Linux 一般使用工具 fsck (意思為 filesystem check 或 filesystem consistency check) 來檢查檔案系統是否有問題和進行修復工作 (和 Windows/MSDOS 的磁碟掃瞄工具 SCANDISK/CHKDISK 類似),您可以使转载 2012-08-22 13:21:27 · 2289 阅读 · 0 评论 -
ubuntu vnc配置
LINUX服务器上安装了图形界面后,肯定需要安装VNC才能远程连接桌面了,这里介绍的是ubuntu上VNC的安装配置。ubuntu上安装VNC server很简单:sudo apt-get install vnc4server安装完后输入以下命令,给当前用户设置密码,这个密码就是连接VNC时要用到的:vncpasswd接下来会要求输入再次密码,确认后密码就设转载 2012-07-17 14:07:57 · 1302 阅读 · 0 评论 -
linux静态库和动态库分析
转载:http://www.linuxeden.com/html/develop/20100326/94297.html1.什么是库 在windows平台和linux平台下都大量存在着库。 本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。 由于windows和linux的本质不同,因此二者库的二进制是不兼容的。 本文仅限于介绍lin转载 2012-06-11 11:19:24 · 891 阅读 · 1 评论 -
late_initcall
所有的__init函数在区段.initcall.init中还保存了一份函数指针,在初始化时内核会通过这些函数指针调用这些__init函数指针,并在整个初始化完成后,释放整个init区段(包括.init.text,.initcall.init等)。 注意,这些函数在内核初转载 2011-09-06 20:40:31 · 1732 阅读 · 0 评论 -
Linux hrtimer分析(一)
原文地址:http://blog.youkuaiyun.com/walkingman321/article/details/6133171本文分析了Linux2.6.29中hrtimer的实现。 Linux2.6中实现了一种新的定时器hrtimer。与传统定时器使用时间轮算法不同转载 2011-09-08 10:02:27 · 1132 阅读 · 0 评论 -
[NAND]U-BOOT Nand命令支持
<br /><br />u-boot1.1.6 nand_legacy驱动提供了u-boot对nand相关命令的一个轻量级的实现,但好象可扩展性不足。本文主要分析u-boot 1.16/drivers/nand文件夹下的源程序。一.关键数据结构1.struct mtd_info<br />该结构在include/linux/mtd/Mtd.h中定义,字段比较多,有很多还是函数指针,它是MTD设备操作的通用接口,这个结构中有一个比较重要的成员 void *priv,priv被声明成void指针,在下文的分析中转载 2010-10-23 16:57:00 · 1257 阅读 · 0 评论 -
[NAND]UBOOT中NAND操作
本文中CONFIG_COMMANDS & CFG_CMD_NAND) (CFG_NAND_LEGACY)有错。loadb 20000000 //(1)nand erase 0x100000 0x200000 //(2)nand write 0x20000000 0x100000 0x200000 -//(3)nand read 0x20000000 0x100000 0x200000 -//(4)tftp 0x802000转载 2010-10-23 16:53:00 · 1070 阅读 · 0 评论 -
UBOOT之DDR2内存移植相关修改简记
<br /><br />原文地址:http://blog.youkuaiyun.com/lightsoure/archive/2010/09/22/5900500.aspx<br />环境:S5PC100+android(UBOOT 1.3.4)<br />DDR2 256MB <br />由于DDR2相对于mobile ddR的低功耗优势,加上产品本身对功耗要求较高,所以需要使用DD2代替MOBILE DDR;<br />从/board/samsung/smdkc100下的UBOOT链表u-boot.LDS<br /转载 2010-10-22 11:14:00 · 5880 阅读 · 0 评论 -
DDR 内存子系统常见硬件错误记及软件诊断算法
<br />在Uboot下,Denx针对常见内存故障实现了严格的DDR检测程序。下图分三个阶段分别描述了检测数据线,地址线和DDR物理存储器件的过程和方法。科学是严谨的,来不得半点侥幸, 而DDR子系统又是很容易出故障却很难debug的。Denx设计的这一套算法堪称DDR内存检测之“铁面无私包青天”!<br /><br />为什么先检测数据线?<br />因为数据线如果是断开的,一切无从谈起!第二步是检测地址线,只有数据线地址线都ok,检测内存的存储单元才有意义,这样的顺序也利于分割定位问题。1楼的test转载 2010-10-23 16:38:00 · 7346 阅读 · 2 评论 -
_IO, _IOR, _IOW, _IOWR 宏的用法与解析
<br />_IO, _IOR, _IOW, _IOWR 宏的用法与解析在驱动程序里, ioctl() 函数传送的参量 cmd (ioctl号)是应用程序用于区别设备驱动程序请求处理内容的值。cmd除了可区别数字外,还包含有助于处理的几种相应信息。 cmd的大小为 32位,共分 4 个域:<br /><br />bit31~bit30 2位为 “区别读写” 区,作用是区分是读取命令还是写入命令。<br /><br />bit29~bit15 14位为 "数据大小" 区,表示 ioctl() 中的 arg 变转载 2010-10-11 15:48:00 · 731 阅读 · 0 评论 -
Adding a Custom System Call to Ubuntu Linux in [C]
Adding a Custom System Call to Ubuntu Linux in [C]<br />REQUIRES:Compiling a [C] program in Linux<br />Today we are going to add a custom “Hello World” system call to Ubuntu 9.04 Linux using the kernel version: 2.6.28-11.<br />First things first, we ne转载 2010-09-08 10:39:00 · 1316 阅读 · 0 评论 -
Linux内核裁剪的具体步骤
<br />Linux内核裁剪。<br />原文地址:http://blog.chinaunix.net/u/12909/showart_1815729.html<br />在menuconfig中配置: <br /><br />详细介绍内核配置选项及删改情况 <br />第一部分:全部删除 <br />Code maturity level options ---> 代码成熟等级选项 <br />[]Prompt for development and/or incomplete code转载 2010-07-26 19:08:00 · 808 阅读 · 0 评论 -
ucLinux内核移植相关代码分析
<br />本文通过整理之前研发的一个项目(ARM7TDMI + uCLinux),分析内核启动过程及需要修改的文件,以供内核移植者参考。整理过程中也同时参考了众多网友的帖子,在此谢过。由于整理过程匆忙,难免错误及讲解的不够清楚之处,请各位网友指正,这里提前谢过。本文分以下部分进行介绍: Bootloader及内核解压 内核启动方式介绍 内核启动地址的确定 arch/armnommu/kernel/head-armv.S分析 start_kernel()函数分析 <br />1. Boo转载 2010-07-22 10:00:00 · 758 阅读 · 0 评论 -
LCD框架介绍
<br />Revision History<br /><br />Date Issue Description Author<br /><br /><04/15/2010> <0.1> LCD架构分析 Wylhistory<br /><br />目录<br /><br />1. 摘要 3<br /><br />2. 介绍 3<br /><br />3. 思路 3<br /><br />4. 初始化 4<br /><br />4.1 设备和驱动注册 4<br /><br />转载 2010-07-01 13:51:00 · 1867 阅读 · 0 评论 -
[NAND]UBOOT从NAND FLASH启动分析
<br /> UBOOT从NAND FLASH启动分析在分析启动代码之前先看一下S3C2440的NAND启动:<br />在配置NAND启动模式之后,S3C2440上电会先将NAND中的0x0 - 0x1000共4096字节的数据拷贝到位于Bank0中的Boot Internal SRAM上<br />Bank0如下图:可以看出Boot Internal SRAM为4KB大小,也正是因为Boot Internal SRAM只有4KB大小,所以只能从NAND中拷贝转载 2010-10-23 16:59:00 · 1695 阅读 · 0 评论 -
Mechanics of USB cable and connector
<br /><br />上图给出了当前有且仅有的四种USB PLUG(所谓的公头)。<br />对于Standard系列,1-4脚如下定义<br />-----------------------------------------------------------------------------------------------------------------------<br />Contact Number 触点号码 Signal Name信号名 Typical wir转载 2010-10-25 11:01:00 · 1006 阅读 · 0 评论 -
Linux内核模块传参
对于如何向模块传递参数,Linux kernel 提供了一个简单的框架。其允许驱动程序声明参数,并且用户在系统启动或模块装载时为参数指定相应值,在驱动程序里,参数的用法如同全局变量。 使用下面的宏时需要包含头文件。 通过宏module_param()定义一个模块参数:转载 2011-09-05 15:13:47 · 777 阅读 · 0 评论 -
python使用os.walk和os.path.join来遍历文件夹的文件(包括子文件夹下的文件)
原文:http://blog.youkuaiyun.com/zzllabcd/article/details/4293218使用os.walk和os.path.join来遍历文件夹的文件 import osimport os.path path = 'C://' for root, dirs转载 2011-07-08 18:55:29 · 1764 阅读 · 0 评论 -
使用time+dd测试硬盘读写速度
<br />写速度:<br />time dd if=/dev/zero of=test.dbf bs=8k count=300000<br />其中/dev/zero是一个伪设备,它只产生空字符流,对它不会产生IO,所以,IO都会集中在of文件中,of文件只用于写,所以这个命令相当于测试磁盘的写能力。<br />输出的结果类似(因为一般更长测试时间更准确,所以可以设置count大一些):<br />300000+0 records in<br />300000+0 records out<br />rea转载 2011-05-06 17:02:00 · 1909 阅读 · 0 评论 -
BMP文件格式分析
简介BMP(Bitmap-File)图形文件是Windows采用的图形文件格式,在Windows环境下运行的所有图象处理软件都支持BMP图象文件格式。Windows系统内部各图像绘制操作都是以BMP为基础的。Windows 3.0以前的BMP图文件格式与显示设备有关,因此把这种BMP图象文件格式称为设备相关位图DDB(device-dependent bitmap)文件格式。Win转载 2011-06-22 18:22:00 · 1022 阅读 · 0 评论 -
OTG中的ID脚风波释疑
原文:http://my.oschina.net/u/130864/blog/15322 Weike的博客 1. 概要OTG设备使用插头中的ID引脚来区分A/B Device,ID接地被称作为A-Device,充当USB Host,A-Device始终为总线 提供电力,ID悬空被称作为B-Device,充当USB Device,设备的USB Host/USB Device角色转载 2011-06-17 15:15:00 · 5759 阅读 · 1 评论 -
DDR2 ODT
<br /><br />经常有人会说支持DDR2的主板存在偷工减料的现象。事实上这是由于DDR2内存中使用了一项新的ODT技术,它可以在提高内存信号稳定性的基础上节省不少电器元件(个人想法:ODT会增加功耗的阿)。主板终结是一种最为常见的终结主板内干扰信号的方法。在每一条信号传输路径的末端,都会安置一个终结电阻,它具备一定的阻值可以吸收反射回来的电子。但是目前DDR2内存的工作频率太高了,这种主板终结的方法并不能有效的阻止干扰信号。若硬要采用主板终结的方法得到纯净的DDR2时钟信号会花费巨额的制造成本。<b转载 2011-04-13 17:00:00 · 5259 阅读 · 0 评论 -
Makefile 判断文件是否存在
<br />makefile判断文件存在如下的两种方法:<br />1. 调用shell的函数进行判断exist=$(shellif[-f$(FILE)];thenecho"exist";elseecho"notexist";fi;)ifeq(exist,"exist")#do something hereendif当然,这个方法很土,但是能够工作!!2. 使用makefile的函数进行判断ifeq($(FILE),$(wildcard$(FILE)))#do something heree转载 2011-06-01 21:29:00 · 9630 阅读 · 2 评论