EDN首页   博客首页

最新日志

发表于:2008/11/13 17:31:29
标签:无标签

0

[转]移动硬盘上安装XP

前提条件
为了继续下面的大部分操作,需要有一台已綷-安装好Windows操纵系统的台式机。
● 一个兼容USB 2.0标准的移动存储设备。这个设备可以是移动硬盘,甚至可以是大容量闪存盘(市面上已綷-有不少容量在2GB以上的闪存盘)。如果要使用硬盘,那么这个移动硬盘可以是买来的现成产品,也可以自己用移动硬盘盒DIY。建议自己DIY,因为这样不仅便宜,而且可以使用台式机硬盘,性能可以得到保障(成品移动硬盘为了保持一定的体积,往往使用缓存小、容量小,转速低的笔记本硬盘)。另外,为了尽量避免数据传输所需的时间,移动硬盘(盒)以及主板上的USB接口最好能够工作在USB 2.0标准下。
● 一张Windows XP安装光盘。
● UltraISO或者其他可以直接编糪-ISO文件的软件。
● Microsoft Cabinet SDK:

rar

http://download.microsoft.com/download/platformsdk/cab/2.0/w98nt42kmexp/en-us/Cabsdk.exe
● 可以直接刻录ISO文件的光盘刻录软件。

详细操作步骤

1 首先要确认你的机器主板支持从USB启动,并且格式化好你的硬盘确认启动时XP安装程序可以找到它。

2 提取需要处理的文件
从光盘镜像的i386文件夹,并选中下列文件(按下“Ctrl”键可以多选):
● TXTSETUP.SIF
● DOSNET.INF
● USB.IN_
● USBPORT.IN_
● USBSTOR.IN_

3 提取IN_文件
运行前文中下载的Cabsdk.exe,将其中的文件释放到硬盘上(假设放在c:\cabsdk下)。然后运行“CMD”打开命令提示符窗口,并进入到c:\cabsdk\bin,按照cabarc x USBSTOR.IN_这样的格式对在上一步中提取出来的三个“.in_”文件运行cabarc命令(图3),最终你将会得到三个“.inf”文件。
● usb.inf
● usbport.inf
● usbstor.inf
这时候.IN_文件就可以全部删掉了。

4 编辑文件
TXTSETUP.SIF
这个文件是由Windows XP安装程序在最初的安装阶段载入的,在这个文件中,我们会改变Windows安装程序对USB设备的处理方法。默认情况下,安装过程中USB设备会被看作是输入设备,綷-过我们的修改,USB设备将会变成大容量存储设备(这种设备需要在使用之前被载入)。
首先,按照下面的示例处理[InputDevicesSupport.Load]和[BootBusExtenders.Load]字段(蓝色文字是新添加的内容,红色的文字是删除的内容):

[BootBusExtenders.Load]
pci = pci.sys
acpi = acpi.sys
isapnp = isapnp.sys
acpiec = acpiec.sys
ohci1394 = ohci1394.sys
usbehci = usbehci.sys
usbohci = usbohci.sys
usbuhci = usbuhci.sys
usbhub = usbhub.sys
usbstor = usbstor.sys

[InputDevicesSupport.Load]
usbehci = usbehci.sys
usbohci = usbohci.sys
usbuhci = usbuhci.sys
usbhub = usbhub.sys
usbccgp = usbccgp.sys
hidusb = hidusb.sys
serial = serial.sys
serenum = serenum.sys
usbstor = usbstor.sys

接着对[BootBusExtenders]和[InputDevicesSupport]字段进行类似的处理(蓝色文字是新添加的内容,红色文字是删除的内容):

[BootBusExtenders]
pci = "PCI-Bustreiber",files.pci,pci
acpi = "ACPI Plug & Play-Bustreiber",files.acpi,acpi
isapnp = "ISA Plug & Play-Bustreiber",files.isapnp,isapnp
acpiec = "Integrierter ACPI-Controllertreiber",files.none,acpiec
ohci1394 = "IEEE-1394-Bus-OHCI-konformer Anschlusstreiber",files.ohci1394,ohci1394
usbehci = "Erweiterter Hostcontroller",files.usbehci,usbehci
usbohci = "Open Hostcontroller",files.usbohci,usbohci
usbuhci = "Universeller Hostcontroller",files.usbuhci,usbuhci
usbhub = "Standard-USB-Hubtreiber",files.usbhub,usbhub
usbstor = "USB-Speicherklassentreiber",files.usbstor,usbstor

[InputDevicesSupport]
usbehci="Erweiterter Hostcontroller",files.usbehci,usbehci
usbohci="Open Hostcontroller",files.usbohci,usbohci
usbuhci="Universeller Hostcontroller",files.usbuhci,usbuhci
usbhub="Standard-USB-Hubtreiber",files.usbhub,usbhub
hidusb="HID-Parser",files.hidusb,hidusb
serial="Serial Port Driver",files.none,serial
serenum="Serial Port Enumerator",files.none,serenum
usbstor="USB-Speicherklassentreiber",files.usbstor,usbstor
usbccgp="USB Generic Parent Driver",files.usbccgp,usbccgp

随后,我们还要在注册表中写入一些键。txtsetup.sif允许你提供一些文件,这些文件将在系统安装过程中被合并到注册表中。请在[HiveInfs.Fresh]字段加入下列蓝色字的内容:

