- 博客(108)
- 收藏
- 关注
转载 JLINK与JTAG的区别
调试arm,总要遵循arm的调试接口协议吧,jtag就是其中的一种。当仿真时,iar,keil,ads等等都有一个公共的调试接口,RDI就是其中的一种,那么我们如何完成RDI-->arm调试协议(JTAG)的转换呢?有两种做法: 1.在电脑上写一个服务程序,把keil,ads,iar中的RDI命令解析成相关的JTAG协议,然后通后一个物理转换接口(注意,这个转换只是电气物理层上的转换,就像
2012-01-05 11:33:31 1412
转载 目标文件格式分析工具: ar,nm,objdump,objcopy,readelf
前言如果普通编程不需要了解这些东西,如果想精确控制你的目标文件的格式或者你想查看一下文件里的内容以便作出某种判断,那么你可以看一下下面的工具:ar,nm,objdump,objcopy。具体用法请参考man在线手册。ar基本用法 ar命令可以用来创建、修改库,也可以从库中提出单个模块。库是一单独的文件,里面包含了按照特定的结构组织起来的其它的一些文件(称做
2012-01-04 16:31:11 963
转载 dwarf 调试信息格式入门
一个程序的完成过程一般是编码、编译、运行的过程,当然这是一个理想的过程,所有的开发几乎都不可能是一帆风顺的,总会有些意想不到的错误,这时便需要调试,良好的调试器应该每一个程序员的必备。那么调试器使用的调试信息是从哪里来的呢?答案简单的很,是从编译后的文件中来的(注意这里编译的时候要使用特定的编译选项,如VC使用debug模式,GCC使用”-g”)。在编译的时候,编译器会从源文件中收集大量的信息
2012-01-04 16:00:04 2452
转载 解读uCos中优先级判定表OSUnMapTbl原理
OSOSRdyTbl[0]的bit7-bit0对应于优先级7-0, OSOSRdyTbl[1]的bit7-bit0对应于优先级15-8, OSOSRdyTbl[2]的bit7-bit0对应于优先级23-16, OSOSRdyTbl[3]的bit7-bit0对应于优先级31-24, OSOSRdyTbl[4]的bit7-bit0对应于优先级39-32, OSOSRdyTbl[5]
2011-12-30 14:16:34 11092 3
转载 【嵌入式Linux学习七步曲之第三篇 Linux系统bootlaoder移植】U-BOOT全线移植分析系列之三--U-BOOT在AT91RM9200上的移植
U-BOOT全线移植分析系列之三――U-BOOT在AT91RM9200上的移植 Sailor_forever sailing_9806@163.com转载请注明http://blog.csdn.net/sailor_8318/archive/2008/08/05/2773307.aspx 【摘要】本节介绍了U-boot在AT91RM9200上移植的详细过程。首先分析AT
2011-12-29 10:51:18 1678
转载 【嵌入式Linux学习七步曲之第三篇 Linux系统bootlaoder移植】U-BOOT全线移植分析系列之二--U-boot基础
U-BOOT全线移植分析系列之二――U-boot基础Sailor_forever sailing_9806@163.com转载请注明http://blog.csdn.net/sailor_8318/archive/2008/08/04/2768049.aspx 【摘要】本节介绍了U-boot的基本概念。首先介绍了U-boot源代码的目录结构,并给出了一个实例。接着简单介绍了
2011-12-29 10:50:32 1048
转载 【嵌入式Linux学习七步曲之第三篇 Linux系统bootlaoder移植】U-BOOT全线移植分析系列之一--BOOTLOADER介绍
U-BOOT全线移植分析系列之一――――BOOTLOADER介绍Sailor_forever sailing_9806@163.com转载请注明http://blog.csdn.net/sailor_8318/archive/2008/08/04/2768049.aspx 【摘要】本节介绍了bootloader的基本概念。首先分析了为什么要针对特定的CPU和开发板移植
2011-12-29 10:49:55 1187
转载 ARM指令集
原文:http://www.eefocus.com/article/08-08/49787s.htmlARM指令集 6种类型(53种主要助记符) : 数据处理指令(22种主要助记符) 跳转指令(4种主要助记符) Load/Store指令(16种主要助记符) 程序状态寄存器指令(2种主要助记符) 协处理器指令(5种主要助记符) 软件中断指令 (2种主要助记符)
2011-12-29 10:31:53 1522
转载 ARM指令格式和寻址方式
原文:http://www.eefocus.com/article/08-08/49786s.htmlARM指令的编码格式 实际指令语法格式为: ADDEQS R0,R1,R2; 该指令的编码格式为: ARM指令的助记符 ARM指令在汇编程序中用助记符表示,一般ARM指令的助记符格式为: {} {S} ,, 其中: 操作码,如ADD表示算术加操作指
2011-12-29 10:30:36 10398 1
转载 ARM编程模型
原文:http://www.eefocus.com/article/08-08/49601s.htmlARM寻址方式与指令系统 ARM编程模型 ARM指令格式和寻址方式 ARM指令集 Thumb指令集 机器指令、伪指令和宏指令 机器指令:能被处理器直接执行,而伪指令宏和宏指令不能。机器指令包括ARM指令集和Thumb指令集 ; 伪指令:在源程序汇编期间,由汇编编
2011-12-29 10:28:57 1327
转载 uboot之start.s分析
开始start.s分析,根据S3C2410来跟踪代码,参考了S3C2410的datasheet和网上各个帖子一般来说,大家都是从start.s来分析UBOOT,但是事实是流程是从makefile中来的,也就是说是在敲入make smdk2410_config和make all后才进入start.s中,makefile在这里不做分析,韦东山的那本书有详细的说明,这里要提到的是makefile传进
2011-12-29 10:25:01 866
转载 手动建立makefile简单实例解析!
假设我们有一个程序由5个文件组成,源代码如下:/*main.c*/#include "mytool1.h"#include "mytool2.h"int main(){ mytool1_print("hello mytool1!"); mytool2_print("hello mytool2!"); return
2011-12-29 10:19:14 944 1
转载 Linker Script,LMA,VMA
以前在学ld的script时两个比较重要的概念,即指定一个输出section的lma和vma(分别是load memory address和virtual memory address),vma的作用是很明显地,就是决定run time address嘛,但lma有什么用呢?恩,对运行在linux这样的操作系统上面的应用程序来说,是没什么用的,毕竟应用程序都是被'load'到虚拟地址空间中。但是在
2011-12-29 10:05:38 1053
转载 关于uboot.lds文件的分析
原文:http://blog.163.com/shenmou/blog/static/1082062201072592830134/ gcc等编译器内置有缺省的连接脚本。如果采用缺省脚本,则生成的目标代码需要操作系统才能加载运行。为了能在嵌入式系统上直接运行,需要编写自己的连接脚本文件。编写连接脚本,首先要对目标文件的格式有一定了解。GNU编译器生成的目标文件缺省为elf格式。elf文件由若干
2011-12-29 10:04:48 722
转载 汇编语言基础之 移位指令
原文:http://bdxnote.blog.163.com/blog/static/移位指令是一组经常使用的指令,包括:算数移位、逻辑移位、双精度移位、循环移位、带进位的循环移位;移位指令都有一个指定需要移动的二进制位数的操作数,该操作数可以是立即数,也可以是CL的值;在8086中,该操作数只能是1,但是在其后的CPU中,该立即数可以是定义域[1,31]之内的数;一、算数移位指令:
2011-12-28 16:57:47 3148
转载 关于项目管理的思考
原文:http://blog.csdn.net/wwwxuhong/article/details/222804项目管理是个很大的课题所有的事物都有其规律项目管理的规律是什么?前几天看到一个理论让我眼睛一亮,陈述如下,希望对大家有点启发PDCA循环是由美国统计学家戴明博士提出来的,它反映了质量管理活动的规律。P(Plan)表示计划;D(Do)表示执行;C(Check
2011-12-20 20:57:09 914
转载 进程间通信方式总结(windows 和linux)
原文:http://blog.163.com/laylau_ll/blog/static/178625909201173131345423/平时看的书很多,了解的也很多,但不喜欢总结,这不昨天面试的时候被问到了进程间通信的方式,因为没有认真总结过,所以昨天答得不是特别好。现在将linux和windows的进程间通信方式好好总结一下。 windows的进程间的通信方式有
2011-12-19 22:01:05 2332
转载 a 和&a的区别
void main(){int a[5]={1,2,3,4,5};int *ptr=(int *)(&a+1);printf("%d,%d",*(a+1),*(ptr-1));}打印出来的值为多少呢?对指针进行加 1 操作,得到的是下一个元素的地址,而不是原有地址值直接加 1。所以,一个类型为 T 的指针的移动,以 sizeof(T) 为移动单位。 因此,对上题
2011-12-19 21:56:47 1167
转载 #运算符 ##预算符
#也是预处理?是的,你可以这么认为。那怎么用它呢? 别急,先看下面例子:#define SQR(x) printf("The square of x is %d.\n", ((x)*(x)));如果这样使用宏:SQR(8);则输出为:The square of x is 64.注意到没有,引号中的字符 x 被当作普通文本来处理,而不是被当作一个可以被替换的语言符号。
2011-12-19 21:53:12 975
原创 C笔试题(判断大端小端模式及大小端模式转换)
判断大端小端模式int checkEndion( void ){ union check { int i; char ch; }c; c.i = 1; return (c.ch ==1);}变量 i 占 4 个字节,但只有一个字节的值为 1,另外三个字节的值都为 0。如果取出低地址上的值为 0
2011-12-19 21:50:42 5185
转载 Linux实现 memcpy和memmove
/** * memcpy - Copy one area of memory to another * @dest: Where to copy to * @src: Where to copy from * @count: The size of the area. * * You should not use this function to access IO spa
2011-12-19 17:51:34 944
原创 如何不用sizeof判断操作系统的位数
void main(int argc,char** argv){ typedef char * PType; PType array[2]; char *p0 = (char *)&array[0]; char *p1 = (char *)&array[1]; printf("%d",8*(p1 - p0));}常用数据类型对应字
2011-12-19 17:50:16 1927
转载 剖析程序的内存布局
原文:http://blog.csdn.net/drshenlei/article/details/4350928原文标题:Anatomy of a Program in Memory原文地址:http://duartes.org/gustavo/blog/ [注:本人水平有限,只好挑一些国外高手的精彩文章翻译一下。一来自己复习,二来与大家分享。] 内存
2011-12-14 16:47:06 683
原创 内核是如何管理内存的?
原文:http://blog.csdn.net/drshenlei/article/details/4350928 原文标题:How The Kernel Manages Your Memory原文地址:http://duartes.org/gustavo/blog/ [注:本人水平有限,只好挑一些国外高手的精彩文章翻译一下。一来自己复习,二来与大家分享。]
2011-12-14 16:45:43 678
转载 CALLBACK, WINAPI, AFXAPI和函数调用方式
原文:http://blog.163.com/patmusing/blog/static/13583496020103233446784/(VC编译器下) 1. CALLBACK,WINAPI和AFXAPI到底是什么?它们分别在什么地方被定义的?在头文件windef.h中,CALLBACK, WINAPI, APIENTRY……#define CALLBACK __s
2011-12-06 09:41:47 806
转载 Ubuntu 10.04 下ssh,ftp,tftp服务配置
原文:http://blog.csdn.net/axdc_qa_team/article/details/6658717Ubuntu 10.04下SSH, FTP ,TFTP的配置过程一、SSH的配置过程1、安装和设置OpenSSH Server在Ubuntu和debian类的系统中,默认是没有安装OpenSSH Server 的,其安装命令为:# apt-get inst
2011-12-03 20:10:08 775
转载 玩转ptrace(二)
转自:http://blog.csdn.net/silentvoid/article/details/1477515by Pradeep PadalaCreated 2002-11-01 02:00翻译: Magic.D 在第一部分中我们已经看到ptrace怎么获取子进程的系统调用以及改变系统调用的参数。在这篇文章中,我们将要研究如何在子进程中设置断点和往运行中的程序里插入
2011-12-01 09:37:44 1259
转载 玩转ptrace(一)
转自:http://blog.csdn.net/silentvoid/article/details/1477439by Pradeep PadalaCreated 2002-11-01 02:00翻译: Magic.D E-mail: adamgic@163.com译者序:在开发Hust Online Judge的过程中,查阅了不少资料,关于调试器技术的资料在网上是很少,
2011-12-01 09:36:10 917
转载 STL中容器的几个容易混淆的成员函数-size, capacity, resize, reserve
1. container::size()用于表示容器中有几个元素,用n来表示, 并不能表示容器现有的内存最多能存多少个元素。 2. container::capacity()用于表示容器现有的内存最多能够存放多少个元素, 用m来表示。 如果想要计算容器现有的内存还能够存放几个元素 = capacity() - size(); 3. container::resize(siz
2011-11-22 16:58:57 602
转载 C++ 之“友元类”学习笔记
=======================什么是友元类======================= 当一个类B成为了另外一个类A的“朋友”时,那么类A的私有和保护的数据成员就可以被类B访问。我们就把类B叫做类A的友元。=======================友元类能做什么======================= 友元类可以通过自己的方法来访问把它当
2011-11-22 13:37:06 719
转载 OGRE架构
Root:是ORGE核心系统的一部分,必须在所有ORGE对象产生之前初始化,并在所有ORGE对象销毁之后销毁,用来配置系统。RenderSystem:是用来发送渲染操作的系统。它是一个抽象类,而另外拥有不同的实现。(OpenGL, DirectX)。SceneManager:除Root对象外最重要的ORGE部件。它创建和管理摄象机,可移动物体,灯光和材质,以及不可移动的场景的材质(如天空,
2011-11-21 17:09:51 1261
转载 STL中map用法详解
Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。这里说下map内部数据的组织,map内部自建一颗红黑树(一种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的,后边我们会见识到有
2011-11-21 14:27:12 706
转载 OCTREE 教程
对OCTREE的描述 OCTREE 是对3D空间进行划分,也可以叫空间分割。他允许你只对你的3D世界中摄象机照射的区域进行作画。他也能用于冲突检测。下面讲一下为什么要进行空间分割。假设你建立了一个游戏世界,这个世界有超过100,000个多边形要画。如果你建立一个循环并传递这些多边形,那速度是很慢的。即使你有一块很好的显示卡,他也会有很大的麻烦。但是玩你游戏的玩家的显示卡不会超过300$。
2011-11-21 13:29:29 854
转载 四叉树与八叉树
前序四叉树或四元树也被称为Q树(Q-Tree)。四叉树广泛应用于图像处理、空间数据索引、2D中的快速碰撞检测、存储稀疏数据等,而八叉树(Octree)主要应用于3D图形处理。对游戏编程,这会很有用。本文着重于对四叉树与八叉树的原理与结构的介绍,帮助您在脑海中建立四叉树与八叉树的基本思想。本文并不对这两种数据结构同时进行详解,而只对四叉树进行详解,因为八叉树的建立可由四叉树的建立推得。若有不足之
2011-11-20 14:36:55 1240
转载 《见与不见》
《见与不见》 你见,或者不见我 我就在那里 不悲不喜 你念,或者不念我 情就在那里 不来不去 你爱,或者不爱我 爱就在那里 不增不减 你跟,或者不跟我 我的手就在你手里 不舍不弃 来我的怀里 或者 让我住进你的心里 默然相爱 寂静欢喜
2011-11-19 20:56:11 610
原创 用StartUML生成GoF设计模式类图与代码(c++)
先介绍一下startUMLStarUML(http://www.staruml.com)的前身是Plastic,从1996年开始开发。1998年开始,Plastic转变为UML建模工具。2005年改名为StarUML,最新版本StarUML 5.0已经是一款功能全面的产品,支持UML2.0,支持MDA,Java、C++、C#转换,MS-Office集成,XMI等。
2011-11-18 10:37:03 8923 1
转载 一个Linux下C线程池的实现
什么时候需要创建线程池呢?简单的说,如果一个应用需要频繁的创建和销毁线程,而任务执行的时间又非常短,这样线程创建和销毁的带来的开销就不容忽视,这时也是线程池该出场的机会了。如果线程创建和销毁时间相比任务执行时间可以忽略不计,则没有必要使用线程池了。 下面是Linux系统下用C语言创建的一个线程池。线程池会维护一个任务链表(每个CThread_worker结构就是一个任务)。 p
2011-11-17 14:24:30 715
转载 Unix 调试的瑞士军刀:lsof
这是“你应该知道的Unix和Linux命令”系列的第三篇,在这篇文章中,我会介绍lsof这个工具,如果说netcat是进行网络诊断的瑞士军刀,那么lsof就是Unix调试的瑞士军刀。Lsof是遵从Unix哲学的典范,它只做一件事情,并且做的相当完美——它可以列出某个进程打开的所有文件信息。打开的文件可能是普通的文件,目录,NFS文件,块文件,字符文件,共享库,常规管道,明明管道,符号链接,So
2011-11-17 10:19:18 654
转载 Posix 多线程编程—线程属性
一.线程属性线程具有属性,用pthread_attr_t表示,在对该结构进行处理之前必须进行初始化,在使用后需要对其去除初始化。我们用pthread_attr_init函数对其初始化,用pthread_attr_destroy对其去除初始化。1.名称:pthread_attr_init/pthread_attr_destroy功能:对线程属性初始化/去除初始化头文件:#includ
2011-11-16 17:38:11 511
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人