Archive for 十二月, 2009

24
十二

前几天又去注册了一个域名,在雅虎注册的,2刀。准备过2个月转出去~
这个比较短,五个字母 LaEon.com 。已经用joomla!建了一个测试站点,大家去看看怎么样~哈哈~

http://laeon.com

 

Joomla!是一套在国外相当知名的内容管理系统

  (Content Management System, CMS),它属于Portal(企业入口网站)类型,顾名思义,就是比较适合作为商业类型的网站程序。一般人对这类型的内容管理系统可能会有以下的别名来称呼:

  ■ 架站程序(或软件)
  ■ 快速架站程序(或软件)
  ■ 整站程序

  Joomla!是使用PHP语言加上MySQL数据库所开发的软件系统,可以在Linux、 Windows、MacOSX等各种不同的平台上执行。目前是由Open Source Matters (www.opensourcematters.org)这个开放源码组织进行开发与支持,这个组织的成员来自全世界各地,小组成员约有150人,包含了开发者、设计者、系统管理者、文件撰写者,以及超过2万名的参与会员。目前,Joomla!最新的版本是1.6。

  Joomla!的优秀特点
  当然每个知名的开源码程序都会有其吸引人的优点,反之当然会有缺点。以下整理出在网络上来自使用者对Joomla!程序的喜好重点:

  
  先进的网站技术的运用:

  Joomla!应用了非常多的网站进步的新技术,像是「网站快取技术」可以加速网站的反应与效能。「RSS新闻联播与新闻读取」是最近十分热门的网站新闻读取的技术,在部落格程序中(Blog)中十分常见。「SEO搜寻引擎最佳化」这个是目前所有网站必备的技术之一,这个功能主要是让搜寻引擎更容易的浏览您网站上的数据,让更多人在搜寻引擎上找到您的网站,相当于为自己的网站带来更多的人潮和商机。

  庞大的附加套件及商机:
  来自全球上千种不同网站应用的附加套件及美工设计布景,都是以这套系统为基础而开发。使用者可以很方便的安装上这些附加套件,如同在桌上计算机中的Windows操作系统中,安装新的软件一般。开发社群总是发挥无止尽的创意,不断的开发符合使用社群需求的产品。Joomla!的商用套件市场目前也有许多价廉物美的软件及美工设计布景主题。

  简单且丰富的操作接口:
  Joomla!的操作接口除了美观之外,也花了很多心力在设计这些接口的简易操作性。虽然初次使用者,需要花一点时间学习一下操作的方式,才能运用自如。但相信学会使用之后,这是很值得的。另外可搭配的多种所视即所得编辑程序,更可让对网页设计语言不熟悉的管理者,很简易的就可以管理和编辑网站上的文章。

  高度的客制和开发的弹性:
  对于网站程序开发者和美工设计者,Joomla!保留了最大的客制化弹性和整合能力。全世界的网站相关开发人员,都十分关注与推荐这套系统。是由于这套系统不断在强大能力与客制弹性之间找寻平衡点,受到许多知名厂商的使用。

  Joomla!的历史

  Mambo软件最早在2001年五月份由澳洲Miro公司所开发,由于Miro公司有商业化的考虑,原先发布并采用GNU/GPL授权的软件版本,在版本3.0.5之后就不再支持。
  后来由Robert Castley(现已离开核心小组)接手后续的开发原始码版本,并招募新的志愿者。Mambo发展至4.5.1版本之后,整合了许多新的网站技术,以及新的操作接口,在2004年获得Linux User & Developer Award 2004的「Best Linux or Open Source Software」奖项,自此大放异彩从此,在开源码的内容管理系统中占有一席之地,受到使用社群的高度重视。
  Mambo 2005年8月后由于原先的所有人Miro公司,希望能深入参与开发工作及决定未来的发展方向,引起和核心开发小组之间的意见不合,前开发小组领导人 Eddie Andrew带领几乎八成的原小组成员,成立新的开源码计划Joomla!。而原有的Mambo计划,则由Miro公司重新招募成员与自行雇用开发人员,继续发展下去。目前Joomla!发布的1.0.x版本与Mambo4.5.2版本功能相差无几。

