摘要: DM9000_REGS为一个结构体,存放DM9000的寄存器 DM9000_REGS *g_pDM9000; //定义一个该结构体类型的指针 BYTE *pAddress; g_pDM9000=(volatile DM9000_REGS*)pAddress; //pAddress和g_pDM9000的类型不一样,不能直接赋值,(volat... 阅读全文
posted @ 2009-02-05 14:01 陈广强 阅读(200) 评论(0) 推荐(0) 编辑
摘要: 1. Dirs文件 关于Dirs文件,就是指定要编译的路径,这个地球人都知道。还是简单介绍一下。按照文档上面介绍有三种定义:DIRS,DIRS_CE和OPTIONAL_DIRS。 DIRS:就是指定要编译的目录。 DIRS_CE:只有目录下的源代码用于WinCE的映像文件时,才编译该目录。 OPTIONAL_DIRS:指定可以选择编译的目录。比如:OPTIONAL_DIRS=proj1,... 阅读全文
posted @ 2009-02-05 13:29 陈广强 阅读(271) 评论(0) 推荐(0) 编辑
摘要: 使用Image2Lcd软件,设置最大宽度和高度为480*272,16位真彩色,水平扫描,R:G:B=5:6:5,产生.c文件后,删除数组前8个字节,将数组改名为ScreenBitmap,替换eboot\bitmap.c中的数组。 替换数组后,生成的eboot.nb0映像会变大,需要修改stepldr的LOAD_SIZE_BYTES宏定义: #define LOAD_SIZ... 阅读全文
posted @ 2009-02-04 00:11 陈广强 阅读(376) 评论(0) 推荐(0) 编辑
摘要: 由于SMDK2440的BSP中使用的LCD驱动,是基于320*240的LCD,而开发板使用的是480*272的,时序也有所不同,因此需要修改驱动程序,才能让LCD正常显示。 一、修改public\common\oak\CSP\arm\samsung\s3c2440a\Inc\s3c2440a_lcd.h头文件: 修改分辨率和虚拟屏幕大小: #define LC... 阅读全文
posted @ 2009-02-04 00:00 陈广强 阅读(825) 评论(0) 推荐(0) 编辑
摘要: 直接烧写stepldr和eboot后,发现可以启动,但调试串口输出的都是乱码,即使修改了波特率也不行。原因是开发板使用的晶振是12MHz,而SMDK2440使用的是16.9344MHz的晶振,需要修改启动代码中PLL的配置。 1 打开S3C2440 datasheet的《CLOCK & POWER MANAGEMENT》一章,找到PLL VALUE SELECTION TABLE,需要... 阅读全文
posted @ 2009-02-03 23:54 陈广强 阅读(290) 评论(0) 推荐(0) 编辑
摘要: 在EBOOT中包含的一个重要的缓冲区叫Driver Globals,它用于在设备驱动和WinCE OS之间共享数据。而在EBOOT中会用到的启动参数结构被称为Boot Args,是指用于EBOOT和WinCE OS之间共享一些参数信息。一般来说Boot Args会在EBOOT运行的时候被赋值或者更新,最常用的就是网络设备的相关信息设置,比如IP地址,MAC地址,中断等信息。 Dri... 阅读全文
posted @ 2009-02-03 23:31 陈广强 阅读(259) 评论(0) 推荐(0) 编辑
摘要: NAND Flash 的数据是以bit 的方式保存在memory cell,一般来说,一个cell 中只能存储一个bit。这些cell 以8 个或者16 个为单位,连成bit line,形成所谓的byte(x8)/word(x16),这就是NAND Device 的位宽。这些Line 会再组成Page. (Nand Flash 有多种结构,我使用的Nand Flash 是K9F1208,下面内容针... 阅读全文
posted @ 2009-02-02 20:51 陈广强 阅读(564) 评论(0) 推荐(0) 编辑
摘要: 1、什么是static? static 是C++中很常用的修饰符,它被用来控制变量的存储方式和可见性。 2、为什么要引入static? 函数内部定义的变量,在程序执行到它的定义处时,编译器为它在栈上分配空间,大家知道,函数在栈上分配的空间在此函数执行结束时会释放掉,这样就产生了一个问题: 如果想将函数中此变量的值保存至下一次调用时,如何实现? 最容易想到的方法是定义一个... 阅读全文
posted @ 2009-02-02 20:44 陈广强 阅读(179) 评论(0) 推荐(0) 编辑
摘要: 1、什么是const? 常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新的。(当然,我们可以偷梁换柱进行更新:) 2、为什么引入const? const 推出的初始目的,正是为了取代预编译指令,消除它的缺点,同时继承它的优点。 3、cons有什么主要的作用? (1)可以定义const常量,具有不可变性。 例如: ... 阅读全文
posted @ 2009-02-02 20:24 陈广强 阅读(175) 评论(0) 推荐(0) 编辑
摘要: 预备知识: 一个由c/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事, 分配方式倒是类似于链表,呵呵。 3、全局区(静态区)(static)—,全局变量和... 阅读全文
posted @ 2009-02-02 19:42 陈广强 阅读(333) 评论(0) 推荐(0) 编辑