- 博客(16)
- 资源 (4)
- 收藏
- 关注
原创 嵌入式Linux内核模块的移植
<br />一个在X86上的Linux,如果要编写了一个内核模块,我们可以按照下满的Makefile格式来写,然后生成了.ko文件,insmod就可以了<br />原文件是opps.c<br /> <br />ifneq ($(KERNELRELEASE),)<br />obj-m := opps.o<br />else<br /> <br />KDIR := /lib/modules/2.6.18-53.el5/build<br />all:<br /> make -C $(KDIR) M=$(PWD)
2010-06-29 20:06:00 1764
原创 Linux的冒险位和强制位
<br />QT应用程序中按钮槽中在根目录下创建了一个文件,然后向里面write,然后通过命令行查看该文件,却发现该文件具有我们平时所见不到的权限,S和T权限,如图<br /><br /> <br />查资料,发现这两个权限代表的是冒险位和强制位<br /> <br />他们的详细介绍如下:<br /> <br />除了读写执行权限以外,ext3文件系统还支持强制位(setuid 和setgid)与冒险位(sticky)的特别权限针对u,g,o,分别有set uid,set gid,及sticky强制位与冒
2010-06-26 17:40:00 1768
原创 编译内核错误解决
<br />一晚上在忙着编译内核,总是报错,出现想,没有规则创建****.o需要****.c文件,这样的错误<br /><br />这时候我们需要找到这个****.c文件在内核编译菜单的位置,首先应该在对应的路径下找到Makefile文件,查看****.o文件对应的菜单config是什么,如图<br /><br />然后到Kconfig里面找到对应的config选项所对应的菜单名字是什么,<br /><br />然后通过最原始,例如net目录的Kconfig文件找到该菜单在哪里,然后修改了该选项,就可以了重
2010-06-23 01:42:00 1889
转载 this指针用法
<br /> this指针只能在一个类的成员函数中调用,它表示当前对象的地址。下面是一个例子: <br /> void Date::setMonth( int mn ) <br /> { <br /> month = mn; // 这三句是等价的 <br /> this->month = mn; <br /> (*this).month = mn; <br /> } <br />1. this只能在成员函数中使用。<br />全局函数,静态函数都不能使用this。<
2010-06-21 13:47:00 1030
原创 嵌入式开发调试流程
<br />第一步:把配置好的,适合本开发板的bootloader下载到本开发板上,就是uboot.bin或者其他的.bin文件这个可以通过jtag口来下载,当然在bootloader还可以自己引导时候,我们可以通过它自身来更新bootloader,一般在flash的开始第一个扇区有写保护,flinfo来查看,这时候,我们需要用uboot的命令,protect off 'Start' 'end'来取消写保护,然后再用tftp把uboot.bin下载到ram中,然后通过fl命令来下载到flash。<br /
2010-06-20 01:18:00 1261
原创 QTcreator编译出错
作为移植性很好的QT图形开发工具,他支持windows,linux,FBS,macos,Symbian等OS,在windows下的QT程序在安装了QTcreator后很快就编译出来了,可是在我的redhat enterprise5 安装后,一个hello,world!却报错了错误如下:undefined reference to 'FcFreeTypeQueryFace'乍一看以为是环境没有配置好,可是设置了库和头文件的路径后,仍旧是这个错误从昨天开始到现在,整三十多个小时,自己将QT的Manuel看了一通
2010-06-18 16:35:00 2564 1
原创 proc文件系统
<br />今天是端午节,本来想些点东西,可最近压力太大了,连msn 的blog都没有时间写,学习的时候,可以坐在那里一天不站起来,可以熬几个通宵,可是代码隔上四五天不写,就会颓废掉,再写的话感觉要找上好半天,甚至都不想学,马上要考试了,总共八门,我都没有怎么看~~~<br />晚上一起出去吃饭,世界杯让瑾璠疯掉了,三句话不离狗字,让老徐NC了,各种的无奈...想想我还是好点的,写点东西吧,这个时候了,凌晨了,最近学到了Linux内核,今天下午刚好看到了proc文件系统,散文写不下去了,就写个程序来纪念下我
2010-06-16 01:37:00 2248
原创 s3c2440GPIO程序编写
<br /> <br />1.GPIO简介: <br /> GPIO(通用输入/输出端口)是相对于芯片而言的,如果在对应的芯片存在GPIO引脚则可以通过读这些引脚来获取引脚的变化(即:引脚的高低电平的变化).<br />s3c2440属于ARM920T,共有GPIO130个,分为A~J这9组<br />每一组GPIO对应三个寄存器,通过这三个寄存器来控制和访问<br />GPxCON:GPIO 控制寄存器<br />GPxDAT:GPIO数据寄存器<br />GPxUP:上拉电阻使能寄存器<br /
2010-06-14 18:15:00 1971 1
转载 linux内核模块编程
<br />主题: linux内核模块的程序结构--模块加载函数(必须),模块卸载函数(必须),模块许可证声明(必须),模块参数(可选),模块导出符号(可选),模块作者的等信息声明(可选)一个linux内核模块主要由以下几个部分组成。<br />1、模块加载函数"用module_init()来指定"(必须)<br /> 当通过insmod和modprobe命令加载内核模块时,模块的加载函数会自动被内核执行,完成本模块的相关初始化工作。<br />linux模块加载函数一般以 __init表示声明。典型声
2010-06-14 11:42:00 1768
原创 C语言里的静态函数
<br />静态变量我们和熟悉,是定义在静态存储区的数据,每次修改后可以保持数值的不变<br />但是定义静态函数的作用是什么呢?<br />定义了静态函数后,外部文件无法使用该函数了,同样的是定义静态变量后,外部文件同样不能使用<br />在工程中,通常各个模块分开完成,这时候如果确定自己定义的函数别的文件不会使用,就可以加上static,<br />以保证不会被误用<br />例如:<br />file1.c<br /> <br />#include<stdio.h><br />static int a
2010-06-14 10:29:00 1518
原创 settimer()函数和alarm()函数
unsigned int alarm(unsigned int seconds)函数,用来定时,当到达定时的时间后,内核会发送SIGALRM信号给进程,如果进程忽略该信号,该进程会终止,也可以自己定义SIGALRM信号的处理函数,当然是用的是signal()函数void (*signal)(int signo, void (*func)(int)))(int );signo 指定要处理的信号,信号处理函数void func(),当要处理多个信号时候,func(int sig)用sig参数传进信号,在func
2010-06-13 14:15:00 12161 1
原创 编译Linux内核
<br />在源代码的目录下,有一个配置文件,.config文件,可以使用默认的,也可以使用<br />命令清除,然后重新配置内文配置文件,把/boot/下的配置文件拿来修改使用,或者在源代码下/arch/平台下<br />选择相应的配置文件,然后再这个基础上来配置自己的内核<br /><br />1、make distclean 清除一些临时文件,也可以使用make clean和make mrproper<br /> distclean是彻底的清除,就是清除的更彻底,其次是mrproper<br /
2010-06-10 23:50:00 1483
原创 VMware又报错了!
<br />我在运行vmware workstation时,报如下错误: <br /> <br />Warning: the system was unable to load a page of memory; this can be caused<br />by network problems or a failing hard disk drive.<br />VMware Player unrecoverable error: (vcpu-0)<br />Exception 0xc0000006
2010-06-09 00:32:00 4616 4
原创 浅谈Linux内核和CPU架构
Linux由用户空间和内核两部分组成,之所以有这两部分构成,我想应该是由于考虑CPU体系结构嵌入式ARM处理器有七种工作状态,分别是用户模式、快速中断、外部中断、管理模式、数据访问终止模式、系统模式和为定义指令模式,而X86体系结构的CPU则有RING0~RING3 四种工作模式,这些工作模式是有权限限制的,例如在访问IO设备上Linux利用CPU这中架构,用户空间和内核空间分别工作在不同的模式下,X86体系上,用户代码工作在RING3,而内核代码则工作中在RING0上如果想切换工作状态,可以通过系统调用和
2010-06-09 00:04:00 3193 1
原创 嵌入式 友善之臂ARM2440烧写程序注释
Linux OS 是安装在NAND flash里面的,在烧制LinuxOS时候是用nor flash启动的从nand flash启动后,首先要有bootloader来引导系统我们这里安装的bootloader是supervivi(并不开源),系统还可以实用vboot第一步:下载supervivi到nandflash第二步:下载Linux kernel 系统内核 zImage格式的文件,下载完毕后,BIOS会自动把内核烧到flash中分区中第三步:下载安装文件系统,我们使用的是yaffs文件系统,下载完毕后
2010-06-04 00:25:00 2263
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人