Category : 生活随记 | Blog
17
十二

ICMP协议
它是TCP/IP协议集中的一个子协议,属于网络层协议,主要用于在主机与路由器之间传递控制信息,包括报告错误、交换受限控制和状态信息等。当遇到IP数据无法访问目标、IP路由器无法按当前的传输速率转发数据包等情况时,会自动发送ICMP消息。我们可以通过Ping命令发送ICMP回应请求消息并记录收到ICMP回应回复消息。通过这些消息来对网络或主机的故障提供参考依据
ICMP是“Internet Control Message Protocol”(Internet控制消息协议)的缩写。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。
我们在网络中经常会使用到ICMP协议,只不过我们觉察不到而已。比如我们经常使用的用于检查网络通不通的Ping命令,这个“Ping”的过程实际上就是ICMP协议工作的过程。还有其他的网络命令如跟踪路由的Tracert命令也是基于ICMP协议的。

ICMP的重要性
ICMP协议对于网络安全具有极其重要的意义。ICMP协议本身的特点决定了它非常容易被用于攻击网络上的路由器和主机。例如,在1999年8月海信集团“悬赏”50万元人民币测试防火墙的过程中,其防火墙遭受到的ICMP攻击达334050次之多,占整个攻击总数的90%以上!可见,ICMP的重要性绝不可以忽视!
比如,可以利用操作系统规定的ICMP数据包最大尺寸不超过64KB这一规定,向主机发起“Ping of Death”(死亡之Ping)攻击。“Ping of Death” 攻击的原理是:如果ICMP数据包的尺寸超过64KB上限时,主机就会出现内存分配错误,导致TCP/IP堆栈崩溃,致使主机死机。
此外,向目标主机长时间、连续、大量地发送ICMP数据包,也会最终使系统瘫痪。大量的ICMP数据包会形成“ICMP风暴”,使得目标主机耗费大量的CPU资源处理,疲于奔命。

ICMP的主要功能

从技术角度来说,ICMP就是一个“错误侦测与回报机制”,其目的就是让我们能够检测网路的连线状况﹐也能确保连线的准确性﹐其功能主要有:

· 侦测远端主机是否存在。
· 建立及维护路由资料。
· 重导资料传送路径。
· 资料流量控制。

ICMP的消息类型

我们需要认识到,ICMP协议在某些情况下不会发送错误信息。ICMP不会对ICMP信息做出响应。如果ICMP回应其它ICMP消息,这些消息的数量会爆炸性增长而演变为一场ICMP消息风暴。为了防止出现广播风暴,ICMP消息也不会回应一个广播或者多播地址。
最有用的ICMP数据包类型“目标不可达”(类型三)的消息。错误消息一般由路由器生成,并且发送给数据包的来源。大多数错误信息还将发送给与发送的数据包有关的应用程序。在这种情况下,TCP协议将广泛使用ICMP协议。

在IPv4协议中最常用的ICMP消息类型有以下几种:
•回显应答(类型0)和回显请求(类型8):这是Ping程序发送的信息。
•目标不可达(类型3)
•源抑制(类型4):这是一种用于通知发送者路由器或者主机出现阻塞现象的ICMP消息,发送者需要降低发送速度。
•重定向(类型5):这个消息用来向可以访问两台路由器的主机说“请使用另一台路由器”。我们在此系列讲座中未来的路由问题中再详细讨论这个问题。
•路由器信息应答(类型9)和路由器信息请求(类型10)
•超时(类型11):这个消息有两种用途。第一,当超过IP生存期时向发送系统发出错误信息。第二,如果分段的IP数据报没有在某种时限内重新组合,这个消息将通知发送系统。

当然,上述各种类型的消息中都包含子类型代码。类型三消息“目标不可达”本身有15个子类型代码。我们就不提供每一项的细节了。但是,ICMP协议中有一项非常重要的应用要依靠类型三的消息。

Category : TCP/IP | Blog
8
十二

什么是ARP RARP

