2008年10月30日星期四

驱动开发网

http://www.driverdevelop.com/first.html

2008年10月23日星期四

快乐与痛苦都来源于自己

有一个长跑选手一旦和别人起冲突时,必定要求自己在下次比赛时,超越自己长跑的纪录。而随着时间越来越久,他的速度越来越快,不管面对如何的困难,他总是要求自己坚持下去。

有一次他参加国家选拔,结果他以非常悬殊的距离赢得冠军。比赛后他接受记者的访问,记者说:"请问你如何训练自己?"他如实的回答:"只要和别人争吵,我一定要求自己在下次比赛时突破自己之前的记录,来警惕自己不要与人争执。"

一段时间过后,他参加国际长跑比赛,结果他以冠军的头衔拿到奥运的参赛权。一名国际记者对他进行访问:"请问你是如何训练自己,能够不断超越自己、得以一直破记录?"他还是同样的回答。

又经过一段时间,他参加奥运长跑比赛,结果他得到的第三名。虽然是第三名,但已经是让大家刮目相看,同时也再一次打破他自己的纪录。比赛后那名国际记者又访问他,记者说:"你是如何让自己一直保持在最佳的状态?"

他的回答依然不变:"我只要和别人争吵时,我一定要求自己在下次比赛时破自己之前的纪录,来警惕自己不要和别人争吵"

其实大家只看到他一直在破纪录,可是在他的心里根本不在乎纪录。他真正在乎的是就是平稳自己的心,让自己比赛时越来越专心,同时不断提升自己的速度。而他迈向成功的过程是我们可以学习的,若平心、仔细的去想,任何的事情都不会使人生气,会让人生气的永远是自己。

快乐与痛苦同样都来源于自己。

2008年10月19日星期日

PRJ_DIR 表示工程路径

<BEGIN> FILE_$(WIND_BASE)/target/config/pcPentium/sysALib.s_dependencies

$(PRJ_DIR)/prjComps.h \

    $(PRJ_DIR)/prjParams.h

<END>

Makefile的宏定义

Makefile文件控制镜像的创建,在Makefile文件里使用了将近135个宏,最简单的Makefile文件要包含以下的宏:

・CPU
:目标板CPU的类型;

・TOOL
:主机的make工具,为GNU

・TGT_DIR
target路径,默认为$(WIND_BASE)/target

・TARGET_DIR
BSP目录名;

・VENDER
:目标板生产商名;

・BOARD
:目标板名;

・ROM_TEXT_ADRS
boot ROM的入口地址(16进制表示,并且与config.h文件定义相同)

・ROM_SIZE
ROM的大小;

・RAM_LOW_ADRS
:加载vxWorks的目标地址;

・RAM_HIGH_ADRS
boot ROM拷贝到RAM的目标地址;

・HEX_FLAGS
:特殊结构的标记,用于产生S-记录文件;

・MACH_EXTRA
:扩展文件,用户可以加入自己的目标模块;

除此以外,Makefile文件还需要包括以下文件:

・$(TGT_DIR)/h/make/defs.bsp
Vxworks系统运行的标准变量定义;

・$(TGT_DIR)/h/make/make.$(CPU)$(TOOL)
:提供了特别的目标机结构和一套编译工具,如make. ARM7TDMI_Tgnu

・$(TGT_DIR)/h/make/defs.$(WIND_HOST_TYPE)
:提供了与主机系统有关的定义;

・rules.bsp
:在创建目标文件时所需要的规则;

・rules. $(WIND_HOST_TYPE)
:指出创建目标文件时所需的从属文件表;

如果没有用all目录下的文件而是拷贝到bspname下修改并使用,需要定义与这些文件有关的宏,如

BOOTINIT=bootInit.c

这样在创建镜像时就不会用all目录下的文件而使用bspname目录下的相应文件了;

Makefile文件里凡是16进制数前面都无需加"0x"

bspname.h

根据具体目标板设置串行接口、时钟以及I/O设备等。在该文件中必须包含以下内容:

中断向量/级别

・I/O
设备地址

设备寄存器位的含义

系统和附加时钟参数(最大和最小速率)

config.h

