自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(43)
  • 资源 (2)
  • 收藏
  • 关注

转载 (转)关于romimage

<br />1. romimage是什么?<br />romimage是wince编译过程中最后一步。在此之前,ce的编译系统已经调用自己的arm编译器,对每个模块完成了编译工作,并生成了.exe,.dll等文件;同时针对当前的环境设置,生成了.bib,.reg等文件。另外还有一些别的文件。最后编译系统将所有这些需要“打包”的文件,拷贝到_WINCEROOT/release目录下。而romimage的作用,就是根据ce.bib文件,来生成最后的nk.bin和nk.nb0。<br />2. romimage的

2010-12-16 14:39:00 1065

转载 (转)Wince读核1-启动流程6

<br />5. 中断向量表初始化<br />接下来的代码进行中断向量表初始化。首先需要介绍一下arm中断的知识。对于arm9,它的中断向量可以放在低地址0x00000000,或者高地址0xffff0000。ce只能将中断向量表放在高地址。这是由ce的整个编译系统决定的。网上有一篇文章"Eboot编译编译器决定中断向量及其实现单一性的原因"(写这篇文章的哥们肯定语文没学好,我也是:(),介绍的挺详细,另外我觉得有两点需要加以补充。一个是pe文件不能拷贝0x400后的部分直接执行,不仅仅是偏移量的问题,在后面

2010-12-16 14:38:00 690

转载 (转)Wince读核1-启动流程4

;下面这一段有点特殊。ce5.0最多支持512M的物理RAM,也就是说虚拟地址空间0x80000000-0x9fffffff用来映射最多512M的物理RAM; ;所以r2和0x1FF00000求与后满足上述要求(1M对齐); ;而被映射的物理地址可以是任何4g空间内的地址,所以r3和0xFFF00000求与后满足要求(1M对齐)。 ;注意,这里和ce支持4g虚拟内存是不矛盾的。 ldr r5, =0x1FF00000

2010-12-16 14:37:00 662

转载 (转)Wince读核1-启动流程5

<br />4. PSL和API调用            <br />接下来这部分资料有些翻译自网络上的文章,大部分是我自己的理解。我们知道ce的api是由几个server进程实现的,包括filesys.exe,gwes.exe,device.exe和services.exe,当然,还有内核nk.exe。当一个进程调用某个api时,调用者的线程通常会"跳进" server进程中执行。这是怎么做到的呢?<br />大部分ce的api是由coredll.dll导出的。所有的ce应用程序都会链接到这个dll。当

2010-12-16 14:37:00 843

转载 (转)Wince读核1-启动流程3

<br />  ;       Zero out page tables & kernel data page<br />     ;初始化上面分配的物理内存KDataArea<br />    <br />            mov     r0, #0                          ; (r0-r3) = 0's to store<br />            mov     r1, #0<br />            mov     r2, #0<br />      

2010-12-16 14:35:00 654

转载 (转)Wince读核1-启动流程2

<br />3. 从KernelStart开始2<br />KernelStart()函数代码如下。<br />      LEAF_ENTRY KernelStart<br />      ;我们现在跑在物理地址下;<br />     ;如前所述,r0在之前已经保存了MemoryMap的物理地址。<br />        mov     r11, r0                         ; (r11) = &MemoryMap (save pointer)<br />        ;

2010-12-16 14:34:00 876 1

转载 (转)Wince读核1-启动流程1

<br />写在前面<br />将近一年前,做过一段时间windows mobile,当时忙于项目,精力放在bsp的调试上,对widnows ce系统了解不深刻,后来忙别的项目就把ce放下了。时隔将近一年,这几天难得有点清闲,看了一点ce的源代码,发现自己记性大不如前,正好这个blog很久没有更新了,因此写点东西吧。<br />以下内容基于ce5.0,arm体系结构。<br />参考<br />1. ce5.0源代码和帮助文档<br />2. 《ARM Architecture Reference Manu

2010-12-16 14:33:00 715

转载 eboot汇编Startup.s中MMU设置流程详细分析(转)

<br />CE5.0 - eboot汇编Startup.s中MMU设置流程详细分析<br /><br />以下为SMDK开发板startup.s部分启动代码.<br />;-------------------------------------------------------------------------------<br /><br />MemoryMap EQU 0x2a4<br />BANK_SIZE EQU 0x00100000 ; 1MB per bank in MemoryMap

2010-12-16 14:28:00 1231

转载 市场主流S3C6410 ARM11 开发板区别及对比分析(转)

<br />本文来自博航嵌入式http://www.broadon.cn/,最全最新的嵌入式产品及海量资料!<br /> <br /> <br /> <br /> <br /> <br />市场主流S3C6410ARM11开发板区别及对比分析<br />如何选型UT-S3C6410/Real6410/OK6410/TE-6410/Mini6410<br /> <br />  目前开发板市场琳琅满目,市场占有率最大的当属三星系列,三星系列开发板,已经从最初的S3C44B0/S3C2410/S[size=+0]

2010-10-26 21:35:00 1558

转载 分析各家2440开发板的性价比(初学者如何选择开发板)(转)

<br />我曾经在大学买过两个ARM9,经历了纠结的入门过程http://blog.csdn.net/gooogleman/archive/2010/05/23/5617981.aspx 我觉得选择一个合适的开发板很重要,所以特花了几天时间写了这篇文章,希望对大家有帮助。<br />    刚才一觉醒来,我就淘宝了一番,分析各家2440开发板的性价比。<br />   首先抛弃那些土枪开发板,太低价格没有啥保障因素的。<br />   从500~800的开发板,搜索一下,发现友善,飞凌,天嵌,占据了90%

2010-10-26 18:11:00 1470

转载 蓝牙模块ABCSP浅析(转)

<br />ABCSP是CSR为自己的蓝牙芯片及协议栈软件所做的协议栈与芯片传输协议,适用于嵌入式系统。<br />整体来讲主要有4层:<br />Uplevel:包括Sequence ,Datagram;MUX;Packet integrity<br />SLIP;<br />Uart Driver.<br />Uart.<br />Uart,串口,物理层,负责将数据在Host与host-controller之间传输。<br />Uart driver。串口驱动层,负责串口配置及数据传输链路控制。<br

2010-10-26 10:14:00 1753

转载 S3C2440和S3C6410性能比较(转)

<br /> <br />比较项目<br /> <br />S3C2440<br /> <br />S3C6410<br /> <br />内核<br /> <br />ARM920T<br /> <br />ARM1176JZF-S<br /> <br />主频<br /> <br />400MHZ<br /> <br />533MHZ/667MHZ<br /> <br />处理器类型<br /> <br />16/32-bit RISC<br /> <br />16/32-bit RISC<br /> 

2010-10-25 21:54:00 1485

转载 安装VMware tools,实现windows和虚拟机之间文件拷贝(转)

在安装虚拟机VMware tools之前,你需要知道如下概念:<br /><br />(1)虚拟机有免安装绿色版,也有非免安装绿色版,一般非免安装绿色版在你安装完虚拟机后,其目录下会自动生成VMware tools安装文件(windows.iso、linux.iso),而免安装绿色版因为是压缩包,里面有没有VMware tools安装文件那就要看发布这个包的人有没有把VMware tools安装文件打包在里面咯,如果没有,那你就要麻烦点,自己去下载咯。<br />(2)虚拟机可以装多个系统、多种系统(只要你

2010-10-25 21:49:00 6939

转载 (转)u-boot-2009.08在2440上的移植详解(五)

9)实现u-boot对yaffs/yaffs2文件系统下载的支持。     注意:此篇对Nand的操作是基于MTD架构方式,在“u-boot-2009.08在2440上的移植详解(三)”中讲到过。     通常一个Nnad Flash存储设备由若干块组成,1个块由若干页组成。一般128MB以下容量的Nand Flash芯片,一页大小为528B,被依次分为2个256B的主数据区和16B的额外空间;128MB以上容量的Nand Flash芯片,一页大小通常为2KB。由于Nand Flash出现位反转的概率较大,

2010-10-20 21:28:00 1153

转载 (转)u-boot-2009.08在2440上的移植详解(四)

<br />在这一篇中,我们首先让开发板对CS8900或者DM9000X网卡的支持,然后再分析实现u-boot怎样来引导Linux内核启动。因为测试u-boot引导内核我们要用到网络下载功能。<br />7)u-boot对CS8900或者DM9000X网卡的支持。<br />u-boot-2009.08版本已经对CS8900和DM9000X网卡有比较完善的代码支持(代码在drivers/net/目录下),而且在S3C24XX系列中默认对CS8900网卡进行配置使用。只是在个别地方要根据开发板的具体网卡片选进

