自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(41)
  • 收藏
  • 关注

原创 决定换个ID在CSDN中与时俱进

<br />大家好,决定换一个ID在CSDN中参与学习和讨论,所以chinesedragon2010这个ID暂时决定不使用,新的ID是LoongEmbedded<br />http://hi.csdn.net/space.php?do=home,谢谢大家的关注。

2010-10-13 22:02:00 1709 5

原创 WINCE6.0+S3C2443的启动过程---eboot4

<br />http://blog.csdn.net/chinesedragon2010/archive/2010/10/05/5922489.aspx<br /> <br />2 main函数<br />void main(void)<br />{<br />    //MemoryTest_Function();<br />    BootloaderMain();<br />    // Should never get here.<br />    SpinForever();<br />}<br

2010-10-12 21:30:00 2009

转载 CE5.0 - romimage.exe如何填充eboot.bin中的pTOC特殊指针生成.nb0

<br />eboot.bin和eboot.nb0的差别就是<br />eboot.bin中没有填充pTOC结构体,必须使用parser解释器[类似于romimage.exe luther.gliethttp]将全局变量数据段解压释放到运行时使用的地址才行,<br />eboot.nb0中经过romimage.exe填充了pTOC结构体,所以eboot.nb0可以自己将自己用到的全局量通过KernelRelocate()函数进行解压释放,这就是为什么<br />eboot.nb0比eboot.bin的siz

2010-10-09 10:42:00 2351

原创 WINCE config.bib文件中的FSRAMPERCENT的意义

在BSP/files文件夹下面关于FSRAMPERCENT的内容如下:CONFIG    …………………FSRAMPERCENT=0x80808080下面我们来看看上面表达式的意义FSRAMPERCENT:格式:FSRAMPERCENT = number   默认值为0x80808080。指定为存储内存和程序内存在整个可用内存(除去nk.nb0占用的RAM之外的可用内存)的百分比。number分为四个字节,由十六进制表示。byte0的值(单位为4KB)表示在第一个2MB中,其中每1MB包含的4KB的整数倍。

2010-10-08 10:45:00 2327

原创 基于xp系统搭建android开发环境

<br />1.JDK下载链接<br />http://www.oracle.com/technetwork/java/javase/downloads/jdk6-jsp-136632.html<br /> <br />2.eclipse<br />http://www.eclipse.org/downloads/packages/eclipse-ide-java-developers/heliossr1<br /> <br />3.sdk<br />http://androidappdocs.appspo

2010-10-07 16:44:00 1418

原创 WINCE6.0+S3C2443的启动过程---eboot3

<br />上接http://blog.csdn.net/chinesedragon2010/archive/2010/10/03/5919717.aspx<br />1.6 <br />OEMAddresstable只是用来初始化一级页表,就是所谓的段(section)描述,每个段是1MB,分为4096个段,总共4G——虚拟内存空间4G就是由此而来。<br />并且这个OEMAddresstable可以用在查表法中用来转换虚拟地址、物理地址(相互转换都可以)。<br /><br /><br />PTs(p

2010-10-05 15:21:00 2426

原创 MMU和cache学习