根据目标板的具体情况配置宏定义,注意ROM_TEXT_ADRSROM_SIZERAM_LOW_ADRSRAM_HIGH_ADRS要与Makefile文件里定义的一致,LOCAL_MEM_LOCAL_ADRSLOCAL_MEM_SIZE要正确。

romInit.s

这是系统上电后运行的第一个程序,根据具体目标板对寄存器和CPU进行设置;以CPUARM7TDMI为例,romInit.s 需要进行的工作有:

保存启动方式:对于冷启动,如果CPU配置的是HIGH VECTORS,就设置入口地址为0xFFFF0000,否则设置入口地址为0x00000000

屏蔽中断:通过设置cpsrI_BITF_BIT都为1来实现,还要设置中断寄存器为关模式,同时设定运行模式为SVC32模式;

初始化堆栈指针pcsp:堆栈指针sp指向STACK_ADRS,这个宏的定义为当镜像为驻留ROM时,该宏值为_sdata,当镜像为非驻留ROM时该宏值为_romInit,这两个地址经过地址映射后都指向被拷贝镜像在RAM的目标地址;

初始化cache,屏蔽cache

根据具体目标板的需要初始化其他寄存器;

指针跳转到romStart()函数并执行;

bootConfig.c

一般不需要用户修改,也可以根据具体情况做适当修改;

sysALib.s

romInit.s文件实现的功能相似,但如果在romInit.s文件里对DRAM和内存控制器进行了初始化在这里不再进行这项工作;

创建VxWorks镜像

根据具体需要在命令行环境下利用Makefile创建各种镜像,也可以在Tornado的集成环境下Build菜单中选择Build Boot ROM来创建各种类型的Boot ROM

除此以外,如果系统硬件包括串口,还要根据具体情况修改sysSerial.c文件;如果包含网络部分要修改configNet.h;如果包含NVRAM要修改bootnv.h文件。总之,BSP的开发要根据具体目标板的硬件进行。



结语

我们已经利用基于VxWorksBSP开发包成功的进行了线缆调制解调器的底层软件开发。在开发过程中深感BSP在整个系统软件中的重要性――没有正确的BSP软件,整个系统的启动和运行也不会正确。另外需要强调的是:BSP的概念只是针对嵌入式操作系统而言的,而像DOSWINDOWSUNIXBIOS操作系统是无BSP可言的。对同一目标板而言,不同操作系统的BSP在本质上是一样的,但是不同的操作系统将提供不同的支持库,另外在BSP结构上也可能会有所不同,在做BSP移植的时候应该注意。

2008年10月17日星期五

DL645 可以写设备地址

7.6 写设备地址

7.6.1 写设备地址请求命令帧

功能:设置某从站的地址码

控制码:C=0AH

地址域:9999H

数据长度:L=06H

数据域:A0A5(设备地址码)

帧格式:

68H 99H 99H 68H 0AH 06H A0 A5 CS 16H

注:本请求命令采用广播地址发布,要求被设置的从站有相应的按键(开关 一般公司喜欢用翻页键)与该命令配

合,在命令发布的全部时间内按下按键者响应,其它不响应。

7.6.2 从站正常应答帧

功能:正确执行命令的设备应答

控制码:C=8AH

地址域:A0A5(新设置的设备地址码)

数据长度:L=00H

帧格式:

68H A0 A5 68H 8AH 00H CS 16H

7.7 更改通信速率

7.7.1 更改速率请求

 

采样数据块方式报文:

<P2:15:30:16.910>Send: - DL/T 645 - 读取正向有功电能数据块

68 01 00 00 00 00 00 68 01 02 52 C3 E9 16

<P2:15:30:17.10>Echo: - DL/T 645 - 响应正向有功电能数据块

68 01 00 00 00 00 00 68 81 16 52 C3 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 71 16

<P2:15:30:17.160>Send: - DL/T 645 - 读取正向无功电能数据块

68 01 00 00 00 00 00 68 01 02 52 C4 EA 16

<P2:15:30:17.260>Echo: - DL/T 645 - 响应正向无功电能数据块

68 01 00 00 00 00 00 68 81 16 52 C4 9B 9B 9B 9B 9B 9B 9B 9B 9B 9B 9B 9B 9B 9B 9B 9B 9B 9B 9B 9B 9A 16

