Atlas 200 DK 系列 -- 快速搭建开发环境

一 、PC虚拟机上安装Ubuntu

(系统版本为(ubuntu-16.04.3-desktop-amd64.iso),与版端系统版本必须对应(ubuntu-16.04.3-server-arm64.iso))
       1.在Pc机上安装完ubuntu系统

虚拟机的安装以及ubuntu的具体操作,就不描述了,网上很多。注意修改一下内存。
         弹出系统更新时,请选(Don't Upgrade)不更新,然后点击ok,如下两图所示: 

       


       
       2.更改国内软件源:
           打开火狐浏览器,在百度上输入“ubuntu源”找到链接  “ubuntu 16.04 几个国内更新源-bovenson-博客园”, 进入
        "https://www.cnblogs.com/bovenson/p/5752213.html"
        选择 “清华大学” 下所有源链接,复制

        然后进入 ubuntu打开终端,命令输入:
            
            ascend@ubuntu:~$ sudo passwd root   ###修改密码
            ascend@ubuntu:~$ su - root
            root@ubuntu:~# apt-get install vim  ## vim
                         
            root@ubuntu:~# cd /etc/apt
            root@ubuntu:/etc/apt# ll

            root@ubuntu:/etc/apt# vim sources.list      # 插看软件源列表

            root@ubuntu:/etc/apt# >sources.list         # 清空软件源
            root@ubuntu:/etc/apt# vim sources.list 
            ---> 按i键切换到编写模式:将清华大学软件源或者其他的比如说阿里云的都可以,复制链接粘贴,按Esc切换到命令模式,保存退出:wq!

            root@ubuntu:/etc/apt# apt-get update         # 刷新软件源列表
            root@ubuntu:/etc/apt# exit                   # 退出root用户
            
       3.安装Goole chorme(Mind Studio只能在这个浏览器上访问)
        对于谷歌Chrome32位版本,使用如下链接:
        wget https://dl.google.com/linux/direct/google-chrome-stable_current_i386.deb
        对于64位版本可以使用如下链接下载:
        wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb 
        下载完后,运行如下命令安装。
        
        可以先下载好,这里下载的是64位版本的,放在指定的文件夹,切换到Downloads
            ascend@ubuntu:~$ cd Downloads/
            ascend@ubuntu:~/Downloads$ sudo dpkg -i google-chrome* 
            ascend@ubuntu:~/Downloads$ sudo apt-get -f install   #常见的修复安装命令

二、 在PC上安装Mind Studio
   a.安装Mind Studio前的准备
       1、配置Mind Studio安装用户权限
            ascend@ubuntu:~$ su - root  ###进入root
            
            root@ubuntu:~# cd /etc
            root@ubuntu:/etc# ll
                        
            root@ubuntu:/etc# ll sudoers  ###查看其读写权限,只有读权限


                        
            root@ubuntu:/etc# chmod u+w /etc/sudoers  #赋予读写权限

            root@ubuntu:/etc# vim /etc/sudoers
            
            添加:
            ascend ALL=(ALL:ALL) NOPASSWD:SETENV:/usr/bin/apt-get
            注意:请确保“/etc/sudoers”文件的最后一行为“#includedir /etc/sudoers.d”,如果没有该信息,请手动添加
            按下Esc切换到命令模式,执行:wq!命令保存文件并退出

            root@ubuntu:/etc# chmod u-w /etc/sudoers  ###写权限改回
            
            root@ubuntu:/etc# ll sudoers  ###查看其读写权限,只有读权限

            root@ubuntu:/etc# exit   ###回归普通用户
   
        2、安装依赖(安装之前,确保软件源已经更改好)
           1)安装Mind Studio相关依赖(注意实践证明,网络配置模式在NAT模式,也就是默认的模式,非桥接模式,否则很难下载,出现网络下载不了的问题)
           ascend@ubuntu:~$ sudo apt-get install gcc g++ cmake curl libboost-all-dev libatlas-base-dev unzip haveged liblmdb-dev python-skimage python3-skimage python-pip python3-pip libhdf5-serial-dev libsnappy-dev libleveldb-dev swig python-enum python-future make graphviz autoconf libxml2-dev libxml2 libzip-dev libssl-dev sqlite3 python

如图所示:

