原创 学习Tcl(六)——串口操作

2008-8-20 21:25 6724 8 12 分类: FPGA/CPLD

在当前的工作中,我们通过串口向U-BOOT发送命令,通过md、mw命令读写CPU的外部总线实现对FPGA的参数配置。我们遇到的问题是:如何简便快捷地向U-BOOT传递大量的命令。在FPGA作为协处理器的系统中,这一问题是很普遍的。


可供选择的方案如下:


0. 一次性拷贝-粘贴大量的文本是HyperTerminal这样的串口调试工具不能支持的,手工粘贴5条以上的命令就令人难以忍受了,所以该方法不在考虑之列。


1. 采用U-BOOT提供的autoscr命令执行脚本,这一脚本可以通过U-BOOT的loadb命令下载到CPU的内存中。困难的是,.txt脚本必须通过随U-BOOT源码提供的mkimage工具编译(封装)为特定格式的文件才能被U-BOOT执行。 riple 咨询了我们的firmware工程师,结论是不安装Linux操作系统,是无法编译U-BOOT源码并获得mkimage工具的。对于我们这些hardware工程师来说,在Linux操作系统下搭建U-BOOT编译环境还是太奢侈了些;Cygwin又太寒酸了,编译U-BOOT还需要安装这样那样的package。


2. 通过U-BOOT的setenv命令设置自定义命令,然后通过run命令运行自定义命令。困难是,自定义命令的字节长度是有限制的。在我们的情况下,一条自定义命令只能包含不超过4条的mw命令。中等长度的脚本可以以这种方式执行,可是我们的脚本长度是超长的。


这么看来,通过U-BOOT是很难实现我们需要的批处理功能了。幸运的是,在同事的启发下, riple 用Tcl实现了对串口的操作。


 


在今天早上的一次“隔间探头会议”上,我的同事Jack提议道:为什么不用Tcl写一个程序把我们的脚本发送给CPU呢?Jack的想法是通过Tcl来控制HyperTerminal实现自动化的“拷贝-粘贴”。受到Jack的启发,我恍然大悟:为什么不用Tcl直接控制PC机的串口给CPU发送U-BOOT命令呢?这应该比控制HyperTerminal的图形界面要容易多了。


于是我赶紧到Tcl Developer Xchange上搜索了一下Serial Port,很容易就找到了几个例子。用了2个小时的时间,我终于用Tcl实现了一个简单的串口调试工具;最重要的是,这个工具还能读取.txt脚本文件,直接向CPU逐条发送U-BOOT命令。


有了这个工具,我们不但可以在调试阶段方便地执行脚本,尝试多种配置组合,还可以在内部测试阶段实现无人值守的批量硬件测试,实现自动化的板级验证。


 


硬件工程师需要多少掌握一点脚本语言——Matlab、Tcl、Perl都行。项目自动化不应该是软件工程师独享的特权。icon


 


相关链接:


用U-BOOT构建嵌入式系统的引导装载程序 (转载)


U-Boot Scripting Capabilities


Serial Port - wiki.tcl.tk


Tcl Built-In Commands - open manual page

文章评论6条评论)

登录后参与讨论

ash_riple_768180695 2009-2-26 22:32

如果你的板子上有MCU的话,用串口就行了。这样的工具很多的,不需要自己开发。

ash_riple_768180695 2009-2-26 22:31

Tk就是Tcl中用于开发图形界面的工具包(Tool Kit)。

coyoo 2009-2-26 13:24

另外,Tcl程序和TK程序有什么区别?

coyoo 2009-2-26 13:20

Hi Riple: 没错,就是像类似这样的。其实我的想法是这样的,项目需要随时更新FPGA的程序,所以设计中采用了USB或者232等(未定),通过主机将配置文件传到FPGA完成配置,当然板子上有mcu进行控制。 之前是用VC做过类似这样的应用程序,最近偶尔在拜读你的博文,就在想脚本是不是也可以?! PS:你的控制台怎么实现?

ash_riple_768180695 2009-2-24 20:39

是不是像这样的控制台。 http://blog.ednchina.com/riple/195144/message.aspx

coyoo 2009-2-24 19:17

请教一个问题: 用TCL可以编写类似用VB或者VC编写出来的应用控制台程序吗? 我在想用VC或者VB太麻烦了,假如TCL可以实现的话,就太方便了。 外来汉,对TCL不了解,所以有此一问。谢谢!
相关推荐阅读
ash_riple_768180695 2015-12-18 11:06
学习示例程序:FPGA快速系统原型设计--敏捷实践
        学习与开发板配套的示例程序,是敏捷实践的起点。示例程序是厂商针对开发板上提供的硬件资源和接口量身定做的工程,可以展示其FPGA芯片的功能和性能特点。从示例程序入手最大的好处就是:示...
ash_riple_768180695 2015-11-03 16:46
开发板选取:FPGA快速系统原型设计--敏捷实践
    既然是“实践”,就不能只谈编码和仿真,必须要上板运行、调试。这个虚拟项目的目标是实现一块兼容Intel82574L以太网控制器的千兆网卡,需要运行在一块具备PCIe接口和10/100/10...
ash_riple_768180695 2015-10-22 12:41
开篇:FPGA快速系统原型设计--敏捷实践
    虽然借用了 “系统原型开发”的标题,本系列文章将围绕FPGA IP级别的开发这个主题展开,如果可能的话,将扩展至FPGA System级别的开发。     先上一篇PPT:RSPwFP...
ash_riple_768180695 2013-08-26 10:21
学习SystemVerilog(二)——学习它的理由
    学习SystemVerilog的理由也很多,我在阅读SystemVerilog for Design 和 SystemVerilog for Verification两本书前言的过程中,总...
ash_riple_768180695 2013-08-26 10:19
学习SystemVerilog(一)——不学习它的理由
    想要学习SystemVerilog已经很久了。曾经尝试通过Accellera网站上给出的LRM学习,怎奈内容众多,找不出入手点和重点,只能望而却步。虽然手头有三本SystemVerilog...
ash_riple_768180695 2011-06-26 23:20
Hardware-Assisted IEEE1588 Implementation Analysis
06/18/11 11:00:05 PM         最近一段时间在研究IEEE1588-2008精确时间同步协议(PTP)。该协议可以在软件中实现,如果需要提高时间同步...
我要评论
6
8
关闭 站长推荐上一条 /2 下一条