关于本次实验

来自论文:《Trusted-DNN: A TrustZone-based Adaptive Isolation Strategy for Deep Neural Networks》

项目的gitee代码地址

Ubuntu上运行

编译op-tee

首先要去op-tee官方文档安装依赖,相当多,略慢(取决于网速)。

学长的项目之中的编译过程如下:

1
2
3
4
5
$ repo init -u https://github.com/OP-TEE/manifest.git -m qemu_v8.xml
$ repo sync
$ cd build
$ make toolchains
$ make run

有几个问题:

  1. repo大概率不好用,即使挂着梯子也无法下载。这时候需要换源。可供参考的方法

  2. repo sync开始需要挂梯子运行,而且需要编译的包比较大,下载也许需要2-5G的流量,如果是梯子要提前看好。

  3. 第一条命令如果想要指定OP-TEE的版本,可以指定指定分支。具体可以看这里有指定版本的命令。不过我个人用的最新版本命令,也没事儿。

  4. 可以使用 -j 命令,但是我个人并不建议,因为在编译过程中很容易出问题,使用了这个命令很难确定到底断在哪里以及出了什么问题。

  5. 如果不能科学上网需要自己下载每一个包然后手动编译,比较麻烦,还是尽量找梯子。

  6. make run 的运行速度极慢,我的电脑大概跑了5H才跑完,再加上前面的试错时间,难蚌。。。

运行程序

本项目的代码,之下的很多子目录并不能同时编译,只能一次运行一个。操作很简单,就是把程序放到examples之下然后重新make run,这次就快了。

关于数据集

首先,需要自己下载Tiny ImageNet数据集。然后自行下载 alexnet人家训练好的参数。然后运行tools里的程序做好划分。

然后,重点来了,如何上传数据集:

项目地址之下的方法貌似并不好用,至少和我这个最新的optee和qemu不太匹配,更好的方法是参考这个仓库

直接把数据集拷贝到out-br/target/root之下。

但是我遇到的问题是一旦数据集和参数超过了467MB就不成功了,因此只进行了压缩以后的参数进行实验。

一旦超过467MB提示如下:

1
[ end Kernel panic - not syncing: VFS: Unable to mount root fsunknown-block(0,0) -]

而通过df -h命令查看的结果如下:

1
2
3
4
5
Filesystemdevtmpfs Size       Used       Available       Use% Mounted on
devtmpfs 474.3M 0 474.3M 0% /dev
tmpfs 498.4M 0 498.4M 0% /dev/shm
tmpfs 498.4M 40k 498.4M 0% /tmp
tmpfs 498.4M 16k 498.4M 0% /run

看起来我的数据集和参数加在一起只有467MB的时候应该还可以,不知道为什么会有这个问题。

此问题暂时无解。

整体情况

由于数据集的图片过多,因此在重新 make run 之后,编译速度还是比较慢,应该是有一些链接的过程,导致的特别慢。因此需要等待。

最后就可以顺利跑起来了。

树莓派

首先,我拿到的是树莓派3B+。

硬件安装步骤基本上看官网就好,B站也有。其实就两步,一是贴散热片,二是安装到亚克力板子里(这玩意儿到底咋拆啊)。

格式化原来的SD卡

我拿到的SD卡里面有人家之前的系统,要先格式化。

确实遇到了一些小问题,就是插上卡以后并不是一个16G的盘,而是一个2G和一个260MB的盘。。。

然后我使用的是这个教程:此处是一个格式化教程

注意,无论是使用工具还是命令,格式化都万分危险!务必谨慎,并做好数据备份,不然万劫不复!

然后顺利格式化,终于看到了一个14.8G大小的盘了:)

理论上树莓派自己的官方烧录镜像软件也会替你格式化,但是据说有风险hhh

烧录镜像

主要过程来自这个参考

在探索的过程中发现有个更好玩儿的?这个没进行尝试,未来有时间可以看看。

烧录镜像直接采用 Raspberry Pi Imager

默认镜像,烧录很快,大概一刻钟就完成了。

遇到问题1