自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(43)
  • 资源 (2)
  • 收藏
  • 关注

转载 把共享库(SO)加载到指定的内存地址

一位朋友最近遇到一个棘手的问题,希望把共享库(SO)加载到指定的内存地址,目的可能是想通过prelink来加快应用程序的起动速度。他问我有没有什么方法。我知道Windows下是可以的,比如在VC6里设置/base的值就行了,所以相信在linux下也是可行的。 VC有编译选项可以设置,猜想gcc也应该有吧。gcc本身只是一个外壳,链接工作是由于ld完成的,当然是应该去阅读ld命令行选项文档。

2013-03-29 17:21:17 1761

转载 ELF动态库加载技术

库用于将相似函数打包在一个单元中。Linux支持两种类型的库:静态库(在编译时静态绑定到程序)和动态库(在运行时绑定到程序)。Linux系统使用的动态库是ELF格式,后缀名为so。1 加载动态库内部划分为段,段分为不同的类型: PT_LOAD段:包含代码或数据,是需要被映射到内存中的,每个段有不同的访问权限(读、些、执行);PT_DYNAMIC段:包含动态链接信息,

2013-03-29 17:20:34 2006

转载 如何使用autotools工具

autotools是系列工具,读者首先要确认系统是否装了以下工具(可以用which命令进行查看)。autoscanaclocalautoheaderautomakeautoconf使用autotools主要就是利用各个工具的脚本文件以生成最后的Makefile。其总体流程是这样的:使用aclocal生成一个“aclocal.m4”文件,该文件主要处理本地的宏定义;改写“

2013-03-29 10:21:01 1235

转载 Linux编程make命令

摘要:在开发一个系统时,一般是将一个系统分成几个模块,这样做提高了系统的可维护性,但由于各个模块间不可避免存在关联,所以当一个模块改动后,其他模块也许会有所更新,当然对小系统来说,手工编译连接是没问题,但是如果是一个大系统,存在很多个模块,那么手工编译的方法就不适用了。为此,在Linux系统中,专门提供了一个make命令来自动维护目标文件,与手工编译和连接相比,make命令的优点在于他只更新修改过

2013-03-29 10:19:51 653

转载 autotools使用

Makefile固然可以帮助make完成它的使命,但要承认的是,编写Makefile确实不是一件轻松的事,尤其对于一个较大的项目而言更是如此。那么,有没有一种轻松的手段生成Makefile而同时又能让我们享受make的优越性呢?本节要讲autotools系列工具正是为此而设的,它只需用户输入简单的目标文件、依赖文件、文件目录等就可以轻松地生成Makefile了,这无疑是广大用户的所希望的。另外,这

2013-03-29 10:17:50 800

转载 POSIX定时器

