实验任务
- 修改dol文件中的example2,让3个square模块变为2个。
- 修改dol文件中的example1,使其输出3次方数。
实验注意事项
- 修改代码后要重新编译,首先进入dol目录下:
cd dol
- 进行编译:
ant -f build_zip.xml all
实验步骤
对example1的源代码分析
在example1中定义了一个平方进程,具体代码如下:
if (p->local->index < p->local->len) { DOL_read((void*)PORT_IN, &i, sizeof(float), p); i = i*i; DOL_write((void*)PORT_OUT, &i, sizeof(float), p); p->local->index++; }
首先是对判断条件的分析,p->local->index是指当前的位置,该值被初始化为0;p->local->len为生产者的长度,若满足当前位置小于生产者的长度,则对变量i进行平方运算。
修改example1源代码
实验要求输出位i的三次方,所以我们只需要在i平方的基础上再乘以i即可,修改代码如下:
i=i*i*i
进行编译并运行修改后的代码
- 这里需要注意一点,在运行修改后的代码前,首先需要删除main文件夹下的已存在的example文件,该文件的具体目录为
dol/build/bin/main
; - 删除后进行编译,编译指令已在实验注意事项中说明;
- 运行修改后的代码,需要先进入文件所在目录,指令为
cd dol/build/bin/main
运行example1,指令为sudo ant -f runexample.xml -Dnumber=1
从上图结果可以看到,生产者长度为20,输出了0-19每个数的三次方。
接下来分析并实现example2。
对example2的源代码分析
<variable value="3" name="N"/>
以上源代码中定义了三个square模块,对于各个模块之间的连接已在课堂讲过,在此不赘述。
修改example2的源代码
实验只需要输出2个square模块,所以只需要把value的值改为2即可。
variable value="2" name="N"/
运行修改后的代码
运行指令为:
sudo ant -f runexample.xml -Dnumber=2
- 这里需要注意一点,在运行修改后的代码前,首先需要删除main文件夹下的已存在的example文件,该文件的具体目录为
- 在运行成功后,我们可以在
dol/build/bin/main/example2
的文件夹下,看到example2.dot
文件。 - 如果你的Ubuntu未安装打开dot文件的软件,双击该文件后会有对话框提示你安装类似软件,这里我安装了Xdot,安装指令为
sudo apt-get install xdot
- 安装成功后,我们就可以双击打dot文件了!