一套终端节点的辅助开发系统的制作方法

文档序号:18899617发布日期:2019-10-18 21:45阅读:352来源:国知局
一套终端节点的辅助开发系统的制作方法

本系统涉及嵌入式软硬件的开发,尤其是在嵌入式硬件平台上为应用软件的开发提供调试和验证。



背景技术:

目前,随着智能终端和各种物联网的发展,涌现出种类繁多且数量巨大的中端节点。它们的开发和验证成为嵌入式开发领域的主要工作之一。与此相应的,软硬件尤其是软件的开发和调试成为研发人员的重担。常见的软件在线调试有以下方式:

(1)jtag仿真器

使用集成开发环境加jtag仿真器进行开发是目前采用最多的一种调试方式。但有时也会受到开发环境的限制。比如,

用keil联机调试程序时,开512字节的大数组,最终在监视窗口中仅能看到前300个字节,后面的被省略了;

(2)驻留监控

驻留监控软件运行在目标板上,而集成开发环境通过以太网口、并行端口、串行端口等通讯端口与驻留监控软件进行交互,从而控制程序的执行、读写寄存器等。这种方式行之有效,并且在嵌入式实时操作系统中,驻留监控软件本身就成为操作系统的一个任务了。只是这种方式需要设计一套完善的调试控制程序,这本身比较耗时。

而实际研发中,有不少单片机根本没有提供自带的调试功能(出于设计周期、功耗、成本等考虑),就更需要一种简便易行的辅助调试系统。



技术实现要素:

针对上述情况,本方案主要目的是为了提供一种便于使用而代价又不大的辅助开发系统,用于加快嵌入式终端的软硬件开发。其有益效果是:

(1)它可以提供两种用途:直接提取adc数据用于matlab上做算法验证、提取程序的中间结果用于调试。这在权利要求2中有所体现。

(2)充分利用了硬件性能:

对fifo的地址做回卷(rollback)控制(示意图为图2),确保在读写地址跨越fifo边界时能正确回卷并计算出正确的深度;而在典型应用下将usb包长设置为恒定的64字节,正好能使得每个令牌间隙中有满负荷的16个数据包,这比其它任何包长设置都能有效利用usb带宽(请参见附图4),从而使usb传输达到理论的极限值,充分发挥了硬件性能。这依赖于权利要求3和4。

将adc的12位宽的数据按照每2个拼接为3字节(请参见图3),然后再在usb上传输,也充分利用了带宽。这在权利要求5有所体现。并且,这其中一个细节是,如果接收的字节数据发生截断导致不够3个字节的整数倍,即拼接到最后剩余1个或2个字节,按图3的拼接方式,恢复后的12位宽数据仅会造成低4位的误差(此时低4位直接置为零了)。这种方式使误差降低到最小,且不会引起数据错乱。

(3)用pwm方式,可以方便的使用单片机的数字引脚来控制可变增益放大器。这在权利要求1中提及。这种控制方式体积小、易实现,是软件与模拟电路的控制接口的首选。

另外,本系统在终端与上位机的交互中采用了usb接口,很通用并且操作简单,优于以往的以太网口、并口等。

本方案内容如下:

(如图1)一套终端节点的辅助开发系统,包括硬件电路板、计算机和运行于二者之上的软件,包括线路耦合、可变增益放大器vga、模数转换器adc、单片机mcu、usb收发器、计算机,其中:

所述线路耦合将外部信号耦合至本电路板;

所述可变增益放大器vga将耦合至本电路板的信号放大;

所述数模转换器adc将vga放大后的信号转换为数字信号;

所述单片机mcu中包含一段存储器作为缓存fifo、应用程序、usb的mac层软件、以及pwm生成软件,该fifo存入adc的数据或所述应用程序的数据,所述usb的mac层软件处理usb协议并从该fifo中读取数据送到usb收发器中,所述pwm生成软件用脉冲宽度调制的方式生成控制信号连接到所述vga;

所述usb收发器在所述usb的mac层软件的控制下通过usb线缆传输数据;

所述计算机通过usb线缆与所述硬件电路板上的usb收发器相连,还包括:虚拟串口软件和matlab程序,其中虚拟串口软件接收usb传输的数据并以文件的方式存储到所述计算机的硬盘上,所述matlab程序从硬盘上读取该文件的数据。

当将本系统用作算法验证时,所述adc的数据存入fifo,传输到所述计算机的matlab程序中,用户用自己的算法程序对数据进行处理;当将本系统用作程序调试时,所述应用程序可以把待观察的数据存入fifo,传输到所述计算机的matlab程序中,用户可以进行查看。

usb发送固定长度为max_pack的数据包,并且根据所述缓存fifo的最大偏移max_fifo、当前读地址rp、当前写地址wp、以及max_pack,来判断是否发包:当rp大于wp并且max_fifo-rp+wp大于等于max_pack时,或者,当rp小于等于wp并且wp-rp大于等于max_pack时,usb的mac层发数据包;其它情况下不发数据包。