正常情况是所有都为0,这里是有555个软件未升级。如果报错如下:

             0 upgraded, 0 newly installed, 0 to remove and 555 not upgraded

              解决方法:

                   ascend@ubuntu:~$ sudo apt-get dist-upgrade  # 更新软件,这又是一个漫长的等待。。。。。
           2)安装openJDK
            a. ascend@ubuntu:~$ sudo apt-get install -y openjdk-8-jdk
            
            b. 配置JAVA_HOME环境变量,Mind Studio的安装及运行都依赖该环境变量,设置方法如下
                a.打开.bashrc文件
                  ascend@ubuntu:~$ vim ~/.bashrc 
                
                b.打开.bashrc文件后,在末尾添加:(shift+g可以将光标移动到最下面,o可以另起一行)
                    export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 
                    export PATH=$JAVA_HOME/bin:$PATH

如下图所示:                 
                按下Esc,执行:wq!命令保存文件并退出
                
                c.使环境变量生效
                  ascend@ubuntu:~$ source ~/.bashrc  
                 
                d.检查环境变量设置
                  ascend@ubuntu:~$ echo $JAVA_HOME   
                       # 回显信息如下:
                       /usr/lib/jvm/java-8-openjdk-amd64


                       
                e.检查JDK安装
                  ascend@ubuntu:~$ which jconsole     # which查看可执行文件在哪
                       # 如果输出如下回显信息表示安装成功,如果未输出如下回显信息表示JDK安装失败:  
                      /usr/lib/jvm/java-8-openjdk-amd64/bin/jconsole


    b.开始安装Mind Studio
      创建ascend目录,子目录mksd下拷入安装所需文件:./1.3.0.0/下所有文件,

        ascend@ubuntu:~$ cd /home/ascend/mksd
        ascend@ubuntu:/home/ascend/mksd$ unzip mini_mind_studio_Ubuntu.rar./instal
      
      给当前用户添加root权限
        ascend@ubuntu:/home/ascend/mksd$ su root
        root@ubuntu:/home/ascend/mksd# ./add_sudo.sh ascend  ##添加权限

        root@ubuntu:/home/ascend/mksd# exit ##回归普通用户

        ascend@ubuntu:/home/ascend/mksd# vim env.conf  ##修改本机ip为 127.0.0.1(我的本机Ip:192.168.15.173,这里的地址用来访问MindStudio的地址) 其他不变

        ascend@ubuntu:/home/ascend/mksd# ./install.sh  ###会提示安装成功

最后改一下适配器中的网络连接,经过实践证明,在安装的过程中不要设置网络适配器,否则无法获得vim,或者其他的一些依赖,将“NAT模式”改为“桥接模式”,如图:


三、 制卡:
    准备工作:
       需要: make_sd_card.py 和make_ubuntu_sd.sh
       相关安装包:mini_developerkit-1.3.T34.B891.rar   , ubuntu-16.04.3-server-arm64.iso
    
    1. 把卡插进读卡器,把读卡器插进PC里

    2. 安装依赖包:(其实就是搭建环境)
    命令如下:
        ascend@ubuntu:~$ su root   ###进入root

        root@ubuntu:~#apt-get install qemu-user-static binfmt-support python3-yaml gcc-aarch64-linux-gnu g++-aarch64-linux-gnu
                    
        root@ubuntu:~#cd /home/ascend/

        root@ubuntu:/home/ascend/#fdisk -l   ###查找sd卡在哪个环境下

        root@ubuntu:/home/ascend/#python3 make_sd_card.py local /dev/sdb 
        
        输出成功信息: Make sd card successfully
    
    3. 把卡拔出来,插到开发板上


四、连接并启动开发板
    1、开发板连接宿主机
       两种连接方式:usb连接和网线连接,二者选其一,网线连接设为麻烦了些。
       1) usb连接:  

typc1接口是重接口,不支持odg的,所以这个开发板只能作为重设备来使用。(不了解这个概能的,可以去了解一下usb协议基础)

开发板与宿主机走的是USB虚拟网卡的连接方式,也就是说,当开发板开机,与宿主机连接好了之后,它会在宿主机上创建一个usb的虚拟网卡,此时这个usb虚拟网卡是没有地址的,也没有动态ip,开发板和宿主机还没有连接,而我们要做的就是给这个宿主机的usb虚拟网卡分配一个静态IP,这个虚拟网卡和开发板都有了ip地址之后,就可以连接了。注意这两个ip需要和开发板在一个网段。
       下载:configure_usb_ethernet.sh