ARP,全称Address Resolution Protocol,中文名为地址解析协议,它工作在数据链路层,在本层和硬件接口联系,同时对上层提供服务。
IP数据包常通过以太网发送,以太网设备并不识别32位IP地址,它们是以48位以太网地址传输以太网数据包。因此,必须把IP目的地址转换成以太网目的地址。在以太网中,一个主机要和另一个主机进行直接通信,必须要知道目标主机的MAC地址。但这个目标MAC地址是如何获得的呢?它就是通过地址解析协议获得的。ARP协议用于将网络中的IP地址解析为的硬件地址(MAC地址),以保证通信的顺利进行。

RARP(Reverse Address Resolution Protocol):反向地址转换协议
反向地址转换协议(RARP)允许局域网的物理机器从网关服务器的 ARP 表或者缓存上请求其 IP 地址。网络管理员在局域网网关路由器里创建一个表以映射物理地址(MAC)和与其对应的 IP 地址。当设置一台新的机器时,其 RARP 客户机程序需要向路由器上的 RARP 服务器请求相应的 IP 地址。假设在路由表中已经设置了一个记录,RARP 服务器将会返回 IP 地址给机器,此机器就会存储起来以便日后使用。

ARP是在仅知道主机的IP地址时确定其物理地址的一种协议。因IPv4和以太网的广泛应用,其主要用作将IP地址翻译为以太网的MAC地址,但其也能在ATM和FDDIIP网络中使用。从IP地址到物理地址的映射有两种方式:表格方式和非表格方式。
ARP具体说来就是将网络层(IP层,也就是相当于OSI的第三层)地址解析为数据连接层(MAC层,也就是相当于OSI的第二层)的MAC地址。
假设:
计算机A的IP为192.168.1.1,MAC地址为00-11-22-33-44-01;
计算机B的IP为192.168.1.2,MAC地址为00-11-22-33-44-02;

ARP工作原理
在TCP/IP协议中,A给B发送IP包,在包头中需要填写B的IP为目标地址,但这个IP包在以太网上传输的时候,还需要进行一次以太包的封装,在这个以太包中,目标地址就是B的MAC地址。
计算机A是如何得知B的MAC地址的呢?解决问题的关键就在于ARP协议。
在A不知道B的MAC地址的情况下,A就广播一个ARP请求包,请求包中填有B的IP(192.168.1.2),以太网中的所有计算机都会接收这个请求,而正常的情况下只有B会给出ARP应答包,包中就填充上了B的MAC地址,并回复给A。
A得到ARP应答后,将B的MAC地址放入本机缓存,便于下次使用。
本机MAC缓存是有生存期的,生存期结束后,将再次重复上面的过程。
ARP协议并不只在发送了ARP请求才接收ARP应答。当计算机接收到ARP应答数据包的时候,就会对本地的ARP缓存进行更新,将应答中的IP和MAC地址存储在ARP缓存中。因此,当局域网中的某台机器B向A发送一个自己伪造的ARP应答,而如果这个应答是B冒充C伪造来的,即IP地址为C的IP,而MAC地址是伪造的,则当A接收到B伪造的ARP应答后,就会更新本地的ARP缓存,这样在A看来C的IP地址没有变,而它的MAC地址已经不是原来那个了。由于局域网的网络流通不是根据IP地址进行,而是按照MAC地址进行传输。所以,那个伪造出来的MAC地址在A上被改变成一个不存在的MAC地址,这样就会造成网络不通,导致A不能Ping通C!这就是一个简单的ARP欺骗。
概括的说:
1. 首先,每台主机都会在自己的ARP缓冲区 (ARP Cache)中建立一个 ARP列表,以表示IP地址和MAC地址的对应关系。
2. 当源主机需要将一个数据包要发送到目的主机时,会首先检查自己 ARP列表中是否存在该 IP地址对应的MAC地址,如果有﹐就直接将数据包发送到这个MAC地址;如果没有,就向本地网段发起一个ARP请求的广播包,查询此目的主机对应的MAC地址。此ARP请求数据包里包括源主机的IP地址、硬件地址、以及目的主机的IP地址。
3. 网络中所有的主机收到这个ARP请求后,会检查数据包中的目的IP是否和自己的IP地址一致。如果不相同就忽略此数据包;如果相同,该主机首先将发送端的MAC地址和IP地址添加到自己的ARP列表中,如果ARP表中已经存在该IP的信息,则将其覆盖,然后给源主机发送一个 ARP响应数据包,告诉对方自己是它需要查找的MAC地址;
4. 源主机收到这个ARP响应数据包后,将得到的目的主机的IP地址和MAC地址添加到自己的ARP列表中,并利用此信息开始数据的传输。如果源主机一直没有收到ARP响应数据包,表示ARP查询失败。
RARP的工作原理
1. 发送主机发送一个本地的RARP广播,在此广播包中,声明自己的MAC地址并且请求任何收到此请求的RARP服务器分配一个IP地址;
2. 本地网段上的RARP服务器收到此请求后,检查其RARP列表,查找该MAC地址对应的IP地址;
3. 如果存在,RARP服务器就给源主机发送一个响应数据包并将此IP地址提供给对方主机使用;
4. 如果不存在,RARP服务器对此不做任何的响应;
5. 源主机收到从RARP服务器的响应信息,就利用得到的IP地址进行通讯;如果一直没有收到RARP服务器的响应信息,表示初始化失败。