<P2:15:30:17.400>Send: - DL/T 645 - 读取反向有功电能数据块

68 01 00 00 00 00 00 68 01 02 62 C3 F9 16

<P2:15:30:17.490>Echo: - DL/T 645 - 响应反向有功电能数据块

68 01 00 00 00 00 00 68 81 16 62 C3 9A 9A 9A 9A 9A 9A 9A 9A 9A 9A 9A 9A 9A 9A 9A 9A 9A 9A 9A 9A 95 16

<P2:15:30:17.650>Send: - DL/T 645 - 读取反向无功电能数据块

68 01 00 00 00 00 00 68 01 02 62 C4 FA 16

<P2:15:30:17.750>Echo: - DL/T 645 - 响应反向无功电能数据块

68 01 00 00 00 00 00 68 81 16 62 C4 9C 9C 9C 9C 9C 9C 9C 9C 9C 9C 9C 9C 9C 9C 9C 9C 9C 9C 9C 9C BE 16

<P2:15:30:17.910>Send: - DL/T 645 - 读取正向有功最大需量数据块

68 01 00 00 00 00 00 68 01 02 52 D3 F9 16

<P2:15:30:18.10>Echo: - DL/T 645 - 响应正向有功最大需量数据块

68 01 00 00 00 00 00 68 81 0E 52 D3 9D 9D 9D 9D 9D 9D 9D 9D 9D 9D 9D 9D E1 16

<P2:15:30:18.160>Send: - DL/T 645 - 读取正向无功最大需量数据块

68 01 00 00 00 00 00 68 01 02 52 D4 FA 16

<P2:15:30:18.240>Echo: - DL/T 645 - 响应正向无功最大需量数据块

68 01 00 00 00 00 00 68 81 05 52 D4 3C 3C 3C 31 16

<P2:15:30:18.400>Send: - DL/T 645 - 读取反向有功最大需量数据块

68 01 00 00 00 00 00 68 01 02 62 D3 09 16

<P2:15:30:18.480>Echo: - DL/T 645 - 响应反向有功最大需量数据块

68 01 00 00 00 00 00 68 81 05 62 D3 3C 3C 3C 40 16

<P2:15:30:18.650>Send: - DL/T 645 - 读取反向无功最大需量数据块

68 01 00 00 00 00 00 68 01 02 62 D4 0A 16

<P2:15:30:18.730>Echo: - DL/T 645 - 响应反向无功最大需量数据块

68 01 00 00 00 00 00 68 81 05 62 D4 3D 3D 3D 44 16

<P2:15:30:18.890>Send: - DL/T 645 - 读取上月正向有功最大需量数据块

68 01 00 00 00 00 00 68 01 02 52 D7 FD 16

<P2:15:30:18.990>Echo: - DL/T 645 - 响应上月正向有功最大需量数据块

68 01 00 00 00 00 00 68 81 0E 52 D7 9E 9E 9E 9E 9E 9E 9E 9E 9E 9E 9E 9E F1 16

<P2:15:30:19.150>Send: - DL/T 645 - 读取上月正向无功最大需量数据块

68 01 00 00 00 00 00 68 01 02 52 D8 FE 16

<P2:15:30:19.230>Echo: - DL/T 645 - 响应上月正向无功最大需量数据块

68 01 00 00 00 00 00 68 81 05 52 D8 40 40 40 41 16

<P2:15:30:19.390>Send: - DL/T 645 - 读取上月反向有功最大需量数据块

68 01 00 00 00 00 00 68 01 02 62 D7 0D 16

<P2:15:30:19.470>Echo: - DL/T 645 - 响应上月反向有功最大需量数据块

68 01 00 00 00 00 00 68 81 05 62 D7 41 41 41 53 16

<P2:15:30:19.640>Send: - DL/T 645 - 读取上月反向无功最大需量数据块

68 01 00 00 00 00 00 68 01 02 62 D8 0E 16

<P2:15:30:19.710>Echo: - DL/T 645 - 响应上月反向无功最大需量数据块

