riple

Stay Hungry, Stay Foolish.

Avalon-Microsequencer简单汇编器的实现方案

0
阅读(2138)

在前面的日志里,我介绍了Avalon-Microsequencer这一简单的CPU,还介绍了用Virtual JTAG实现的Avalon-MM总线主控制器。

这两个Avalon-MM总线主控制器都可以比较方便地实现对Avalon-MM总线的简单操作,这两个主设备都给Avalon-MM总线的开发引入了较佳的可控性。

但是,这两个工具也有本质上的区别:Avalon Vjtag Master采用交互式的程序输入,操作序列是由操作者一句一句逐个输入的,灵活,但是速度慢,不具有可重复性,更适合调试使用;Avalon- Microsequencer采用预存储式的程序输入,操作序列是预先定义在程序ROM中的,速度快,可重复性好,适合用于最终的产品中,但是灵活性稍差,代码修改起来不方便,而且需要手工编写二进制代码。

这些天我一直在想,能不能把这两个工具联合起来使用,把Avalon Vjtag Master调试成功的操作直接用于Avalon-Microsequencer的程序输入,把二者的优点结合起来。

具体的做法是,在Avalon Vjtag Master的Tcl程序中加入操作记录功能,把手工输入的操作命令记录到一个文件中(汇编语言文件),然后把这个文件用Tcl转化为Avalon- Microsequencer的ROM初始化文件(二进制文件),该文件就可以用来初始化Avalon-Microsequencer的ROM,实现调试操作向实际应用的自动转化,还可以避免手工汇编的麻烦。

进一步,还可以改进现有的Avalon Vjtag Master的Tcl程序,实现批量执行汇编语言文件的功能,以验证记录的操作序列或手工编写的操作序列;还可以通过上述的汇编程序,把手工编写的经过验证的汇编语言文件自动转化为Avalon-Microsequencer的可执行二进制文件,用于最终产品。

这样一来,Avalon Vjtag Master可以直接执行、调试汇编语言文件;而Avalon-Microsequencer可以利用调试的成果,获得可执行二进制文件。通过一系列的 Tcl程序,这两个工具的操作流程就自动化地联系起来了,从而避免人为的失误。

为了实现上述目标,需要完成三个基本Tcl程序:

1. Avalon Vjtag Master命令行操作序列记录程序。

2. Avalon Vjtag Master汇编语言文件直接执行程序。

3. Avalon Vjtag Master汇编语言汇编程序。

上述三个Tcl程序还只是完成了基本的操作框架,为了提高这一开发流程的实用性,还需要逐步加入如下几个功能:

1. 汇编语言注释添加的功能。

2. 支持Avalon-Microsequencer的循环和跳转指令。

3. 待定。

Baidu
map