2010-10-20 21:26:00 1032

转载 (转)u-boot-2009.08在2440上的移植详解(三)

<br />5)准备进入u-boot的第二阶段(在u-boot中添加对我们开发板上Nand Flash的支持)。<br />目前u-boot中还没有对2440上Nand Flash的支持,也就是说要想u-boot从Nand Flash上启动得自己去实现了。<br />首先,在include/configs/my2440.h头文件中定义Nand要用到的宏和寄存器,如下: <br />#gedit include/configs/my2440.h  //在文件末尾加入以下Nand Flash相关定义<br />

2010-10-20 21:23:00 1192

转载 (转)u-boot-2009.08在2440上的移植详解(二)

<br />4)准备进入u-boot的第二阶段(在u-boot中添加对我们开发板上Nor Flash的支持)。<br />通常,在嵌入式bootloader中,有两种方式来引导启动内核:从Nor Flash启动和从Nand Flash启动。u-boot中默认是从Nor Flash启动,再从上一节这个运行结果图中看,还发现几个问题:第一,我开发板的Nor Flash是2M的,而这里显示的是512kB;第二,出现Warning - bad CRC, using default environment的警告信息。

2010-10-20 21:18:00 1144

转载 (转)u-boot-2009.08在2440上的移植详解(一)

<br />在chinaunix的博客里面找到一位大牛的神作,做Uboot的移植做了详细的介绍,很具有参考价值,在此感谢这位大牛。<br /> <br />一、移植环境主  机:VMWare--Fedora 9 开发板:Mini2440--64MB Nand,Kernel:2.6.30.4编译器:arm-linux-gcc-4.3.2.tgzu-boot:u-boot-2009.08.tar.bz2<br />二、移植步骤<br />本次移植的功能特点包括:支持Nand Flash读写 支持从Nor/Nan

