海思开发记录(一):3559A开发环境搭建

说明

这次安装的是Ubuntu14.04-64位系统,没有选择装虚拟机,而是物理机单系统
因为在另一台电脑上,不方便截图,所以只记录重点

启动u盘制作

系统镜像获取:http://mirrors.aliyun.com/ubuntu-releases/
u盘烧录工具:https://rufus.akeo.ie

镜像选择为14.04 64位系统,桌面版(而不是服务器server版本,server版本试过安装不成功)
0

将系统ISO文件烧录到u盘
1

系统安装

重启后进入BIOS,修改启动优先级,选择u盘启动
安装过程可以参考:https://blog.csdn.net/whitefish520/article/details/103850361
安装过程中,选择格式化整个硬盘,并且语言最好是选择英文

安装完成后的配置

修改镜像源

进入系统后,在右上角的下拉菜单中,选择系统设置system setting,然后选择software & updates
在download form后选择other,找到china,选择阿里云mirrors.aliyun.com

界面调整为中文

选择设置中的language support
具体步骤可以参考:https://blog.csdn.net/whitefish520/article/details/103850361

更新软件

在终端terminal中执行
sudo apt-get update
sudo apt-get upgrade
前者完成检查,后者完成下载更新

设置静态IP

sudo vi /etc/network/interfaces
在末尾添加如下内容,ip、网关和掩码,要改成自己需要的
auto eth0
iface eth0 inet static
address 172.20.10.128
netmask 255.255.255.0
gateway 172.20.10.2
dns-nameservers 180.76.76.76

重启网络服务
sudo /etc/init.d/networking restart

查看IP:ifconfig -a

重启网络服务失败的解决办法:https://www.cnblogs.com/siikee/p/4193922.html
sudo ifdown -a
sudo ifup -a

配置ssh服务

安装:sudo apt-get install openssh-server
修改配置:sudo gedit /etc/ssh/sshd_config
PermitRootLogin prohibit-password 更改为 PermitRootLogin yes
重启服务:sudo service ssh restart
接下来,选择在Windows端,利用ssh协议远程登陆进行操作(推荐使用secureCRT),这样方便后面的配置进行复制粘贴

解决VI中方向键乱码

sudo apt-get install vim
安装vim即可解决

设置VI的风格

sudo vim /etc/vim/vimrc
打开vim配置文件,在末尾加上如下内容

set number             "显示行号
set showmode            "底部显示当前模式
set mouse=a             "鼠标有效
set encoding=utf-8      "utf-8编码
filetype indent on      "文件类型检查
set autoindent          "自动缩进
set cursorline          "所在行高亮
set textwidth=80        "设置行宽80个字符
set showmatch           "自动匹配括号
set hlsearch            "高亮搜索结果
set nobackup            "不创建备份文件
set noswapfile          "不创建交换文件
set undofile            "保留撤销历史
set autochdir           "自动切换工作目录
set noerrorbells        "出错时不要叫
set history=1000        "历史操作次数1000
set autoread            "自动监视
set wildmenu            "自动补全

设置root密码

sudo passwd
输入root用户密码即可,新安装的没有root密码,如果该某些内容出错,可能无法恢复,只能开机后进入单用户模式恢复
本次设置密码为123456

设置sudo不需要密码

查看配置文件权限:ls /etc/sudoers -l
发现为只读,给它的用户加上写权限:sudo chmod u+w /etc/sudoers
再次查看权限:-rw-r-----,发现多了写权限

打开配置文件:sudo vi /etc/sudoers
对应位置修改为如下内容
%admin ALL=(ALL) NOPASSWD:ALL
%sudo ALL=(ALL:ALL) NOPASSWD:ALL
之前改过的权限改回只读:sudo chmod u-w /etc/sudoers

配置samba服务

安装samba:sudo apt-get install samba samba-common
创建要共享的目录:sudo mkdir 你的目录
修改目录权限:sudo chmod 775 你的目录
修改samba配置文件:vi /etc/samba/smb.conf
在max log size 1000下面一行,增加security = user
在文件末尾,增加
[你的目录名]
path = /home/你的用户名/你的目录名
browseable = yes
writable = yes
valid users = glx
public = yes
available = yes