[HiveInfs.Fresh]
AddReg = hivedef.inf,AddReg
AddReg = hivesys.inf,AddReg
AddReg = hivesft.inf,AddReg
AddReg = hivecls.inf,AddReg
AddReg = hiveusd.inf,AddReg
AddReg = dmreg.inf,DM.AddReg
AddReg = usbboot.inf,usbservices

同时在[SourceDisksFiles]字段下加入下列蓝色文字内容:

[SourceDisksFiles]
usbboot.inf = 1,,,,,,_x,3,,3
bootvid.dll = 1,,,,,,3_,2,0,0,,1,2
kdcom.dll = 1,,,,,,3_,2,0,0,,1,2

最后,保存并关闭TXTSETUP.SIF,这一步工作就完成了。

DOSNET.INF
接下来打开DOSNET.INF,把第二个[Files]字段变成下面的样子(蓝色文字为新添加内容):

[Files]
d1,usbboot.inf
d1,_default.pif
d1,12520437.cpx
d1,12520850.cpx

usb.inf
编辑[StandardHub.AddService]和[CommonClassParent.AddService]字段,在其中添加下面显示的蓝色文字内容:

[StandardHub.AddService]
DisplayName=%StandardHub.SvcDesc%
ServiceType=1; SERVICE_KERNEL_DRIVER
StartType=0; SERVICE_DEMAND_START
ErrorControl=1; SERVICE_ERROR_NORMAL
ServiceBinary=%12%\usbhub.sys
LoadOrderGroup=Boot Bus Extender

[CommonClassParent.AddService]
DisplayName=%GenericParent.SvcDesc%
ServiceType=1;SERVICE_KERNEL_DRIVER
StartType=0;SERVICE_DEMAND_START
ErrorControl=1;SERVICE_ERROR_NORMAL
ServiceBinary=%12%\usbccgp.sys
LoadOrderGroup=Boot Bus Extender

usbport.inf
编辑[EHCI.AddService]、[OHCI.AddService]、[UHCI.AddService]和[ROOTHUB.AddService]字段,在其中添加下面显示的蓝色文字内容:

[EHCI.AddService]
DisplayName=%EHCIMP.SvcDesc%
ServiceType=1;SERVICE_KERNEL_DRIVER
StartType=0;SERVICE_DEMAND_START
ErrorControl=1;SERVICE_ERROR_NORMAL
ServiceBinary=%12%\usbehci.sys
LoadOrderGroup=Boot Bus Extender

[OHCI.AddService]
DisplayName=%OHCIMP.SvcDesc%
ServiceType=1;SERVICE_KERNEL_DRIVER
StartType=0;SERVICE_DEMAND_START
ErrorControl=1;SERVICE_ERROR_NORMAL
ServiceBinary=%12%\usbohci.sys
LoadOrderGroup=Boot Bus Extender

[UHCI.AddService]
DisplayName=%UHCIMP.SvcDesc%
ServiceType=1;SERVICE_KERNEL_DRIVER
StartType=0;SERVICE_DEMAND_START
ErrorControl=1;SERVICE_ERROR_NORMAL
ServiceBinary=%12%\usbuhci.sys
LoadOrderGroup=Boot Bus Extender

[ROOTHUB.AddService]
DisplayName=%ROOTHUB.SvcDesc%
ServiceType =1;SERVICE_KERNEL_DRIVER
StartType=0;SERVICE_DEMAND_START
ErrorControl=1;SERVICE_ERROR_NORMAL
ServiceBinary=%12%\usbhub.sys
LoadOrderGroup=Boot Bus Extender

usbstor.inf
在[USBSTOR.AddService]字段中增加/修改下列蓝色文字内容:

[USBSTOR.AddService]
DisplayName=%USBSTOR.SvcDesc%
ServiceType=1
StartType=0
Tag=3
ErrorControl=1
ServiceBinary=%12%\USBSTOR.SYS
LoadOrderGroup=Boot Bus Extender

新文件:USBBOOT.INF
在之前处理的文件所在的文件夹中新建一个名为USBBOOT.INF的文件,然后输入下列内容:

[usbservices]

HKLM,"SYSTEM\CurrentControlSet\Services\USBSTOR","DisplayName",0x00000000,"USB Mass Storage Driver"
HKLM,"SYSTEM\CurrentControlSet\Services\USBSTOR","ErrorControl",0x00010001,1
HKLM,"SYSTEM\CurrentControlSet\Services\USBSTOR","Group",0x00000000,"System Reserved"
HKLM,"SYSTEM\CurrentControlSet\Services\USBSTOR","ImagePath",0x00020000,"system32\DRIVERS\USBSTOR.SYS"
HKLM,"SYSTEM\CurrentControlSet\Services\USBSTOR","Start",0x00010001,0
HKLM,"SYSTEM\CurrentControlSet\Services\USBSTOR","Type",0x00010001,1

HKLM,"SYSTEM\CurrentControlSet\Services\usbehci","DisplayName",0x00000000,"USB 2.0 Enhanced Host Controller Miniport Driver"
HKLM,"SYSTEM\CurrentControlSet\Services\usbehci","ErrorControl",0x00010001,1
HKLM,"SYSTEM\CurrentControlSet\Services\usbehci","Group",0x00000000,"System Reserved"
HKLM,"SYSTEM\CurrentControlSet\Services\usbehci","ImagePath",0x00020000,"system32\DRIVERS\usbehci.sys"
HKLM,"SYSTEM\CurrentControlSet\Services\usbehci","Start",0x00010001,0
HKLM,"SYSTEM\CurrentControlSet\Services\usbehci","Type",0x00010001,1

