自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

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

linux 启动中对 initrd ramdisk的处理 Kernel command line: root=/dev/ram initrd=0x31000000,0x00A00000console=ttySAC0 console=ttyS0 mem=64M init=/linuxrc  在早期的...

2009-09-22 20:58:00

阅读数 1613

评论数 0

原创 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的关键是useN...

2009-09-22 20:53:00

阅读数 1485

评论数 0

原创 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

阅读数 645

评论数 0

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

 一直对ARM执行一条指令需要多少时间不清楚,现在通过一个测试函数来分析一下 C函数如下   starttime = GetCurrentTicks();     for (i = 0; i         ;   }  endtime = GetCurrentTicks();  printf(&...

2009-08-21 14:20:00

阅读数 2158

评论数 0

原创 ARM Linux启动过程学习

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

2009-08-20 13:24:00

阅读数 866

评论数 0

原创 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,...

2009-08-20 13:08:00

阅读数 630

评论数 0

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

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

2009-08-17 11:16:00

阅读数 1842

评论数 0

原创 suid的含义

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

2009-08-14 11:28:00

阅读数 399

评论数 0

原创 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

阅读数 400

评论数 0

原创 Linux中put_user和memcpy的区别

我在从事linux kernel开发的时候,知道user app和kernel模块之间传输数据不能使用memcpy,必须使用copy_to/from_user或是put/get_user。原因就是kernel和user app内存不能直接互访。仅仅明白到这个层次。具体为什么不能直接互访,也说不出什...

2009-07-29 15:45:00

阅读数 4712

评论数 0

原创 对Kernel Preemption的个人理解

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

2009-07-22 14:30:00

阅读数 626

评论数 0

原创 Reload

2008-05-26

2008-05-26 10:03:00

阅读数 364

评论数 0

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

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

2002-09-17 09:28:00

阅读数 1134

评论数 0

原创 模板初学者指南2

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

2002-09-11 09:42:00

阅读数 793

评论数 0

原创 模板初学者指南1

模板初学者指南1原文:http://www.codeproject.com/cpp/templates_part1.asp 在开发大型应用时,对于不同的函数和类,通过使用共享代码模板可以节省大量的时间。在通用的函数或是类中定义模板,模板是和数据相独立的。在这个指南中,我将处理模板函数和模板类。假设...

2002-09-10 13:37:00

阅读数 858

评论数 0

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