自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

emesjx的专栏

携手共进、资源共享

  • 博客(29)
  • 资源 (5)
  • 收藏
  • 关注

转载 DOS操作系统下PCI板卡访问方法(二)

<br />访问特定的PCI功能设备的配置空间一般分为以下几个步骤:<br />首先,按照端口0xCF8的信息格式,组成相应的配置字,写入端口OxCF8中。然后通过读取端口0xCFC,得到每个功能设备配置空问中相应的寄存器内容。接着,由读出的配置空间中设备ID和制造商ID与指定的功能设备的设备ID和制造商ID相比较。若不匹配则重复进行上述操作直到匹配为止。最后,由获得的相应的总线号、设备号以及功能号,通过读写端口OxCF8和0xCFC就可以访问特定板卡的配置空间了。<br />下面给出一个通过PCI配置寄存

2010-12-04 12:22:00 4817 1

转载 DOS操作系统下PCI板卡访问方法(一)

<br />1 前言<br />当前,随着计算机技术的飞速发展,对于高速、高性能板卡的需求越来越大。曾在工控机中广泛应用的ISA总线逐渐被淘汰。相比之下,PCI总线作为一种高性能的局部总线,具有兼容性好,传输速度高,不受处理器限制以及支持“即插即用”(Plug&Play)等优点,正逐步取代ISA总线而广泛应用于PC机和工控机中。在今后相当长的一段时间内,开发应用基于PCI总线的扩展板卡将显得尤为重要。<br />Windows操作系统和DOS操作系统是目前在工控机中使用较多的两种操作系统,有着各自的优缺点。

2010-12-04 12:18:00 4204 1

原创 VC6.0中Invalidate与UpdataWindow的差别

<br />1、Invalidate用于当前视图(窗口)刷新,其作用是,使整个客户区无效,发送WM_PAINT消息(如果是控件则发WM_DRAWITEM消息),由其响应函数OnPaint(或OnDraw)刷新视图内容。有两种调用方式:<br />Invalidate(false);//不抹背景<br />Invalidate()或Invalidate(true);//抹去背景<br />与Invalidate有关联的还有两个函数:InvalidateRect用于刷新矩形区;InvalidateRgn用于刷新

2010-12-01 15:48:00 4319 2

原创 MFC的消息反射及其应用技巧

<br />在Windows中有一个改变控件颜色的消息WM_CTLCOLOR,该消息通常由父类窗口(一般是对话框,也可是框架窗口)接收并处理,其响应函数(通常加在CDialog派生类中)为:<br />afx_msg HBRUSH OnCtlColor(CDC *pDC,CWnd *pWnd,UINT nCtlColor);<br />由于参数nCtlColor只能识别控件的类别,如编辑控件CTLCOLOR_EDIT,列表框CTLCOLOR_LISTBOX等,也就是说,如果一个对话框中有几个编辑控件,那么其

2010-11-25 17:25:00 1782

原创 MFC ActiveX控件与ATL ActiveX控件的比较

<br />1、两者均可使用VS IDE中AppWizard来建立框架,前者使用“MFC ActiveX Control Wizard”,后者使用“ATL COM AppWizard”。<br />2、用MFC建立的ActiveX控件的扩展名缺省为“.ocx”;用ATL(活动模板库)建立的扩展名缺省为“.dll”。<br />3、用MFC建立ActiveX控件要简单得多,原因是MFC省去聊很多低级的COM概念,且控件设计中可使用多种MFC类,如CString、 CWnd 、CDC等;用ATL建立Active

2010-11-24 18:36:00 1609

原创 如何在VC6中申请分配大容量内存

<br />1、最简单、直接的方法是使用C++运算符new,例如:对于分辨率为x*y*8bit的图像,申请分配内存方法:<br />BYTE *pBuf=new BYTE[x*y];<br />用此方法一定要注意,只要pBuf不使用了,就要用delete将其释放掉。<br />2、较复杂的方法是使用API函数GlobalAlloc和LocalAlloc,此方法分配的内存是以“堆”形式提供的,可使用GlobalLock/LocalLock对所申请的内存加锁,释放则使用GlobalFree/LocalFree。