最强大的定时器接口来自POSIX时钟系列,其创建、初始化以及删除一个定时器的行动被分为三个不同的函数:timer_create()(创建定时器)、timer_settime()(初始化定时器)以及timer_delete(销毁它)。 创建一个定时器:int timer_create(clockid_t clock_id, struct sigevent *evp, timer_t *t

2013-03-28 17:55:48 2331

转载 VxWorks中Timer机制

[摘要] Timer是实时操作系统的一个重要组成部分。本文结合近阶段的学习和实验情况,对VxWorks中的时间函数和定时器作了一些探讨。主要介绍了Timer的机制,相关的函数,并给出了一些具体的例子。 一. TickTick是指每秒中定时器中断的次数。POSIX标准中,tick等于50,即每20ms定时器中断一次。VxWorks中,tick的缺省设置为60。因为实时操作系统中,任务的调

2013-03-28 17:54:37 13410

转载 VxWorks下几种定时延时方法的小结

1 taskDelaytaskdelay()提供了一个简单的任务睡眠机制,也常用于需要定时/延时机制的应用中。它的格式是 STATUS taskDelay(int ticks   /* number of ticks to delay task */   ),可以看出使用该函数实现延时的单位为tick(一般系统中一个tick都是ms级的)。在VxWorks下可以这样使用taskDe

2013-03-28 17:52:53 3007

转载 VXWORKS 几种定时机制

编程过程中,出于需要,大家或多或少要用到定时/延时。VxWorks下提供了几种定时/延时机制,根据收集的一些资料和VxWorks相关文档,在学习和上机实验的基础上,对它们的使用以及我所遇到的问题做一个总结,希望对大家能有所帮助。不正确之处,恳请斧正。A 1 taskDelay-k~ taskdelay()提供了一个简单的任务睡眠机制,也常用于需要定时/延时机制的应用中。它的格式是STATUS ta

2013-03-28 17:50:54 2367

转载 小字节序和大字节序

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

2013-03-28 17:50:05 1514

转载 vxImmrGet

*PBODR(vxImmrGet()) &= 0xfcff;*PBPAR(vxImmrGet()) &= 0xfffffcff; *PBDIR(vxImmrGet()) |= 0x00000300;vxImmrGet()应该是获取powerpc 的IMMR(Internal Memory Mapped Registers)的值,这个寄存器保存着所有powerpc CPU寄存器所映射

2013-03-28 17:29:20 1965

转载 汉字区位码对照表

汉字区位码对照表a-beibei--cancan-chichi-dada-dongdong-feifei-gege-guoha-huanhuan-jiajia-jingjing-kaokao-langlang-linlin-maimai-momo-nunu-pingping-qieqie-r

2013-03-28 09:41:13 22585 1

转载 使用 rapidxml 做配置文件

对于配置文件,一般会选用ini,xml 等等的配置格式。如何快速高效的从文件内读取自己想要的信息是每个做配置文件想要达到的效果。对以小型开发我们并不用时用到msxml这种重量级的解析器。那样会给自己添麻烦的。这里我推荐大家使用rapidxml。之前使用tinyxml 感觉还可以。后看了rapidxml 就想换用这个开源库。经常编写跨平台软件省去编译和加载lib。4个文件实现解析xml而且超高效

2013-03-28 09:38:29 1359

转载 非阻IO与EWOULDBLOCK EAGAIN

非阻塞读写默认 socket 是阻塞的,读写函数 read, readv, recv, recvfrom, recvmsg 以及 write, writev, send, sendto, sendmsg 都有可能会阻塞。可以将 socket 描述字设为非阻塞,这样,当 socket 描述字未就绪时,调用以上读写函数将会返回 EWOULDBLOCK 或 EAGAIN 。UNPv1

2013-03-27 17:49:46 1235

转载 Socket的send函数在执行时报EAGAIN的错误

Socket的send函数在执行时报EAGAIN的错误]内容提要:当客户通过Socket提供的send函数发送大的数据包时,就可能返回一个EGGAIN的错误。该错误产生的原因是由于send 函数中的size变量大小超过了tcp_sendspace的值。tcp_sendspace定义了应用在调用send之前能够在kernel中缓存的数据量。当应用程序在socket中设置了O_

2013-03-27 17:49:00 1716

转载 epoll机制

在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中,它是采用轮询来处理的,轮询的fd数目越多,自然耗时越多。并且,linux/posix_types.h头文件有这样的声明:#define __FD_

2013-03-27 17:48:17 811

转载 source insight快捷键及使用技巧

source insight快捷键及使用技巧 退出程序                             : Alt+F4重画屏幕                             : Ctrl+Alt+Space完成语法                             : Ctrl+E复制一行

2013-03-27 17:47:06 539

转载 framebuffer测试程序

#include     #include     #include     #include     #include #define fb_write16(b,addr) (*(volatile unsigned short int *) (addr) = (b))unsigned short int color_lut[16] = {0x0000,

2013-03-27 17:45:29 823

转载 vxworks点滴记录