ARP和RARP报头结构

ARP和RARP使用相同的报头结构,如图1所示。

硬件类型

协议类型

硬件地址长度

协议长度

操作类型

发送方的硬件地址(0-3字节)

源物理地址(4-5字节)

源IP地址(0-1字节)

源IP地址(2-3字节)

目标硬件地址(0-1字节)

目标硬件地址(2-5字节)

目标IP地址(0-3字节)

(图1 ARP/RARP报头结构)

  • 硬件类型字段指明了发送方想知道的硬件接口类型,以太网的值为1;
  • 协议类型字段指明了发送方提供的高层协议类型,IP为0800(16进制);
  • 硬件地址长度和协议长度指明了硬件地址和高层协议地址的长度,这样ARP报文就可以在任意硬件和任意协议的网络中使用;
  • 操作字段用来表示这个报文的类型,ARP请求为1,ARP响应为2,RARP请求为3,RARP响应为4;
  • 发送方的硬件地址(0-3字节):源主机硬件地址的前3个字节;
  • 发送方的硬件地址(4-5字节):源主机硬件地址的后3个字节;
  • 发送方IP(0-1字节):源主机硬件地址的前2个字节;
  • 发送方IP(2-3字节):源主机硬件地址的后2个字节;
  • 目的硬件地址(0-1字节):目的主机硬件地址的前2个字节;
  • 目的硬件地址(2-5字节):目的主机硬件地址的后4个字节;
  • 目的IP(0-3字节):目的主机的IP地址。
Category : TCP/IP | Blog
6
十二