68 01 00 00 00 00 00 68 81 05 62 D8 42 42 42 57 16

<P2:15:30:19.880>Send: - DL/T 645 - 读取正向有功最大需量发生时间数据块

68 01 00 00 00 00 00 68 01 02 52 E3 09 16

<P2:15:30:19.980>Echo: - DL/T 645 - 响应正向有功最大需量发生时间数据块

68 01 00 00 00 00 00 68 81 12 52 E3 9F 9F 9F 9F 9F 9F 9F 9F 9F 9F 9F 9F 39 39 39 39 F1 16

<P2:15:30:20.140>Send: - DL/T 645 - 读取正向无功最大需量发生时间数据块

68 01 00 00 00 00 00 68 01 02 52 E4 0A 16

<P2:15:30:20.230>Echo: - DL/T 645 - 响应正向无功最大需量发生时间数据块

68 01 00 00 00 00 00 68 81 06 52 E4 43 43 43 43 9A 16

<P2:15:30:20.390>Send: - DL/T 645 - 读取反向有功最大需量发生时间数据块

68 01 00 00 00 00 00 68 01 02 62 E3 19 16

<P2:15:30:20.460>Echo: - DL/T 645 - 响应反向有功最大需量发生时间数据块

68 01 00 00 00 00 00 68 81 06 62 E3 44 44 44 44 AD 16

<P2:15:30:20.630>Send: - DL/T 645 - 读取反向无功最大需量发生时间数据块

68 01 00 00 00 00 00 68 01 02 62 E4 1A 16

<P2:15:30:20.710>Echo: - DL/T 645 - 响应反向无功最大需量发生时间数据块

68 01 00 00 00 00 00 68 81 06 62 E4 45 45 45 45 B2 16

<P2:15:30:20.880>Send: - DL/T 645 - 读取上月正向有功最大需量发生时间数据块

68 01 00 00 00 00 00 68 01 02 52 E7 0D 16

<P2:15:30:20.980>Echo: - DL/T 645 - 响应上月正向有功最大需量发生时间数据块

68 01 00 00 00 00 00 68 81 12 52 E7 3A 3A 3A 3A 3A 3A 3A 3A 3A 3A 3A 3A 3A 3A 3A 3A 3D 16

<P2:15:30:21.140>Send: - DL/T 645 - 读取上月正向无功最大需量发生时间数据块

68 01 00 00 00 00 00 68 01 02 52 E8 0E 16

<P2:15:30:21.220>Echo: - DL/T 645 - 响应上月正向无功最大需量发生时间数据块

68 01 00 00 00 00 00 68 81 06 52 E8 46 46 46 46 AA 16

<P2:15:30:21.380>Send: - DL/T 645 - 读取上月反向有功最大需量发生时间数据块

68 01 00 00 00 00 00 68 01 02 62 E7 1D 16

<P2:15:30:21.470>Echo: - DL/T 645 - 响应上月反向有功最大需量发生时间数据块

68 01 00 00 00 00 00 68 81 06 62 E7 48 48 48 48 C1 16

<P2:15:30:21.630>Send: - DL/T 645 - 读取上月反向无功最大需量发生时间数据块

68 01 00 00 00 00 00 68 01 02 62 E8 1E 16

<P2:15:30:21.720>Echo: - DL/T 645 - 响应上月反向无功最大需量发生时间数据块

68 01 00 00 00 00 00 68 81 06 62 E8 47 47 47 47 BE 16

<P2:15:30:21.870>Send: - DL/T 645 - 读取电压断相时间数据块

68 01 00 00 00 00 00 68 01 02 62 E6 1C 16

<P2:15:30:21.950>Echo: - DL/T 645 - 响应电压断相时间数据块

68 01 00 00 00 00 00 68 81 0E 62 E6 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 6C 16

<P2:15:30:22.130>Send: - DL/T 645 - 读取电压断相时间数据块

68 01 00 00 00 00 00 68 01 02 62 E6 1C 16

<P2:15:30:22.220>Echo: - DL/T 645 - 响应电压断相时间数据块

68 01 00 00 00 00 00 68 81 0E 62 E6 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 6C 16

<P2:15:30:22.380>Send: - DL/T 645 - 读取电压断相时间数据块