1.      MMUMMU:memory management unit,称为内存管理单元,或者是存储器管理单元,MMU是硬件设备,它被保存在主存(main memory)的两级也表控制,并且是由协处理器CP15的寄存器1的M位来决定是enabled还是disabled。MMU的主要作用是负责从CPU内核发出的虚拟地址到物理地址的映射,并提供硬件机制的内存访问权限检查。MMU使得每个用户进程拥有自己的地址空间(对于WINCE5.0,每个进程是32MB;而对于WINCE6.0,每个进程的独占的虚拟空间是2G

2010-10-05 11:34:00 5838 1

原创 WINCE6.0+S3C2443的启动过程---eboot2

上接:http://blog.csdn.net/chinesedragon2010/archive/2010/09/20/5895956.aspx1.2 关闭所有的CPU中断通过对INTMSK,INTSUBMSK寄存器特定为设置为1来屏蔽中断源的中断请求,接着通过对中断模式寄存器INTMOD清零来把中断设置为IRQ模式。1.3系统时钟设置我的另一篇博客介绍了S3C2443的时钟管理http://blog.csdn.net/chinesedragon2010/archive/2010/09/24/590355

2010-10-03 14:44:00 2069

原创 WINCE5.0+2443 camera中断不能进来的原因

<br />因为项目需要,我需要调试和完成WINCE5.0+2443系统和驱动的功能,在调试camera驱动的时候,发现一个很郁闷的问题,就是camera的中断一直进不来,因为我之前在WINCE6.0+2443系统中已实现了camera中断了,而WINCE5.0和WINCE6.0下的camra驱动架构基本一样,可是为什么camera中断一直会进不来呢?分析如下:<br />1.       中断ISR对camera中断设置不正确。<br />在OEMInterruptHandler()函数中加入调试信息,只

2010-10-01 08:45:00 1978

原创 WINCE5.0+S3C2443系统每隔几分钟会自动关闭LCD显示

<br />这几天在调试WINCE5.0+S3C2443系统的时候,发现大概每隔6分钟的时候,系统就会自动关闭LCD屏的显示,这时候如果去点击触摸屏就会恢复显示。刚开始我还以为是系统进入了sleep状态了,发现在关闭LCD显示的时候各个驱动的PowerUp和PowerDown函数的串口输出信息并没有输出,说明并不是进入sleep状态。<br /> <br />后来我找到了不让系统关闭LCD显示的地方,是comon.reg下面的注册表项<br />; @CESYSGEN IF CE_MODULES_GWES<

2010-09-27 22:01:00 1973

原创 S3C2443时钟管理

<br />S3C2443时钟管理<br /> <br />S3C2443有两个PLL用来产生内部时钟,分别是MPLL和EPLL,其中MPLL为包括ARM,AHB和APB的总体功能模块产生内部时钟,而EPLL为比如是USB,I2S和camera等这些具体的模块产生时钟,我们可以通过软件编程来控制这个两个PLL的工作频率,可以关闭和开启内部时钟源来减少功耗。<br /> <br />1.MPLL和EPLL时钟源的选择<br /><br /><br />从上图可知主要的时钟源来之外部晶振(XTI)或者外部时钟(

2010-09-24 17:15:00 2795

原创 WINCE6.0+S3C2443的启动过程---eboot1

<br />WINCE6.0+S3C2443的启动过程---eboot<br /><br />我们知道从nboot把eboot从nandflash中拷贝到内存指定的地址后,就接着在这个地址处开始运行eboot了,之后,nboot的工作就完成了,那么那么eboot开始执行的地址在哪里呢?我们看看/Src/Bootloader/Eboot/boot.bib下面的配置<br /><br />MEMORY<br />;   Name     Start     Size      Type<br />;   ---

2010-09-20 08:50:00 2345

转载 Arm cache 研究

<br />Cache的工作原理 <br />   Cache的工作原理是基于程序访问的局部性。 <br />    对大量典型程序运行情况的分析结果表明,在一个较短的时间间隔内,由程序产生的地址往往集中在存储器逻辑地址空间的很小范围内。指令地址的分布本来就是连续的,再加上循环程序段和子程序段要重复执行多次。因此,对这些地址的访问就自然地具有时间上集中分布的倾向。 <br />    数据分布的这种集中倾向不如指令明显,但对数组的存储和访问以及工作单元的选择都可以使存储器地址相对集中。这种对局部范围的存储器

2010-09-19 11:25:00 1594

原创 WINCE5.0和WINCE6.0的内存与系统架构

<br />WINCE5.0和WINCE6.0的内存与系统架构<br />http://topic.csdn.net/u/20090410/14/75bba2cb-cefc-4ca5-b4f5-4165bbf16006.html<br />http://wenku.baidu.com/view/b7adad4bcf84b9d528ea7ab0.html<br />http://msdn.microsoft.com/en-us/library/bb331824.aspx<br />http://www.msd

2010-09-19 08:18:00 2328

转载 堆和栈的区别

<br />http://tieba.baidu.com/f?kz=150791801

2010-09-17 08:41:00 1198

原创 Windows Embedded CE Developer Center

<br /> <br />http://msdn.microsoft.com/zh-cn/windowsembedded/ce/dd430902(en-us).aspx#ce6

2010-09-15 16:07:00 1425

原创 播放视频一会,出错并自动关闭

<br />系统:WINCE6.0+2443<br /><br /><br />上周遇到一个很奇怪的问题,之前上网播放视频的时候,没有出现播放一会就会出错并且自动关闭IE的情况,但后来测试到在播放视频大概50s的时候,总是会弹出下面的对话框并且自动关闭IE,这个对话框的内容如下:<br />application IEsample.exe encountered a serial error and must shut down<br /><br />串口输出的信息如下<br />Exception 'Da

2010-09-13 08:14:00 3472 1

原创 WINCE下实现基于USB的camera

<br />我们是做基于WINCE的GPS产品,客户需要camera功能,我们产品集成了两种方案的camera功能:USB摄像头和基于TVP5150视频编解码(camera sensor)的camera,在这里只介绍USB摄像头<br />要实现这个功能能,我们需要做下面的工作。<br /> <br />1.       支持WICNE的USB摄像头应该有很多种,而且驱动应该是不能共用的,所以我们需要根据项目需要(比如像素的要求)来选择USB摄像头,选定之后,就要找到卖USB摄像头转换器的公司提供的WINC

2010-09-11 08:54:00 3091

原创 WINCE下实现USB转RS232

<br />WINCE下可以通过一个USB TO RS232转换器来实现USB转RS232,也即WINCE设备的USB host接USB TO RS232转换器的USB端,而USB TO RS232转换器的RS232端可以接PC机的RS232接口,或者可以接其他设备的RS232接口,这样WINCE设备和PC端就可以通过以串口的形式来相互通讯了,因为我们的系统采用的是USB TO RS232转换器,要实现这个功能能,我们需要做下面的工作。<br /> <br />1.       支持WICNE的USB TO

2010-09-11 08:51:00 5241 1

原创 WINCE下如何虚拟多个串口

应用背景我们的产品是GPS产品,GPS模块是通过TX与RX来和CPU串口控制器的UART2连接的,对应于COM3(这个可以根据自己的项目的需要来定),platform.reg中注册表信息如下:;==========GPS===== UART2===COM3===============[HKEY_LOCAL_MACHINE/Drivers/BuiltIn/Serial2]   "DeviceArrayIndex"=dword:2   "Irq"=dword:f   "MemBase"=dword:50008

2010-09-09 08:57:00 3010

原创 WINCE6.0+S3C2443自动重启的实现

<br />    为了实现WINCE标准UI和我们产品的SHELL的切换,系统需要实现自动重启的功能,这里的自动重启并不是按下reset键之后的从nboot开始执行的复位重启,而只是跳转到NK的开始地址处执行,和bootloader没有关系。<br />在src/inc/oal_ioctl_tab.h中,我们看到自动重启的函数OALIoCtlHalReboot(),我们来看看这个函数体<br /><br />这个函数是利用看门狗来实现的复位重启方式,是从nboot开始执行的,我们来实现直接从NK的起始地址

2010-09-05 13:04:00 725

原创 WINCE6.0+2443系统大概过10分钟进入sleep状态

<br />最近在开发基于WINCE6.0+2443的GPS产品的时候,发现我的机器在电池供电的时候,开机之后,如果没有其他动作,那么大概10分钟左右,我的系统会进入sleep的状态,后来发现我在实现电池驱动的时候把函数BatteryPDDGetStatus()下面部分注释掉了<br /> memcpy(pstatus, &gpStatus->sps, sizeof(*pstatus));<br />    *pfBatteriesChangedSinceLastCall = gpStatus->fChan

2010-08-28 16:15:00 802

转载 协处理器

<br />一种芯片,用于减轻系统微处理器的特定处理任务。例如,数学协处理器可以控制数字处理;图形协处理器可以处理视频绘制。例如,intel pentium 微处理器就包括内置的数学协处理器。 <br />  协处理器可以附属于ARM处理器。一个协处理器通过扩展指令集或提供配置寄存器来扩展内核处理功能。一个或多个协处理器可以通过协处理器接口与ARM内核相连。 <br />  协处理器可以通过一组专门的、提供load-store类型接口的ARM指令来访问。例如协处理器15(CP15),ARM处理器使用协处理器

2010-08-23 08:29:00 843

原创 WINCE6.0+S3C2443的RTC初始化及存在的问题

<br /><br />1.系统启动过程中RTC初始化<br />在WINCE6.0中,我们知道是通过OALIoCtlHalInitRTC()函数来设置RTC的时间的,但是如何调用到这个函数的呢?我们就从NKStartup()函数开始,但系统从nboot开始是如何执行到NKStartup()函数的呢?我后面会抽空写关于eboot和nk的启动过程中有涉及。<br /><br /><br />在SystemStartupFunc函数中,通过下面语句来创建一个内核线程RunApps:<br />hTh = Cre

2010-08-21 13:16:00 1158 1

转载 WinCE6.0下OEMIOControl的实现

<br />在WinCE5.0中,应用程序和驱动程序可以通过调用KernelIoControl(..)函数来访问WinCE内核,导致调用 OEMIoControl函数,这样应用程序和驱动程序就可以访问到OAL中的资源了。但在WinCE6.0中,提供了更好的安全性,应用程序能够访问 OEMIoControl中的case受到了限制,默认情况下只有下面的这些case是可以让应用程序访问的: <br />IOCTL_HAL_GET_CACHE_INFO <br />IOCTL_HAL_GET_DEVICE_INFO

2010-08-21 09:06:00 482

原创 S3C2440在睡眠状态下GPIO应该的配置状态

<br />

2010-08-16 12:52:00 1182

原创 WINCE6.0 + S3C2443的启动过程---nboot篇

WINCE6.0 + S3C2443的启动过程---nboot篇我们启动WINCE6.0的方式是:nboot+eboot+NK。那么是如何启动WINCE6.0系统映像的呢?首先是nboot把eboot拷贝到SDRAM中执行的地址处运行,接着eboot把NK.bin拷贝到SDRAM指定的地址处运行。首先,我们需要通过JTAG把我们nboot文件编译生成的stpldr.nb0文件烧录到nandflash的第0个block中。那么系统复位或者上电启动的动作产生之后,是如何从nboot开始执行的呢?我们先看S3C2

2010-08-14 10:06:00 967 1

原创 WINCE6.0的oal.exe、kernel.dll和kitl.dll如何编译生成

<br />在WINCE6.0中,内核(kernel)和OEM代码(OEM code)被分成三部分:oal.exe、kernel.dll和kitl.dll这三部分,其中启动代码(startup code)和OAL层的实现部分不再和内核链接生成NK.exe,取而代之的是启动代码和硬件相关并且独立于内核的OAL层的实现部分编译成oal.exe,而与内核相关并独立于硬件的OAL层代码包含在kernel.dll中。内核无关传输层(KITL)的支持代码从OAL层分离出来编译成kitl.dll。<br /><br />

2010-08-10 12:41:00 1637

转载 wince6移植之创建.pbcxml文件

<br />在整个移植过程中首先要做的第一步就是创建.pbcxml文件。     这个文件的功能就与以前版本的.cec文件一样,只是在wince6下ms将其换了一种格式。如果你很牛比的话,而且有充足的时间,你完全可以自己创建并完善一个.pbcxml文件。     比较省事一点的做法就是vs2005去打开一个wince5版本的.cec文件,并另存为.pbcxml文件即可。由于目前项目组没有基于wince5进行开发,手头上所有的bsp都是基于wince4.2的。然而经过多次试验证明wince4.2或者更早的版本

2010-08-09 17:11:00 530

转载 wince6.0操作系统的架构

<br />Windows Embedded CE 6.0操作系统被实现为一种分层的架构,分别由内核模式层和用户模式层组成,其中内核模式层由OAL(OEM抽象层)、KITL(独立于内核的传输层)、操作系统内核、内核模式的Coredll库及文件系统模块、GWES模块、设备管理器模块和内核模式驱动/服务模块等组成,而用户模式层分别由用户模式的Coredll库、用户模式驱动/服务以及各种用户应用程序组成,如图1所示。<br /><br />                                     

2010-08-09 09:03:00 2175

原创 Eboot.bib中0x30000000到0x300020000内存的作用

<br /><br /><br /><br />Src/Bootloader/Eboot/boot.bib的memeory部分如下:<br />MEMORY<br />;   Name     Start     Size      Type<br />;   -------  --------  --------  ----<br />    ARGS     80020800  00000800  RESERVED<br />    RAM      80021000  0000B000  RAM   

2010-08-08 11:25:00 1494

原创 nboot通过串口下载并运行eboot.nb0

 1.       在stepldr/main.c下面的mian函数调用Uart_Init()对串口的初始化我们使用UART1来作为debug口。2.       实现nboot通过串口下载并运行eboot.nb0的函数体我们接下来分析其实现2.1   Uart_Getch()函数这个函数主要是在nboot启动的时候,判断是否有来之我们对键盘的操作,假如我们在等待的时间之内按下空格键,那么这时候nboot就处于等待用户通过DNW.exe下载并运行eboot.nb0的状态,假如我们在等待的时间内没有按键空格键

2010-07-31 11:45:00 666

原创 Nboot中nand flash控制器参数TACLS、TWRPH0和TWRPH1的确定(基于K9F1208U0B)

<br />  <br />注:K9F1208U0B的供电电压时3.3V,本系统的FCLK=533Mhz,HCLK=533/4=133Mhz<br /> <br />nand flash控制器的初始化<br />在stepldr的mian函数中调用NF_Init()来初始化nand flash控制器,下面介绍这个函数<br /> <br /> <br />其中<br />// HCLK=100Mhz<br />#define TACLS             7     <br />#define TWR

2010-07-27 23:12:00 748

原创 WINCE屏蔽NK的串口输出信息

<br />在WINCE的NK中,如果要屏蔽串口的输出,需要在“property page -> build options”下面对“enble ship build”打钩,如下图所示<br /><br /><br />打钩之后,选择“clean sysgen”编译出来的NK就不会有串口信息输出了,当然了,bootloader的串口信息还会有输出。

2010-07-27 20:53:00 594

原创 Nandflash K9F1208U0B学习

注:Row也就是page1.       引脚描述I/O0 ~ I/O7-----data inputs/outputs通过这8个I/O引脚,可以输入命令,地址和数据,也可以在读操作时输出数据。CLE-----command latch enableCLE输入控制了发送到命令寄存器的命令。CLE为高电平时激活,在nWE的上升沿,命令通过I/O端口被锁存到命令寄存器中,结合datasheet的相关时序图来理解更为深刻。ALE-----address latch enableALE输入控制了地址发送到内部地址寄

2010-07-26 00:11:00 1931

原创 基于S3C2440A+SDRAM(K4M51163)

<br /><br />本系统是采用两片K4M51163-BG75的SDRAM,大小为2*64M。<br />1. SDRAM的工作原理<br />1.1 SDRAM概述<br />SDRAM:Synchronous Dynamic Random Access Memory,同步动态随机存储器。同步是指其时钟频率(CLK)与CPU的AHB总线时钟频率(HCLK)相同,并且内部的命令的发送于数据的传输都以它为基准;动态是指存储阵列需要不断的刷新来保证数据不丢失;随机是指数据不是线性依次存储,而是自由指定地址进

2010-07-22 22:54:00 1436

转载 如何导出wince6.0的SDK

<br />最近在做WINCE6.0系统的编译和SDK的导出。但是我导出的SDK大小只有5M多,这个与以往WINCE5.0中导出的SDK要小了很多,之前我在WINCE5.0中导出的SDK大约有25M左右。查找了一通最后发现原来6的系统较5的系统有了一些改变,至少在MFC支持上有了变化。在6的系统中,导出对应OS design的SDK时,不会包含对MFC DLL的,要手工将MFC的DLL加入OS iamge中,在导出SDK时要手工将支持MFC的头文件和lib库包含到SDK中。<br />那么如何做了?<br

2010-07-22 22:50:00 1015

原创 WINCE6.0+S3C2443睡眠和唤醒(sleep and wake up)的实现

<br />1. 系统进入睡眠状态的过程<br />1.1 硬件相关电路<br />我们的产品使用GPF0/EINT0作为系统进入睡眠和从睡眠中唤醒的唤醒源,如下图所示:<br /> <br />EINT0作为唤醒源,而EINT0在S3C2443的datasheet中相关描述如下:<br /> <br />那么我们就需要知道触发这个中断(EINT0)的电平变化情况,是低电平触发?或是高电平触发?或是下降沿触发?或是上升沿触发?或是上升沿和下降沿触发?上面的设计是:在未按下按键(S5)时,EINT0是低电平,

2010-07-21 20:49:00 1753 2

原创 activesync对应的COM口

<br />因工作需要,在调整COM口的分配时,发现COM5已被占用,却不知道是被哪个驱动占用了,前两天才发现时被activesync占用了, activesync在platform.reg下的部分信息如下:<br /> <br />[HKEY_LOCAL_MACHINE/Drivers/USB/FunctionDrivers/Serial_Class]<br />          "FriendlyName"=LOC_USBFN_SERIAL_NAME<br />          "idVendor"

2010-07-19 22:29:00 941

原创 对CPU和SDRAM降频才能在板子上跑起来

<br />最近调试一个项目,遇到一个有些困惑的问题,麻烦大家给点意见,谢谢!<br /> <br />硬件环境:<br />S3C2443+128M SDRAM+128M NANDFLASH<br /> <br />软件环境:<br />WINCE6.0<br /> <br />背景:<br />因为我们之前的板子(第二版)感觉不是很稳定,判断是打板厂家的问题,后来就重新选了一家厂家重新打板(第三版),我不是很清楚这两版之间硬件设计及布局是否有变化(据硬件工程师说没有什么变化,只是微调)<br /> <b

2010-07-18 23:05:00 891 2

空空如也

空空如也

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

TA关注的人

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