使用每个项目一个的配置文件uipopt.h来配置uIP。这个文件包含了uIP的所有的编译时选项,并且应该与特定的项目匹配。
uIP类型定义
typedef unsigned char u8_t;
typedef unsigned short u16_t;
typedef unsigned short uip_stats_t;
uIP静态配置选项
只有在UIP_FIXEDADDR设置为1时,这些配置选项才可以用来静态的设置IP地址。一个特定节点的配置选项包括IP地址,子网掩码,默认网关(router),以及以太网地址。子网掩码,默认网关和以太网地址仅仅当uIP运行在以太网上才适用。
所有这些应该被修改以适应你的项目。
#define UIP_FIXEDADDR 1
决定uIP是否使用一个固定的IP地址。
如果uIP使用一个固定的IP地址,应该置位(set)这些uipopt.h中的选项。如果不的话,则应该使用宏uip_sethostaddr(),uip_setdraddr() 和 uip_setnetmask()。
#define UIP_PINGADDRCONF 0
Ping IP地址赋值。
如果置位这个选项,那么uIP使用一个”ping” packets来设置它自己的IP地址。如果是这样的话,uIP启动时的IP地址是空的,并且第一个到来的”ping”(ICMP echo)packet的目的IP地址将被用于设置主机的IP地址。??
注意这只有在UIP_FIXEDADDR为0的时候才起作用。
#define UIP_FIXEDETHADDR 0
指明uIP ARP模块是否在编译时使用一个固定的以太网MAC地址。
如果这个选项为0,那么宏uip_setethaddr()可以用来在运行时指定以太网MAC地址。
#define UIP_TTL 255
uIP发送的IP packets的IP TTL (time to live)。
#define UIP_REASSEMBLY 0
uIP支持IP packets的分片和重组。这个特征需要另外的RAM用作重组缓冲区,并且重组代码的大小大约是700字节。重组缓冲区的大小与uip_buf一样(由UIP_BUFSIZE配置)。
注意IP packet重组没有经过严格的测试。
#define UIP_REASS_MAXAGE 40
一个IP fragment在被丢弃之前可以在重组缓冲区中存在的最大时间。
#define UIP_UDP 0
是否编译UDP的开关。
#define UIP_ACTIVE_OPEN 1
决定是否支持uIP打开一个连接。
如果运行在uIP上层的应用程序不必打开一个outgoing TCP连接,那么可以关闭这个选项来减小uIP的代码大小。
#define UIP_CONNS 10
同时可以打开的TCP连接的最大数目。
由于TCP连接是静态分配的,减小这个数目将占用更少的RAM。每一个TCP连接需要大约30字节的内存。
#define UIP_LISTENPORTS 10
同时监听的TCP端口的最大数目。
每一个TCP监听端口需要2个字节的内存。
#define UIP_RECEIVE_WINDOW 32768
建议的接收窗口的大小。
如果应用程序处理到来的数据比较慢,那么应该设置的小一点(即,相对与uip_buf缓冲区的大小来说),相反如果应用程序处理数据很快,可以设置的大一点(32768字节)。
#define UIP_URGDATA 1
决定是否支持TCP urgent data notification。
Urgent data (out-of-band data)是一个用的比较少TCP特征,它很少需要。
#define UIP_RTO 3
The initial retransmission timeout counted in timer pulses.
不要改变它。
#define UIP_MAXRTX 8
在中止连接之前,应该重发一个段的最大次数。
不要改变它。
#define UIP_TCP_MSS (UIP_BUFSIZE – UIP_LLH_LEN – 40)
TCP段的最大长度。
它不能大于UIP_BUFSIZE – UIP_LLH_LEN – 40.
#define UIP_TIME_WAIT_TIMEOUT 120
一个连接应该在TIME_WAIT状态等待多长。
不要改变它。
#define UIP_ARPTAB_SIZE 8
ARP表的大小。
如果本地网络中有许多到这个uIP节点的连接,那么这个选项应该设置为一个比较大的值。
#define UIP_ARP_MAXAGE 120

#define UIP_BUFSIZE 1500
uIP packet缓冲区不能小于60字节,但也不必大于1500字节。
#define UIP_STATISTICS 1
决定是否支持统计数字。
统计数字对调试很有帮助,并展示给用户。
#define UIP_LOGGING 0
Determines if logging of certain events should be compiled in.
它对调试非常有用。如果打开这个选项,必须根据特定的体系结构来实现函数uip_log()。
void uip_log(char *msg);
输出应该uIP登陆信息。
必须在使用uIP的模块中实现这个函数,并且在生成一个登陆信息时调用这个函数。
#define UIP_LLH_LEN 14
链接层头部长度。
对于SLIP,应该设置成0。
#ifndef BYTE_ORDER
#define BYTE_ORDER LITTLE_ENDIAN
#endif /* BYTE_ORDER */

使用一个应用程序函数来实现一个uIP应用,每当发生了一个TCP/IP事件时uIP就调用这个函数。这个函数的名字必须在编译时使用宏UIP_APPCALL注册到uIP。
通过使用宏UIP_APPSTATE_SIZE指出结构uip_conn的大小,uIP应用可以在这个结构中保存它的状态。必须在uipopt.h中包含定义这些变量的文件(在此例中为httpd.h)。
下面的例子展示它看起来的样子。
void httpd_appcall(void);
#define UIP_APPCALL httpd_appcall
struct httpd_state {
u8_t state;
u16_t count;
char *dataptr;
char *script;
};
#define UIP_APPSTATE_SIZE (sizeof(struct httpd_state))
/* Include the header file for the application program that should be
used. If you don’t use the example web server, you should change
this. */
#include “httpd.h”
#endif /* __UIPOPT_H__ */

