- 博客(186)
- 资源 (8)
- 收藏
- 关注
原创 Windows Mobile Camera Driver Buffer的管理
Camera的整个应用系统中存在2个buffer queue: idle buffer queue和ready buffer queue. idle buffer queue由client维护,而ready buffer queue由camera driver维护。在应用的最初,所有的capture buffer都在idle buffer queue中,此时驱动程序对这些capture是无法控制的
2008-05-20 14:16:00 2118 5
原创 “代码执行环境”浅谈
“代码执行环境”不知道有没有这个专有名词。工作的经历让我感到这个概念需要摊出来好好说说。它是衡量你coding水平的重要指标。从计算机发明到现在,人们一直在努力使更多的人“不理解”这个概念,于是软件中的层级概念就随之产生了。内核,驱动,应用程序等的3个等级的大致的划分,也基本划分出了3种类型的程序员。操作系统的著作者更是竭力在营造一个好的“环境”给我们的代码。我们---“普通的程序员”则越来越傻。
2008-02-04 00:05:00 2000
原创 ARM linux kernel file analysis
<!-- @page { size: 21cm 29.7cm; margin: 2cm } P { margin-bottom: 0.21cm } H1 { margin-bottom: 0.21cm } H1.western { font-family: "文鼎PL细上海宋Uni", sans-serif; font-size: 16pt }
2007-12-15 19:26:00 1690
原创 Linux使用串口做为终端的方法
linux使用串口终端,可以在/etc/inittab中使用登录程序agetty。修改如下2 : 1234 : respawn : agetty ttyS0 9600 ansi
2007-12-09 23:13:00 1821
原创 VIM命令列表
u 恢复dx 删除一个字母dw 删除一个词de 从光标删除到词尾(不含空格)d$ 从光标删除到行尾dd 删除整个行p 粘帖r 替换+g 显示文件路径/ 正向搜索? 反向搜索:!执行外部命令o 下添一行O 上添一行$ 光标移到行尾++G 跳转到任意行h 光标左移l 光标右移k 光标上移j 光标下移
2007-12-09 23:06:00 816
翻译 DRAM Power down mode
There are three power down modes for , including IDD2P (precharge power down),IDD3P (active power down, slow exit), and IDD3P (active power down, fast exit). Prechargepower-down occurs when all banks
2007-11-29 09:33:00 5603
原创 OAL中也可以操作注册表
static BOOL SetDeviceDriverFlags(LPCWSTR szKeyPath, DWORD flags){ BOOL rc = FALSE; HKEY hKey; UINT32 value; // Open/create key if (NKRegCreateKeyEx(HKEY_LOCAL_MACHINE, szKeyPath, 0, NUL
2007-11-14 10:46:00 1168
原创 Windows容易中病毒么?
Windows容易中病毒么?谈到这个话题,明白的和不明白的都会想到linux几乎不会受病毒的骚扰,而windows只要一上网就中病毒。这是传统观念,而我今天要为温导师申冤。声明:本人对windows和linux都有较长时间的桌面使用经历,绝对不是微软派来的特务,言论不带任何偏见。如果你是大虾,那么请您也不要认为这是个菜鸟级的话题而马上离开。我和众多在CSDN游荡的程序员一样,我们都是同
2007-11-13 23:14:00 1541 2
原创 Windows Mobile驱动中安全的处理IoControl
我们有时并不希望驱动中的iocontrol可以被任意应用程序调用,因此可以在Iocontrol中加一些签证的验证来确保能call进来的程序都是“自己人”。下面是一段例子: if (CeGetCallerTrust() != OEM_CERTIFY_TRUST) { RETAILMSG(ZONE_ERROR, (L"ERROR: : "
2007-11-08 20:16:00 2034
原创 WINDOWS窗体字体略微修改
在VC编程中,我们常常想改变窗体的字体,如加下划线,斜体等等,这些操作并不是使用全新的字体,只是在窗体原有字体的基础上,做略微修改。在窗体初始化时,windows会调用WM_SETFONT,这里给我们机会取得默认字体信息。 case WM_SETFONT: holdfont=(HFONT)wParam; GetObject(holdfont,sizeo
2007-10-25 12:23:00 1391
原创 WinCE调试DebugBreak
DebugBreak()这个函数是WinCE使用的调试函数。在上,它其实是只是一条机器指令。反汇编后得到0xE600010,这正是指令集中的undefined instruction。自然它会引起CPU的异常处理,此时也就给了debugger抓住异常的机会。之后的调试就顺理成章的开始了。可是不过此时debugger没有打开,windows如何处理呢?这个程序会崩溃?强制退出?其实windows
2007-08-30 10:48:00 1593
原创 操作系统内核的中神奇的代码
最近free download一个Linux kernel 2.6.22。由于工作的原因,大概有2年没有碰触Linux了,这些天又有生活无目标的感觉。花了2年时间才大概弄清楚WinCE整体的结构,基本能够理解微软的设计思想,也尝试看WinCE5的内核代码,但是有时候会很不爽,一个函数跟着跟着就丢失了。尤其是GWES,我最想知道的部分,完全没有代码。内核代码很多类似的部分,其中几乎都是C语言构成,C
2007-07-29 23:09:00 2263 1
原创 程序员你有资格骄傲么?
我遇到过太多太多自以为是的例子,有时候包括自己。超级解霸之父梁肇新在他书中提到程序员进阶的几个阶段,我非常同意这位大师的观点。其中有个阶段就是学习驱动程序和理解操作系统的内核,从1990年一直有以研究linux内核所引发的研究操作系统内核的一股风潮。Ring0,Ring3,虚拟内存,系统调用,进程同步,缺页等等,有一些听起来很炫的专业词汇,更有甚者,以为自己能说出这些词,自己就是高手了。
2007-07-28 09:36:00 1589
原创 Windows Mobile bus driver的角色不可小看
Windows Mobile的驱动程序程序实际是一个树状结构。Device.exe负责加载几乎所有的驱动程序,而驱动程序的各种信息是存在于注册表里面。在系统启动阶段,device.exe是不知道有多少驱动是要加载的。他只是找到bus driver,然后由它继续加载所有的驱动,所以bus driver是很重要的驱动程序,是桥梁驱动。注册表中,HKEY_LOCAL_MACHINE/Drivers的
2007-07-26 10:36:00 1569
原创 Google blogspot被封
google的博客的服务真的很好,结果被中国封掉 ,哎,竞争太激烈。所以跟多专业的讨论大家就暂时看不到了。不过我一直在坚持更新。希望能早点解封。
2007-07-26 10:30:00 947
原创 Windows Mobile 5 虚拟内存空间危机
虚拟内存空间这个概念我们常常听见,也有很多人能说出个一二。但是其实真正能理解这个概念的人并不多。今天就以Windows Mobile 5这个嵌入式操作系统理解一下什么叫Virtual Memory Space。Windows Mobile 5的虚拟内存模型如下图:<v:shapetype id="_x0000_t75"coordsize="21600,21600" o:spt="75"
2007-06-18 16:28:00 1811
原创 微软引起的while不归路
如果你是windows mobile的驱动程序开发人员,又恰好写了类似的这样一句话。while(dev->devState!=5);说明一下,dev是个结构体指针。你希望等待它的成员变量变成5,继续执行。同时有可能你在中断服务程序中改变这个成员变量的值。哈哈!我幸运的告诉你你已经进入了“死循环”,永远跳不出去啦。这是个编译器优化产生的问题,看看编译器产生的汇编片段。
2007-05-08 18:22:00 1574 3
原创 我和操作系统(二)
由于大二的经验,我OS的bootloader很快就被拿到了gcc下面,运行正常,从中得出了个结论,中断的启用对发现你的boot code down机的情况是个绝佳的工具,它帮你扑捉出错的一瞬间。如果不启用,代码中的内存保护性错误,让你很难找到哪里的问题,这个思想已经被我运用到了现在从事的工作中。printk一定得有,我需要看kernel debug信息。我设计并实现了内核中内存的动态分配kmall
2006-11-01 12:59:00 2195 2
原创 我和操作系统(一)
我与操作系统的经历得从上大学开始说起。2001年,我以不怎么好的成绩成功考入西安一所二流大学。过来的人都知道,在二流大学的好处就是考试不及格没关系,毕业只要你能找到工作,其他的好说。这为我争取了几乎整整3年的时间,潜心下来自学学了操作系统。我这样不是鼓励大家不要上学校的课,只是告诉你们要利用好自己的时间。我学的是信息与计算科学专业,这是计算机与数学相结合的专业。由于我高中时就有了台
2006-09-11 16:12:00 2444 3
原创 C语言中实现跳转到任意行代码执行
C语言的用法非常灵活,其花哨的代码,真是耐人寻味。我在编程中用到了这样一些(如下),现在和大家分享一下。/*define*/void (*run) (void);UINT32 address;/*go! go! go!*/run = ( void(*)() ) address; (*run)();上面的代码用在我将程序通过USB download到内存中,然后让该程序得到执
2006-08-28 15:48:00 8962 1
原创 SAMSUNG Nand Flash应用
K9K8G08U1M 512Mx8Bits Package Type: 48-Pin TSOP1这是典型的NAND flash,由block组成,每一个block包含64个Pages,而一个page是2k+64=2048+64=2112字节。对于一个page,0~2047个字节用来存储数据,2048~2111,共64个字节,Spare Area,用
2006-07-26 09:48:00 2276
原创 ARM指令预取的应用---调整DRAM的clock经典代码段
引言对DRAM clock的调整可能会影响对DRAM的读写,所以安全的方法是将指令预读。代码如下; First get cache info。CP15 c0中记录着该处理器的cache信息mrc p15, 0, r0, c0, c0, 1; Get I cache line size as (1 ,;32位的低两位表示cache line size,但是要经过前
2006-03-09 15:05:00 4148
原创 ARM branch instruction的分析
branch instruction的指令如下:0xEA00088E对应的二进制是:11101010000000000000100010001110分析如下:1110是无条件的意思101是branch instruction的标志000000000000100010001110一共24位,就是我们的0x88E,可以表示的最大数是2的24次方,即64MB,所以branc
2006-03-09 11:38:00 3542
原创 汇编语言
学习汇编语言是了解硬件组织结构的最好的方法。许多高级语言的精英都曾经是认真学习过汇编语言的。这样,他们可以选择最合适的高级语言组织方式,阅读反编译的代码并检测软件中难以发现的bug。并且对硬件平台的了如指掌也有助于他们成为开发团队中具有传奇色彩的领袖人物。哎!许多高层语言的程序员,连机器是什么都从来没感觉过
2006-03-05 20:09:00 1393 1
linux-image-4.15.18_2.0.qmcp737c_amd64.deb
2020-07-11
BS EN 62106 Specification of the radio data system(RDS) for VHF/FM sound broadcasting range from 87.5 to 108 MHz, 2001
2009-10-30
Traffic and Travel Information broadcasting - protocols for the 21st century
2009-10-29
United States RBDS Standard
2009-10-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人