DOL实例分析&编程

DOL实例分析&编程

实验任务

  • 修改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的源代码分析

  

以上源代码中定义了三个square模块,对于各个模块之间的连接已在课堂讲过,在此不赘述。

修改example2的源代码

实验只需要输出2个square模块,所以只需要把value的值改为2即可。
variable value="2" name="N"/

运行修改后的代码

运行指令为:sudo ant -f runexample.xml -Dnumber=2

成功截图

  • 在运行成功后,我们可以在dol/build/bin/main/example2的文件夹下,看到example2.dot文件。
  • 如果你的Ubuntu未安装打开dot文件的软件,双击该文件后会有对话框提示你安装类似软件,这里我安装了Xdot,安装指令为
    sudo apt-get install xdot
  • 安装成功后,我们就可以双击打dot文件了!
  • 最后截图为:

实验感想

此次实验比较简单,且实验课TA也详细分析了每个example中的源代码及其实现功能,实验做起来还是很快的,唯一遇到的问题就是在运行example1的时候没有先删除之前已经存在的example文件,该文件是在进行Lab1的时候为了测试配置环境是否成功而留下的文件,若不删除则会有Build Failed的提示,删除后就可以完美运行了。

你可能感兴趣的:(嵌入式系统入门)