自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

tmkeepgood的专栏

我的积累历程

  • 博客(35)
  • 资源 (2)
  • 收藏
  • 关注

原创 7z报错 "Can't allocate required memory"的解决方法

错误:7-Zip [32] 15.09 beta : Copyright (c) 1999-2015 Igor Pavlov : 2015-10-16p7zip Version 15.09 beta (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,32 bits,32 CPUs Intel(R) Xeon(R) CPU E5-2680 0 @ 2.70G...

2020-04-20 16:41:06 2399

转载 int (*func(int)) (int *,int)

转自:http://www.iteye.com/problems/24480#include #define NULL 0 #define ASGN 1 #define MUL 2 int asgn(int* a, int b) { return *a = b; } int mul(int* a, int b) {

2017-04-14 10:38:28 2002

转载 mutex与semaphore的区别

mutex与semaphore的区别摘自:http://blog.163.com/iam_zhangyong/blog/static/18234533820112147419797/Mutex 的发音是 /mjuteks/ ,其含义为互斥(体),这个词是Mutual Exclude的缩写。Mutex在计算机中是互斥也就是排他持有的一种方式,和信号量-Semaphore有可以

2017-04-10 16:55:24 471

原创 创建系统时间命名的文件夹

@echo offset my_date=%date:~0,4%%date:~5,2%%date:~8,2%set my_time=%time:~0,2%%time:~3,2%%time:~6,2%set dir_name=%my_date%%my_time%mkdir %dir_name%根据各个系统的时间/日期格式不同,需要做稍许调整

2015-06-17 19:27:34 683

原创 tasklet、wait_queue、completion、work_queue用法总结

对于内核中常用的中断处理机制tasklet/work_queue/wait_queue/completion做一些总结,方便在合适的时候采用合适的机制。

2014-11-07 17:21:29 2213 1

原创 利用mmc_test.c研究mmc模块

mmc初始化流程研究及mmc_test.c的使用不清楚mmc_test.c的作者希望大家如何利用该模块,通过向该模块的probe函数传入一个合法的mmc_card指针,便可完成对该模块的使用。

2014-09-16 20:12:20 3132 2

原创 linux 添加系统调用的方法(arm架构)

在linux中,系统调用是非常重要的一个机制。本文首先探讨了系统调用需要哪些文件的支持,之后讨论如何增加自己的系统调用。

2014-08-16 22:54:10 2655

原创 linux中通过等待队列来实现阻塞

linux中,可以用wait_queue来实现阻塞。

2014-08-16 22:27:36 725

转载 内核通知链机制的原理及实现

转自:http://blog.sina.com.cn/s/blog_6683e49d0100tovr.html一、概念:    大多数内核子系统都是相互独立的,因此某个子系统可能对其它子系统产生的事件感兴趣。为了满足这个需求,也即是让某个子系统在发生某个事件时通知其它的子系统,Linux内核提供了通知链的机制。通知链表只能够在内核的子系统之间使用,而不能够在内核与用户空间之间进行事件的通知

2014-02-24 13:10:12 518

转载 Linux中的工作队列

转自 http://tanatseng.blog.163.com/blog/static/174991629201132734828701/工作队列一般用来做滞后的工作,比如在中断里面要做很多事,但是比较耗时,这时就可以把耗时的工作放到工作队列。说白了就是系统延时调度的一个自定义函数。 工作队列是实现延迟的新机制,从 2.5 版本 Linux内核开始提供该功能。不同于微线程一步

2014-02-24 13:06:04 805

原创 u-boot 到 kernel 传递参数的流程

u-boot部分:normal_mode -> vlx_nand_boot -> vlx_entry 8f860134 :8f860134:       e92d4008        push    {r3, lr}8f860138:       eb000869        bl      8f8622e4 8f86013c:       e30017de       

2014-01-22 22:01:43 1011

转载 解密module_init

在Linux底下写过driver模块的对这个宏一定不会陌生。module_init宏在MODULE宏有没有定义的情况下展开的内容是不同的,如果这个宏没有定义,基本上表明阁下的模块是要编译进内核的(obj-y)。1.在MODULE没有定义这种情况下,module_init定义如下:#define module_init(x) __initcall(x);因为#define __ini

2014-01-08 17:34:26 510

转载 让vim显示空格,及tab字符 vim 多行注释

1、显示 TAB 键文件中有 TAB 键的时候,你是看不见的。要把它显示出来::set list现在 TAB 键显示为 ^I,而 $显示在每行的结尾,以便你能找到可能会被你忽略的空白字符在哪里。 这样做的一个缺点是在有很多 TAB 的时候看起来很丑。如果你使用一个有颜色的终端,或者使用 GUI 模式,Vim 可以用高亮显示空格和TAB。 使用 ‘listchar

2013-12-26 21:27:27 1378

原创 工作队列的使用

由于在中断中不能进行阻塞型操作,而有时候确实需要在中断时读取某些内存单元的值,此时可以考虑利用工作队列来实现。 struct work_struct xxx_wq;//定义工作队列......INIT_WORK(&xxx_wq,read_data);//初始化工作队列,在工作队列中需要执行的是函数read_data......schedule_work(&read_busm

2013-12-16 11:03:42 883

原创 通过mmap将连续物理地址映射到用户空间

由于MMU对用户空间的内存采用页式管理,用户空间的内存都是虚拟的,只有当真正写入物理内存时,系统才会判断是否为该虚拟内存分配物理内存,如果未分配就会触发缺页中断,然后分配一整页的内存给应用程序。所以用户空间的内存表面上连续,但是实际的物理内存不一定连续。         由于种种原因,我们有时候会需要用户空间的虚拟内存在物理上面也连续。按照MMU的管理方式,虚拟内存最多只能有一页——409

2013-12-13 20:40:54 6479 4

原创 strtol的用法

该函数可用于将ASCII码转换为各种进制的数。 unsigned long value = strtol("0x12345678",NULL,16);第一个参数用于设定待转换的字符串(会自动识别0x),第二个参数和起始位置有关,第三个参数用于设定需要的进制。结果:12345678

2013-12-04 08:26:41 641

原创 ffs的另外一种实现方法

kernel中有个宏ffs,是用于从一个数中找出第一个为1的位(由低到高),为了提高效率,用了汇编指令实现。在其它应用中,由于不需要考虑效率问题,可以采用其他方式实现:

2013-12-03 14:12:30 1780

转载 Linux内核中ioremap映射的透彻理解

几乎每一种外设都是通过读写设备上的寄存器来进行的,通常包括控制寄存器、状态寄存器和数据寄存器三大类,外设的寄存器通常被连续地编址。根据CPU体系结构的不同,CPU对IO端口的编址方式有两种:  (1)I/O映射方式(I/O-mapped)  典型地,如X86处理器为外设专门实现了一个单独的地址空间,称为"I/O地址空间"或者"I/O端口空间",CPU通过专门的I/O指令(如X86的IN和O

2013-11-28 13:22:01 523

转载 axi总线介绍

AXI(Advanced eXtensible Interface)是一种总协议,该协议是ARM公司提出的AMBA(Advanced Microcontroller Bus Architecture)3.0协议中最重要的部分,是一种面向高性能、高带宽、低延迟的片内总线。它的地址/控制和数据相位是分离的,支持不对齐的数据传输,同时在突发传输中,只需要首地址,同时分离的读写数据通道、并支持显著传输访问

2013-11-26 16:17:50 6927 1

转载 使用__builtin_return_address获得程序运行栈情况

项目中遇到了一个多线程的问题,系统总是莫名其妙的崩溃,而且bug不可重现,后来发现是接收到某些信号的问题,于是乎就加入了信号处理函数,想获得是什么地方触发了这个信号,因为感觉多线程调试比较麻烦,于是就想到了使用利用__builtin_return_address来获得函数运行栈的方法。直接上测试代码: #include #include #include

2013-11-26 15:42:36 845

转载 __builtin_constant_p(x)

gcc的内建函数,当x为常数时返回1, x为变量时返回0. 不过这并不完全准确。linux kernel的代码中经常有这样的代码:if (__builtin_constant_p(x)) {do1;} else {do2;}可以认为这个函数的求值在编译时就完成了。从而外面的条件跳转语句的两个分支,只有其中一个会出现在目标代码中。准确的定义应该是:如果x的值在编译时能

2013-11-26 15:41:50 2267

转载 物理内存的分配

物理内存的分配在内核分配内存时,必须记录页帧的已分配或空闲状态,以免两个进程使用同样的内存区域。由于内存分配和释放非常频繁,内核还必须保证相关操作尽快完成。内核可以只分配完整的页帧。将内存划分为更小的部分的工作,则委托给用户空间中的标准库。标准库将来源于内核的页帧拆分为小的区域,并为进程分配内存。1. 伙伴系统内核中很多时候要求分配连续页。为快速检测内存中的连续区域,内核采用了一种古老而历

2013-11-22 13:32:49 1141

转载 linux编译信息重定向

引用地址:http://blog.chinaunix.net/article.ph...61&blogId=4921Linux shell I/O重定向详解 I/O重定向详解及应用实例1、 基本概念(这是理解后面的知识的前提,请务必理解) a、 I/O重定向通常与 FD有关,shell的FD通常为10个,即 0~9; b、 常用FD有3个,为0(stdin,标准输入)、1(st

2013-11-19 11:07:34 1480

原创 vim 常用用法

在vim设置标记,目的就是为了快速定位,提高效率。 1、标记命令mark   在vim命令行模式下用help mark 查看mark命令的帮助手册 2、标记符  在文本中使用26 个标记符(a到z)。这些标记是不可见的,只是一个由vim 记住的位置。 3、设置标记  在普通模式下命令格式m [a-z]  例如:ma 在

2013-08-09 14:02:03 1026

原创 sdio 驱动

1 确定关注范围根据公司代码编译出的原始.o 文件,可以间接确定真正起作用的源文件包括(也可以通过 Makefile 来直接确定)。1)  card目录下的驱动文件是卡的设备驱动,也就是针对mmc或者sd卡的块设备驱动block.c queue.c mmc_test.c sdio_card.cstatic int __init mmc_blk_init(void)

2013-06-09 20:56:07 1393

原创 typecheck()

typeof是取变量的类型如果 int x;typecheck(double,x);展开之后就是double __dummy;int __dummy2; (void)(&__dummy == &__dummy2); & 是取地址;这样的话,上面那句比较就会出错或编译器给出警告,因为是讲一个double型的指针和一个int型的指针比较,没法编译的,编译器会提示如

2013-05-01 15:19:28 959

转载 从spin_lock到spin_lock_irqsave

Spinlock的目的是用来同步SMP中会被多个CPU同时存取的变量。在Linux中,普通的spinlock由于不带额外的语义,使用起来反而要非常小心。 在Linux kernel中执行的代码大体分normal和interrupt context两种。tasklet/softirq可以归为normal因为他们可以进入等待;nested interrupt是interrupt context的一种特

2013-05-01 14:51:33 468

转载 Android上C++对象的自动回收机制分析

本文摘要C++ 没有像Java那样的内建的对象自动回收机制,new创建的对象没有delete,会一直存在于内存中。对象已经不再使用,但是如果忘记delete,会 造成内存资源的泄露。1.       背景C++ 没有像Java那样的内建的对象自动回收机制,new创建的对象没有delete,会一直存在于内存中。对象已经不再使用,但是如果忘记delete,会 造成内存资

2013-04-26 13:19:28 555

转载 device_register

原文地址:我对linux的理解之device_register 作者:amingriyue------------------------------------------本文系本站原创,欢迎转载!转载请注明出处:amingriyue.blog.chinaunix.net------------------------------------------/** *

2013-04-10 14:26:22 759

转载 copy_from_user && copy_to_user

在内核的学习中会遇到很多挺有意思的函数,而且能沿着一个函数扯出来很多个相关的函数。copy_to_user和copy_from_user就是在进行驱动相关程序设计的时候,要经常遇到的两个函数。由于内核空间与用户空间的内存不能直接互访,因此借助函数copy_from_user()完成用户空间到内核空间的复制,函数copy_to_user()完成内核空间到用户空间的复制。下面我们来仔细的理一下这两个函

2013-04-09 15:03:27 721

转载 driver_register 理解

我们首先来完整地看下driver_register函数定义:int driver_register(struct device_driver *drv){ int ret; struct device_driver *other; BUG_ON(!drv->bus->p); //判断bus->p是否为空,见第1部分分析 if((drv->bus->pr

2013-04-07 14:17:33 984

转载 Linux内核同步机制API函数:宏:spin_lock_init ( )

宏定义:      在内核源码中的位置:linux-2.6.30/include/linux/spinlock.h宏定义格式:# define spin_lock_init(lock)                             \                            do { *(lock) = SPIN_LOCK_UNLOCKED; } w

2013-04-02 21:07:41 1183

转载 在Ubuntu上下载、编译和安装Android最新内核源代码(Linux Kernel

在前一篇文章提到,从源代码树下载下来的最新Android源代码,是不包括内核代码的,也就是Android源代码工程默认不包含Linux Kernel代码,而是使用预先编译好的内核,也就是prebuilt/android-arm/kernel/kernel-qemu文件。那么,如何才能DIY自己的内核呢?这篇文章一一道来。      一. 首选,参照前一篇在Ubuntu上下载、编译和安装An

2013-04-01 19:13:23 575

转载 在Ubuntu上下载、编译和安装Android最新源代码

看完了前面说的几本书之后,对Linux Kernel和Android有一定的认识了,是不是心里蠢蠢欲动,想小试牛刀自己编译一把Android源代码了呢?一直习惯使用Windows系统,而Android源代码是不支持在Windows上编译上,于是决定使用虚拟机安装Ubuntu,然后下载、编译和安装Android源代码。     一. 环境准备。     1. 磁盘空间预留20G左右,

2013-04-01 19:12:19 479

转载 Android深入浅出之Binder机制

一 说明        Android系统最常见也是初学者最难搞明白的就是Binder了,很多很多的Service就是通过Binder机制来和客户端通讯交互的。所以搞明白Binder的话,在很大程度上就能理解程序运行的流程。        我们这里将以MediaService的例子来分析Binder的使用:        ServiceManager,这是Android OS的整个服务

2012-11-19 10:49:07 361

WinCE显示驱动函数

WinCE 下的所有显示驱动函数,包含了各个函数的用法。(英文)

2012-03-15

PID控制器自整定软件包设计

一种用MATLAB实现的PID参数自整定软件包

2010-09-21

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除