脚本自动化执行方式
       ascend@ubuntu:~Downloads$ su root   ###进入root
       root@ubuntu:/home/ascend/Downloads# bash configure_usb_ethernet.sh  -s 192.168.15.175  # 配置结束

 如果直接执行(bash configure_usb_ethernet.sh)的话,脚本会给虚拟网卡默认分配一个192.168.15.166。如果pc上有了这个ip地址已经存在,就会造成地址冲突,所以添加 -s 192.168.15.175来添加自己选定的ip地址。

       root@ubuntu:/home/ascend/Downloads# ifconfig   # 看一下ip地址。

       root@ubuntu:/home/ascend/Downloads#  ssh [email protected]     # 验证一下与开发板的连接
  手动执行方式

       ascend@ubuntu:~Downloads$ su root   ###进入root

       ascend@ubuntu:/home/ascend/Downloads$ ifconfig    # 获取一下usb网卡名

            进入interfaces,添加虚拟的静态IP:
           root@ubuntu:/home/ascend/Downloads#  vim /etc/network/interfaces
           配置interfaces文件,例如添加一个 ens160u4u1 的静态IP为 192.168.15.175,配置方法如下
            auto lo
            iface lo inet loopback
            auto ens160u4u1

            iface ens160u4u1 inet static

           address 192.168.15.175
            netmask 255.255.255.0

           修改“NetworkManager.conf”文件,避免重启后网络配置失效:
            root@ubuntu:/home/ascend/Downloads#  vim /etc/NetworkManager/NetworkManager.conf
           修改文件中的“managed=false”为“managed=true”

         root@ubuntu:/home/ascend/Downloads# service NetworkManager restart  //Ubuntu Server版本,此步骤请忽略

        root@ubuntu:/home/ascend/Downloads# ifconfig   # 看一下ip地址


       

       验证一下是否能连接开发板

       root@ubuntu:/home/ascend/Downloads# ssh [email protected]

2) 网线连接:
       开发板静态IP地址:192.168.15.167  ,在宿主机上配IP也就只能192.168.15.X, 这个地址不能在宿主机上配置192.168.15.167
       配置如下:
       a. ascend@ubuntu:~$ su - root
       b. 进入interfaces,添加虚拟的静态IP:
        root@ubuntu:~# vim /etc/network/interfaces
           配置interfaces文件,例如添加一个 eth0 :1的静态IP为 192.168.15.175,配置方法如下
            auto eth0:1
            iface eth0:1 inet static
            address 192.168.15.175
            netmask 255.255.255.0


      c.修改“NetworkManager.conf”文件,避免重启后网络配置失效:
        root@ubuntu:~# vim /etc/NetworkManager/NetworkManager.conf
        修改文件中的“managed=false”为“managed=true”


        
       d.重启网络相关服务
        root@ubuntu:~# service networking restart
        root@ubuntu:~# service NetworkManager restart  //Ubuntu Server版本,此步骤请忽视

       e.验证一下是否能连接开发板

       root@ubuntu:~# ssh [email protected]
    

