自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 打工是最愚蠢的投资——李嘉诚在深圳大梅沙演讲

打工是最愚蠢的投资——李嘉诚在深圳大梅沙演讲         很多人会认为打工并不是投资,强烈反对这种观念。其实打工才是最大最愚蠢的投资。 人生最宝贵的是什么?除了我们的青春还有什么更宝贵?很多人都抱

2013-05-27 14:59:55 1740

转载 STM32移植UCGUI3.90笔记

在MDK环境下,终于将3.90版本的UCGUI移植到STM32下了,在网上看到的都是例程代码,很少看到有关于在STM32下移植UCGUI的教程方法,为了方便大家,特写此移植方法,大家可以借鉴(有错误之处,望大家指点出来共同讨论!)移植步骤: 第一步:首先,得把你的TFT底层驱动写好,即在裸机下,可以正常显示。 第二步:加入UCGUI程序包。 第三步:配置LCDConf.h GU

2013-05-15 10:14:22 1355 1

转载 uC/GUI 在Cortex-M3 内核上的移植

屈环宇--嘉兴学院一、简介是一种专为嵌入式系统设计的图形界面支持系统。它的代码全部由标准C编写,模块化的设计,具有很强的可移植性。uC/GUI 适应大多数的黑白或彩色LCD 的应用,还提供一个可扩展的2D 图形库及占用极少RAM 的窗口管理体系。二、要求目标系统(硬件)你的目标系统必须具备如下几点:[1].CPU(8/16/32/64 位)[2].必要的RA

2013-05-14 14:58:31 3066

转载 在CF卡上实现TrueFFS

CF卡是一种基于Flash技术的容量大、携带方便的存储介质,已在嵌入式系统等领域得到广泛的应用;但是,有限的擦写次数极大地限制了CF卡的使用寿命。TrueFFS通过一系列算法,能够延长CF卡的使用寿命,提高CF卡的使用效率。文章介绍了TrueFFS的原理,在CF卡上实现TrueFFS的方法,并对TrueFFS的性能进行了分析。    关键词:TrueFFS损耗均衡 闪速存储器 CF卡闪速存

2013-05-14 14:20:12 982

转载 TrueFFS原理

TrueFFS原理引用TrueFFS原理及其在CF卡上的实现的部分内容“1、Wear-Leveling闪速存储器不能无限次重复使用。它的每个扇区的擦除次数虽然很大,但却有限;因此,随着使用次数的加长,它最终会变成只读状态,所以应该尽最大可能延长它的寿命。行之有效的方法就是平衡使用所有的存储单元,而不让某一单元过度使用。这种技术被称之为损耗均衡。TrueFFS使用一种基于一张动态维护表的

2013-05-14 14:19:35 2034

转载 Linux环境变量的设置和查看方法

1. 显示环境变量HOME  $ echo $HOME  /home/redbooks  2. 设置一个新的环境变量hello  $ export HELLO="Hello!"  $ echo $HELLO  Hello!  3. 使用env命令显示所有的环境变量  $ env  HOSTNAME=redbooks.safe.

2013-05-14 14:02:28 586

转载 介绍最全的LVS负载均衡技术

LVS集群采用IP负载均衡技术和基于内容请求分发技术。调度器具有很好的吞吐率,将请求均衡地转移到不同的服务器上执行,且调度器自动屏蔽掉服务器的故障,从而将一组服务器构成一个高性能的、高可用的虚拟服务器。整个服务器集群的结构对客户是透明的,而且无需修改客户端和服务器端的程序。为此,在设计时需要考虑系统的透明性、可伸缩性、高可用性和易管理性。LVS的三种模式:VS/NAT通过NAT实现虚拟服务

2013-05-14 11:08:52 833 1

转载 shell环境变量以及set,env,export的区别

一.shell环境变量的分类以及set env export的区别: set:显示(设置)shell变量 包括的私有变量以及用户变量,不同类的shell有不同的私有变量 bash,ksh,csh每中shell私有变量都不一样env:显示(设置)用户变量变量export:显示(设置)当前导出成用户变量的shell变量。 举个例子来讲:

2013-05-14 11:02:30 660

转载 大型网站的负载均衡器、db proxy和db

大型网站的负载均衡器、db proxy和db本文主要分析网站后台架构中的负载均衡器,企业常用的硬件负载均衡器软件负载均衡器、数据库代理服务器和数据库。1.1 负载均衡在大型网站部署中,负载均衡至少有三层部署。第一层为web server或者缓存代理之上的负载均衡,第二层为数据库之上的负载均衡,第三层为存储设备之上的负载均衡。在第一层部署中,最常使用的是硬件负载均衡器

