- 博客(69)
- 资源 (2)
- 收藏
- 关注
原创 一个灵活的打印控制
#include typedef enum { GT_TraceState_Disable = 0x00000000, GT_TraceState_Enable = 0x00000001, GT_TraceState_EndValue = 0x00000002} GT_TraceState;typedef enum { GT_ERR = 0x
2015-04-30 10:52:41
509
转载 get_ds, set_fs, get_fs函数的使用
在linux内核编程时,进行系统调用(如文件操作)时如果要访问用户空间的参数,可以用set_fs,get_ds等函数实现访问。get_ds获得kernel的内存访问地址范围(IA32是4GB),set_fs是设置当前的地址访问限制值,get_fs是取得当前的地址访问限制值。进程由用户态进入核态,linux进程的task_struct结构中的成员addr_limit也应该由0xBFFFFFFF变为0
2014-07-31 14:00:59
743
转载 git命令
Git配置git config --global user.name "robbin" git config --global user.email "fankai@gmail.com"git config --global color.ui truegit config --global alias.co checkoutgit config --global alias.ci
2014-02-27 19:46:51
716
转载 linux本地建立git仓库管理代码
关于在本地建立一个git中心仓库,用来管理代码例子:1、在需要管理的文件夹下执行下面命令: git init 和 git add . git commis -s ;2、在需要存放git仓库的目录执行:git clone --bare (上面对应的目录)3、在任意目录即可通过 git clone 下载这个仓库了...
2014-02-27 19:26:56
4717
1
原创 在windows下使用git
安装Git-1.8.4-preview20130916.exe文件打开Git Bash控制台在http://git.oschina.net中利用git管理项目git中颜色配置1.git config --global color.diff auto2.git config --global color.status auto3.git config --globa
2013-10-14 20:58:21
954
2
转载 ARM中断返回PC值分析
ARM中断返回PC值分析在ARM程序的开发过程中,对中断的处理是很普遍的、也是相当重要的。Realview MDK使用的RVCT编译器提供了__irq关键字,用此关键字修饰的函数被作为中断来函数编译,即在编译的过程中,编译器会自动添加中断处理过程中现场保护和恢复的代码,减小程序的开发难度,加快软件的开发过程。在理解__irq关键字的作用之前,先看一下ARM核对异常的处理过程。当产生异常
2013-04-16 18:29:33
2236
1
转载 去掉linux系统vi中出现^M字符的方法
去掉linux系统vi中出现^M字符的方法: ^M符号是windows系统下的換行符,在windows下的文本通过bin模式ftp上传到了unxi空间出现的,要去掉这些结束符,我们可以用dos2unix命令去掉,也可以直接在vi中操作去掉,实现方法如下:在test.txt文件中有如下内容: eeesdgtdfg dfgdfgfdgfd ^M ineesert into pusf
2013-03-19 15:06:05
1342
原创 线程优先级获取的例子
1. 通过进程名找到进程号my_pid=`ps gaux |grep "kdvmt.linux"| grep -v grep |awk '{print $2}'`2.如何获得每个进程中所有线程的信息所有的信息都在/proc/$my_pid/task中,其中stat尤为重要,可以通过man proc查看具体的信息。 还有查看进程的几个重要命令ps -eLfps -aux
2012-11-14 18:36:53
1415
原创 中断注册函数整理
中断注册函数整理ArchIpcInt_interruptRegister (obj->remoteProcId, obj->params.localIntId, _NotifyDriverShm_ISR, (Ptr) obj);In
2012-09-26 18:12:45
1220
原创 中断响应后函数调用
中断响应后函数调用:ArchIpcInt_interruptRegister (obj->remoteProcId, obj->params.localIntId, _NotifyDriverShm_ISR, (Ptr) obj);这个函数在
2012-09-26 18:11:59
3223
原创 Notify_registerEvent的实现过程
Notify_registerEvent的实现过程同样我们从用户态下的Notify_registerEvent函数开始:Int Notify_registerEvent (UInt16 procId, UInt16 lineId, UIn
2012-09-26 18:10:51
8731
原创 Notify_module和ArchIpcInt_object
现在我们来看看关于Notify_module->notifyHandles [procId][lineId]这个结构是如何赋值的:主要就是通过下面三个函数:Int NotifySetupDm8168_attach (UInt16 procId, Ptr sharedAddr){ NotifySetup_driverHandle [procId] = NotifyDriver
2012-09-26 18:09:33
727
原创 Notify_sendEvent的实现过程
一. Notify_sendEvent的实现过程首先是从用户态的Notify_sendEvent函数开始Int Notify_sendEvent (UInt16 procId, UInt16 lineId, UInt32 eventId
2012-09-26 18:08:09
3254
转载 Linux system函数返回值
例:[cpp] view plaincopyprint?status = system("./test.sh"); 1、先统一两个说法:(1)system返回值:指调用system函数后的返回值,比如上例中status为system返回值(2)shell返回值:指system所调用的shell命令的返回值,比如上例中,test.sh中返回的值为
2012-07-04 16:53:11
1390
转载 uboot简要分析
本次移植使用的是U-boot-2009.11。 先来看看源码目录结构,再按照代码的执行顺序简单地分析源码1.U-boot源码整体框架源码解压以后,我们可以看到以下的文件和文件夹: cpu与处理器相关的文件。每个子目录中都包括cpu.c和interrupt.c、start.S、u-boot.lds。cpu.c初始化
2012-06-27 13:13:36
1147
转载 uboot代码简要分析
本次移植使用的是U-boot-2009.11。 先来看看源码目录结构,再按照代码的执行顺序简单地分析源码1.U-boot源码整体框架源码解压以后,我们可以看到以下的文件和文件夹: cpu与处理器相关的文件。每个子目录中都包括cpu.c和interrupt.c、start.S、u-boot.lds。cpu.c初始化
2012-06-27 13:07:56
4409
转载 uboot使用
我一贯认为:对于一个技术类的东西,你连用都不会用,那根本就不可能会开发。就好像一个人连Linux不会用,那还谈何开发Linux程序呢? 同样的要开发和移植U-boot,首先要对U-boot有一定的了解,起码要会使用。 所以这里我们首先熟悉一下U-boot的使用以及如何将U-boot烧入mini2440。 当然在这之前首先必须保证你的板子上已经有了U-boot。如果没有
2012-06-27 11:50:02
8728
转载 uboot简介
1、嵌入式Linux软件结构与分布在一般情况下嵌入式Linux系统中的软件主要分为以下及部分:(1)引导加载程序:其中包括内部ROM中的固化启动代码和Boot Loader两部分。而这个内部固化ROM是厂家在芯片生产时候固化的,作用基本上是引导Boot Loader。有的芯片比较复杂,比如Omap3,他在flash中没有代码的时候有许多启动方式:USB、UART或以太网等等。而S3C2
2012-06-27 11:44:39
2507
转载 LDR与ADR区别(转)
LDR与ADR区别(转)在资料中,ADR的定义为:小范围的地址读取伪指令,ADR指令将基于PC相对偏移的地址值读取到寄存器中,在编译源程序时ADR伪指令被编译器替换成一 条合适的指令。通常,编译器用一条ADD指令或SUB指令来实现该ADR伪指令的功能,若不能用一条指令实现,刚产生错误。在如上的定义中,有两个关键信息:⑴将基于PC相对偏移的地址值读取到寄存器中;⑵被编译器替换
2012-06-25 16:33:51
5819
转载 U-boot的环境变量: bootcmd 和bootargs
u-bootcmd 前面有说过bootcmd是自动启动时默认执行的一些命令,因此你可以在当前环境中定义各种不同配置,不同环境的参数设置,然后设置bootcmd为你经常使用的那种参数。u-bootargs bootargs是环境变量中的重中之重,甚至可以说整个环境变量都是围绕着bootargs来设置的。bootargs的种类非常非常的多,我们平常只是使用了几种而已,感兴趣的可
2012-06-15 10:48:23
560
转载 bmp文件的读写
#include "stdio.h"#include "stdlib.h"#define PIXPLINE 320typedef struct tagRGBQUAD{ //定义每个像素的数据类型 unsigned char rgbBlue; unsigned char rgbGreen; unsigned ch
2012-06-14 10:29:07
1225
1
转载 linux下pppoe服务器搭建
查看是否安装所需要的包。[root@MASTER ~]# rpm -qa |grep rp-pppoerp-pppoe-3.5-32.1配置文件目录在/etc/ppp下[root@MASTER ppp]# lschap-secrets ioptions ip-up ipv6-up peersfirewall-mas
2012-06-12 11:29:31
15620
1
转载 linux下telnet服务端配置
服务器:CentOS-5.1(192.168.1.87)客户机:FC6(192.168.1.86) Windows XP(192.168.1.88)虽然telnet的明文传输有很大的安全隐患,而且现在基本上也被SSH来取代了,但是为了学习还是有必要了解一下,好了,进入正题实验名:telnet服务器配置一、安装telnet软件包(通常要两个)。 1、 tel
2012-06-12 11:13:01
9584
转载 malloc申请大内存报错分析
每个进程会有4G的虚拟地址空间, malloc得到的的地址都是虚拟地址, 并且当malloc的时候, 操作系统并不会将实际的内存分配给进程的, 所以malloc只会占用进程自身的虚拟地址空间。我以前也做过申请内存的测试,并且写了一个短文:操作系统: Redhat Linux AS5 32bit服务器内存: 4G服务器类型: I32最近写搜索引擎, 因为创建索引需要大量的
2012-06-08 11:33:32
5576
2
转载 tlb刷新的懒惰模式
tlb是一种缓存,缓存的内容是虚拟地址和物理页面的对应关系,每当一个新进程投入运行的时候,tlb就要被刷新,否则就会出现混乱,但是因为linux 的所有进程的内核部分的页面映射是一样的,而且内核线程又不访问用户空间,所以当内核线程运行的时候,tlb是不必马上刷新的,呵呵,这又给内核线程的淫 乱创造了机会。为啥这么说呢?因为tlb没有被刷新,那么比如说内核线程运行前一个用户线程t在运行,其tlb中的
2012-06-06 15:19:43
1227
转载 实模式与保护模式
1.虚拟8086模式是运行在保护模式中的实模式,为了在32位保护模式下执行纯16位程序。它不是一个真正的CPU模式,还属于保护模式。 2.保护模式同实模式的根本区别是进程内存受保护与否。可寻址空间的区别只是这一原因的果。 实模式将整个物理内存看成分段的区域,程序代码和数据位于不同区域,系统程序和用户程序没有区别对待,而且每一个指针都是指向 "实在 "的物理地址。这样一来,用户程序的一个
2012-06-06 13:56:09
630
转载 Linux系统调用的实现机制分析
Linux系统调用的实现机制分析 Sailor_forever sailing_9806@163.com转载请注明http://blog.csdn.net/sailor_8318/archive/2008/09/10/2906968.aspx 【摘要】本文介绍了系统调用的一些实现细节。首先分析了系统调用的意义,它们与库函数和应用程序接口(API)有怎样的关系
2012-06-06 13:39:43
1854
转载 S3C2440中断介绍
1.1 S3C2440系统中断CPU和外设构成了计算机系统,CPU和外设之间通过总线进行连接,用于数据通信和控制,CPU管理监视计算机系统中所有硬件,通常以两种方式来对硬件进行管理监视:l 查询方式:CPU不停的去查询每一个硬件的当前状态,根据硬件的状态决定处理与否。好比是工厂里的检查员,不停的检查各个岗位工作状态,发现情况及时处理。这种方式实现起来简单,通常用在只有少量外设硬件的系
2012-05-31 14:11:51
4441
转载 S3C2440 SDRAM
http://blog.csdn.net/mr_raptor/article/details/6555786++++++++++++++++++++++++++++++++++++++++++ SDRAM(Synchronous Dynamic Random Access Memory,同步动态随机存储器)也就是通常所说的内存。内存的工作原理、控制时序、及相关控制器的配置方法一直是
2012-05-30 16:17:58
3735
转载 完成量实现线程同步
#includelinux/init.h>#includelinux/module.h>#includelinux/sched.h>#includelinux/sem.h>MODULE_LICENSE("Dual BSD/GPL");struct completion my_completion1;struct completion my_completion2;//定
2012-05-28 14:03:53
531
转载 uboot启动参数设置分类及方法
uboot启动参数设置分类及方法2010-11-17 14:46:54| 分类:默认分类 | 标签:|字号大中小 订阅一、nfs启动内核与根文件系统,内核与根文件系统都在nfs上bootargs=noinitrd root=/dev/nfs rw nfsroot=192.168.0.1:/home/tekkaman/working/nfs/rootfs
2012-05-26 10:25:11
1021
转载 uImage与Image的区别
内核编译(make)之后会生成两个文件,一个Image,一个zImage,其中Image为内核映像文件,而zImage为内核的一种映像压缩文件,Image大约为4M,而zImage不到2M。 那么uImage又是什么的?它是uboot专用的映像文件,它是在zImage之前加上一个长度为64字节的“头”,说明这个内核的版本、加载位置、生成时间、大小等信息;其0x40之后与zIm
2012-05-24 14:07:52
3488
转载 中断例子
usage: Compiling this file by make and using the following command to insert the mode which the make generated just nowcommand: sudo insmod filename.ko irq=1 devname=myirqThis interrupt shared t
2012-05-23 17:25:24
846
转载 从虚拟地址转为物理地址
/* mtest_dump_vma_list():打印出当前进程的各个VMA,这个功能我们简称”listvma” mtest_find_vma(): 找出某个虚地址所在的VMA,这个功能我们简称“findvma” my_follow_page( ):根据页表,求出某个虚地址所在的物理页面,这个功能我们简称”findpage” mtest_write_val(), 在某个地址写上具体
2012-05-23 17:24:28
902
转载 简单字符设备应用
#include #include #include #include #include #include #include #include #include #include #include #include MODULE_LICENSE("Dual BSD?GPL");int memory_open(struct inode *ino
2012-05-23 17:21:53
430
转载 信号量实现内核线程同步例子
#include #include #include #include MODULE_LICENSE("GPL");int num[2][5] = {{0, 2, 4, 6, 8},{1, 3, 5, 7, 9}};struct semaphore sem_first;struct semaphore sem_second;int thr
2012-05-23 17:20:23
561
转载 定时器简单应用(挂起进程)
#include #include #include #include #include struct timer_list stimer; //定义定时器int timeout = 10 * HZ;static void time_handler(unsigned long data){ //定时器处理函数,执行该函数获取挂起进程的pid,唤醒该进程struct
2012-05-23 17:19:31
1172
转载 内核定时器的例子
#include #include #include #include #include struct timer_list stimer; //定义定时器static void time_handler(unsigned long data){ //定时器处理函数mod_timer(&stimer, jiffies + HZ);printk("cu
2012-05-23 17:17:48
492
转载 嵌入式文件系统
Linux 支持多种文件系统,包括ext2、ext3、vfat、ntfs、iso9660、jffs、romfs和nfs等,为了对各类文件系统 进行统一管理,Linux引入了虚拟文件系统VFS(Virtual File System),为各类文件系统提供一个统一的操作界面和应用编程接口。Linux启动时,第一 个必须挂载的是根文件系统;若系统不能从指定设备上挂载根文件系统,则系统会出错而
2012-05-23 11:21:06
757
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人