在usb工作在全速full-speed模式或高速high-speed模式时,发包长度max_pack设置为64。

所述adc位宽为12,在adc的数据存入所述缓存fifo时,每相邻两个adc数据拼接成三个字节,具体是:第n+1个adc数据的高8位存入fifo的第k+1个字节,第n+2个adc数据的高8位存入fifo的第k+2个字节,第n+1个adc数据的低4位存入fifo的第k+3个字节的高4位,第n+2个adc数据的低4位存入fifo的第k+3个字节的低4位;与此相对应,所述计算机上的matlab程序从接收到的数据字节的起始字节开始,每3个字节还原出2个adc数据,如果还原过程的最后剩余字节不足3个,则直接在每个剩余字节的后面补4位零从而各形成一个12位的adc数据。

附图说明:

图1为整体功能框图;

图2为fifo读写地址动态范围;

图3为每2个adc数据与3个字节的对应关系;

图4为实际使用中典型的usb包序列。

具体实施方式:

本方案所述的辅助开发系统,需要硬件电路板、计算机和运行于二者之上的软件,包括线路耦合、可变增益放大器vga、模数转换器adc、单片机mcu、usb收发器、计算机,其中:

所述线路耦合将外部信号耦合至本电路板;

所述可变增益放大器vga将耦合至本电路板的信号放大;

所述数模转换器adc将vga放大后的信号转换为数字信号;

所述单片机mcu中包含一段存储器作为缓存fifo、应用程序、usb的mac层软件、以及pwm生成软件,该fifo存入adc的数据或所述应用程序的数据,所述usb的mac层软件处理usb协议并从该fifo中读取数据送到usb收发器中,所述pwm生成软件用脉冲宽度调制的方式生成控制信号连接到所述vga;

所述usb收发器在所述usb的mac层软件的控制下通过usb线缆传输数据;

所述计算机通过usb线缆与所述硬件电路板上的usb收发器相连,还包括:虚拟串口软件和matlab程序,其中虚拟串口软件接收usb传输的数据并以文件的方式存储到所述计算机的硬盘上,所述matlab程序从硬盘上读取该文件的数据。

当将本系统用作算法验证时,所述adc的数据存入fifo,传输到所述计算机的matlab程序中,用户用自己的算法程序对数据进行处理;当将本系统用作程序调试时,所述应用程序可以把待观察的数据存入fifo,传输到所述计算机的matlab程序中,用户可以进行查看。

1、在电路板上,需要开发并下载上述所需软件,并包括如下实施细节:

(1)usb发送固定长度为max_pack的数据包,并且根据所述缓存fifo的最大偏移max_fifo、当前读地址rp、当前写地址wp、以及max_pack,来判断是否发包:当rp大于wp并且max_fifo-rp+wp大于等于max_pack时,或者,当rp小于等于wp并且wp-rp大于等于max_pack时,usb的mac层发数据包;其它情况下不发数据包。

(2)在usb工作在全速full-speed模式或高速high-speed模式时,发包长度max_pack设置为64。

(3)所述adc位宽为12,在adc的数据存入所述缓存fifo时,每相邻两个adc数据拼接成三个字节,具体是:第n+1个adc数据的高8位存入fifo的第k+1个字节,第n+2个adc数据的高8位存入fifo的第k+2个字节,第n+1个adc数据的低4位存入fifo的第k+3个字节的高4位,第n+2个adc数据的低4位存入fifo的第k+3个字节的低4位。

2、在所述计算机上,需要准备上述所需软件,并实施如下操作:

(1)安装虚拟串口驱动;若虚拟串口识别,在pc的设备管理器的串口中会有显示,一般为“xxxvirtualcomport(comn)”,不同计算机的n值可能不同;

(2)打开虚拟串口,启动电路板,开始接收数据,软件会把数据存成二进制格式的文件;

(3)用matlab读取存储的数据:

单片机为12bitadc,为保证虚拟串口的最大数据传输量大于adc的采集的数据量,一方面控制adc的采样频率;另一方面,在通信板的程序中,对adc采集到的12bit的数据进行了拼接,取连续的两次adc值,分别取其高8位存在2个字节中,取两个值的低4位拼接成第三个字节。所以在matlab中需要对采集到的数据进行拆分,还原数据。

还原过程:matlab读取存储的数据字节存入数组中,从数组的第一个元素开始,取三个元素,对第一个元素乘16,取第三个元素的高4位即该元素除以16得整数商,两个相加就是第一个adc的值;取第二个元素乘16,加上第三个元素的低4位,就是第二个adc的值。之后每三个元素一组进行还原操作,就能还原adc的数据。如果还原过程的最后剩余字节不足3个,则直接在每个剩余字节的后面补4位零从而各形成一个12位的adc数据。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1