Ti DSP编程入门

摘要: 写一个Ti DSP编程的入门文章吧。下面我把Ti DSP简称DSP,以DM642为例子吧。 底层编程首先对硬件环境是要熟悉的,硬件环境包括: BOOT方式 内存,寄存器映射 片上设备控制 比如,DM642可以从PCI BOOT可以从Flash BOOT,到底如何BOOT是由外部引脚配置的,即硬配置,对于编程来说是不需要理解太多的,硬件工程师说明的。如果是PCI BOOT就多看看PCI BOOT方... 阅读全文
posted @ 2009-07-24 21:41 devcfei 阅读(10006) 评论(0) 推荐(1) 编辑

Hello,world! x86版本

摘要: 使用nasm编译,得到boot.bin 烧写到U盘MBR(注意,一旦U盘MBR被修改,Windows将无法读取U盘内容,所以请先备份MBR) 从USB启动 程序主要用到BIOS中断,关于BIOS中断大体就是用寄存器做参数,中断号是功能。编译过程 >nasm boot.asm –o boot.bin ; boot.asm  ;%define bootloader ... 阅读全文
posted @ 2009-07-16 19:10 devcfei 阅读(489) 评论(0) 推荐(0) 编辑

关于volatile

摘要: 一句话,就是无论如何都从RAM里取,忽略任何优化 不用volatile   //main.c #include <stdio.h> int main() {     int i=10;     int now=i;         printf... 阅读全文
posted @ 2009-06-09 22:19 devcfei 阅读(202) 评论(0) 推荐(0) 编辑

WDM学习方法

摘要: WDM虽然已经不是M$最新的驱动模型了,但NT内核在当今计算机操作系统中的地位还是无法动摇的。学好WDM吧。 《Programming the Microsoft Windows Driver Model》这本书是相当经典的,必须反复读。 硬件工作原理要懂,如何控制硬件。 IRP的处理需要好好研究,最好去看2000泄露的源码,或者WRK源码。里面有IRP相关的,NtWriteFile,IoComp... 阅读全文
posted @ 2009-06-07 11:24 devcfei 阅读(450) 评论(0) 推荐(1) 编辑

操作系统启动前的事

摘要: 电源管理器发出下降沿,CPU复位 BIOS-ROM被加载到RAM 0xF0000~0xFFFFF CPU从0xFFFF0处读指令,该指令跳转到上面的某个地址,BIOS真正开始执行 BIOS检查硬件,出错就发出di di的声音(POST码,各BIOS的POST不一样) BIOS做一些其他事,如PCI设备的资源分配、USB设备的识别 读取CMOS信息,依次查找启动设备,通常是硬盘 加载启动设备前512... 阅读全文
posted @ 2009-06-03 23:17 devcfei 阅读(212) 评论(0) 推荐(0) 编辑

内核模块编程1

摘要: Linux设备驱动是以模块的形式驻留内存,设备驱动编程基本上遵循内核模块编程 准备文件 /*main.c*/#include <linux/init.h>#include <linux/module.h>static int hello_init(void){ printk(”hello!hello_init\n”); return 0;}static void he... 阅读全文
posted @ 2009-05-29 20:24 devcfei 阅读(233) 评论(0) 推荐(0) 编辑

KeBugCheckEx-0xD1

摘要: 指针使用错误 UCHAR** pCurret=NULL;*pCurrent=frame[0]&0x80?pdx->pRecvH[source]:pdx->pRecvL[source]; pCurrent=frame[0]&0x80?&pdx->pRecvH[source]:&pdx->pRecvL[source]; 未初始化DPC对象被使用 ... 阅读全文
posted @ 2009-05-29 20:08 devcfei 阅读(385) 评论(0) 推荐(0) 编辑

将一个句子中的单词翻转

摘要: /*将一个句子中的单词翻转*/ #include <stdio.h> char* strrevw(char* string){     char* s=string;     char* e=s;     char  ch;     char *ws,*we... 阅读全文
posted @ 2009-05-29 19:45 devcfei 阅读(832) 评论(0) 推荐(0) 编辑

用回调函数联系两个模块

摘要: #ifndef _CALLBACK_H_#define _CALLBACK_H_struct ST{ ...};typedef void (*PFCALLBACK)(void* pArg0,void* pArg1);void CALLBACK_start(PFCALLBACK proc,void* pArg0,void* pArg1);#endif /*_CALLBACK_H_*//*------... 阅读全文
posted @ 2009-05-29 19:39 devcfei 阅读(252) 评论(0) 推荐(0) 编辑

动态链接库

摘要: 动态链接库是什么,为什么要用动态链接库 dll是文件,是二进制文件,是可执行文件。所谓可执行文件就是可以控制OS执行的,其实就是一堆CPU指令。但是dll不是能被windows直接执行,其实CPU是可以执行任何有效指令的,windows不能直接执行是因为windows的shell可以直接实行*.exe文件,没有必要在多一个*.dll。既然已经有可以直接执行的*.exe了,那么为什么要有可间接执行的... 阅读全文
posted @ 2009-05-29 19:32 devcfei 阅读(450) 评论(0) 推荐(0) 编辑