from: jupiter

http://blog.china-pub.com/more.asp?name=xijun168&id=25095

Category : TCP/IP | Blog
2
十二

外部数据存储器接口和片内XRAM

C8051F020/1/1/3 MCU 内部有位于外部数据存储器空间的4096 字节片上RAM (XRAM ),还有外部数据存储器接口(EMIF),可用于访问片外存储器和存储器映射的I/O 器件。外部存储器空间可以用外部传送指令(MOVX )和数据指针(DPTR )访问,或者通过使用R0 或R1用间接寻址方式访问。如果 MOVX 指令使用一个 8 位地址操作数(例如  @R1 ),则 16 位地址的高字节由外部存储器接口控制寄存器(EMI0CN,如图 16.1 所示)提供。注意:MOVX指令还用于写 FLASH  存储器。缺省情况下 MOVX  指令访问XRAM。EMIF 可被配置为使用低I/O 端口(P0-P3 )或高I/O 端口(P4-P7 )。

配置外部存储器接口

配置外部存储器接口的过程包括下面4 个步骤:

1. 将EMIF 选到低端口(P3、P2、P1 和P0 )或选到高端口(P7、P6、P5 和P4 )。
2. 选择复用方式或非复用方式。
3. 选择存储器模式(只用片内存储器、不带块选择的分片方式、带块选择的分片方式或只用片外存储器)。
4. 设置与片外存储器或外设接口的时序。
5. 选择所需要的相关端口的输出方式(寄存器PnMDOUT 和P74OUT )。

下面将对上述每个步骤作出详细说明。端口选择、复用方式选择和存储器模式位都位于EMI0CN 寄存器中,如下。

EMI0CN:  外部存储器接口控制

R/W       R/W      R/W      R/W     R/W      R/W      R/W     R/W   PGSEL7   PGSEL6  PGSEL5   PGSEL4  PGSEL3  PGSEL2  PGSEL1   PGSEL0        位7        位6      位5        位4      位3       位2       位1        位0

复位值:00000000   SFR地址: 0xAF
位 7-0: PGSEL[7:0]:XRAM 页选择位

当使用 8 位的 MOVX 命令时,XRAM 页选择位提供 16 位外部数据存储器地址的高字节,实际上是选择一个256 字节的RAM 页。
0×00:0×0000 – 0×00FF
0×01:0×0100 – 0×01FF

0xFE:0xFE00 – 0xFEFF
0xFF:0xFF00 – 0Xffff

端口选择和配置

外部存储器接口可以位于端口3、2、1 和0(C8051F020/1/2/3)或端口7、6、5 和4(只限于C8051F020/2),由PRTSEL 位(EMI0CF.5 )的状态决定。如果选择低端口,则EMIFLE位(XBR2.1 )必须被置‘1’,以使交叉开关跳过P0.7(W/R)、P0.6(R/D)和 P0.5(ALE,如果选择复用方式)。
外部存储器接口只在执行片外 MOVX 指令期间使用相关的端口引脚。一旦 MOVX 指令执行完毕,端口锁存器或交叉开关又重新恢复对端口引脚的控制(端口 3、2、1 和 0)。端口锁存器应被明确地配置为使外部存储器接口引脚处于休眠状态,通常是通过将它们设置为逻辑‘1’来实现这一要求。
在执行MOVX 指令期间,外部存储器接口将禁止所有作为输入的那些引脚的驱动器(例如,读操作期间的Data[7:0])。端口引脚的输出方式(无论引脚被配置为漏极开路或是推挽方式)不受外部存储器接口操作的影响,始终受 PnMDOUT  寄存器的控制。

EMI0CF:  外部存储器接口配置

R/W       R/W     R/W     R/W     R/W      R/W      R/W     R/W

-         -     PRTSEL   EMD2    EMD1     EMD0    EALE1  EALE0

