- 博客(33)
- 资源 (18)
- 问答 (1)
- 收藏
- 关注
原创 内核裁剪
Linux内核裁减 (1)安装新内核: i)将新内核copy到/usr/src下, #tar xzvf linux-2.6.38.4.tar.gz -----解压缩. ii) 将名为linux的符号链接删掉,这是旧版本内核的符号链接. #ln -s linux-2.6.38.4 linux ------建立linux-2.6.38.4的符号链接linux. (2)设置内核. # cd /usr
2013-06-28 17:19:34 1242
原创 Unknown symbol platform_driver_unregister (err 0)
关于那个什么 Unknown symbol platform_driver_unregister (err 0) 等之类的错误,如果内核里有这个函数,比如(注意不一定是在 这个里面,具体看你编译的模块了)platform_driver_unregister这个函数在内核代码中有定义(/drivers/base/Platform.c中)但是还是报错,因为有这一行:EXPORT_SYMBOL_GPL(
2013-06-28 14:02:38 1947
转载 内核makefile
ifneq ($(KERNELRELEASE),)obj-m := mytest.omytest-objs := file1.o file2.o file3.oelseKDIR := /lib/modules/$(shell uname -r)/buildPWD := $(shell pwd)default: $(MAKE) -C $(KDIR) M=$
2013-06-28 11:34:49 930
原创 何关闭Linux系统的beep声音
遇到错误或者其他情况都会发出“滴滴”声。在X Window系统下,可以使用xset 命令将beep声音关闭,命令如下:xset b off (输入xset 回车后得到xset命令的选项)。
2013-06-26 14:04:46 923
原创 tar解压命令
tar-c: 建立压缩档案-x:解压-t:查看内容-r:向压缩归档文件末尾追加文件-u:更新原压缩包中的文件这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。下面的参数是根据需要在压缩或解压档案时可选的。-z:有gzip属性的-j:有bz2属性的-Z:有compress属性的-v:显示所有过程-O:将文件解开到标准输出
2013-06-25 14:44:27 775
原创 交叉编译器的路径加入到PATH
修改环境变量,把交叉编译器的路径加入到PATH。(有三种方法,强烈推荐使用方法一) 方法一:修改/etc/bash.bashrc文件 #vim /etc/bash.bashrc 在最后加上: export PATH=$PATH:/usr/local/arm/3.4
2013-06-25 11:31:55 3953
原创 makefile 递归编译
目录P下存在 A,B,C,D,E 目录,它们目录都存放有对应makefile 为了一个make命令编译它们在目录Px下加一个makefile文件。内容如下:SUBDIRS=A B C D Eall:subdirssubdirs: for dir in $(SUBDIRS);do $(MAKE) -C $$dir ; doneclean: fo
2013-06-24 16:07:23 1154
原创 非静态局部变量和静态局部变量
如果 static int m=0;是某函数中的局部变量,那么这个变量只被初始化赋值为0一次,当这个函数被多次调用时,除第一次被调用时 m 的内容被初始化为0外,以后每次调用时,m 都会在上一次函数被调用时产生结果的基础上继续运行的。例如 第一次调用 m被初始化为0, 函数运行结束时 m 的内容为 5, 第二次调用 m的内容就是5,并在次基础上继续运行程序。 如果m是在
2013-06-24 14:04:27 2656
原创 指针函数与函数指针
一、在学习arm过程中发现这“指针函数”与“函数指针”容易搞错,所以今天,我自己想一次把它搞清楚,找了一些资料,首先它们之间的定义:1、指针函数是指带指针的函数,即本质是一个函数。函数返回类型是某一类型的指针 类型标识符 *函数名(参数表) int *f(x,y);首先它是一个函数,只不过这个函数的返回值是一个地址值。函数返回值必须用同类型的指针变量来接受
2013-06-24 13:42:32 443
原创 MOD_INC_USE_COUNT, MOD_DEC_USE_COUNT
2.4内核中,模块自身通过 MOD_INC_USE_COUNT, MOD_DEC_USE_COUNT宏来管理自己被使用的计数。 2.6内核提供了更健壮、灵活的模块计数管理接口 try_module_get(&module), module_put(&module)取代2.4中的模块使用计数管理宏;模块的使用计数不必由自身管理,而且在管理模块使用计数时考虑到 SMP与PREEMPT机制的影响
2013-06-24 13:41:06 674
原创 从 2.4 到 2.6:Linux 内核可装载模块的区别和变化
简介: 从 2.4 到 2.6,Linux 内核在可装载模块机制、设备模型、一些核心 API 等方面发生较大改变,设备驱动开发人员面临着将驱动从 2.4 移植到 2.6 内核,或是使驱动同时支持2.4 与 2.6 内核的任务。站在设备驱动开发人员的角度,驱动由一个或几个外部可加载内核模块组成,本文针对 2.6 内核里模块机制的改变对编写设备驱动程序的影响,从内核模块的编译、装载时的版本检查、初始化
2013-06-24 13:39:07 811
原创 ARM2410 IIC总线驱动基础知识
首先来看一下原理图:我们看到它有两根线:数据线和时钟线,他们用于数据传输。A0、A1、A2是设备地址,它是已经固化在硬件层的。再来看看AT24c02与2440连接图:我们要知道2440与at24c02之间属于主从连接,也就是说所有的会话必须由主设备发起,这里的主设备自然是2440。那么当2440的iic总线上挂载了多个存储设备时,24
2013-06-21 16:31:05 727
原创 C语言中 ^的用法
a1 = 0x01; //0000 0001a2 = 0x00; //0000 0000a3 = 0x03; //0000 0011a4 = 0x02; //0000 0010b1 = a1 ^ a2; //0000 0001b2 = a1 ^ a3; //0000 0010b3 = a1 ^ a4; //0000 0011^异或运算符,
2013-06-21 16:04:21 18060 2
原创 gpioer
一、GPIO寄存器定义1.#define GPCON(x) __REG2(0x56000000, (x) * 0x10)这句是定义2410的GPIO的控制寄存器,注意:__REG2的参数是寄存器的物理地址,这个物理地址经_REG2宏转换为虚拟地址,对照2410的手册可以得到一下对应关系:GPCON(1) ------ PORT A 0x56000000GPCON(2) -
2013-06-21 14:57:42 479
原创 GPIO宏定义一
一、GPIO寄存器定义1.#define GPCON(x) __REG2(0x56000000, (x) * 0x10) 这句是定义2410的GPIO的控制寄存器,注意:__REG2的参数是寄存器的物理地址,这个物理地址经_REG2宏转换为虚拟地址,对照2410的手册可以得到一下对应关系:GPCON(1) ------ PORT A 0x56000000GPCON(2) --
2013-06-21 14:55:54 3416
转载 GPIO宏定义的位置
s3c2410_gpio_cfgpin(S3C2410_GPG(0), S3C2410_GPIO_OUTPUT);s3c2410_gpio_cfgpin()的定义在arch/arm/march-2410/include/mach/gpio-fns.hS3C2410_GPG()的定义在arch/arm/march-2410/include/mach/gpio-nrs.hS3C2410_G
2013-06-21 14:08:24 1541
原创 GPIO是什么
GPIO的英文全称General-Purpose Input /Output Ports,中文意思是通用I/O端口。在嵌入式系统中,经常需要控制许多结构简单的外部设备或者电路,这些设备有的需要通过CPU控制,有的需要CPU提供输入信号。并且,许多设备或电路只要求有开/关两种状体就够了,比如LED的亮与灭。对这些设备的控制,使用传统的串口或者并口就显得比较复杂,所以,在嵌入式微处理器上通常提供了
2013-06-21 14:04:27 2972
原创 mdelay函数
delay函数是忙则等待,占用CPU时间;而sleep函数使调用的进程进行休眠。 udelay引用头文件/include/asm-***/delay.h,mdelay和ndelay则引用/include/linux/delay.h。 其中,要说的是mdelay、ndelay都是通过udelay衍生出来的,2ms一下的用udelay,超过2ms的用mdelay或者ndelay。
2013-06-20 15:58:49 3997
原创 makefile注释
Makefile 的多行注释Makefile Comments注释在 makefile 中起着重要的作用,它帮助我们更快更好的理解 makefile 的内容。# 注释符# 字符是注释符,makefile 把 # 字符后面的内容作为注释内容处理(shell、perl 脚本也是使用 # 字符作为注释符)。如果某行的第一个非空字符为 #,则此行会被 make 解释为注
2013-06-20 15:53:21 10448
原创 ./PHONY
./PHONY 来显示的指名一个目标是伪目标,有两个作用一个是改善性能,另外一个是来避免冲突。例如我写了这样一个Makefile[cpp] view plaincopyprint?test1:main.o file1.o file2.o file3.o cc -o test1 main.o file1.o file2.o file3.o main.o:main
2013-06-20 15:02:32 810
原创 &= ~和|=各是什么意思的含义
&在C语言中可能表示两种运算符。如果运算对象只有一个,且为右操作数,那么&为取地址运算符,结果为操作对象的地址。例如&a(假设a是一个左值,即具有具体的可访问的地址)结果为a的地址。如果运算对象有两个,那么&表示位与运算。结果中的每一个二进制位等于两个运算数的对应位置的二进制位按位与。每一个位的位与运算法则是,当且仅当运算数都为1时结果为1,即:1 & 1 == 1,1 & 0 == 0
2013-06-20 14:19:10 73247 4
原创 堆和栈的区别
1、栈区(stack)― 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(heap) ― 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。 3、全局区(静态区)(static)―,全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态
2013-06-20 13:45:08 427
原创 unsight char 和char 的区别
在C中,默认的基础数据类型均为signed,现在我们以char为例,说明(signed) char与unsigned char之间的区别首先在内存中,char与unsigned char没有什么不同,都是一个字节,唯一的区别是,char的最高位为符号位,因此char能表示-128~127, unsigned char没有符号位,因此能表示0~255,这个好理解,8个bit,最多256种情况
2013-06-20 11:17:43 2257
原创 为什么signed取值为-128到127?
八位的话,第一位为符号位,到底计算的时候这位要忽略还是要计算进去呢?按八位来算:在计算机里面是用补码表示的,128的二进制码是:10000000,这个东西在计算里面并不是128,因为最高位是符号,它是个负数,那么负数的原码是多少呢,我们知道如果补码的符号位为“1”,表示是一个负数,求原码的操作可以是:符号位为1,其余各位取反,然后再整个数加1。所以,10000000取反后就是111
2013-06-20 11:14:16 600
原创 ASCII表
ASCII码表信息在计算机上是用二进制表示的,这种表示法让人理解就很困难。因此计算机上都配有输入和输出设备,这些设备的主要目的就是,以一种人类可阅读的形式将信息在这些设备上显示出来供人阅读理解。为保证人类和设备,设备和计算机之间能进行正确的信息交换,人们编制的统一的信息交换代码,这就是ASCII码表,它的全称是“美国信息交换标准代码”。八进制
2013-06-18 10:27:16 434
原创 DHCP
Pos机实现DHCP自动获取IP地址方法一.在内核中添加以下选项:Networking --->[*] Networking support Networking options---> Packet socket //添加.配置CONFIG_PACKET[ * ] IP: DHCP support //添加[ * ] Network packet
2013-06-18 10:22:12 879
原创 data
date命令查看当前系统时间 date -s 5/18/2011 命令可以修改系统日期 date -s 16:10:59命令可以修改系统时间
2013-06-17 18:07:45 476
原创 uuid
新手学堂:Linux操作系统下取得UUID的方法 发布时间:2007.09.20 06:23 来源:赛迪网 作者:kid Linux下面,有专门生成UUID的命令:uuidgen [-r] [-t]。即可以生成一个32位的字符串。这个是在命令行得到。在/usr/include/lib里面有个/uuid/uuid.h,其中定义了个数据uui
2013-06-17 18:06:31 617
原创 break
break语句break语句通常用在循环语句和开关语句中。当break用于开关语句switch中时,可使程序跳出switch而执行switch以后的语句;如果没有break语句,则将成为一个死循环而无法退出。break在switch 中的用法已在前面介绍开关语句时的例子中碰到,这里不再举例。当break语句用于do-while、for、while循环语句中时,可使程序终止循环而执行
2013-06-17 18:02:34 629
原创 键盘常用ASCII码 & Ctrl组合键
键盘常用ASCII码 ESC键 VK_ESCAPE (27)回车键: VK_RETURN (13)TAB键: VK_TAB (9)Caps Lock键: VK_CAPITAL (20)Shift键: VK_SHIFT ($10)Ctrl键: VK_CONTROL (17)Alt键: VK_MENU (18)空格键: VK_SPACE ($20/32)退格键:
2013-06-06 17:24:48 3147
原创 mc55
一步一步介绍怎用MC55进行配置以及怎样用TCP/IP通信:1、用AT^SICS命令创建一个连接类型参数集,这个连接类型参数集是一个是一些基本参数的集合,这些参数的集合,用来决定一个internet的连接类型。最多6个连接类型参数集可以被定义,每个连接参数集用参数进行标示。2、以连接类型参数集为基础,用AT^SISS命令创建一个服务类型参数集,最多能定义10个服务参数集,每个服务参数集用参
2013-06-04 18:05:23 956
原创 atoi函数的用法
就自己写写代码(根据atoi()的功能)来表示atoi()函数的实现。我在这里先把atoi()函数的功能贴出来,也好有个参考啊~~~atoi()函数的功能:将字符串转换成整型数;atoi()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负号才开始做转换,而再遇到非数字或字符串时('\0')才结束转化,并将结果返回(返回转换后的整型数)。atoi()函数实现的代码:
2013-06-04 18:01:55 1721
Android APP开发入门
2019-03-01
NotePad++ 显示16进制 插件
2017-08-29
VMWare-Tools安装包
2014-03-21
SecureCRT5.1 汉化版
2014-01-04
securecrt串口调试工具高版本
2014-01-04
Win7中安装使用超级终端Hyper Terminal
2013-10-09
xz-5.0.3.tar.bz2
2013-07-16
asp.net DES加密和解密实现方法
2016-04-12
TA创建的收藏夹 TA关注的收藏夹
TA关注的人