2013-05-14 03:05:15 661

转载 multibin

为提高boot引导速度,,需支持multibin。方法如下:1.D:\WINCE600\PLATFORM\SMDKV210\SMDKV210.bat@REM For Multiple XIP (using demand paging on BINFS)set IMGMULTIXIP=12.调整config.bib镜像大小由于系统生成的XIPKERNEL约为3M。

2013-05-13 17:46:57 896

转载 Ubuntu中用gedit保存文件失败的解决办法

1、Ubuntu中用gedit编辑文件后不能保存这是因为没有相关文件的写权限,更改文件权限使用chmod命令,参见P2892、Ubuntu中用gedit保存文件时,提示要生成备份文件,但又提示备份文件无法写入用ls -l命令查看文件的权限发现,文件已经设置成可写了,问题出在备份文件上。简单的解决办法就是让gedit保存时不生成备份文件,步骤如下:打开gedit->edit->p

2013-05-12 09:50:01 4875

转载 VMWare网络设置的3中方式

一 VMware网络设置的三种方式1 Host-only连接方式  让虚机具有与宿主机不同的各自独立IP地址,但与宿主机位于不同网段,同时为宿主主机新增一个IP地址,且保证该IP地址与各虚机IP地址位于同一网段。最终结果是新建了一个由所有虚机与宿主主机所构成的局域网,但该局域网与宿主主机本身所处的现有局域网是相互独立的,如果不做额外路由设置,这两个局域网之间不会连通,因此新建的局域网可

2013-05-11 19:11:28 694

转载 ARM汇编ADR,LDR等伪指令

arm中LDR伪指令与LDR加载指令LDR伪指令的形式是“LDR Rn,=expr”。下面举一个例子来说明它的用法。 COUNT EQU 0x40003100 …… LDR R1,=COUNT MOV R0,#0 STR R0,[R1] COUNT是我们定义的一个变量,地址为0x40003100.这中定义方法在汇编语言中是很常见的,如果使用过单片机的话,应该都熟悉这种用法。 LDR R1,=C

2013-05-10 15:49:11 966

转载 ARM中的ldr指令与adr、ldr伪指令之间的区别

ARM汇编语言中有ldr指令和ldr、adr伪指令,他们都可以将标号表达式作为操作数。区别如下:ldr指令和adr、ldr伪指令的区别:ldr指令属于load-store指令,用于读取标号地址中的值;adr、ldr伪指令用于获取标号的地址。adr和ldr伪指令的区别:adr是获取相对PC的地址,与程序当前运行的位置相关,是小范围的地址读取伪指令;ldr是获取绝对地址,绝对地址是在l

2013-05-10 15:43:13 1326

转载 ARM汇编中的ldr和adr的区别及其在uboot中相关源码的分析

ARM汇编有ldr指令以及ldr、adr伪指令,它们都可以将标号表达式作为操作数,下面通过分析一段代码以及对应的反汇编结果来说明它们的区别。ldr r0, _start  adr r0, _start  ldr r0, =_start  _start:  b _start  编译的时候设置 RO 为 0x30000000,下面是反汇编的结果:0x00000000:

2013-05-10 15:33:57 687

转载 讲讲volatile的作用

一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。下面是volatile变量的几个例子:     1). 并行设备的硬件寄存器(如:状态寄存器)     2). 一个中断服务子程序中会访问到的非自动变量(Non-automatic

2013-05-10 15:14:23 610

转载 ARM指令 LDR 和 ADR的一些区别

LDR 是ARM中的指令,也是伪指令。当用 LDR r, =imd  // r 为寄存器, imd为立即数LDR 是一条伪指令。编译器会根据 立即数的大小,决定用 ldr 指令或者是mov或mvn指令。当imd能用mov或者mvn操作时,就将它翻译成一条mov或mvn指令。当imd大于mov或mvn能够操作的数时,编译器会将imd存在一个内存单元中,然后再用一条ldr指令加

2013-05-10 15:07:37 918

转载 WINCE6开机进度条

大致思路,在NBoot或EBoot加开机进度条,由于WINCE启动主要时间都花在读取NK,因此每读取一定的页,就在屏上画一条固定高度的线,并记录画线的位置,下次接着画,直到读取完NK,这样就产生的进度条的效果。参考Mini2440 Nboot。先定义进度条颜色、位置及长宽,关键代码如下: 1 #define PROGRESS_BAR_R 0x00 2 #define P

2013-05-06 10:09:03 1302

转载 platform Builder导出SDK

一、编译好wince系统二、选择[platform]->[configur SDK],第一次进入的话,会要求输入一些SDK名字等信息。完成后再一次进入才是配置SDK的属性。三、有几项需要注意的: CPU选项:若是输出仿真器的SDK,这项不要选入。 transports选项:指调试通讯方式。根据自己的要求选择,这里就选了ActiveSync。 Emulation选项,Emualt

2013-05-06 10:08:19 936

转载 Wince6 Eboot中加入开机画面

昨天研究了一下wince开机时加入个性化的画面,折腾了一上午,不是花屏就是CE起不来……终于搞定,分享一下经验吧。。。Wince加入开机画面方法一般有以下两种:1、 在文件中下定义一个常量大数组,几百K,如const USHORT ScreenBitmap[],在显示图片的地方利用for循坏把数组都拷贝到相应的buffer中。2、 把图片数据存放到Flash的某位置,启动时

2013-05-06 10:07:33 949

转载 wince6.0驱动开发

1、基础知识:1)系统调用是操作系统内核和应用程序之间的接口,设备驱动程序是操作系统内核和机器硬件之间的接口。设备驱动程序为应用程序屏蔽了硬件细节,在应用程序看来硬件只是一个设备文件,应用程序可以像操作普通文件一样对硬件设备进行操作。设备驱动是内核的一部分。2)驱动程序完成以下功能:——对设备初始化和释放;——把数据从内核传送到硬件和从硬件读取数据;——