如果你在制卡的时候用的机器,就是你制卡用的机器就是装MindStudio用的机器的话,到这步就算是彻底完成了。
    2、配置交叉编译环境(可选的)
       使用Atlas 200 DK进行应用程序开发前,用户需要在Mind Studio所在的Linux服务器中配置交叉编译环境。
       如果制作SD卡的Ubuntu服务器即为Atlas 200 DK开发者板连接的Mind Studio所在的服务器,则本节可以跳过。制作SD卡时,会自动为当前制卡的Ubuntu服务器部署交叉编译环境
       如果制卡用的机器就是安装MindStudio的机器,就不需要配置交叉编译环境
       amd64是基于X86架构的。
       MindStudio的编译-执行-应用,其实就是在宿主机上把代码编译成二进制,然后把编译好的二进制和各种库等资源推送到开发板上,最后在开发板上把这个应用拉起来。
       在X86的系统上编了arm的代码,原因在于:在宿主机上配好了一个arm的编译环境,配置编译环境的过程就叫配置交叉环境。

        make_ui_cross_env.py
       操作步骤如下:
       a. 下载,获取配置交叉编译环境脚本“make_ui_cross_env.py”上传到Mind Studio所在服务器任一目录,例            如/home/ascend/Downloads,切换到Downloads
           ascend@ubuntu:~/Downloads$ ll
           
       b. 切换到root用户下
           ascend@ubuntu:~/Downloads$ su - root  
           
       c. 执行如下命令安装pexpect,用于实现SSH自动交互
           root@ubuntu:/Downloads# pip3 install pexpect
           
       d. 执行配置交叉编译环境的脚本(必须把开发板连上,要联网,否则无法下载编译器)
           root@ubuntu:/Downloads# python3 make_ui_cross_env.py 
    
       会提示输入如下信息:

        Atlas DK Development Board IP: Atlas 200 DK开发者板的IP地址。(本文的是:192.168.15.167)

        Atlas DK Development Board SSH user:Atlas 200 DK开发者板的SSH登录用户名,请配置为普通用户,默认用户为HwHiAiUser。

        Atlas DK Development Board SSH user password: Atlas 200 DK开发者板的SSH登录用户的密码。

        Atlas DK Development Board SSH port:Atlas 200 DK开发者板的SSH端口号,默认为22。

        如果下载过程中卡死了,就重新打开一个终端,输入ifconfig,检查一下开发板IP地址是不是掉了,如果掉了,就执行service NetworkManager restart。然后再重新跑一下交叉编译环境脚本,命令如下:root@ubuntu:/Downloads# python3 make_ui_cross_env.py 

    

注意本文的3个IP地址,这地址根据自己实际情况调整,但注意一下,必须在同一个网段:

本机:192.168.15.173  ----》在谷歌浏览器登入mindstudio时,需要用到,注意是你宿主机的ubuntu系统下的IP地址

开发板:192.168.15.167

如果是网线连接,上面两个就可以!

虚拟网卡:192.168.15.175  宿主机的ubuntu系统下的虚拟网卡,这是与开发板连接的虚拟网卡的IP地址

3、常见问题总结
        1. 需要确认开发者板的版本的一致性
            首先,在MindStudio -About -Version确认
            其次,确定开发者板上的版本。
            操作:以HwHiAiUser用户ssh登录到开发者板,然后切换到root用户。
            键入 ssh [email protected]
            执行如下命令查看开发者板的Ascend 310软件升级后的版本号。
            cat /etc/sys_version.conf
            切换到root用户。
            su - root
            进入firmware目录。
            cd /var/davinci/firmware/
            执行如下命令查询firmware的系统版本号。
            ./upgrade-tool --device_index -1 --system_version
            执行如下命令查询firmware的组件版本号。
            ./upgrade-tool --device_index -1 --component -1 --version

        2. 网络断了

           终端输入:ifconfig

                               service NetworkManager restart  # 重启网络

                               ifconfig

        4. 修改ip地址


        5. chrome 输入https://192.168.15.xxx:8888登录Mindstudio 网络链接失败   
            首先确认,ssh是否可以登录板端,如果不可以,重新设置IP等操作:
            (vi /etc/network/interfaces   
            vi /etc/NetworkManager/NetworkManager.conf
            service networking restart
            service NetworkManager restart );
            如果可以,执行下一步确认。
            其次确认,chrome浏览器可以打开类似百度网页,如果不可以,重启Network等网络服务;
            如果可以,执行一步。
            最后,在tools/bin文件夹下 执行./stop.sh 之后 再执行./start.sh,若还是不成功,两个配置ip的文件需要检查,把ip都改成现在的ip,两个文件分别是tools-covf-env.conf,tools-script-env.conf,这里的ip地址需要和chorme里输入的一样,如果还是不成功,出现这样的界面错误:

点击Advanced之后,进入下一个界面,再点击那个“not sercure”,成功的标志如下:

        3. 配置交叉编译器出现编译失败
            首先确认下载的脚本文件make_ui_cross_env.py是否正确。
            建议使用linux命令下载:wegt https://xxxxxxxxxxxxxxx
                        更改过下载源后,速度和下载后的文件稳定性更好,
            windows下下载的东西存在解压失败,以及解压出的文件大小和原文件不一致等情况。

欢迎大家加入一起学习讨论,有错误的地方请大家留言指出。

最后留个学习视频的链接:昇腾开发者社区 - 华为  https://ascend.huawei.com/Institute/0

猜你喜欢

转载自blog.csdn.net/SMF0504/article/details/103068481