- 博客(20)
- 资源 (2)
- 收藏
- 关注
原创 [汇总] ARM-LINUX小札
一、镜像结构以下是一个利用arm-linux-readelf -S vmlinux命令列出的ARM-LINUX镜像结构范例:Section Headers:[Nr] Name Type Addr Off Size ES Flg Lk Inf Al[ 0] NULL 00000000 000000 000000 00 0 0 0[ 1] .init PROGBITS c0008000 008000
2009-11-04 15:22:00 1909 1
原创 GDB备忘录
1. 在GDB中引用Shell:shell ls2. 设置输入参数:set args inputfile 103. 断点:b main.c:12b getargsb 3353 (current context)info bdel 1enable 1disable 34. 观察点:watch var==value (static or global)watch *((int *)(0x888888
2009-11-04 15:20:00 541
原创 为了C++而C++?
单件的概念出现在当一个类允许且仅允许创建一个实例的情形中,标准教科书式C++实现如下:class CSingleton{protected:CSingleton() {}private:static CSingleton* m_pInstance;public:static CSingleton* GetInstance (){if (m_pInstance == 0)m_pInstance =
2009-11-04 15:20:00 345
原创 GMAKE备忘录
参考:跟我一起写makefile(陈皓)Managing Projects with GNU Make (Robert Mecklenburg)第一个makefile模板(for Tiny Project):$(PRJECT)/SRC/Makefile第二个makefile模板(for Small Project):$(PROJECT)/Makefile$(PROJECT)/MAK/Rule.m
2009-11-04 15:18:00 840
原创 几条ARM数据装载(伪)指令的辨析
1. adr r0, label这是一条伪指令,编译后的形式为:sub r0, pc, #offset或add r0, pc, #offset用于将label的值——亦即由label表示的一个32位地址——装入r0,由于采用PC相对寻址,可以保证代码的位置无关性,但要求label在PC上下4KB距离之内。2. ldr r0, label这条指令编译后的形式为:ldr r0, pc, #offse
2009-11-04 15:18:00 421
原创 Tech Q&A - I
Q1. [OS]如何为系统的每一个进程提供一个从0开始的独立地址空间,从而使进程间的地址空间相互独立,简化了进程镜像的链接和装载过程A1: 要实现这一点,需要有硬件的MMU支持,这个MMU必须能够借助于内存中的地址转换表实现虚拟地址到物理地址的转换。MMU使能后,CPU看到的是虚拟地址,而内存接口看到的却是物理地址。因此,OS可以通过控制地址转换表控制虚拟地址到物理地址的映射,从而能够为不同的进
2009-11-04 15:17:00 471
原创 GCC备忘录
首先,向Richard Stallman大叔致敬!我们可以不完全赞成他那带有共产主义色彩的自由软件理念,但我们不能不为他那种不懈追逐自由的精神所感动,更不能不为在工作过程中能够自由使用这么多好得要命的GNU工具而心存感激。1. GCC是GNU Compiler Collection的缩写,我们不能因为它包含了两个C便认为它只是一个C编译器,它几乎支持当前所有使用中的计算机语言。2. 基本选项--
2009-11-04 15:17:00 541
原创 博客时代的隐私生活
去年租房子的时候,因为担心受骗,总喜欢拿房主的手机号码做关键字,在网上作个搜索,以找出此人在现实世界中的身份。这一过程常常让你获取到许多意想不到的信息,譬如有一次,我通过一个手机号索到房主曾经在西祠上出售过二手物品,继而得到了他的ID和邮箱,同时也能找到他所发的帖子,便了解到他的喜好甚至家庭状况,继续搜索的话还能寻得他所开的出售工艺品的网站,接着是博客、相册,直到最终你可以知道他曾经在某年的夏天
2009-11-04 15:16:00 1795
原创 H.264中的NAL技术
NAL技术1.NAL概述NAL全称Network Abstract Layer, 即网络抽象层。在H.264/AVC视频编码标准中,整个系统框架被分为了两个层面:视频编码层面(VCL)和网络抽象层面(NAL)。其中,前者负责有效表示视频数据的内容,而后者则负责格式化数据并提供头信息,以保证数据适合各种信道和存储介质上的传输。现实中的传输系统是多样化的,其可靠性,服务质量,封装方式等特征各不相同,
2009-11-04 15:15:00 545 2
原创 块设备驱动向LINUX移植的常规步骤及INITRD的使用
这里提到的块设备泛指各种可以实现固定大小数据随机传输的设备,如FLASH、SD Card、RAMDISK等,块设备驱动移植的过程实际上是将硬件厂商提供的底层驱动代码与LINUX系统集成起来的过程。在LINUX中,块设备能够以文件系统的形式为OS所访问,其大体架构如下:LINUX Application---------------------------------- system callLI
2009-11-04 15:15:00 569
原创 vfw捕捉视频的一个小问题
capCreateCaptureWindow的父窗口句柄能否为空?网上看到类似疑问,把capture不能正常工作的原因归结为将父窗口的句柄设置为空,而近期的开发中也碰到了如是的问题,于是作了个小小的鉴定。答案是肯定的,但需要将window的风格设定为WS_POPUP(MSDN中的建议值是WS_CHILD,如果设为WS_CHILD,则必须设置父窗口的句柄)。如果这种情况下capture还不能正常工
2009-11-04 15:14:00 456
原创 请不要在回调函数中盖房子
递上来一份代码,呵!几乎把整个子系统中所有的核心运算都放到采集单元的回调函数中做了,令人大跌眼镜!所谓回调函数,是指在B模块中定义但为A模块所调用的一种函数,虽然是函数,但实际上它提供的是一种消息机制,在这种机制下,A模块可以就某个事件通知B模块,从而能够使B模块接受该消息的驱动。因此,回调函数所需要完成的是给B模块一个来自外部的通知,而无需关心B模块接收到该通知后所需要做的具体工作。个人认为,
2009-11-04 15:14:00 726
原创 澄清:make oldconfig
一直以为make oldconfig的作用是将利用当前的.config覆盖defconfig,从而使下次运行make config/menuconfig时的缺省设置成为当前.config的设置,今天发现是个错误,需要澄清:1. 如果.config不存在,运行make config/menuconfig时的缺省设置由固化在各个Kconfig文件中各项目的缺省值决定。2. 如果.config存在,运
2009-11-04 15:13:00 10603 3
原创 小札记——程序的TRACE功能
1. 概念为了便于测试和维护,一个程序必须具备足够的TRACE能力,即程序在执行的同时能够给出反映该次执行状态的可视化信息,为开发人员和测试人员提供一个可靠而便捷的途径来掌握程序的执行状况。而在面向用户的最终发行版中,TRACE功能需要被卸掉以保证不会对程序的执行效率造成影响。2. 需求* 要求程序在执行过程中能够给出反映程序状态的可视化信息,如包括时间、当前线程、源文件及代码行号等的执行点信息
2009-11-04 15:11:00 1061
原创 线程安全性
1. 概述当对一个复杂对象进行某种操作时,从操作开始到操作结束,被操作的对象往往会经历若干非法的中间状态。这跟外科医生做手术有点象,尽管手术的目的是改善患者的健康,但医生把手术过程分成了几个步骤,每个步骤如果不是完全结束的话,都会严重损害患者的健康。想想看,如果一个医生切开患者的胸腔后要休三周假会怎么样?与此类似,调用一个函数(假设该函数是正确的)操作某对象常常会使该对象暂时陷入不可用的状态(通
2009-11-04 15:11:00 454
原创 LKM备忘录
1. 内核头文件内核头文件包含对内核数据结构和API的说明。* 要使用内核头文件(一般位于/usr/src/linux/x.x.x/include中,包括linux和asm两个重要目录,其中后者是个软链接,配置内核之后才会有)* 不要使用/usr/include中的头文件(但网上也看到有人使用这些头文件,但试验了一下不行!!) 2. 合法的LKM合法的LKM目标文件必须含有.modinfo的se
2009-11-04 15:09:00 363
原创 嵌入式开发指南
1. 仿真器早期的嵌入式开发是非常依赖于仿真器的,这种设备一端通过JTAG口与目标开发板连接,另一端接到PC机的通信端口上(串口或并口等),从而,运行于PC 机上的软件可以与目标板上的处理器进行通信,读写处理器的寄存器和存储空间,单步执行程序代码。仿真的软件一般是与包含有编译工具链、编辑器的集成开发环境绑定在一起的,它们可能由处理器的生产商提供,也可能是第三方的商家所开发。以下是笔者在开发过程中
2009-11-04 15:09:00 798
原创 VC6文件说明
1. .opt 工程关于开发环境的参数文件。如工具条位置等信息;2. .aps (AppStudio File),资源辅助文件,二进制格式,一般不用去管他.3. .clw ClassWizard信息文件,实际上是INI文件的格式,有兴趣可以研究一下.有时候ClassWizard出问题,手工修改CLW文件可以解决.如果此文件不存在的话,每次用ClassWizard
2009-11-04 15:07:00 354
原创 认识C++
1. 第一阶段:更好的C语言1.1. 声明(declaration)任何变量和函数在使用前必须实现声明。(定义也是一种声明方式。对于变量,使用extern关键字强调是声明不是定义;对于函数,可以不使用extern关键字,不带函数体的函数名连同参数等被认为是函数的声明。)1.2. 命名空间(namespace)的概念命名空间是为了解决C++中变量、函数命名的冲突而服务的,命名空间也是一种表示逻辑分
2009-11-04 15:05:00 358
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人