2010-10-20 15:18:00 2586

转载 (转)对.lds连接脚本文件的分析

<br />本文由Jacky原创,来自http://blog.chinaunix.net/u1/58780/showart.php?id=462971<br />对于.lds文件,它定义了整个程序编译之后的连接过程,决定了一个可执行程序的各个段的存储位置。虽然现在我还没怎么用它,但感觉还是挺重要的,有必要了解一下。<br />先看一下GNU官方网站上对.lds文件形式的完整描述:<br /><br />SECTIONS {<br />...<br />secname start BLOCK(align)(N

2010-10-20 14:46:00 809

转载 U-Boot启动过程完全分析 (转)

<br /> 1.1       U-Boot工作过程<br /> <br />U-Boot启动内核的过程可以分为两个阶段,两个阶段的功能如下:<br />       (1)第一阶段的功能<br />Ø  硬件设备初始化<br />Ø  加载U-Boot第二阶段代码到RAM空间<br />Ø  设置好栈<br />Ø  跳转到第二阶段代码入口<br />       (2)第二阶段的功能<br />Ø  初始化本阶段使用的硬件设备<br />Ø  检测系统内存映射<br />Ø  将内核从Flash读取到

2010-10-18 09:45:00 1269

转载 U-Boot编译过程完全分析 (转)

<br />2.1       U-Boot Makefile分析2.1.1             U-Boot编译命令<br />       对于mini2440开发板,编译U-Boot需要执行如下的命令:<br />$  make  mini2440_config<br />$  make  all<br />       使用上面的命令编译U-Boot,编译生成的所有文件都保存在源代码目录中。为了保持源代码目录的干净,可以使用如下命令将编译生成的文件输出到一个外部目录,而不是在源代码目录中,下面的

2010-10-18 09:35:00 1098

原创 uboot1.1.6顶层mkconfig详解

<br />#!/bin/sh -e<br /># Script to create header files and links to configure<br /># U-Boot for a specific board.<br />#<br /># Parameters:  Target  Architecture  CPU  Board [VENDOR] [SOC] <br />//将指定开发板的相关参数传进来(smdk6410,arch,CPU,Board,VENDOR,SOC),VENDOR,

2010-10-16 14:41:00 1062

原创 uboot1.1.6顶层makefile详解

<br />VERSION = 1//主版本号<br />PATCHLEVEL = 1//次版本号<br />SUBLEVEL = 6//修正版本号<br />EXTRAVERSION =//版本号扩展<br />U_BOOT_VERSION = $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)//这个Uboot的版本为1.1.6<br />VERSION_FILE = $(obj)include/version_autogenerated.h<br /

2010-10-16 14:35:00 1034

转载 uboot中C语言代码入口函数(start_armboot)的注释

网上找了一篇文章,决定分析start_armboot很详细,虽然是2440,但和6410应该改差不多//------------start_armboot-------------------- //功能: 完成uboot第二阶级的一系列的//  硬件初始化工作, 然后转入main函数. //备注: 该函数是C程序的入口函数,从汇编语//  言跳转到此 . //--------------------------------------------- void start_armboot (void){  