HKLM,"SYSTEM\CurrentControlSet\Services\usbhub","DisplayName",0x00000000,"USB2 Enabled Hub"
HKLM,"SYSTEM\CurrentControlSet\Services\usbhub","ErrorControl",0x00010001,1
HKLM,"SYSTEM\CurrentControlSet\Services\usbhub","Group",0x00000000,"System Reserved"
HKLM,"SYSTEM\CurrentControlSet\Services\usbhub","ImagePath",0x00020000,"system32\DRIVERS\usbhub.sys"
HKLM,"SYSTEM\CurrentControlSet\Services\usbhub","Start",0x00010001,0
HKLM,"SYSTEM\CurrentControlSet\Services\usbhub","Type",0x00010001,1

HKLM,"SYSTEM\CurrentControlSet\Services\usbuhci","DisplayName",0x00000000,"Microsoft USB Universal Host Controller Miniport Driver"
HKLM,"SYSTEM\CurrentControlSet\Services\usbuhci","ErrorControl",0x00010001,1
HKLM,"SYSTEM\CurrentControlSet\Services\usbuhci","Group",0x00000000,"System Reserved"
HKLM,"SYSTEM\CurrentControlSet\Services\usbuhci","ImagePath",0x00020000,"system32\DRIVERS\usbuhci.sys"
HKLM,"SYSTEM\CurrentControlSet\Services\usbuhci","Start",0x00010001,0 HKLM,"SYSTEM\CurrentControlSet\Services\usbohci","DisplayName",0x00000000,"Microsoft USB Open Host Controller Miniport Driver"
HKLM,"SYSTEM\CurrentControlSet\Services\usbohci","ErrorControl",0x00010001,1
HKLM,"SYSTEM\CurrentControlSet\Services\usbohci","Group",0x00000000,"System Reserved"
HKLM,"SYSTEM\CurrentControlSet\Services\usbohci","ImagePath",0x00020000,"system32\DRIVERS\usbohci.sys"
HKLM,"SYSTEM\CurrentControlSet\Services\usbohci","Start",0x00010001,0
HKLM,"SYSTEM\CurrentControlSet\Services\usbohci","Type",0x00010001,1

5 将inf文件重新打包
如果原始的.IN_文件还没有删除,那么现在必须删掉,因为我们需要用新的文件将其替换。再次打开一个命令提示行窗口,然后进入到保存这些文件的文件夹,然后执行下列命令:

cabarc n USB.IN_ usb.inf
cabarc n USBPORT.IN_ usbport.inf
cabarc n USBSTOR.IN_ usbstor.inf

这样你将能看到三个IN_文件,所有修改工作就都已经完成了。


重新装入ISO文件
用UltraISO打开你的Windows XP安装光盘镜像,进入到i386文件夹,然后从ISO文件中删除下列文件,并保存修改:
● DOSNET.INF
● TXTSETUP.SIF
● USB.IN_
● USBPORT.IN_
● USBSTOR.IN_
一定要确保所有更改都被保存到ISO文件中,在UltraISO中关闭并重新打开这个更改过的ISO文件,再次进入i386文件夹,并在“操作”菜单下选择“添加文件”命令,把你编糪-过的文件添加进去:
● USBBOOT.INF
● DOSNET.INF
● TXTSETUP.SIF
● USB.IN_
● USBPORT.IN_
● USBSTOR.IN_
保存ISO文件,主要工作完成了。

将ISO文件刻录回光盘并安装。
这样Windows就可以正常安装和使用了,在安装过程中你可能会遇到这些问题:
● 在安装驱动程序的过程中,安装程序可能会提醒你有驱动程序没有通过微软的认证,这是正常现象。我们对某些文件的修改使得文件的校验值变化了,因此驱动的数字签名也就丢失了。只要点击“依然安装”数次即可。
● 在安装完成之后,第一次启动的时候系统会报告没找到分页文件。你可以忽略这个错误,就算没有分页文件,Windows也可以正常工作。

系统分类: 软件开发   |    用户分类:    |    来源: 转贴

该用户于2008/11/13 17:36:18编辑过该文章

评论(0) | 阅读(1751)
发表于:2008/9/28 13:20:48
标签:Proteus  错误  

0

Proteus 无法仿真的一些问题

1、timestep too small

关于time step too small的含义
所有SPICE仿真都有可能会出现这种问题,从数学上讲,是因为迭代运算在步长很小的迭代中都无法找到允许误差下的解。也就是SPICE的方程组不收敛。
为什么会这样呢?一方面有可能是设计上不合理,如前面有兄弟说到的问题;另一方面可能是模型设计的问题,特别是某些数字模拟混合设计,或存在开关器件时(一般开关器件不能理想化设置Ton=0就是为了避免出现这个问题)。
如何解决这个问题?需要对症下葯,一般由简到繁来处理:先检查电路设计上有没低级错误;更换器件模型(如三极管)试验;如果以上都无效,还可以尝试修改SPICE仿真参数,这个比较繁琐,最好先记录原始值,以便恢复。大体修改的思路是放宽误差容限,一般以整数量级为单位来改动。但是误差大了仿真也就不准确了。

浅论至此,欢迎指正!

系统分类: 单片机   |    用户分类: 无分类    |    来源: 整理