设置samba密码:sudo smbpasswd -a 你的用户名
win10访问不了samba的,可以参考:https://jingyan.baidu.com/article/7c6fb428d62a6e80642c90cc.html
重启samba服务:sudo service smbd restart

在Windows端映射驱动器:我的电脑-映射网络驱动器
输入:\192.168.10.101\share
这里的ip就是Ubuntu机器IP,后面跟的是你的samba目录名
使用其它凭据连接,输入账号密码,并勾选记住凭据
如果遇到权限问题,可以暴力一点修改目录权限
sudo chmod 777 你的目录 -R

配置NFS

安装nfs服务器:sudo apt-get install nfs-kernel-server
安装nfs客户端:sudo apt-get install nfs-common
创建NFS目录:sudo mkdir 你的目录
修改设置:vi /etc/exports,最后一行添加
/home/用户名/nfs目录名 *(rw,sync,no_root_squash,no_subtree_check)
重启服务:
sudo service rpcbind restart
sudo /etc/init.d/nfs-kernel-server restart
检查是否配置成功:showmount -e

配置TFTP

创建工作目录,在根目录创建tftp文件夹:sudo mkdir /tftpboot
给这个目录权限777:sudo chmod 777 -R /tftpboot
安装tftp:sudo apt-get install tftpd tftp xinetd
修改配置文件:sudo vim /etc/xinetd.d/tftp

service tftp                                                                    
{
        protocol        = udp
        port            = 69
        socket_type     = dgram
        wait            = yes
        user            = nobody
        server          = /usr/sbin/in.tftpd
        server_args     = /tftpboot
        disable         = no
}

修改配置文件:sudo vim /etc/inetd.conf
找到tftp dgram dup wait nobody ...字样的内容,用 # 屏蔽掉,复制一行到下面,末尾的目录改成自己的
2

这里不建议全部手打,tab和空格好像对它有影响,我手打和它一模一样,仍然无法下载
3

查看/var/log/syslog,发现如下语句,我推测是因为修改了vim的vimrc文件,导致空格和tab对tftp程序读取配置文件造成影响

Jun 10 11:28:22 zigsunHI tftpboot[2436]: connect from 127.0.0.1 (127.0.0.1)
Jun 10 11:28:22 zigsunHI tftpboot[2436]: error: cannot execute /usr/sbin/in.tftpd /tftpboot: No such file or directory

重启服务:sudo /etc/init.d/xinetd restart
测试:在不同于tftpboot的目录下执行:
tftp 127.0.0.1
tftp> get test.c
tftp>q

桌面UI开机时打开num_lock

桌面ui开机时无法输入数字,得打开num_lock

sudo apt-get install numlockx
sudo vim /etc/rc.local

在最后一行exit 0前增加一下内容

if [-x /usr/bin/numlockx ]; then
numlockx on
fi

配置默认使用 bash

执行 sudo dpkg-reconfigure dash 选择 no

安装软件包

执行:sudo apt-get install make libc6:i386 lib32z1 lib32stdc++6 zlib1g-dev libncurses5-dev ncurses-term libncursesw5-dev g++ u-boot-tools:i386 texinfo texlive gawk libssl-dev openssl bc

注意这是一行,如果因为其它的原因导致了换行,会导致部分软件安装失败,请在文本编辑器中将它整合到一行后,再去执行安装

其它配置

创建/etc/ld.so.preload 文件,并修改权限为777
并执行 echo “” > /etc/ld.so.preload,以解决 64bit linux server 上某些第三方库编译失败的问题。

修改sudo执行时的环境变量

首先给/etc/sudoers增加写权限:sudo chmod u+w /etc/sudoers
然后修改:
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin:/opt/hisi-linux/x86-arm/gcc-arm-none-eabi-4_9-2015q3/bin:/opt/hisi-linux/x86-arm/aarch64-himix100-linux/bin"

