自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 linux 启动中对 initrd ramdisk的处理

linux 启动中对 initrd ramdisk的处理 Kernel command line: root=/dev/ram initrd=0x31000000,0x00A00000console=ttySAC0 console=ttyS0 mem=64M init=/linuxrc  在早期的Linux系统中,一般就只有软盘或者硬盘被用来作为Linux的根文件系统,

2009-09-22 20:58:00 2121

原创 linux 2.6.2x中 mtd yaffs ecc layout分析

 Yaffs2支持 2K page的nandflash读写。2k page的nandflash包含的oob数据为64 bytes。Yaffs利用了oob区保存了自己的节点信息。对于数据的ecc,yaffs并不参与计算生成,而是交给mtd来处理。其中决定yaffs是否生成数据的ecc的关键是useNANDECC。如果这个变量=1,则mtd生成数据的ecc。可以通过 cat/proc/yaffs来

2009-09-22 20:53:00 1782

原创 VS2005不能通过activesync来调试WINCE的设备

 新机器安装的vs2005和设备对应的sdk,新建的app不能deploy, 连接设备出现错误信息 bootstrap could not be loaded 解决方法:删除Local Settings/Application Data/Microsoft/CoreCon/1.0这个文件夹

2009-08-27 12:45:00 764

原创 ARM 9的频率和指令周期的问题

 一直对ARM执行一条指令需要多少时间不清楚,现在通过一个测试函数来分析一下 C函数如下   starttime = GetCurrentTicks();     for (i = 0; i         ;   }  endtime = GetCurrentTicks();  printf("loop %d using %d ms/n", fclk*dwLoop, endtime

2009-08-21 14:20:00 3626

原创 ARM Linux启动过程学习

 linux根目录中的vmlinux.o为arm-linux-ld link得到的一个elf格式的文件,这个文件包含kernel下的head.o+driver+MM+FS+net等其他o文件。 使用kernel目录下的vmlinux.lds link脚本生成vmlinux elf格式的可执行文件 Vmlinux使用arm-linux-objcopy生成bin格式的文件 imag

2009-08-20 13:24:00 975

原创 ARM下的C语言函数和对应的汇编代码

 C语言在EVC++ ARM平台下对应的汇编代码:int testasm(int a, int b){       return a+b;}testasm(1, 2);  Mov r1, #2Mov r0, #1Bl testasm//执行bl之后,pc跳转到函数地址,同时lr设置为当前PC+4,共函数返回 //进入函数后,PC指针发生变化

2009-08-20 13:08:00 1128

原创 逻辑地址、线性地址、物理地址和虚拟地址的区别

物理地址是最简单的了。就是指SDRAM的地址。例如ARM的平台上可能使用64M,物理地址就是从0x30000000到0x34000000虚拟地址又被称为线性地址,32bit的整数表示0-4G的地址空间。逻辑地址在X86中使用段:偏移的方式来表示指令或是数据的地址 MMU使用段单元把逻辑地址转为线性地址。paging unit把线性地址转为物理地址

2009-08-17 11:16:00 2064

原创 suid的含义

Unix/Linux中如果一个文件设置了suid bit则表示当其他进程执行这个文件的时候使用这个文件的owner的UID。通常进程执行文件使用的UID为进程owner

2009-08-14 11:28:00 659

原创 sscanf的一个用法

int id = 0; CString strUrl = "application/txt/txt.htm?id=3"; sscanf((LPCTSTR)strUrl, _T("%*[^=]=%d"), &id);   可以把id=3中的3赋值到id中

2009-08-05 17:59:00 484

原创 Linux中put_user和memcpy的区别

我在从事linux kernel开发的时候,知道user app和kernel模块之间传输数据不能使用memcpy,必须使用copy_to/from_user或是put/get_user。原因就是kernel和user app内存不能直接互访。仅仅明白到这个层次。具体为什么不能直接互访,也说不出什么来。 最近在ARM平台上开发,看了一下kernel中put_user的代码和关于linux

2009-07-29 15:45:00 5369

原创 对Kernel Preemption的个人理解

根据understanding the linux kernel中的内容理解的:可抢占式的kernel就是运行在kernel mode的process可以被另外一个进程替换。例子 process A正在kernel mode执行一个异常处理,另外一个更高优先级的process B可运行,如果kernel是抢占式的则会执行进程切换,开始运行process B。如果kernel是不可抢占的

2009-07-22 14:30:00 940

原创 Reload

2008-05-26

2008-05-26 10:03:00 448

原创 C++编译器怎么实现异常处理1

C++编译器怎么实现异常处理 对于VC++实现异常处理的深入探讨 导论 相比较其他传统的语言,C++的一个变革的特征是支持异常处理。相对于传统语言的不清楚容易错误的错误处理机制,C++的异常处理是一个非常好的替代。在正常的代码和错误处理代码之间清楚的分割使得程序非常整洁和宜于维护。本文讨论编译器怎么实现异常处理。假设读者熟悉异常处理的语法。 本文包含一个异常处理的VC++的

2002-09-17 09:28:00 1288

原创 模板初学者指南2

模板初学者指南2原文:http://www.codeproject.com/cpp/templates_part1.asp 重载函数模板 函数模板 函数模板可以被其他的函数模板或是其他函数。编译器将遍历所有可能的函数模板并将创建相应的模板函数。查找使用最优匹配策略。 在模板中使用友元和其他模板 模板类可以包含其他的模板或是类,也可以使用其他类作为友元

2002-09-11 09:42:00 914

原创 模板初学者指南1

模板初学者指南1原文:http://www.codeproject.com/cpp/templates_part1.asp 在开发大型应用时,对于不同的函数和类,通过使用共享代码模板可以节省大量的时间。在通用的函数或是类中定义模板,模板是和数据相独立的。在这个指南中,我将处理模板函数和模板类。假设你已经实现了一个类处理堆栈,有关push pop 读状态等操作,这个堆栈类可以处理doub

2002-09-10 13:37:00 1003

空空如也

空空如也

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

TA关注的人

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