评论(0) | 阅读(747)
发表于:2008/8/19 11:46:20
标签:无标签

1

[转贴]一位可怜男网友的求助信

一位可怜男网友的求助信
--------------------------------------------------------------------------------

亲爱的技术顾问:   

您好!我遇到一个技术难题,急需您的帮助。最近我将《女友7.0版》升级成《老婆1.0》,结果发现升级后的软件经常会莫名其妙的出错。而且这个版本还占用了大量系统空间和资源,这在产品说明书上并没提到。还有就是《老婆1.0》自动介入其他程序,到处安装软件拷贝,并能在开机时自动启动,监视整个系统的活动。

升级到《老婆1.0版》后,我以前安装的程序,例如:《哥们饭局2.5版》、《全天橄榄球赛5.3版》再也无法启动了,一开程序就死机。我还试着使用《周六酒吧6.3版》,结果每次运行的其实是《周六逛街7.1版》。我尝试着还原到《女友7.0版》,但是光盘里找不到《老婆1.0版》的卸载程序。   

期待您的回复!   

====================================

亲爱的用户:   

您的问题非常普遍,起因是绝大多数用户对《老婆版》软件的基本性质不够了解。很多把《女友版》升级到《老婆版》的男士都以为《老婆版》只是应用和娱乐程序,其实《老婆版》是一个操作系统,其作用是控制电脑的一切事务。让《老婆版》安全地降级到《女友版》基本是不可能的,因为《老婆1.0版》的设计不准许您这样做。一旦安装,任何卸载、降级、删除对《老婆版》都不起作用。

有些用户试图安装《女友8.0 》、《情人1.0》或《老婆版更新程序》,但都引起了更多的麻烦,详情请见《使用手册》第七章“子女抚养费”和第十章“诉讼律师费”。凭我多年的经验(我自己也安装了《老婆1.0》),我建议您保留该软件,并尽最大努力克服目前的困难。如果发现错误或问题,无论原因是什么,您都必须立即运行C盘根目录下的《我很抱歉》程序,注意尽量避免使用“解释”键。某些情况下,您有必要多次运行《我很抱歉》程序,幸运的话,您的操作系统最终会恢复正常。   

虽然《老婆1.0版》是一个高成本、难维护的软件,但运行一段时间以后,您会发现安装该软件还是值得的。如果您想更充分地利用其功能,请考虑购买下列补丁程序:《鲜花2.0版》、《巧克力7.0版》和《钻石9.0版》。   

避免安装《女秘书20-25版》(尤其要避免用“超短裙”格式的那个版本),因为该系列软件和《老婆版》软件不兼容,极有可能导致系统死机。

感谢您使用我公司软件!   

顺便再说一句,如果您还没有安装《老婆1.0版》附带的免费软件《丈母娘1.0 版》,请慎重考虑是否有安装的必要 !

系统分类: 自由话题   |    用户分类:    |    来源: 无分类

评论(0) | 阅读(188)
发表于:2008/8/19 11:45:36
标签:无标签

1

把男友升级为老公后发生的bug (搞笑) (转载)

技术负责人,您好:
  去年本人把"男友5.0"升级为"老公1.0",发现财务软件发生意外的变化,导致与在"男友5.0"版本下,运行良好的"flower"和"装饰品"应用程序的连接发生障碍。而且"老公1.0"系统删除了"浪漫9.9"等软件,并擅自把"足球11.0"或者"nba3.0"安装进去。更糟糕的是,"沟通8.0"也不象以前那样灵活,"家务2.6"子系统渐渐处于崩溃状态。我试图用"唠叨5.3"解决问题,还是没有效果。

  请告诉我如何解决此问题... --几乎绝望的用户

用户:

  请注意,"男友5.0"是娱乐版软件,但是"老公1.0"是操作系统。

  请在ms-dos方式下,输入" "c:/你现在不爱我了?"命令

  之后请安装"眼泪6.2"。

  这样,"老公1.0"可能会自动运行"内疚感3.0" 和 "flower7.0"应用程序。但是如果使用过多,"老公1.0"可能会把"沉默2.5"或者"啤酒6.1"设置为缺省程序。

  其中"啤酒6.1"有时还自动创建"打呼噜"音响文件。

  请千万不要安装"婆婆1.0"或者别的"男友"软件,这些都不会给你带来帮助,甚至有可能破坏"老公1.0"。

  总之,"老公1.0"是一个不错的系统,只是它的内存有限,所以要适应新的软件,需要一定的时间,若要提高其性能,请添加新软件,比如"好吃的饭菜3.0"。

老公1.0"听说有不少盗版哦,运行七年后,系统自动崩溃,所以也叫“七年之痒”。
我觉得不是因为盗版的问题,而是"老公1.0"只有7年的使用许可,不及时升级到2。0或以上版本就会产生和硬件的不兼容

系统分类: 自由话题   |    用户分类:    |    来源: 转贴

评论(0) | 阅读(194)
发表于:2008/7/17 12:53:47
标签:女人  自己  

1

女人一定要对自己好一点(转)