68 01 00 00 00 00 00 68 01 02 62 E6 1C 16

<P2:15:30:22.470>Echo: - DL/T 645 - 响应电压断相时间数据块

68 01 00 00 00 00 00 68 81 0E 62 E6 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 6C 16

<P2:15:30:22.630>Send: - DL/T 645 - 读取电压断相时间数据块

68 01 00 00 00 00 00 68 01 02 62 E6 1C 16

<P2:15:30:22.720>Echo: - DL/T 645 - 响应电压断相时间数据块

68 01 00 00 00 00 00 68 81 0E 62 E6 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 3B 6C 16

 

2008年10月13日星期一

关于乔丹

http://boke.xizhengren.com/27749/viewspace-16660.html

 

"空中飞人"迈克尔乔丹(Michael Jordan)
【项目】篮球   【身高】1.98
【星座】水瓶座  【出生】1963217
【体重】98公斤 【位置】得分后卫
【毕业学校】北卡罗来纳大学(North Carolina)84年毕业
1984
NBA选秀第一轮第三顺位被芝加哥公牛选中1993106日一度宣布退出NBA95318日重新回到NBA99113日宣布退役。20011031日,在新赛季NBA揭幕战中,乔丹第二次正式复出。在奇才队比赛两个赛季.之后宣布退役,不再回来.
在美国人的十大"文化偶像"中,篮球皇帝――飞人乔丹名列第六…… 
飞人"乔丹――一个集优雅、力量、艺术、即兴能力于一身的卓越运动员,他重新定义了NBA超级明星的含义,他是公认的全世界最棒的篮球运动员,不仅仅在他所处的那个时代、在整个NBA历史上乔丹都是最棒的。
成为迈克尔乔丹式的人物,是所有美国人的梦想。迈克尔乔丹来自纽约的布鲁克林区,后来进入北卡罗来纳大学学习,在那里,他的篮球天赋开始显现。加盟芝加哥公牛队后,乔丹率队6次获得NBA总冠军,5次赢得最有价值球员(MVP)的称号。两度宣布退役,又两度宣布复出,最终于2003年从华盛顿奇才队退役。据估计,截止2002年,飞人乔丹的财产总数为4亿200万美元。乔丹是美国最伟大的篮球运动员。
名言:"我可以接受失败,但无法接受放弃。"
乔丹NBA生涯重要奖项 
NBA总冠军6次
1991
19921993199619971998
NBA常规赛最有价值球员5次 
1988
1991199219961998
NBA总决赛最有价值球员6次  
1991
19921993199619971998 
NBA扣篮比赛冠军   
1987
1988
奥运会冠军2
1984
年、1992

用心投篮

篮球,是一个非常讲究细节的运动,讲究完美,讲究全面。所以,在投篮的练习当中,是需要你有很多东西需要注意的。这有利于你养成一个好的习惯,而且不至于成为一个训练型的篮球爱好者,你需要在比赛里面能把你的训练成果完全展现才算是有实际作用。

NBA标准投篮动作教程�标准篮球投篮手型讲解





































NBA标准投篮动作教程�标准篮球投篮手型讲解



08 15th, 2008 in NBA新闻, 篮球相关 542 views



。。这个是会带来争议的话题,不过要说这个手型,就一定要颠覆所谓的传统了,就是颠覆神圣的"空手心"理论。



。。在我看来,投篮的手型一共应该分为两种:软手和硬手。这直接决定了一个球员的不同特性,而一旦掌握了这两种手型,你也就会变身为"乔丹""科比"一样的全能型球员了 。



1.先来说硬手:



。。这是内线球员常用的手型 ,这个手型的好处是,依靠五根手指的弹力,拨球出手,球不会太过旋转,但是非常平稳,在近距离和中距离会很稳定,球的弧线会略平,但是命中率会很高,因为球的线路很平稳。这个动作就是传统意义上的空手心投篮。



。。要点是:五指分开,大拇指要向外伸展,五根手指有抠住球的感觉,也就是抓球的感觉,指尖用力,手心是空的(因为手指都僵硬着抓球,撑开了,所以手心只有空着了),这个动作的要点是,五指要伸直,而且要用力,僵硬,也就是平时说的拿稳球。



