Firefly-RK3399刷ubuntu系统

到官方提供的度盘里,在Firmware目录下,下载ubuntu的镜像,解压后得到后缀为.img的文件,比如Firefly-RK3399_xubuntu1604_201711301130.img

再在度盘的Tools目录下,下载AndroidTool,解压后,再解压里面的DriverAssitant,将type-c线接上电脑和板子,运行DriverAssitant,安装电脑端驱动。type-c线不要拨,按住板子的RECOVERY键,再点击RESET键重启,电脑端以管理员方式运行AndroidTool,会显示板子为Loader状态,点击“升级固件”tab页,“固件”按钮选择刚下载并解压的Firefly-RK3399_xubuntu1604_201711301130.img,再点击“升级”按钮,就进入刷机流程。

等自动刷完,会自动重启板子,接着HDMI接口的显示器会过好长一段时间后看到ubuntu桌面。

PS:不要以为AndroidTool名字里含有Android就以为这只能刷安卓的系统。

tensorflow contrib cannot import name rnn

1
2
3
4
5
6
7
8
9
>>> from tensorflow.contrib import rnn
ImportError: cannot import name rnn
 
>>> import tensorflow as tf
>>> from tf.contrib import rnn
ImportError: No module named tf.contrib
 
>>> print tf.__version__
0.8.0

表示tensorflow的装的版本太低了,至少要装0.9.0版,比如装这个版本:

1
2
3
4
5
6
7
$ pip uninstall tensorflow
 
# Ubuntu/Linux 64-bit, CPU only, Python 2.7
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.9.0-cp27-none-linux_x86_64.whl
 
# Python 2
$ sudo pip install --upgrade $TF_BINARY_URL

详情见:https://stackoverflow.com/questions/38386824/how-to-update-tensorflow-to-support-tf-contrib

再一点,新版的tensorflow只支持python3了,所以其实最简单的装tensorflow的方法是:

1
2
3
apt install pip3
 
pip3 install tensorflow

cmake增加调试选项

1
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g")

指定安装路径

1
cmake -DCMAKE_INSTALL_PREFIX=path_to_install -DCMAKE_BUILD_TYPE=Release
1
set(CMAKE_INSTALL_PREFIX path_to_install)

明明有so却ldd没有

是因为少了这个命令:

1
export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH

include_directories clean 清空

1,如果include_directories(dirA)写在add_subdirectory(dirB)之前,dirB目录的CMakeLists.txt会继承dirA的值。

2,如果include_directories(dirA)写在add_subdirectory(dirB)之后,dirB目录的CMakeLists.txt会不继承dirA的值。

所以所谓清空就是用方法2了。

cannot open shared object file

1. setup LD_LIBRARY_PATH

1
export LD_LIBRARY_PATH=/where/you/install/lib:$LD_LIBRARY_PATH

2. modify /etc/ld.so.conf,add /where/you/install/lib, then

1
sudo ldconfig

cmake 显示编译命令

1
make VERBOSE=1

或者CMakeLists.txt中加上:

1
set(CMAKE_VERBOSE_MAKEFILE ON)

用tar备份linux文件系统

1
2
cd /
tar cvpjf backup.tar.bz2 --exclude=/proc --exclude=/lost+found --exclude=/backup.tar.bz2 --exclude=/mnt --exclude=/sys /

制作rootfs.img

1
git clone https://github.com/friendlyarm/debian_nanopi2

在debian_nanopi2目录内新建rootfs目录,将一个已经装好程序的板子里所有文件及目录打包,方法见:

用tar备份linux文件系统

再解压到此rootfs目录,再执行build.sh,它会调用debian_nanopi2/tools/make_ext4fs生成rootfs.img

由于make_ext4fs为32位的,可能系统为64位,则要安装32位支持库:

1
2
3
4
apt-get install lib32ncurses5
apt-get install lib32z1
apt-get install libstdc++6
apt-get install lib32stdc++6

生成rootfs.img后,则可以替换eflasher img里的对应文件,再刷机。详情见:

http://wiki.friendlyarm.com/wiki/index.php/EFlasher/zh

但是,此wiki页面中提供的刷机包有可能存在问题,可以直接下官方百度盘里的刷机包,比如:

https://pan.baidu.com/s/1kVySP6Z/#list/path=%2FFriendlyARM-S5P6818

里面的s5p6818-eflasher-sd8g-20171102-full.img.zip,在Windows里,刷到SD卡后,安全卸载SD卡,再插上,直接把做好的rootfs.img替换SD卡的fat分区里的对应文件就可刷机了。

此方法适用于nanopc t2和nanopc t3。