1、女人一定要对自己好一点。一旦累死了,就别的女人花你的钱,住你的房,睡你的老公,还打你的孩子。
2、问世间情为何物?圣人答曰:“废物!”
3、我以为我颓废,原来我报废了!
4、叶子的离开,是因为风的追求还是树的不挽留?
5、你以为我会眼睁睁地看着你去送死吗?我会闭上眼睛的!
6、黑夜给了我一双黑色的眼睛,可我却用它来翻白眼。
7、网络就像是监狱,本来是偷了个钱包进来的,等出去的时候就什么都学会了。
8、兄弟如手足,女人如衣服,谁动我手足,我扒他衣服!
9、上帝把所有人都骗了,因为地狱才是最美的!佛知道真相,所以佛说:“我不入地狱,谁入地狱?”
10、看到你我连食欲都没了,还谈什么性欲?
11、天使之所以会飞,是因为她们把自己看得很轻……  
12、以后不要在我面前说英文,OK?
13、我要是妞,早爱上我了……    
14、这个世界上我只相信两个人,一个是我,另一个不是你。
15、有钱男子汉,没钱汉子难!
16、思想有多远,你就给我滚多远!
17、好好学习,天天想上!
18、流氓不可怕,就怕流氓有文化……   
19、早起的鸟儿有虫吃,早起的虫儿被鸟吃!
20、当你穿上了爱情的婚纱,我也披上了和尚的袈裟……
21、 客服就是客客气气的拒绝为你服务。
22、 时间就像乳沟,只要挤一挤总还是有的!
23、 有时解释是不必要的——敌人不信你的解释,朋友无须你的解释。
24、我为兄弟两肋插刀,为女人插兄弟两刀。
25、怀才就像怀孕,时间久了才能让人看出来。
26、 人干点好事儿总想让鬼神知道,干点坏事儿总以为鬼神不知道,我们太让鬼为难了。
27、 水能载舟,亦能煮粥!
28、骑白马的不一定是王子,可能是唐僧;有翅膀的不一定是天使,也可能是鸟人,烧香的不见得是和尚,也可能是熊猫!
29、 亲人之间,谈到钱就伤感情;情人之间,谈到感情就伤钱。
30、 上帝创造了男人是为了使他孤独,而创造女人是为了让他更孤独。
31、顾客不是上帝,顾客只是上当。
32、孩子把玩具当朋友,成人把朋友当玩具。
33、老天,你让夏天和冬天同房了吧?生出这鬼天气!
34、有钱的人怕别人知道他有钱,没钱的人怕别人知道他没钱。
35、话说出去之前你是话的主人,说出去之后你便成了话的奴隶。
36、偷一个人的主意是剽窃,偷很多人的主意就是研究。
37、装傻这事,如果干的好,叫大智若愚。木讷这事,如果干的好,叫深沉。
38、穿别人的鞋,走自己的路,让他们找去吧,
39、女人无所谓正派,正派是因为受到的引诱不够;男人无所谓忠诚,忠诚是因为背叛的筹码太低……   
40、一大学生最低奋斗目标:农妇,山泉, 有点田。

系统分类: 生活点滴   |    用户分类:    |    来源: 转贴

评论(0) | 阅读(310)
发表于:2008/7/7 13:08:34
标签:无标签

2

[原创] Proteus之PLD初级教程

ProteusPLD初级教程

前言

Proteus在数字电路仿真中表现非常出色,虽然ProteusPLDCPLD/FPGA)支持不多,但是这并不能否认我们不对此方面有所了解,下面对Proteus中的PLD做个简单的学习。

一、PLD编程软件WinCupl简介

Proteus中,PLD器件所需要载入的文件是“.jed ”文件(就像仿真单片机所需要.HEX文件一样),而产生这样的文件,我们需要另外一种编辑环境,这就是WinCupl

WinCuplATMEL公司出品的Cupl语言的编译环境,用于PLD器件的编程,支持多种器件,包括GAL系列和ATF系列。

一般来说,ATF系列的同等级产品要必GAL的便宜,比如AFT16V8就兼容GAL16V8,可以擦写100次,价格上也便宜1块~2块,性能都差不多。

ATMEL公司的SPLD/CPLD栏目中免费下载WinCupl后,可以得到一个注册码,用这个码就可以激活WinCupl了,这个码没有使用时间的限制。

WinCupl软件包实际包括两个部分,一个是WinCupl,PLD的编译环境,一个是WinSim(相当于MAX的波形仿真部分)。

接下来我们学习如何使用这个软件。

二、编译Wincupl源文件

Cupl语言的基本结构在这里不作详细介绍,仅对其在Proteus中的PLD所需要的仿真文件产生进行介绍。下面以3-8多路选择器(相当于74LS138)为例,介绍编译Wincupl源文件并产生PLD所需要的仿真文件的具体步骤。

说明:这里我们仅用组合逻辑来实现我们的器件,达到教学目的,更加复杂器件的实现(需要使用时序逻辑)请参见其它学习文档。

1、启动WinCupl。如图1,启动完进入主界面后,单击File菜单的New,从New中单击Projet,就是新建一个工程文件(其实还是PLD文件),在弹出的对话框中,“Name”(源文件名称),填“Encoder”,其它包括“Date”(创建时间)、“Designer”(设计者名称)、“Company”(公司名称)等根据需要进行填写。这里有个特殊的地方,就是“Device”(器件名称),系统默认的是virtual,就是不针对任何具体的部件,这里我们改掉,改成g16v8a,这个关键字兼ATF16V8。如图2所示;

点击看大图

1  启动界面

2  头文件信息

2、单击OK后,系统要你输入你要用的输入引脚数,我们有六个输入端,因此填“6,如图3,单击OK按钮。

3  填写输入引脚数

3、系统要你输入要用到的输出引脚数,填“8,如图4,单击OK按钮。