位7       位6    位5      位4     位3       位2      位1       位0    SFR地址: 0xA3复位值:00000011

位 7-6: 未用。读  = 00b,写  =      忽略。
位 5:      PRTSEL :EMIF 端口选择位
0:EMIF 在P0-P3。
1:EMIF 在P4-P7。
位4:       EMD2 :EMIF 复用方式选择位
0:EMIF 工作在地址/数据复用方式。
1:EMIF 工作在非复用方式(分离的地址和数据引脚)。
位 3-2:  EMD1-0 :EMIF 工作模式选择位
这两位控制外部存储器接口的工作模式。
00:只用内部存储器:MOVX 只寻址片内 XRAM 。所有有效地址都指向片内存储器空间。
01:不带块选择的分片方式。寻址低于4K 边界的地址时访问片内存储器,寻址高于4K 边界的地址时访问片外存储器。8 位片外MOVX 操作使用地址高端口锁存器的当前内容作为地址的高字节。注意:为了能访问片外存储器空间,EMI0CN 必须被设置成一个不属于片内地址空间的页地址。

10:带块选择的分片方式。寻址低于4K 边界的地址时访问片内存储器,寻址高于 4K  边界的地址时访问片外存储器。8 位片外 MOVX  操作使用 EMI0CN           的内容作为地址的高字节。
11:只用外部存储器:MOVX 只寻址片外XRAM 。片内XRAM 对 CPU 为不可见。
位 1-0:  EALE1-0 :ALE 脉冲宽度选择位(只在EMD2 =0 时有效)
00:ALE 高和ALE 低脉冲宽度  = 1 个 SYSCLK 周期。
01:ALE 高和ALE 低脉冲宽度  = 2 个 SYSCLK 周期。
10:ALE 高和ALE 低脉冲宽度  = 3 个 SYSCLK 周期。
11:ALE 高和ALE 低脉冲宽度  = 4 个 SYSCLK 周期。

复用方式配置163emif

带块选择的8 位 MOVX:EMI0CF[4:2] =   ‘010’,带块选择的复用方式8 位 MOVX 时序

8read

8write

EMIF在P4-P7的程序配置:

XBR0    = 0x07;                     // Enable SMBus, SPI0, and UART0
XBR1    = 0x00;
XBR2    = 0x44;                     // Enable crossbar and weak pull-ups
EMI0CF=0x2d;                                          //外部存储器接口配置
EMI0TC  = 0xff;                                //外部存储器时序控制
P74OUT  = 0xFF;

Category : 8051f020 | Blog
2
十二
今天 k2 更新了,有两个月没更新过了。
K2是WordPress的一个优秀主题,它由Michael Heilemann(WordPress Default themes 的作者
), Chris J Davis, Zeo, Steve Lam 和 Ben Sherratt 共同开发。
这次有较大的更改。
r818
Removed the TextMate project file.
Removed the ‘vader’ style, which is old and rarely updated anyway.
Oh hai. First commit in ages; sorry about that. No promises though.
r819
Removed ‘widgets manager’ option from the options page.
r820
Changed the font-family on the sidebar headlines. Always hated the Trebuchet in
that size.
r821
Updated the CSS meta info for dueling sidebars
K2是WordPress的一个优秀主题,它功能强大,且外观易于定制它由Michael Heilemann(WordPress Default themes 的作者), Chris J Davis Zeo, Steve Lam 和 Ben Sherratt 共同开发。
特色:
Ajax翻页和搜索,动态的边栏(不同页面显示不同边框),支持评论嵌套和分页,支持单栏/双栏/三栏/自适应这,存档页面。

今天 k2 更新了,有两个月没更新过了。
这次有较大的更改。
r818
Removed the TextMate project file.
Removed the ‘vader’ style, which is old and rarely updated anyway.
Oh hai. First commit in ages; sorry about that. No promises though.
r819
Removed ‘widgets manager’ option from the options page.
r820
Changed the font-family on the sidebar headlines. Always hated the Trebuchet in that size.
r821
Updated the CSS meta info for dueling sidebars.
k2

Category : WordPress | Blog