MPC852---大端模式 对于vxWork5.5来说: vxWorks操作系统是一个进程,其间的所有任务是该进程内的线程,因为他们有统一的地址空间。没有main函数。。对于vxWorks6来说: 你可选支持多个进程,每个进程由独立的地址空间,有堆。。。有一个内核进程在运行,也有用户进程。任务是进程里面的线程。。。。任务(线程)是调度的基本元素而不是进程。

2013-03-27 17:43:51 2003

转载 Makefile.am

一般格式文件类型书写格式可执行文件bin_PROGRAMES = foofoo_SOURCES = xxxx.cfoo_LDADD =foo_LDFLAGS =foo_DEPENDENCIES =静态库lib_LIBRARIES = libfoo.a

2013-03-27 17:42:10 881

转载 大型项目使用Automake/Autoconf完成编译配置

使用过开源C/C++项目的同学们都知道,标准的编译过程已经变成了简单的三部曲:configure/make/make install, 使用起来很方便,不像平时自己写代码,要手写一堆复杂的Makefile,而且换个编译环境,Makefile还需要修改(Eclipse也是这样)。 这么好的东东当然要拿来用了,但GNU的Autotool系列博大精深,工具数量又多,涉及的语言也多,要是自

2013-03-27 11:13:35 692

转载 百度的算法面试题

第一题:某个公司举行一场羽毛球赛,有1001个人参加,现在为了评比出“最厉害的那个人”,进行淘汰赛,请问至少需要进行多少次比赛。淘汰赛,一场淘汰一个人,自然就需要1000场,根本不需要二叉树。用冒泡排序  排第一轮就可以了,就是1000次。第二题一百个灯泡排成一排,第一轮将所有灯泡打开;第二轮每隔一个灯泡关掉一个。即排在偶数的灯泡被关掉,第三轮每

2013-03-22 17:30:41 3135

转载 M16C

R8C/M16C提供一系列预处理指令,能够很好的优化C代码。 本文以nc30编译器为例,谈谈#pragma的用法。 1)。与内存有关的命令 #pragma ROM 将一个变量放入ROM里面,比如: #pragma ROM aa int aa; #pragma BIT 位变量申明。表示将一个变量放在能够进行位操作指令的地址区,比如: #pragma BIT

2013-03-21 15:01:50 1022

转载 CAN总线技术在船舶监控系统的应用

AN(Controller Area Network),即控制局域网,是一种具有很高可靠性、支持分布式和实时控制的串行通信网络。CAN为多主方式工作,网络上任意节点均可在任意时刻主动地向网络上其它节点发送信息,而不分主从,且无需站地址等节点信息,通讯灵活。CAN协议模型结构只有3层,即只取OSI底层的物理层、数据链路层和应用层。CAN的最大特点是可靠性高,其节点在错误严重的情况下具有自动关闭输出功

2013-03-21 14:55:59 2583

转载 基于C8051F040单片机的CAN总线测试模式研究

摘要:现场总线已成为数据总线领域中最为活跃的热点,CAN总线被公认为最有前途的现场总线之一,CAN总线节点的设计、调试是CAN总线通讯系统设计的重点。在此介绍了C8051F040单片机内部集成的CAN控制器,并基于C8051F040单片机设计了一个CAN通信节点,并给出了CAN节点测试模式软件设计程序,可以用于CAN总线模块的测试,节省测试时间。关键词:C8051F040;CAN总线;测试模式

2013-03-21 14:50:58 1991

转载 C/C++程序员必读的十本书(上)

在Gmail TopLanguage  Group 中看到一篇文章“C/C++程序员必读的十本书(上)”,大家的讨论都很激励,大家都觉得这篇文章写得很棒,我想在Group里的朋友都能在Lookgirl的这篇文章里获益不少,为此斗胆在此转载该文,供更多朋友交流、学习。 C/C++程序员必读的十本书(上) 这个题目大的有些离谱,实话说,只是想推荐一下自己觉得很好、值得收藏的一些技术方面

2013-03-19 09:54:26 3199 1

转载 专业程序员必知必会的技巧:驯服复杂代码