4  填写输出引脚数

4、系统要你输入要使用到的中间节点数,我们不需要,填0,单击OK按钮。这样系统就建立了一个PLD文件,文件名就是ENCODER.PLD。系统将该文件显示出来了,就象下面这样:

Name     Encoder ;

PartNo   00 ;

Date     2008-4-15 ;

Revision 01 ;

Designer XIEYI ;

Company  stepservo ;

Assembly None ;

Location  0;

Device   G16V8A ;

 

/* *************** INPUT PINS *********************/

PIN     =                         ; /*                                 */

PIN     =                         ; /*                                 */

PIN     =                         ; /*                                 */

PIN     =                         ; /*                                 */

PIN     =                         ; /*                                 */

PIN     =                         ; /*                                 */

 

/* *************** OUTPUT PINS *********************/

PIN     =                         ; /*                                 */

PIN     =                         ; /*                                 */

PIN     =                         ; /*                                 */

PIN     =                         ; /*                                 */

PIN     =                         ; /*                                 */

PIN     =                         ; /*                                 */

PIN     =                         ; /*                                 */

PIN     =                         ; /*                                 */

显然,这是一个空文件,我们需要对输入、输出引脚定义,以及其中的逻辑进行填写,3-8多路选择器逻辑相对简单,这里就不啰嗦了。最后的编写后的文件如下:

Name     Encoder ;

PartNo   00 ;

Date     2008-4-15 ;

Revision 01 ;

Designer XIEYI ;

Company  stepservo ;

Assembly None ;

Location  0;

Device   G16V8A;

 

/* *************** INPUT PINS *********************/

PIN 2     =   A2                      ; /*                                 */

PIN 3     =   A1                      ; /*                                 */

PIN 4     =   A0                      ; /*                                 */

PIN 5     =   E1                      ; /*                                 */

PIN 6     =   E2                      ; /*                                 */

PIN 7     =   E3                      ; /*                                 */

 

/* *************** OUTPUT PINS *********************/

PIN 19     =   Q0                      ; /*                                */

PIN 18     =   Q1                      ; /*                                */

PIN 17     =   Q2                      ; /*                                */

PIN 16     =   Q3                      ; /*                                */

PIN 15     =   Q4                      ; /*                                */

PIN 14     =   Q5                      ; /*                                */

PIN 13     =   Q6                      ; /*                                */

PIN 12     =   Q7                      ; /*                                */

 

Q0 = !((E1)&(!E2)&(!E3)&(!A0)&(!A1)&(!A2));

Q1 = !((E1)&(!E2)&(!E3)&(!A0)&(!A1)&(A2));

Q2 = !((E1)&(!E2)&(!E3)&(!A0)&(A1)&(!A2));

Q3 = !((E1)&(!E2)&(!E3)&(!A0)&(A1)&(A2));

Q4 = !((E1)&(!E2)&(!E3)&(A0)&(!A1)&(!A2));

Q5 = !((E1)&(!E2)&(!E3)&(A0)&(!A1)&(A2));

Q6 = !((E1)&(!E2)&(!E3)&(A0)&(A1)&(!A2));

Q7 = !((E1)&(!E2)&(!E3)&(A0)&(A1)&(A2));

写好后,我们需要编译该文件。首先保存文件(怎么保存就不用我说了吧^_^),然后在“Run”菜单中,单击“Device Dependent Compile”,就是基于器件型号的编译。如果没有出现什么键入错误,都能成功编译,如图5。编译完成后,即可产生我们所需要的“.jed”文件

点击看大图

5  编译成功后

三、PLDProteus中的仿真

Proteus中的仿真步骤如下,具体方法这里也不作介绍了,如不会者,请参见一些入门教程。

1、     启动Proteus(这个好像不用多说了吧);

2、     添加以下器件:

AM16V8(这是我们所需要仿真的器件)

LED-RED

LOGICSTATE

RESPACK-8

3 摆放好元器件。按如图6所示连接好:

点击看大图

6  元器件摆放好后的效果

4、载入“.jed”文件;

就像载入单片机“.HEX”文件一样(如果熟悉Proteus操作的可按照自己的方法载入文件),将鼠标放在U1上,右击,然后左击,在“JEDEC Fuse Map File:”处,如图7(a),找到我们刚刚保存源文件的地方,选择“Encoder.jed”文件,然后打开,如图7(b),最后点击“OK”,如图8(C)

点击看大图

(a)

点击看大图

(b)

点击看大图

(C)

7  载入“.jed”文件

5U1(AM16V8)的第2(I1)3(I2)4(I3)脚,添加DCLOCK,如图8

8  添加“DCLOCK

2脚(I1)频率设置为4 Hz,第3脚(I2)频率设置为2 Hz,第4脚(I3)频率设置为1 Hz如图9

9  设置DCLOCK的频率

6、点击“运行”按钮行进行仿真,我们会发现:在满足使能条件时(E1=1E2=0E3=0),LED灯从左至右依次循环点亮,如图10,达到我们的设计要求。

点击看大图

10  仿真效果

7、我们也可以用74LS138来仿真,这样有一个对比,最终对比效果如图11,我们发现两个器件仿真效果是一致的。

点击看大图

11  74LS138仿真对比

结语:

作者:人奇

Emailxieyilove2004@163.com

日期:2008-07-06

 

我们已经介绍了PLD器件的编程方法、编程工具WinCupl的使用方法以及如何进行在Proteus中的仿真。大家可以根据需求设计自己需要的功能。

 

 

 

 

