基于LonWorks的在系统编程技术
JEDEC(熔丝图)文件是电子器件工程联合会所制定的文件器件编程信息的标准格式计算机文件,编程信息用ASCII码表示。Lattice公司定义了一种专用用于ISP操作的数据格式,即ISP数据流文件(ispSTREAM),原来的一个ASCII码只用1bit表示,大大减小了数据文件的存储空间。因此,执行在系统编程之前,首先使用ispCODE软件来实现这一数据转换,形成易于与Neuron C语言源代码相融合的ispSTREAM文件。
2.2 Neuron C编程语言
Neuron C是专门为Neuron芯片设计的编程语言,它从ANSI C中派生出来的,并进一步扩展了用以支持由Neuron芯片中的固件提供的各种运行特性。Neuron C语言编程效率高,可读性强。该语言加入通信、事件调度、分布数据对象和I/O功能,是开发LonWorks应用的有力工具。
为实现Neruon芯片与I/O设备之间的通信,Neuron芯片的11个I/O引脚可定义为34种I/O对象,用户可根据实际应用的需要合理选择在应用程序中定义不同的I/O对象,然后用io_in()或io_out()等函数实现对I/O对象的数据读写操作,即实现Neuron芯片与I/O设备之间的通信。在本设计中,用作编程信号的I/O口定义为“直接I/O对象”中的“比特I/O对象”。比特输入是以TTL电平兼容的逻辑信号,输出是CMOS电平,可以驱动外接的与CMOS以及TTL兼容的逻辑电路。
2.3 软件实现
根据CPLD器件的内部结构及其在系统编程原理,控制程序的任务是从存储器中读出熔丝图数据据,然后将其转换为串行数据流,写入CPLD中。编程的过程由5个编程信号控制,它们由事先定义好的I/O口产生,然后编制读写这些I/O口的程序。ISP编程过程就是软件对这些口读写的过程。编程的关键在于提供准确定时的ISP编程信号,必须保证各ISP编程信号之间的时序关系。
Neuron C程序总体结构如图4所示。Neuron C源程序首先定义变量、函数以及I/O口的使用情况,然后编写when()语句调度程序。当需要执行ISP操作时,调用相关程序。图4中,ispSTREAM文件头包括CPLD器件类型、CPLD器件块擦除和行编程的脉冲宽度等参数。
Neuron C关键字允许直接将部分应用代码加到指定的存储段。本设计中用far关键字将ispSTREAM文件存储在RAMFAR区域。此外,在编程软件执行期间,由于指令的执行时间相对较长,大多数硬件定时要求(通常较短)都有自动地得到满足。但编程脉冲总体擦除脉冲却分别长达40ms和200ms,而板上没有硬件定时器,只要靠软件延时来实现。
在NodeBuilder开发环境下,执行build命令后,将工作目录下的devicename.NEI文件输出,装载到编程器中,编程器将应用程序和固件下载到Flash存储器中。
结束语
实际运行证明,通过Neuron芯片对CPLD进行ISP操作之后,CPLD实现了预定的功能。
目前,Lon网络控制技术在航空/航天、楼宇控制、运输设备等多种领域的应用日益成熟,而且由于该技术具有高性能、低成本的网络接口产品,并且易于开发低成本的网关,实现Lon网与以太网有机的结合。因此,在本实验的基础上,可以尝试由主机通过远程服务将ISP器件的编程数据文件下载到Lon网的节点中,并由底层的
《基于LonWorks的在系统编程技术(第2页)》