你从入职第一天起就要应对复杂代码。若是还未遇到过无法理解的程序,那说明你编程的年头还不够长。在行业里,要不了多久你就会碰到让人发懵的混乱代码:巨兽、面条工厂、来自地狱的遗留系统。我曾接手过一个程序,它的前任在听说要增加一个分量不轻的新特性时,选择了辞职。(我并不怪他。)软件系统的复杂度是不可避免的。有些问题就是很难,它们的解决方案很复杂。然而,你在软件中找到的大多数复杂度是我们自己

2013-03-19 09:23:41 806 1

转载 WSAGetLastError

WSAGetLastError (Wsapiref_2tiq.asp) 函数返回了可能的错误代码。 错误错误宏按字母顺序列出。 不从任何函数返回在 Winsock2.h 中定义一些错误代码。 本文中不包括这些错误代码。更多信息WSAEINTR (10004) 翻译: 中断函数调用。 说明: A 阻塞操作已被 WSACancelBlockingCall (Wsapiref_704y.a.

2013-03-15 15:43:30 886

转载 Windows Sockets 错误码及出错原因

Windows Sockets在头文件winsock.h中定义了所有的错误码,它们包括以“WSA”打头的Windows Sockets实现返回的错误码和Berkeley Sockets定义的错误码全集。定义Berkeley Sockets错误码是为了确保原有软件的可移植性。A.1  Windows Sockets错误码列表     表A.1列出了WSAGetLastError()函数返

2013-03-15 14:28:12 2225

转载 Linux内核的时钟中断

前言 时间在一个操作系统内核中占据着重要的地位,它是驱动一个OS内核运行的“起博器”。一般说来,内核主要需要两种类型的时间: 1. 在内核运行期间持续记录当前的时间与日期,以便内核对某些对象和事件作时间标记(timestamp,也称为“时间戳”),或供用户通过时间syscall进行检索。 2. 维持一个固定周期的定时器,以提醒内核或用户一段时间已经过去了。 PC机中的时间是有三种时

2013-03-15 11:08:34 1947

转载 PCI总线体系结构概述

§1.PCI总线体系结构概述 PCI总线体系结构是一种层次式的(Hierarchical)体系结构。在这种层次式体系结构中,PCI桥设备占据着重要的地位,它将父总线与子总线连接在一起,从而使整个系统看起来像一颗倒置的树型结构。树的顶端是系统的CPU,它通过一个较为特殊的PCI桥设备——Host/PCI桥设备与根PCI总线(root pci bus)连接起来。下图1是一个较为典型的PCI总线体系

2013-03-15 11:05:52 1221

转载 Linux内核的Softirq机制

前言 中断服务程序往往都是在CPU关中断的条件下执行的,以避免中断嵌套而使控制复杂化。但是CPU关中断的时间不能太长,否则容易丢失中断信号。为此,Linux将中断服务程序一分为二,各称作“Top Half”和“Bottom Half”。前者通常对时间要求较为严格,必须在中断请求发生后立即或至少在一定的时间限制内完成。因此为了保证这种处理能原子地完成,Top Half通常是在CPU关中断的条件下

2013-03-15 11:03:57 713

转载 Linux内核的中断机制

§5.1 I386的中断与异常 中断通常被分为“同步中断”和异步中断两大类。同步中断是指当指令执行时由CPU控制单元产生的中断,之所以称为“同步中断”是因为只有在一条指令中止执行后CPU才会发出这类中断信号。而异步中断则是指由其他硬件设备依照CPU时钟随机产生的中断信号。 在Intel 80x86 CPU手册中,同步中断和异步中断也被分别称为“异常(Exception)”和“中断(Inte

2013-03-15 11:02:41 1867

转载 在 WinCe 平台读写 ini 文件

在上篇文章开发 windows mobile 上的今日插件时,我发现 wince 平台上不支持例如 GetPrivateProfileString 等相关 API 函数。在网络上我并没有找到令我满意的相应代码,因此我手工自己写了相应的方法。命名规则是,在 PC API 函数的名称前面加上 “Ce” 前缀,这是为了在 PC 平台上调试和使用时,不和系统的 API 函数发生冲突。值得注意的是,

2013-03-10 10:21:21 2073

转载 软件开发模式有哪些

软件开发模式有哪些?快速原型模型:(需要迅速造一个可以运行的软件原型,以便理解和澄清问题)快速原型模型允许在需求分析阶段对软件的需求进行初步的非完全的分析和定义,快速设计开发出软件系统的原型(展示待开发软件的全部或部分功能和性能(过程:用户对该原型进行测试评定,给出具体改善的意见以及丰富的细化软件需求,开发人员进行修改完善)优点:克服瀑布模型的缺点,减少由于软件需求不明确带来的

2013-03-06 12:45:07 824

转载 瀑布开发

提到“瀑布开发”的时候,大部分人们可能会联想到尼亚加拉瀑布下要进行房地产开发,然后,设想一下,当您告诉他们实际上瀑布开发是一种包含多个阶段的反复叠代的软件开发模型时,他们会多么惊讶。这篇文章将为您提供一份关于瀑布模型的简要介绍,解释它是什么,应当怎样工作以及可能导致项目失败的原因。    概述    瀑布模型其实并不新,它在1970年前后就已经出现了,但是大部分开发者对瀑布

2013-03-06 12:44:01 927

转载 软件开发模式对比(瀑布、迭代、螺旋、敏捷)

1、瀑布模型是由W.W.Royce在1970年最初提出的软件开发模型, 瀑布式开发是一种老旧的计算机软件开发方法。瀑布模型式是最典型的预见性的方法,严格遵循预先计划的需求分析、设计、编码、集成、测试、维护的步骤顺序进行。步骤成果作为衡量进度的方法,例如需求规格,设计文档,测试计划和代码审阅等等。 瀑布式的主要的问题是它的严格分级导致的自由度降低,项目早期即作出承诺导致对后期需求的变

2013-03-06 10:40:34 1013

转载 漫谈 Linux,Windows 和 Mac

好了,现在来一点技术性的。这段时间收到很多人的来信(大部分自称是菜鸟)。他们看了我很早以前写的推崇 Linux 的文章,想知道如何“抛弃 Windows,学习 Linux”。天知道他们在哪里找到那么老的文章,真是好事不出门…… 我觉得我有责任消除我以前的文章对人的误导,洗清我这个“Linux 狂热分子”的恶名。简言之,我想对那些觉得 Linux 永远也学不会的“菜鸟”们说:

2013-03-04 15:05:29 514

原创 交易机项目工作日志--2013-3-3

今天的主要任务是给板子烧程序。烧了将近100块,发现一些问题。1. usb otg 不好用,将usb线查到机箱后面的usb后,且让板子上的插头舒展开后,依然不好使,发现是核心板虚焊造成的,核心板和底板不平。2. usb晶振没焊,造成usb不能正常工作。3. 多块板子的排线插座焊反。4. DM9000的晶振没焊。5. 开关机电路二极管损毁,造成插上开关就开机。6. 核心板虚焊

2013-03-04 11:18:30 497

转载 程序员:如何写出杀手级简历

1. 简历里要有你工作的技术细节:  编程语言,你的个人成就和水平。 我有时会看到一些简历,里面的工作描述就只有一行话,像这样:* 在一个3人组成的团队里开发一个 e-mail 插件。  筛选者在阅读你的简历时心里都有选择标准, 1. 工作的挑战性如何, 2. 你的工作跟我们公司有多少相关性,所以你需要把工作描述清楚。 更合适的写法应该是这样的:* 用C++语言实现

2013-03-03 21:34:37 846 1

ucGUI学习笔记 -- 仿真器

ucGUI学习笔记 -- 仿真器 原创

2012-06-14

空空如也

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

TA关注的人

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