系统分类: 资源共享   |    用户分类:    |    来源: 原创

评论(1) | 阅读(292)
发表于:2008/7/1 15:24:48
标签:无标签

2

在系统编程(isp)和在应用中编程(iap)

在系统编程isp (in-system programming)和在应用中编程iap(in-application programming)

ISP:
用写入器将code烧入,不过,芯片可以在目标板上,不用取出来,在设计目标板的时候就将接口设计在上面,所以叫"在系统编程",即不用脱离系统;
IAP:
在应用编程,有芯片本身(或通过外围的芯片)可以通过一系列操作将code写入,比如一款支持Iap的单片机,内分3个程序区,1作引导程序区,2作运行程序区,3作下载区,芯片通过串口接收到下载命令,进入引导区运行引导程序,在引导程序下将new code内容下载到下载区,下载完毕并校验通过后再将下载区内容复制到2区,运行复位程序,则Iap完成;

应用场合:
1,ISP 程序升级需要到现场解决,不过好一点的是不必拆机器了;
2,IAP 如果有网管系统的话,用网管下载一切搞定,人不用跑来跑去,
这可能是他们的优点或应用吧

典型IAP:IC卡电话机
内含V.xx MODEM芯片,MCU自带引导区,可远程下载更新程序。
========================================================
在线编程目前有两种实现方法:在系统编程(ISP)和在应用编程(IAP)。ISP一般是通过单片机专用的串行编程接口对单片机内部的Flash存储器进行编程,而IAP技术是从结构上将Flash存储器映射为两个存储体,当运行一个存储体上的用户程序时,可对另一个存储体重新编程,之后将控制从一个存储体转向另一个。ISP的实现一般需要很少的外部电路辅助实现,而IAP的实现更加灵活,通常可利用单片机的串行口接到计算机的RS232口,通过专门设计的固件程序来编程内部存储器。

2.SST FlashFlex51微控制器在应用中编程基础
1.0 介绍
许多年以来,ISP(在系统中编程)对于MCU嵌入在终端用户产品的烧录或重新烧录应用代码是一个流行的法.ISP通过已经预先下载到板上memory的韧体来实现,它通过与PC软件的接口来实现下载用户代码.SST早在1998年引入了IAP,它的基本操作与ISP相同.IAP区别于ISP是因为它执行独立于8051核控制器.它在两个flash memory区块之间相互操作,这在当前的SST MCUs中非常常见.特别地,当8051核用户代码在程序区块同时执行时,用IAP一个Flash Block可以编程另一个Flash Block. 更详细地,在FlashFlex51 MCUs中有两个执行控制器: 8051CPU核控制器和IAP flash memory控制器.这两个控制器可以同步操作,这意味着一旦通过它的mailbox SFR寄存器发出一个IAP命令,当IAP控制器在执行它的命令时8051核可以自由地执行用户指令.对于IAP编程,必须遵循下面的规则:
1. 为了使能IAP编程,置位SFCF寄存器的IAPEN位(SFCF[6] = 1).
2. 为了让Block1可见,置位SFCF寄存器的VIS位(SFCF[7] = 1)(只适用于SST89C5x)
3. 为了编程Block1, IAP命令代码必须驻留在Block0并且从Block0开始执行
4. 为了编程Block0, IAP命令代码必须驻留在Block1并且从Block1开始执行
5. 为了判断IAP命令是否执行完,操作SFCT寄存器中的Flash_busy位,也就是说,
SFST[2] = 0表明命令执行完.

点击看大图