2010-10-13 23:14:00 2787

原创 OK6410 uboot1.1.16/lib.arm的board.c相关函数分析(C语言执行的第一个函数start_armboot)

在分析该函数之前,首先贴两个图贴上相关代码void start_armboot (void){ init_fnc_t **init_fnc_ptr; char *s;#ifndef CFG_NO_FLASH ulong size;#endif#if defined(CONFIG_VFD) || defined(CONFIG_LCD) unsigned long addr;#endif#if defined(CONFIG_BOOT_MOVINAND) uint *magic = (uint *) (PHYS_

2010-10-13 00:34:00 2558 1

原创 OK6410 uboot1.1.16的board.c相关函数分析(关键数据结构(gd_t和bd_t))

<br />1)、gd_t该数据结构保存了u-boot需要的配置信息,定义uboot1.1.6/include/asm-arm/Global_data.h<br />typedef struct global_data {<br /> bd_t  *bd;<br /> unsigned long flags;<br /> unsigned long baudrate;<br /> unsigned long have_console; /* serial_init() was called */<br />

2010-10-13 00:21:00 987

原创 OK6410 uboot1.1.16的board.c相关函数分析(init_sequence)

init_fnc_t *init_sequence[] = { cpu_init,  /* basic cpu dependent setup */ board_init,  /* basic board dependent setup */ interrupt_init,  /* set up exceptions */ env_init,  /* initialize environment */ init_baudrate,  /* initialze baudrate settings */ ser

2010-10-13 00:03:00 2348

原创 单个驱动的DEBUGMSG

<br />在Release模式下DEBUGMSG(..)函数不会打印信息出来,为了单独调试某个驱动,增加打印,可以做如下修改<br /><br />在驱动文件的头部加上:<br />#undef DEBUGMSG<br />#define DEBUGMSG(x,s) NKDbgPrintfW s<br /><br /><br />或<br /><br />#undef DEBUGMSG<br />#define DEBUGMSG(x,s) RETAILMSG(1,s)

2010-09-19 12:08:00 748

转载 Wince电源管理(五) ---- Windows CE设备驱动开发之电源管理

Windows CE设备驱动开发之电源管理 第五部分4.7.1、活动定时器(Activity Timers)在初始化时,电源管理器从注册表中读取活动定时器名称列表。对于每个定时器,电源管理器都会检查其超时时间(以秒为单位)以及可选的唤醒源列表。然后创建下列事件:l         定时器重置事件l         活动状态手动重置事件l         手动重置事件如果超时与不产生重置事件的定时器到期关联,电源管理器将重置活动事件并设置非活动事件。如果重置事件产生,电源管理器重置非活动事件并设置活动事件。下

2010-09-14 16:03:00 1237

转载 Wince电源管理(四) ---- Windows CE设备驱动开发之电源管理

Windows CE设备驱动开发之电源管理 第四部分4.7.4、设备电源管理指南电源管理器对设备功耗、性能及响应时间并没有进行严格的限制。只是在用户角度而言D0及D1状态下是可操作的,而更高编号的电源状态比D0及D1消耗更少的电源。本指南的目的是为了使OEM厂商能更容易的定义有意义的系统电源状态,而不用了解特定设备的详细功耗要求。4.7.4.1              设备电源自管理(Device Power Self-Management)一些设备自行管理其电源的过程可能比较复杂。当设备处于休止状态时,

2010-09-14 16:02:00 937

转载 Wince电源管理(三) ---- Windows CE设备驱动开发之电源管理

Windows CE设备驱动开发之电源管理 第三部分 4.7.3、电源管理器接口电源管理器有三种不同的使用者。l         电源管理器能识别的设备的驱动程序。l         可能需要更改系统电源状态或设备性能的应用程序。l         需要电源事件通知的应用程序。电源管理器使用不同的编程接口与这些使用者进行通讯。4.7.3.1              设备驱动接口电源管理器使用两种不同的机制与支持电源管理的设备驱动进行通讯。电源管理器向下调用设备驱动确定其设备性能,并更新其设备电源状态。设备

2010-09-14 15:59:00 870

转载 Wince电源管理(二) ---- Windows CE设备驱动开发之电源管理

Windows CE设备驱动开发之电源管理      第二部分4.7.2、电源状态电源管理器期望所有被管理的设备能支持一个或多个设备电源状态。设备电源状态的数量是有限的。设备必须通知电源管理器其功耗特性。设备常以功耗换取性能。电源管理器在OEM定义的系统电源状态下管理设备电源状态。系统电源状态在注册表中定义,可以用任意数字定义。系统电源状态会给设备电源状态设置一个上限。某些应用程序可能需要特定设备保持运行在指定的设备功率等级上。例如:当一个音频播放程序在播放音乐时,可能需要网卡及音频解码器保持运行在高功率等

2010-09-14 15:41:00 722

转载 Wince电源管理(一) ---- Windows CE设备驱动开发之电源管理

原文位置Windows CE 5.0 Documentation中Developing a Device Driver->Power Management目录下 Windows CE设备驱动开发之电源管理4.7电源管理电源管理模块管理设备电源,从而全面改进操作系统的电源使用效率;它所有设备的电源使用,同时能与不支持电源管理的应用程序及驱动程序共存。使用电源管理可以有效的减少目标设备的电源消耗,同时,能在运行、空闲、复位及挂起电源状态时维持并保护RAM中的文件系统。电源管理具有以下特性:使设备具有自行电源管理

2010-09-14 15:37:00 692

转载 Windows CE电源管理的实现(转)

电源管理的目的是节能,基本的节能方法是使系统适时的进出休眠状态.比如用户按下On/Off按钮,或者监视用户活动的定时器超时,或者应用呼叫api都可以使得系统休眠,用户再次按下On/Off或者其他唤醒中断将使得系统退出休眠.从而可见,电源管理模块和用户活动情况密不可分,电源管理是用户活动所驱动的. WinCE中处理用户与系统交互的部分是GWES,所以早期电源管理工作是由GWES来实现.( GWES:Graphics,Windows and Events Subsystem.图形,窗口和事件子系统.主要负责图形

2010-09-14 15:09:00 846

转载 wince下USB设备驱动程序分析

<br />转自:文斌程序网                                                                    作者:文斌<br />随着USB设备的不断增加,我们这些开发人员也就多了对USB设备进行驱动程序开发的工作。但是对于很多初学者来说,存在以下三个困难:<br />        一是对WinCE的驱动程序结构了解得太少,没办法得心应手的专注于驱动程序的开发工作;<br />        二是对WinCE自带的USB驱动程序的例子没有弄懂,看到一

2010-09-14 15:06:00 1138

转载 Windows CE 6.0 启动过程分析(转)

<br />找不到原帖地址,贴个转帖的,如果作者本人看到,请告知。<br />http://blog.csdn.net/vcleaner/archive/2008/09/08/2896701.aspx<br /> <br />在Windows CE 6.0中,内核(Kenerl)和OEM代码被分成oal.exe、kernel.dll和kitl.dll三个部分,其中启动代码(startup)和 OAL层的实现部分不再与内核链接生成NK.exe,取而代之的是启动代码(startup)和硬件相关且独立于内核的OA

2010-08-05 15:13:00 800

原创 wince 注册表的动态导入

<br />这两天用we-hjb牛人的寄存器读写工具调试驱动(http://www.cnblogs.com/we-hjb/archive/2009/03/08/1406257.html),很方便,但是我需要自己动态的导入注册表,自己又查了资料,方法如下:<br />要把自己的注册表动态导入,其实就两步骤:<br />1, 创建注册表(RegCreateKeyEx());<br />2, 写注册表(RegSetValueEx());<br />在没导入之前,在HKEY_LOCAL_MACHINE是看不到自己的

2010-07-30 12:03:00 1779

原创 Sources文件详解

<br />Wince源文件通常包括Sources文件,其中许多配置不是很清楚,现在记一下:<br />TARGETNAME:最后编译完后生成的目标文件的名字,不包括扩展名。TARGETTYPE:生成的文件的类型。具体值如下:<br />        LIBRARY,一个.lib文件<br />        DYNLINK,一个.dll文件<br />        PROGRAM,一个.exe文件<br />RELEASETYPE:该宏设置两个环境变量RELEASEDIR和RELEASELIBDIR,

2010-07-03 12:14:00 1609

原创 wince6.0 下如何编写能使直接访问硬件的软件

<br />看到一篇帖子,写的非常好,给个链接,学习一下<br />http://topic.csdn.net/u/20090617/15/2bf5d4a4-35aa-4641-8089-b7869c827f98.html

2010-07-02 17:31:00 659

原创 Wince音频驱动的好Blog

<br />查找Wince驱动,找到一个比较详细的Blog,贴上来,好好学习一下。<br />http://blogs.msdn.com/b/medmedia/<br /> 

2010-07-02 14:07:00 806

ARM嵌入式系统基础教程

在学习很流行的一本书,以前我就是靠这本书入门的

2010-07-01

空空如也

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

TA关注的人

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