这个是在末尾加上arm编译器的目录/opt/hisi-linux/x86-arm/gcc-arm-none-eabi-4_9-2015q3/bin:/opt/hisi-linux/x86-arm/aarch64-himix100-linux/bin
注意以冒号分隔,这是一行,不能换行写,保存之前多检查一下,这个文件改错了很麻烦

4

最后改回权限:sudo chmod u-w /etc/sudoers

编译海思SDK

主要参考文档:ReleaseDoc\zh\01.software\board\Hi3559A╱C V100 SDK 安装及升级使用说明.pdf
注意所有解压操作均要在linux环境下进行!

SDK存放位置

在Windows端映射好samba驱动器后:

  1. 将整个Hi3559AV100R001C02SPC030目录,放到共享目录
  2. 将ReleaseDoc目录,放到共享目录
  3. 创建pack目录,用于存放打包的文件

将以下文件放到pack目录中:

  1. aarch64-himix100-linux.tgz
  2. gcc-arm-none-eabi-4_9-2015q3.tgz
  3. HiDPU_PC_V1.0.0.1.tgz
  4. HiIVE_PC_V2.1.0.8_64bit_sec.tgz
  5. HiSVP_PC_V1.1.3.0.tgz
  6. linux-4.9.37.tar.gz

将以上6个文件,分别解压到共享目录,下图仅供参考
5

安装工具链

参考文档2.4节,在 linux 服务器上安装交叉编译器
注意之前已经将工具链安装后的路径放到sudo的环境变量中,所以make的时候,可以加sudo执行(如果不加sudo,可能会由于权限的不足而编译失败)

展开SDK

参考文档2.1~2.3节

osdrv的编译

这一步有以下几个文件需要阅读:

  1. Hi3559AV100R001C02SPC030/01.software/board/Hi3559AV100_SDK_V2.0.3.0/osdrv/Makefile
  2. Hi3559AV100R001C02SPC030/01.software/board/Hi3559AV100_SDK_V2.0.3.0/osdrv/readme_cn.txt
  3. Hi3559AV100R001C02SPC030/01.software/board/Hi3559AV100_SDK_V2.0.3.0/osdrv/opensource/kernel/readme_cn.txt

在kernel目录下,告诉我们要提前准备好内核源码,海思是不提供这个的
按照它的要求,将内核源码文件放到kernel目录下面,打补丁的操作不需要手动进行,退回osdrv目录编译all目标即可

根据osdrv目录下的readme文件,执行sudo make BOOT_MEDIA=spi AMP_TYPE=linux all

有可能会导致如下的错误

Invalid CPU Type - valid names are: alpha, arm, x86, ia64, m68k, microblaze, mips, mips64, nios2, powerpc, ppc, s390, sh, sparc, sparc64, blackfin, avr32
Usage: /usr/bin/mkimage -l image
-l ==> list image header information
/usr/bin/mkimage [-x] -A arch -O os -T type -C comp -a addr -e ep -n name -d data_file[:data_file…] image
-A ==> set architecture to ‘arch’
-O ==> set operating system to ‘os’
-T ==> set image type to ‘type’
-C ==> set compression type ‘comp’
-a ==> set load address to ‘addr’ (hex)
-e ==> set entry point to ‘ep’ (hex)
-n ==> set image name to ‘name’
-d ==> use image data from ‘datafile’
-x ==> set XIP (execute in place)
/usr/bin/mkimage [-D dtc_options] -f fit-image.its fit-image
/usr/bin/mkimage -V ==> print version information and exit
make[1]: *** [arch/arm64/boot/uImage] Error 1
make: *** [uImage] Error 2

5

原因是系统目录下/usr/local/bin/mkimage这个程序的问题
之前编译all目标时,uboot的编译应该是通过的,到以下目录去找mkimage,然后复制到/usr/local/bin/目录下
cd opensource/uboot/u-boot-2016.11/tools/
sudo cp mkimage /usr/local/bin/

如果uboot编译失败,按照readme上的要求,单独编译uboot
sudo make BOOT_MEDIA=spi AMP_TYPE=linux hiboot

mkimage程序就位后,重新编译all目标
make BOOT_MEDIA=spi AMP_TYPE=linux all

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章