2.0 SFR 描述
IAP命令通过下面6SFRs被8051核心控制器来初始化和控制: SuperFlash状态
(SFST),SuperFlash配置(SFCF),SuperFlash命令(SFCM),SuperFlash数据(SFDT),SuperFlash低
地址位(SFAL),和SuperFlash高低值位(SFAH). 下面分个描述这些SFRs:
2.1 SuperFlash状态(SFST)
8位寄存器只有两位直接运用到IAP命令,bit3(忙)和bit2(Flash_busy).这两位用来表
示flash操作在进行并且可以通过8051核控制器投票来判断一个flash的操作什么时候完成.
当flash的操作在进行时两位都会是高.在Burst-Program命令中当每一个字节被编写后
BUSY位将会拉低.当整个命令被完成后Flash_busy位会拉低.BUSY位只有在SST89C5x
中存在.
2.2 SuperFlash配置(SFCF)
SuperFlash配置(SFCF)两个重要的位是bit7(VIS)和bit6(IAPEN).VIS位使能或者禁用代码从内部flash的Block1执行.当VIS=0,Block1中的地址(F000H到FFFFH)对于PC来说是不可用的.当VIS=1时,这些地址对PC来说是可见的并且Block1中的代码是可执行的.IAP的使能位(IAPEN)位对于IAP的flash控制器来说就像一个开关.当IAPEN=0,所有的IAP命令都被flash控制器忽略.当IAP=1,flash控制器将会执行SFCM寄存器发出的命令.VIS只有在SST89C5x中存在.
2.3 SuperFlash命令(SFCM)
该8bit寄存器被用来从8051核控制器传输IAP命令字到IAP flash控制器.Bit7,Flash中断使能(FIE), 表示IAP flash控制器在命令执行完成以后是否应该发出一个中断.如果FIE=0,就不会发出中断并且在命令完成以后8051核控制器将必须在SFST寄存器中的BUSY和Flash_BUSY中做出判断.如果FIE=1那么当命令完成以后IAP flash控制器将会在INT#上产生一个中断(注意:这样将禁用外部INT1#中断).剩余的7bits包括想用到的IAP命令的实际命令字(看表3-2和表3-3看列表中的IAP命令).在这些寄存器中放一个新值对于在
IAP flash控制器中开始IAP操作将是催化作用,因此所有其他的寄存器更高优先于装载的这些命令字必须建立起来.
2.4 SuperFlash数据(SFDT)
8bit寄存器被用来在8051核控制器和IAP flash控制器中来回的传送数据.在IAP程序操作中,这些值将会被flash控制器编写到SFAH:SFAL表明的地址.在IAP验证操作中,在操作完成以后这些寄存器会包括数据定位和地址SFAH:SFAL. 在IAP擦除操作中这些寄存器的值被检验来验证这些查处命令是有效的.
2.5 SuperFlash低地址位(SFAL)
8bit寄存器包括被IAP flash控制器16bit地址中8位有序的低地址用来进入内部flash存储器.
2.6 SuperFlash高低值位(SFAH)
8bit寄存器包括被IAP flash控制器16bit地址中8位有序的高地址用来进入内部flash存储器.
3.0 在应用中编程(IAP)
图3-1提供了IAP操作的控制流,展现了mailbox SFR寄存器和8051核控制器和Flash Memory控制器的接口.他也提供了IAPEN在使能和禁用Flash Memory控制器上所起的效果,同时也有VIS 位在允许Block1 Flash Memory在执行应用代码上所起作用.典型的IAP命令的顺序在表3-1中已经有提供,就是说,VIS和IAPEN位被置位,接着对于专用的IAP命令装载8bit的数据和16bit的地址.接下来,发出适当的命令.在一个IAP命令中的最后一步是对Flash_busy位(SDST[2])进行投票,用投票的方式来判断flash的操作是否完成.典型的IAP代码的例子提供有Sector-Erase,Byte-Program,Byte-Verify,Prog-SB2和Enable-Clock-Double.

 

P89V51RD2晶片IAP使用方法 :

P89V51RD2具有在应用中编程(IAP)的特性,用户可以通过调用1FF0H位址的PGM_MTP来实现.调用前,需要设置FCF寄存器的FCF.0(BSEL位)和FCF.1同时为0才能访问IAP程式,在访问结束后,要对FCF.0(BSEL位)置1退出IAP操作.需要注意的是,在调用IAP功能时,调用IAP功能的代码不能放在0000H~1FFFH区.另外,由於调用IAP功能需要在指定寄存器写入特定的参数,使用组合语言以外的语言将很难实现.
P89V51RD2在IAP的具体功能需要注意的是,除了上列出的6个功能外,P89V51RD2还增加了一个"磁区擦除功能"没有列出,调用该功能的输入参数为:"R1=08H,DPH=记忆体位址MSB(A15:8),DPL=记忆体位址LSB(A7,A6:0=0)";执行该功能将擦除指定磁区的128位元组.

P89V51RD2晶片使用系统内编程ISP
ISP 允许使用宽范围的串列传输速率这与振荡频率无关ISP 也可适应宽范围的振荡频率,这可以通过检测接收一个字元的时间来实现根据基於振荡频率的计时器计数可以编程波特率ISP 操作时需要传送一个初始字元大写字母U 到P89C51Rx+/Rx2/66x 以确定串列传输速率ISP 固件能在接收到字元后自动回应当完成了串列传输速率初始化ISP 固件将只接收Intel 十六进位格式的记录Intel 十六进制记录由ASCII 字元组成用於表示十六进位的值如下所示
NNAAAARRDD..DDCC
在Intel 十六进位记录中NN 表示记录中资料的数量P89C51Rx+可以接收多达16个10H 位元组的资料AAAA 表示记录中首位元组的位址如果记录中资料位元组数为0则AAAA 被设为0000H RR 表示记录类型例如00 表示资料记录01 表示文件结束标志在ISP 应用中还用到其他的记录类型表明命令或资料在一个记录中数据位元组的数量最大为16 十进位表2 列出了所有的ISP 命令当P89C51Rx+/Rx2/66x 接收到一个记录记录中的资讯则在内部贮存起来并且完成
校验和的计算接收到整个记录之后才执行表示记录类型的操作如果在校验和的计算中出现错误P89C51Rx+/Rx2/66x 会向串列口发出一个字元X表明校验和出错如果校验和的计算与记录中的校验和相匹配单片机将执行记录中的命令在大多数情况下单片机成功接收记录后会向序列埠传送一个字元;例外对於资料类型的记录记录类型为00 则要进行一个额外检测当记录中的校验和与计算中的校验和相符而且记录中所有位元组都被成功编程的情况下单片机才发送字元,对於一个资料记录,字元"X"表示校验和不匹配字元R 表示某个位元组没有正确编程在对资料进行编程之前必须向P89C51Rx+/Rx2/66x 单片机传送02 类型记录确定振荡频率ISP 模式下不需要特定的振荡频率产生串列传输速率或编程脉冲时序用户需要提供给P89C51Rx+/Rx2/66x 产生恰当时序的资讯02 类型记录可以实现这个操作.

系统分类: 单片机   |    用户分类:    |    来源: 整理

评论(0) | 阅读(375)
Total , Page /