2010-11-17 18:00:00 5668 1

原创 EZ-USB FX2(CY7C68013)加电复位过程分析

当EZ-USB FX2加电复位(或人工按钮复位)后:1、FX2内核(Core)被初始化,所有FX2寄存器被初始化。2、寄存器CPUCS.0=1,CPU保持复位状态,CPU CLK="12MHz"。3、寄存器USBCS.1(Renum)=0,使用FX2内核的缺省USB设备配置(PID=0x04B4,VID=0x8613),FX2内核处理EP0上的所以设备请求(来自主机)。4、所以中断被关闭,所以I/O端点设置为普通I/O方式。5、如果FX2没有检测到外部串行EEPROM,或者有EEPROM,但其首字节不是)0

2010-11-16 16:14:00 2808 2

原创 常用EDA软件的license文件结构分析

<br />目前,80%以上的EDA软件,如ANSYS的Ansys(大型通用有限元分析软件)和Fluent(世界领先的计算流体动力学软件)、PTC 的ProE(三维图形软件)、Cadence 的OrCAD和Allegro(原理图/PCB设计软件)、Altera的QuartusII(EPLD/FPGA开发软件)等,运行时都需要经过注册程序Flexlm产生的License文件认证才可以使用, Flexlm是由Globetrotter 公司发明的软件加密方法-柔性注册管理(Flexible License Man

2010-11-13 12:29:00 4711

原创 关于CFile类打开文件的默认路径

<br />在编制对话框应用程序时,如果使用CFile类的成员函数“Open” 打开一个文件,在不指定文件的路径时会默认为当前程序的路径,但如果使用了文件打开对话框类CFileDialog并打开过文件的话,再用CFile类的成员函数Open打开文件,其默认路径会变成CFileDialog类打开文件的路径,这是因为CFileDialog类打开文件时修改了系统的默认(缺省)路径,如果不想让CFileDialog类改变默认路径,只要在使用CFileDialog类Open函数时,加上OFN_NOCHANGEDIR属

2010-11-12 21:34:00 2442

原创 如何在DOS平台中对PCI卡编程

<br />大部分PCI卡,如PCI声卡、PCI显卡、PCI数字I/O卡、PCI A/D、D/A采集卡等均可在DOS平台(实模式)进行编程,具体方法是使用汇编语言调用PCI BIOS中断1AH,调用参数及调用细节可参阅“PCI BIOS Specification Ver2.x”,调用实例可参阅“CH365 PCI总线接口芯片 中文手册”。有几点要注意:<br />1、主板上必须有PCI BIOS,一般只要有PCI插槽或PC104+总线的就有(486以上主板都有)。<br />2、PCI总线的一些先进技术,

2010-11-10 16:12:00 1959

原创 CCS3.1 DSP/BIOS 配置工具使用经验

<br />1、DMA Config中用到的地址指针必须先在程序中定义好,并加"far"约束。<br />2、进入DSP/BIOS配置工具后,必须先将用到的所有指针变量在“CSL Extern Declaration”中定义好(右击“CSL Extern Declaration”,选“Insert”,右击变量名,<br />选“rename”,再选“Properties”,进入属性页进行修改)。<br />3、点击“DMA Configuration Manger”可插入dmacfg0~3,亦可对现有的dm

2010-11-08 13:55:00 3481

原创 用CCS开发DSP应用程序的代码结构、加电装载及在线编程

1、DSP应用程序代码结构,有三种:○ 纯汇编;○ 纯C语言;○ 汇编+C语言。这三种结构还可插入带CSL或不带CSL的DSP/BIOS API。为了加快应用程序的开发,现在的DSP程序一般都采用:汇编+C语言+带CSL的API。其中,汇编代码用于特殊要求,如Flash编程及对速度要求很高的关键部分;C语言则是整个应用程序主框架,但主要是运算处理部分;而与硬件打交道的工作全部由CSL API来完成。DSP应用程序工程模式有两种:调式仿真(debug)模式与应用发布(release)模式。○ 仿真模式用于开发

2010-11-08 13:55:00 2330

原创 TI DSP/BIOS及CCS使用经验

<br />1.用CCS打开/创建工程时,工程存放的路径名中不能有中文!(不像VS6、ISE等可以使用任意路径名)<br />2.国产并口DSP仿真器有些是采用CPLD仿真代替SMC34C60(该芯片已停产),仿真功能不全,只能在并口的EEP模式下使用。原装的仿真器采用SMC34C60,可在SPP、EPP、EPP+ECP三种模式下使用。此外,国产并口DSP仿真器(如开发板之家生产的)除了并口要选择EPP模式外,还要将并口中断IRQ7设置成“保留”(Reserve),不能设置成PnP(Default)。<br

2010-11-08 13:53:00 2267

原创 KeilC51(UV2/UV3)使用经验

<br />1、在UV2/UV3中,一个工程可以由多个模块(即*.c文件)组成,模块之间的变量与函数的调用与标准C语言类似。即变量必须是全局变量(公共变量),函数必须是全局函数。一般缺省规则是:<br />(1)在任意模块中定义的函数均是全局函数,在其它模块调用前加上“extern  函数名”说明即可。<br />(2)在任意模块中所有函数实体之外定义的变量时全局变量,在其它模块引用之前加上“extern   类型 变量名”即可。<br />2、有些变量可能会随时改变,例如:在中断中赋值的变量,以及硬件修改

2010-11-08 13:51:00 2446

原创 如何在DOS下使用USB设备

<br />虽然目前DOS系统已很少使用,但在工业控制等实时要求很强的领域使用x86处理器的嵌入式系统中(PC104、Mini-ITX),DOS依然是首选操作系统。<br />USB是目前最常用的外设接口,在DOS下使用USB设备需要USB设备的驱动程序,比如OHCI/UHCI可以驱动USB鼠标等设备,USB_CD可以驱动USB光驱等设备,DUSE可以驱动USB硬盘、光驱、软驱等设备,Motto Hairu可以用转为ASPI的方法来驱动USB接口的软盘、硬盘、光驱、闪存盘(例如U盘等),而USB4DOS则可

2010-11-08 13:48:00 3590

转载 嵌入式系统中文输入法的设计(四)

<br />3、软、硬件设计<br />输入法的性能优劣,更多的不是体现在算法,而是是否符合实际需求。因此它的优化工作是对前述PY_NODE和PY_SUBNODE组织的优化,如汉字次序的安排、联想功能中后序字的组织、以及操作界面的设计是否适合人们的使用习惯。因算法本身很简单,所以用C语言可实现较高的代码效率,以及较好的可移植性。<br />对于很多8位MCU,地址空间不大于64kB。这样小的空间对于汉字界面中的汉字库和输入法中的大量数据结构是远远不够的(如一、二级常用字的16×16点阵汉字库至少需要约220

2010-10-24 11:34:00 1003 1

转载 嵌入式系统中文输入法的设计(三)

虽然上述组织关系并不复杂,但其工作量不小,一般情况下可编写转换程序自动建立。图2为拼音输入法数据结构的一个片断。在改变当前PY_NODE时,一般应伴有一些显示操作,因应用不同各有差异,此处不做过多说明。在当前节点下,可以用某一指定控制键(如“#”键)来选择此PY_NODE下属的PY_SUBNODE以缩小汉字的选取范围。增加功能上述拼音输入法比较简单,且完成了输入法需要的基本功能。对于某些应用场合,对输入法还有更多的要求,可在上述方法的基础上进行改进实现。一些常见的要求和改进方法列举如下:① 增加常用字功能在

2010-10-24 11:33:00 1182

转载 嵌入式系统中文输入法的设计(二)

一般终端键盘包括12个按键,分别是0~9数字键和“*”、“#”两个特殊键。按通用规则,数字1对应空格,其功能基本等同于PC机中的空格键,用于输入空格或作为当前汉字的确认键;2~9数字键分别对应下述汉语拼音字母:2:a b c   3:d e f     4:g h i5:j k l    6:m n o   7:p q r s  8:t u v   9:w x y z而“0”、“*”、“#”键则作为输入法中的控制键。我们将“#”作为“选择键”,用于选取同一数字键组合下的不同拼音组合。输入法中使用了两个重要数

2010-10-24 11:30:00 1072

转载 嵌入式系统中文输入法的设计(一)

<br />目前,以LCD和数字键盘实现的人机交互式界面在智能终端中广泛采用。在不同的应用场合,对人机界面的要求也不同,一些情况下只要求简单参数的显示和选择,而在一些信息终端中,还要求文字的输入。<br />在使用高性能CPU和标准显示设备的情况下,实现友好的人机界面可采用商用嵌入式系统( 如Linux或WinCE)所支持的GUI程序。但很多情况下,智能终端使用MCU,且其显示设备是非标准接口的小型LCD。此时,必须找到占用较少资源的低成本实现方法。<br />笔者参加的智能终端项目就是一个比较典型的基于M

2010-10-24 11:28:00 1590

转载 LabCVI常见问题及解决方法(八)

<br />36.       如何处理PANEL的最大化和最小化问题?<br />答:有EVENT_PANEL_SIZE事件可以获得,然后可以读取当前panel的大小来确定区分MAXIMIZE盒MINIMIZE事件.<br /> <br />37.       如何在CVI中编写DLL?<br />答:首先建立一个新工程,然后创建一个源程序文件,作为dll主程序。利用CVI提供的编辑器功能插入DllMain,这时在源程序文件中就有dll的框架程序。生成的两个函数不能修改。这时就可以在该程序中编写自己的DL

2010-10-24 11:17:00 1880

转载 LabCVI常见问题及解决方法(七)

<br />31.       CVI中如何使用UDP协议?<br />答:CVI中没有带有关于UDP协议的fp文件,需要使用winsock来写。<br /> <br />32.       CVI下如何编写多线程程序?<br />答:可以使用函数模版中的Utility Library目录下的函数,首先用CmtNewThreadPool (int Maximum_Number_of_Threads, int *Pool_Handle)函数创建一个线程池(也可以使用程序默认的线程池),然后使用CmtSched

2010-10-24 11:14:00 2341 1

转载 LabCVI常见问题及解决方法(六)

<br />26.       CVI中如何实现进度条功能?<br />答:CVI中可以使用slide控件实现进度条功能。也可以使用Programmer's Toolbox里带的函数来创建进度条。<br /> <br />27.       CVI中的TUI文件?<br />答:TUI文件实际上是UIR文件的文本版本,在使用时同UIR文件的调用方式相同。<br /> <br />28.       CVI中使用控件的Tab顺序功能时如何略过某些控件?<br />答:将控件改变为Indicator控件,在CV

2010-10-24 11:13:00 3306

转载 LabCVI常见问题及解决方法(五)

<br />21.       CVI中如何实现系统托盘图标?<br />答:在CVI中可以通过Programmer's Toolbox提供的System Tray Icons来实现系统托盘图标。将应用程序的图标放到托盘上去。<br /> <br />22.       CVI中如何实现及时提示功能?(Tips)<br />答:在CVI中为了实现Windows中当鼠标指针放到某个按钮控件上时自动出现提示,简单说明该按钮的功能。可以使用SetCtrlToolTipAttribute函数来实现该功能。<br /

2010-10-24 11:11:00 2398 1

转载 LabCVI常见问题及解决方法(四)

<br />16.       如何在CVI中使用inp等低级函数?<br />答:CVI中是不能直接使用这种类型的函数对端口地址进行操作。需要使用CVILowLevelSupportDriverLoaded函数打开CVI对低级函数的支持。<br /> <br />17.       请问CVI中的事件驱动是指什么?<br />答:事件驱动是CVI应用程序和用户进行交互的核心原理,具体是指应用程序通过响应用户界面所发生的“事件”来执行代码、调用回调函数。这些事件可以是发生在面板上的对象或者是面板自身。使用L

2010-10-24 11:09:00 2478

转载 LabCVI常见问题及解决方法(三)

<br />11.       如何在VC中调试用CVI编写的DLL?<br />答:首先应有VC写的调用程序。在CVI中需要进行的设置:在Specify External Process中选择调用dll的可执行文件。配置Target Settings为Debug,选择dll的目录为可执行文件所在的目录。就可以VC调试CVI的DLL,调试时,会自动进入CVI环境。<br /> <br />12.       在CVI中生成DLL时,是否可以将其他的DLL(或LIB)加入到工程中来?<br />答:库文件可以

2010-10-24 11:02:00 3527 1

转载 LabCVI常见问题及解决方法(二)

<br />6.       CVI中如何使用非NI公司的硬件产品?该公司提供了一个fp文件。<br />答:一般来说通常可以调用产品销售商提供的动态链接库,有些大公司也提供fp文件,该文件可以直接使用,就可以达到使用硬件的目的了。在使用前,可以直接将该文件添加入项目中,也可以在Library中定制fp文件的加载。<br /><br />7.       CVI中如何实现多窗口显示?<br />答:在创建窗口面板时需要设置窗口属性为浮动型窗口,使用LoadPanel和DisplayPanel函数加载和显示窗

2010-10-24 10:55:00 2836

转载 LabCVI常见问题及解决方法(一)

<br />1.       使用CVI9.0调用由VC++6.0编写的DLL,该DLL在VC中调用是可以的,输出方式也是C语言的。但是在CVI中调用该DLL时,总是提示missing prototype,如何解决?<br />答:设置BUILD OPTION<br />在options->Build options  |  c language options中取消Require function prototypes的检测<br /> <br />2.       CVI中如何向设计好的word表格中添

2010-10-24 10:54:00 4981

原创 WDF驱动中KMDF与UMDF区别

众所周知, 早期的Windows 95/98的设备驱动是VxD(Virtual Device Driver),其中x表示某一类设备。从Windows 2000开始,开发驱动程序必以WDM(Windows Driver Model)为基础的,但是,如果使用DDK来开发WDM,其开发难度之大,根本不能奢望像用户模式应用程序开发那样容易,因此,一般用户都是使用WinDriver、DriverStudio之类的第三方工具。为改善这种局面,从Vista开始,微软推出了新的驱动程序开发环境WDF(Windows Dri

2010-10-24 10:44:00 10194

原创 C6203B DSP系统中用FPGA实现UART的技术难点及解决方案

<br />众所周知,TMS320C6203B DSP本身不带UART(RS232)口,在使用C6203B+FPGA的嵌入式系统中要实现UART通信有三种方案可选:<br />1、用DSP的McBSP(多通道缓冲串口)仿真UART,可参见TI的技术文档SPRA633B,网上也许多文章对此进行了较详细的介绍。但此方案的缺点是大部分模拟仿真工作需软件完成,且UART通信速度较慢(最大几百K)对实时处理系统的速度影响较大。<br />2、扩充外部专用UART芯片,特别可以利用DSP的SPI口可方便地与SPI-UA

2010-10-17 14:32:00 875

使用Windows实时扩展RTX的串口编程

使用Windows实时扩展RTX的串口编程API及示例,大大提高了串口通信的实时性。

2011-08-27

BIOS加电自检( POST)设备基础类型码表

开发PCI卡驱动及硬件必须知道的所以PCI设备的基础类型码表,即在BIOS加电自检(POST)时显示的设备类型,很难找的资料。

2011-08-27

DSP+ARM6层PCB图

Protel99se画的6层DSP+ARM的PCB图及封装库

2009-03-24

空空如也

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

TA关注的人

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