自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(36)
  • 收藏
  • 关注

原创 小字节序 VS 大字节序

小字节序:(比如x86体系) 数据的低字节放在低地址处,比如一个整型数0x12345678,在内存中的<br />          分布为:<br />                   -----------<br />                   |    78   | xxxx_0000<br />                   -----------<br />                   |    56   | xxxx_0001<br />               

2010-10-24 13:09:00 837

原创 Utils.em(我使用的Source Insight 的宏脚本文件)

/* Utils.em - a small collection of useful editing macros */<br /><br />/*-------------------------------------------------------------------------<br />    I N S E R T   H E A D E R<br /><br />    Inserts a comment header block at the top of the current f

2010-10-24 13:07:00 1384

原创 我的GVIM配置文件(windows)

<br />1 " An example for a vimrc file.<br />2 "<br />3 "Maintainer:     Bram Moolenaar <Bram@vim.org><br />4 " Last change:     2002 Sep 19<br />5 "<br />6 " To use it, copy it to<br />7 "     for Unix and OS/2: ~/.vimrc<br />8 "           for Amiga: s:.vi

2010-10-24 13:05:00 686

原创 内存显示函数

<br />闲来无事,为了练练c编程,于是乎就写了以下这个函数:<br />/***********************************************************************************<br />3 * Function Name :       print_hex_ascii<br />4 *<br />5 * Parameter:           buff   ---- The head pointer of the data buffer

2010-10-24 13:03:00 350

原创 都是Semaphore惹得祸

<br />NP向CPU发包,CPU通过中断的方式接收。HTFD High的中断正常,可以调用ISR用来give相应的信号量,Main_TFDH可以take到信号量;HTFD Low的中断也正常,也可正常give信号量,但是Main_TFDL却不能take信号量。调试步骤如下:<br />1. 利用EZmde由HTFD Low队列发包到CPU,终端显示:<br />AHE_Isr --- Channel=0    cause reg bit 2 is set <br />                uq

2010-10-24 12:59:00 651 2

转载 C++的static关键字

<br />C++的static关键字<br /><br />作者:韩耀旭<br /><br />  C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static。前者应用于普通变量和函数,不涉及类;后者主要说明static在类中的作用。<br />一、面向过程设计中的static<br />1、静态全局变量<br />在全局变量前,加上关键字static,该变量就被定义成为一个静态全局变量。我们先举一个静态全局变量的例子,如下://Example 1#includ

2010-10-24 12:55:00 257

转载 设置vxWorks硬件断点调试

<br />In VxWorks 5.5 shell, we could use the following tool to set hardware breakpoint:<br />-> bh   address, access, task, count, quiet<br />access: 0 - instruction, <br />             1 - read/write data, <br />             2 - read data, <br />         

2010-10-24 12:53:00 967

转载 主存与cache的地址映射

<br />cache的容量很小,它保存的内容只是主存内容的一个子集,且cache与主存的数据交换是以块为单位。地址映射即是应用某种方法把主存地址定位到cache中。地址映射方式有全相联方式、直接方式和组相联方式三种:<br /><br />1.全相联映射方式 <br /><br />  主存中一个块的地址与块的内容一起存于cache的行中,其中块地址存于cache行的标记部分中。 <br /><br />  这种方法可使主存的一个块直接拷贝到cache中的任意一行上,非常灵活。 <br /><br /> 

2010-10-24 12:52:00 1156

转载 The Linux Boot Process

Introduction <br />Learning how Linux boots up is critical. When you have this information you can use it to alter the type of login screen you get as well as which programs start up. Read on for the details.The Linux Boot Sequence <br />You might remember

2010-10-24 12:50:00 646

转载 Optimizing C and C++ Code

Optimizing C and C++ Code(http://www.eventhelix.com/)<br />Embedded software often runs on processors with limited computation power, thus optimizing the code becomes a necessity. In this article we will explore the following optimization techniques for

2010-10-24 12:42:00 369

转载 umount: device is busy时怎么办?

<br />执行mount -o loop ramdisk.image mnt_ramdisk/,将当前目录下的ramdisk映像挂载到mnt_ramdisk目录下,使用完后退出此目录,执行umount mnt_ramdisk/,可总是说device is busy,可我又不知道什么程序在使用,用google搜了一下,找到了网上高人解决此问题的方法.以下转载于品可的blog:<br /><br />================<br /><br />linux下的磁盘分区通过挂载(mount)的方式连到

2010-10-24 12:40:00 390

原创 纯C小练习之模拟循环缓冲区

<br />     为了巩固一下C语言基础,写了几个小程序。下面这个小程序实现了一个循环缓冲区,击键盘的“I”键,一个键盘事件被写入缓冲区;敲击“O”键,代表一个键盘事件从缓冲区被读出。以下是代码:<br />#include <stdio.h><br />#include <stdlib.h><br />#define BUTTOM_BUFF_SIZE 8<br />#define KEY_EVENT   'e'<br />typedef unsigned char u8;<br />typedef s

2010-10-24 12:38:00 572

原创 关于Scanf和gets函数的讨论

<br />gets()函数用来从标准输入设备(键盘)读取字符串直到回车结束, 但回车符不属于这个字符串。其调用格式为: <br />     gets(s); <br />     其中s为字符串变量(字符串数组名或字符串指针)。 <br />     gets(s)函数与scanf("%s", &s)相似, 但不完全相同, 使用scanf("%s", &s)函数输入字符串时存在一个问题, 就是如果输入了空格会认<br />为输入字符串结束,空格后的字符将作为下一个输入项处理, 但gets() 函数将接收

2010-10-24 12:30:00 372

转载 以太网设计FAQ:以太网MAC和PHY

问:如何实现单片以太网微控制器?<br />答:诀窍是将微控制器、以太网媒体接入控制器(MAC)和物理接口收发器(PHY)整合进同一芯片,这样能去掉许多外接元器件。这种方案可使MAC和PHY实现很好的匹配,同时还可减小引脚数、缩小芯片面积。单片以太网微控制器还降低了功耗,特别是在采用掉电模式的情况下。 <br />问:以太网MAC是什么?<br />答:MAC就是媒体接入控制器。以太网MAC由IEEE-802.3以太网标准定义。它实现了一个数据链路层。最新的MAC同时支持10Mbps和100Mbps两种速率

2010-10-24 12:19:00 315

转载 #if defined(...)

<br />The special operator defined is used in #if and #elif expressions to test whether a certain name is defined as a macro. defined name and defined (name) are both expressions whose value is 1 if name is defined as a macro at the current point in the pr

2010-10-23 23:36:00 456

原创 ARM平台的ppp-2.4.4交叉编译

ARM平台的ppp-2.4.4交叉编译<br />Phenix 2007.04.30<br /><br /><br />交叉编译器 : arm-linux-gcc 3.3.2<br />     ppp版本 : both 2.4.4 and 2.4.3 are OK<br /><br />     用arm-linux-gcc直接交叉编译ppp-2.4.1不会有啥问题,但是换成高版本的2.4.3或2.4.4就会出现错误,错误信息如下:<br />options.c:59:18: pcap.h: No suc

2010-10-23 23:34:00 2945

原创 Linux信号机制之信号阻塞

<br />每个进程都有一个用来描述哪些信号传送来将被阻塞的阻塞的信号集,如果某种信号在某个进程的阻塞信号集中,则传送到该进程的此种信号将会被阻塞。信号阻塞操作主要有以下三个函数:<br />   <br />   #include<signal.h><br />   int sigprocmask(int how, const sigset_t *set, sigset_t *oldset);<br />   int sigpending(sigset_t *set);<br />   int sigsu

2010-10-23 23:33:00 471

原创 Linux信号机制之信号的发送及接收

<br />     Linux下的信号应用并不复杂,最多只要以下3个步骤即可:<br />     1.安装信号,通常采用sigaction(……)函数,此函数有3个参数,支持信号传递信息,主要用来与sigqueue()配合使用。sigaction()函数既支持实时信号的安装同样也支持非实时信号的安装。<br />     2.实现三参数信号处理函数mysig_handler(int signal,struct siginfo *pInfo,void *)<br />     3.用sigqueue()发

2010-10-23 23:32:00 1049

原创 linux信号机制之sigaction结构体浅析

<br />信号安装函数sigaction(int signum,const struct sigaction *act,struct sigaction *oldact)的第二个参数是一个指向sigaction结构的指针(结构体名称与函数名一样,千万别弄混淆了)。在结构sigaction的实例中,指定了对特定信号的处理,信号所传递的信息,信号处理函数执行过程中应屏蔽掉哪些函数等。当然,此指针也可以为NULL,进程会以默认方式处理信号。以下就简单介绍一下sigaction结构以及一般的用法。<br />  

2010-10-23 23:29:00 331

转载 用GRUB(包括WINGRUB)命令行模式引导安装Linux

<br />作者:北南南北<br />来自:LinuxSir.Org<br />提要:Linux的安装过程的引导有几种方法,一种是在DOS下通过loadlin进行安装;一种是通过lilo系统引导管理器进行引导;还有一种就是通过系统引导管理器GRUB来引导安装,目前大多是用这种方法,也是最方便和最容易的办法。GRUB有两个版本,一个是Windows的,也被称为GRUB FOR DOS或WINGRUB,另外就是Linux自带的GRUB了。本文主要谈如何通过GRUB(包括WINGRUB)的命令行模式来引导安装Li

2010-10-23 23:28:00 348

转载 在Linux系统中存储设备的两种表示方法

作者:北南南北来自:LinuxSir.Org摘要: 硬盘和硬盘分区在Linux都表示为设备,按我们通俗的说法来说,就是怎么来表示或描述硬盘和或硬盘分区,但这种描述应该是科学和具体的;比如IDE硬盘,在Linux 可以表示为 /dev/hda、/dev/hdb ... ;SCSI 接口的硬盘、SATA接口的硬盘表示为/dev/sda、/dev/sdb ... ... ;而IDE接口的硬盘/dev/hda,也可以表示为hd0 ,而 SCSI 接口的如果是 /dev/sda ,另一种表示方法是sd0;

2010-10-23 23:26:00 459

原创 Linux驱动中completion接口浅析

<br />       completion是一种轻量级的机制,它允许一个线程告诉另一个线程工作已经完成。可以利用下面的宏静态创建completion:<br />                         DECLARE_COMPLETION(my_completion);<br />       <br />        如果运行时创建completion,则必须采用以下方法动态创建和初始化:<br />                         struct compltion my_

2010-10-23 23:17:00 263

原创 Linux内核头文件中关于s3c2410 GPIO的宏定义分析

<br />Phenix<br />2006.08.22<br />一、GPIO寄存器定义<br />1.#define GPCON(x)   __REG2(0x56000000, (x) * 0x10) <br />这句是定义2410的GPIO的控制寄存器,注意:__REG2的参数是寄存器的物理地址,这个物理地址经_REG2宏转换为虚拟地址,对照2410的手册可以得到一下对应关系:<br />GPCON(1)------ PORT A  0x56000000<br />GPCON(2)------ POR

2010-10-23 22:42:00 657

转载 what is the purpose of __ASSEMBLY__?

<br />Slade Maurersmaurer at teja.com <br />Mon Jan 3 17:44:46 GMT 2005<br /> Previous message: Retrace register on EP9315 Next message: what is the purpose of __ASSEMBLY__? Messages sorted by:[ date ][ thread ][ subject ][ author ]Let's keep in mind that

2010-10-23 22:37:00 889

原创 Qt开发环境(for ARM)的搭建

<br />Step 1:<br />         首先设置宿主机上的环境变量(依你自己的情况而定):<br />    export QTDIR=/usr/local/arm-linux/qt_toolchain/qt-2.3.7<br />    export QPEDIR=/usr/local/arm-linux/qt_toolchain/qtopia-free-1.7.0<br />    export LD_LIBRARY_PATH=/usr/local/arm-linux/qt_toolch

2010-10-23 22:35:00 601

原创 GPRS DTU心跳

<br />声明:本文内容均由http://www.mdtu.com/bbs/上的资料汇总而得。<br /><br />为了维持数据连接,保证设备永远在线,设备周期性发送固定格式的报文到指定的服务器,我们称这种功能为“心跳功能”,称发送的报文为“心跳”(即“在线报告”),称指定的、接收心跳的服务器为心跳中心。<br />它是会产生流量的,但这个流量非常小。如果发现数据流量非常大,就需要仔细查找原因,可让运营商打印一份数据清单,并仔细核对。在线报告时间间隔指的是每隔多少秒发送一个心跳包。用户可以根据当地网络调

2010-10-23 22:33:00 1666

原创 利用Keil调试精确实现软件延时

<br />用c51实现软件延时,无非就是利用for或while多重循环。以前用到延时函数时,都是从网上下载别人写好的延时子程序。延时5ms,400ms,1s,……,这些延时函数的函数名中都清清楚楚地标明了延时的时间,可我一直不知道这些函数是如何编写的,确切地说,是如果根据延时时间来确定循环次数的。如果是纳秒级的延时,可以通过示波器来观察波形,或者反汇编一下,计算一下指令执行时间,但如果延时时间相对较长,示波器便无能为力了。这几天好好看了一下Keil调试,发现Keil的功能实在是太强大了。利用Keil uV

2010-10-23 22:31:00 2597

转载 C语言中的复杂声明解析

<br />   在很多情况下,尤其是读别人所写代码的时候,对C语言声明的理解能力变得非常重要,而C语言本身的凝练简约也使得C语言的声明常常会令人感到非常困惑,因此,在这里我用一篇的内容来集中阐述一下这个问题。<br /> <br />问题一:声明与函数<br />  有一段程序存储在起始地址为0的一段内存上,如果我们想要调用这段程序,请问该如何去做?答案是(*( void (*) ( ) ) 0 ) ( )。看起来确实令人头大,那好,让我们知难而上,从两个不同的途径来详细分析这个问题。<br />答案分析

2010-10-23 22:25:00 272

转载 gcc核心扩展

<br />GNU CC是一个功能非常强大的跨平台C编译器,它对C 语言提供了很多扩展,这些扩展对优化、目标代码布局、更安全的检查等方面提供了很强的支持。本文把支持GNU 扩展的C 语言称为GNU C。<br /> Linux 内核代码使用了大量的 GNU C 扩展,以至于能够编译 Linux 内核的唯一编译器是 GNU CC,以前甚至出现过编译 Linux 内核要使用特殊的 GNU CC 版本的情况。本文是对 Linux 内核使用的 GNU C 扩展的一个汇总,希望当你读内核源码遇到不理解的语法和语义时,

2010-10-23 22:20:00 256

原创 Linux文本在windows中显示乱码的解决方法

<br />      我的PC上装了windows xp和Fedaro Core 4 双系统,在Linux下编辑的文本在windows下用记事本或windows平台下的gvim打开都是乱码,前些日子请教了网友,终于解决了这个问题。主要是修改gvim的环境变量,具体有以下几种方法:(至于怎么用记事本打开,我不知道方法,知道的高手请告诉我)<br />     1.打开GVIM,然后执行:e ++enc=utf8 filename 来打开文件<br /><br />     2.如果文件已经打开,如果是乱码,

2010-10-23 22:17:00 813

原创 ARM平台上实现Linux PPP拨号

<br />        硬件平台:亿道Liod平台(基于PXA270) <br />        操作系统:嵌入式Linux <br />   下面主要介绍一下如何在Liod平台上进行ppp拨号,实现GPRS上网.<br />   第一步:如果内核不支持ppp拨号,则要重新编译内核,添加对ppp的支持, <br />                <*> PPP (point-to-point protocol) support               <br />                

2010-10-23 22:14:00 1685 1

转载 集电极开路(OC)或漏极开路(OD)输出的结构

<br />(转自http://blog.21ic.org/tb.asp?id=9437)<br />       <br />      我们先来说说集电极开路输出的结构。集电极开路输出的结构如图1所示,右边的那个三极管集电极什么都不接,所以叫做集电极开路(左边的三极管为反相之用,使输入为“0”时,输出也为“0”)。对于图1,当左端的输入为“0”时,前面的三极管截止(即集电极C跟发射极E之间相当于断开),所以5V电源通过1K电阻加到右边的三极管上,右边的三极管导通(即相当于一个开关闭合);当左端的输入为“

2010-10-23 22:11:00 365

原创 格雷码与二进制码的互转

<br />格雷码(Gray code),又叫循环二进制码或反射二进制码<br /><br />       在数字系统中只能识别0和1,各种数据要转换为二进制代码才能进行处理,格雷码是一种无权码,采用绝对编码方式,典型格雷码是 一种具有反射特性和循环特性的单步自补码,它的循环、单步特性消除了随机取数时出现重大误差的可能,它的反射、自补特性使得求反非常方便。格雷码属于可靠 性编码,是一种错误最小化的编码方式,因为,自然二进制码可以直接由数/模转换器转换成模拟信号,但某些情况,例如从十进制的3转换成4时二进制

2010-10-23 22:07:00 2270

原创 ioctl命令编号分析

<br />        在编写ioctl代码之前,需要选择对应不同命令的编号。为了防止对错误的设备使用正确的命令,命令号应该在系统范围内唯一,这种错误匹配并不是不会发生,程序可能发现自己正在试图对FIFO和audio等这类非串行设备输入流修改波特率,如果每一个ioctl命令都是唯一的,应用程序进行这种操作时就会得到一个EINVAL错误,而不是无意间成功地完成了意想不到的操作。<br />        要按Linux内核的约定方法为驱动程序选择ioctl编号,应该首先看看include/asm/ioct

2010-10-23 22:06:00 595

原创 JPEG Lib的交叉编译

<br />step1:下载并解压jpeg源代码包<br />step2:<br /> #cd ./jpeg-6b<br /> #./configure --prefix=/home/jpeg_arm_include --exec-prefix=/home/jpeg_arm_lib /<br />               --enable-shared --enable-static<br /> 下面分别介绍这几个参数的作用:<br /> <br /> --prefix=/home/jpeg_arm_i

2010-10-23 22:04:00 776

原创 移植pcap库到ARM开发板

<br />    首先到http://www.tcpdump.org/上下载libpcap-0.9.4源代码 ,解压后进入目录,一下为具体的执行过程:<br />       <br />    [root@olive libpcap-0.9.4]# ./configure --host=arm-linux<br />    configure: error: pcap type not determined when cross-compiling; use --with-pcap=...<br /> 

2010-10-23 21:59:00 2203

空空如也

空空如也

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

TA关注的人

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