。。缺点是:远距离不容易发力,因为五指的弹力需要手掌提供力度,也就是手掌僵硬,导致了在投篮前不能完全下压手腕,而在投篮以后手腕所拨动的幅度也不能达到180°,拨球的频率也稍慢,另外就是由于空出手心,手和球的接触面积不足够大,手部用力不够充分,只能加上臂膀的力度来辅助,这也就造成了力气小的球员如果使用这个动作远投会非常吃力的。



。。用这个手型的球员主要有:蒂姆.邓肯,沙克.奥尼尔,以及打篮下的乔丹等等。



如图所示:







红圈是使用范围。



2.再来说说软手:



。。软手的手型是我自己不断改进投篮 和不断矛盾的的过程中,最终体会出来的,也如释重负。因为以前的篮球队教练也好,队友也好,甚至乔丹,在教授投篮的时候,都会强调空手心,所以当我发现这个动作手型的时候,我一度陷入犹豫不绝当中,我怀疑是不是有什么问题,为什么这些人都不用。后来是在看了一些投手的投篮动作以后,我才明白,不是不用,而是有些人不会,而像乔丹这类人,更是把这投篮作为看家本领来传承了,连科比都没告诉(所以科比自己很辛苦的研究了几个赛季下来,只是学到了乔丹投篮动作的外形,精髓没学到,乔丹根本没说;而科比自己本身也是一样,他前一阵子的CCTV5科比训练营练到赢系列训练营里面,也只是教授训练方法,投篮精髓一点也没教,那也是人家的看家本事)。我说我看了投手的录像,都有哪些人呢:拉里.伯德,诺瓦克,斯托克顿,霍纳塞克,雷.阿伦,麦蒂(特雷西.麦克格雷迪),科比(有时略硬,和乔丹一样,不是真正的全手软),史蒂夫.科尔(有双手投篮嫌疑,不过足够软),艾佛森等等,伯德最为典型。



。。其实我认为,说出来伯德和诺瓦克,就没必要再讲解他们的投篮有多好了,都知道他们是神准的,下面主要说一下这个动作的要点吧:



。。软手,是说手要很放松,软下来,可以让手掌包括手心在内全部贴在球上,没有空隙,这样可以保证最大的接触球面积,也就是发力面积,手腕压向下到最大,球会有压在手腕上的感觉(而不是手前掌,是手腕也就是手心),所以手心一定不可以空的。这个动作暂时讲到这里,后面讲标准投篮细节的时候会详细讲。





。。说一下,为什么会这么执着于软手投篮,就是因为我在用了这个动作之后,发现了他的几大好处:远距离稳定,可以保证球的直线运行,能让球的旋转达到最大;远距离省力,我个人的感受是,比硬手空手心投篮在远投上要省力50%以上的感觉(有人会问有这么夸张,我试过,你如果试了就知道了);弧度更加合理且出手柔和;球在手上更加稳定,容易拿捏动作。



。。单凭这些好处我认为就足够动心了,这也就是为什么像伯德和诺瓦克这样身体素质差很多的球员,却仍然可以在NBA站稳脚跟的原因,而这个技术一被乔丹和科比用上,就变得无可匹敌。你也许会问,既然这个动作这么好用,为什么不是NBA球员人人都用。其实这个问题很简单,这是练出来的领悟到的自己的绝招,记得中国古代那个教徒弟的故事吗,给自己留一手。NBA球员都喜欢有个绝招的,所以会的人心照不宣,都死守这个秘密而已,谁愿意把自己的看家本领泄露呢?我为什么要说出来?很简单,因为我受了几次大伤,腿断过2次,再也不可能打比赛了,甚至小场子的对抗也不行了,也不爱打比赛了,所以我敢说了,我以前在打球的时候,这些诀窍就算打死我也不说的,信佛了,不爱打比赛了,就分享出来了 。只希望对真正喜欢篮球的青少年有帮助,我指点过一些青少年的投篮,经过点拨有很多很快就开窍了,希望现在感觉投篮有难度的朋友,在看完所有文章以后,可以掌握住投篮的诀窍。