2013-05-06 10:04:57 1670

转载 S3C2440 WINCE6将USB DEVICE改成USB HOST,实现两个USB HOST

S3C2440一般默认的是一个USB DEVICE,一个USB HOST,即一个主口,一个从口,先来看看USB Device与USB Host相关知识。 USB Host:最底层就是USB Host控制器了,上层是USB Host Controller Driver,该驱动负责和硬件通讯来传输数据,在WinCE中支持UHCI,OHCI和EHCI。Host Core Driver & H

2013-05-06 10:01:20 1234

转载 wince 常见问题 1

1 在mediaplayer全屏播放的时候,我可以用键盘上的某一个键调节声音大小,现在我想在屏幕上显示调节的结果就跟我们看电视一样能出来一些标记。当声音变大在屏幕上就增多, 当声音变小的时候就减少  得到播放窗口的DC,然后在上面显示一个不同颜色的矩形或者其它形状。  2 在ce自制平台中如何添加自己的驱动?cec文件和reg,bib文件有何区别?看混了

2013-05-06 09:58:26 1542

转载 WinCE6.0的EBOOT概要

为一个新的硬件设备定制WinCE6.0操作系统,一般需要完成以下几个主要步骤:1.       针对特定的硬件设备创建板级支持包(Board Support Package缩写为BSP),BSP必须包括BOOTLOADER、OEM适配层(OEM Adaptation Layer缩写为OAL)和一些必要的驱动。2.       利用创建的BSP,定制一个系统设计(OS Desig

2013-05-06 09:42:46 844

转载 linux定时器

(1) struct itimerval    struct itimerval { struct timeval it_interval; /* timer interval */ struct timeval it_value; /* current value */ }; itimerval: i --> interval

2013-05-03 15:44:16 804

转载 Linux两种定时器

Linux下的定时器有两种,以下分别介绍:   1、alarm   如果不要求很精确的话,用alarm()和signal()就够了   unsigned int alarm(unsigned int seconds)   函数说明: alarm()用来设置信号SIGALRM在经过参数seconds指定的秒数后传送给目前的进程。如果参数seconds为0,则之前设置的

2013-05-03 15:42:38 806

转载 Linux 定时器设置

函数alarm设置的定时器只能精确到秒,而以下函数理论上可以精确到微妙:#include #include int getitimer(int which, struct itimerval*value);int setitimer(int which, const structitimerval *value, struct itimerval *ovalue);函数seti

2013-05-03 15:34:13 687

转载 DOC学习之TrueFFS

TrueFFS原理引用TrueFFS原理及其在CF卡上的实现的部分内容“1、Wear-Leveling闪速存储器不能无限次重复使用。它的每个扇区的擦除次数虽然很大,但却有限;因此,随着使用次数的加长,它最终会变成只读状态,所以应该尽最大可能延长它的寿命。行之有效的方法就是平衡使用所有的存储单元,而不让某一单元过度使用。这种技术被称之为损耗均衡。TrueFFS使用一种基于一张动态维护表的

2013-05-03 09:17:03 898

转载 VxWorks嵌入式操作系统的TrueFFS文件系统驱动开发

嵌入式系统对执行速度和系统可靠性的要求,决定了嵌入式系统需要一种安全、快速的存储设备,这种设备备同时还需要体积小、容量大、掉电数据不丢失等特点。而Flash存储器恰恰能够满足上述要求。这也使得Flash存储器成为嵌入式系统中的主要存储设备。    现在,Flash技术已经成熟,并已成为工业标准 但问题是如何能够更加有效的管理Flash设备.提高Flash的使用效率.加快操作速度和管理Flash

2013-05-03 09:14:50 2455

转载 嵌入式经典面试题

C语言测试是招聘嵌入式系统程序员过程中必须而且有效的方法。这些年,我既参加也组织了许多这种测试,在这过程中我意识到这些测试能为面试者和被面试者提供许多有用信息,此外,撇开面试的压力不谈,这种测试也是相当有趣的。    从被面试者的角度来讲,你能了解许多关于出题者或监考者的情况。这个测试只是出题者为显示其对ANSI标准细节的知识而不是技术技巧而设计吗?这是个愚蠢 的问题吗?如要你答出某个字符的A

2013-05-02 16:21:09 870

转载 LDR 、ADR介绍

请教: (1)LDR R1,= 0x12345678 ;加载 32 位立即数          LDR R1,0x12345678 有什么不相同啊? 一般在什么情况下用 LDR R1,= 0x12345678 ? 在什么情况下用 LDR R1,0x12345678 ? (2)LDR R0,=LED_TAB ;加载标号地址          LDR R0,LED_TA

2013-05-02 16:06:12 1115

转载 ARM汇编ADR,LDR等伪指令

arm中LDR伪指令与LDR加载指令LDR伪指令的形式是“LDR Rn,=expr”。下面举一个例子来说明它的用法。 COUNT EQU 0x40003100 …… LDR R1,=COUNT MOV R0,#0 STR R0,[R1] COUNT是我们定义的一个变量,地址为0x40003100.这中定义方法在汇编语言中是很常见的,如果使用过单片机的话,应该都熟悉这种用法。 LDR R1,=C

2013-05-02 15:35:17 1095

转载 ldr和adr在使用标号表达式作为操作数的区别

ARM汇编有ldr指令以及ldr、adr伪指令,他门都可以将标号表达式作为操作数,下面通过分析一段代码以及对应的反汇编结果来说明它们的区别。         ldr     r0, _start        adr     r0, _start        ldr     r0, =_start_start:        b  _start       编

2013-05-02 15:17:19 734

转载 ldr

首先要判断我们用的是ldr arm指令还是伪指令。 当我们用的是arm指令时,它的作用不是向寄存器里加载立即数,而是将某个地址里的内容加载到寄存器。而伪指令ldr的作用就是向寄存器里加载立即数。    (1) ldr伪指令    ldr伪指令的格式是 ldr Rn, =expr    其中,expr是要加载到Rn中的内容,一般可以是立即数或者label。    如果expr可以用8

2013-05-02 15:16:03 787

转载 adr和ldr的区别

其实这两个都是伪指令:adr是小范围的地址读取伪指令,ldr是大范围的读取地址伪指令。可实际上adr是将基于PC相对偏移的地址值或基于寄存器相对地址值读取的为指令,而ldr用于加载32为立即数或一个地址到指定的寄存器中。到这儿就会看到其中的区别了。如果在程序中想加载某个函数或者某个在联接时候指定的地址时请使用adr,例如在lds中需要重新定位的地址。当加载32为的立即数或外部地址时请用ldr。

2013-05-02 15:04:32 823

转载 ARM uboot中的.lds

对于.lds文件,它定义了整个程序编译之后的连接过程,决定了一个可执行程序的各个段的存储位置。虽然现在我还没怎么用它,但感觉还是挺重要的,有必要了解一下。先看一下GNU官方网站上对.lds文件形式的完整描述:SECTIONS {...secname start BLOCK(align) (NOLOAD) : AT ( ldadr )  { contents

2013-05-02 14:53:53 730

转载 arm B和BL指令浅析

B或BL指令引起处理器转移到“子程序名”处开始执行。两者的不同之处在于BL指令在转移到子程序执行之前,将其下一条指令的地址拷贝到R14(LR,链接寄存器)。由于BL指令保存了下条指令的地址,因此使用指令“MOV PC ,LR”即可实现子程序的返回。而B指令则无法实现子程序的返回,只能实现单纯的跳转。用户在编程的时候,可根据具体应用选用合适的子程序调用语句。   AREA Init,

2013-05-02 13:22:26 877

ucGUI学习笔记 -- 仿真器

ucGUI学习笔记 -- 仿真器 原创

2012-06-14

空空如也

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

TA关注的人

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