开发主要使用windows、linux及相关软件,宿主机linux一般使用虚拟机,以下为大致步骤,具体操作和资源可上网查找,并参照海思提供的文档。开发调试时,使宿主机linux,目标机linux,windows处在同一网段下。
在windows下安装VMware14.0,source insight4.0,破解。
用 VMware安装虚拟机:ubuntu 12.04.2 i386版,安装时选择桥接网络模式,使虚拟机在局域网里有自己的主机IP。(宿主机linux无特别要求,主流发行版本均可,但实测发现AMD64版本,有无法配置hisi交叉编译工具链的环境变量的bug)。
为虚拟机linux安装vmwaretools,以在虚拟机和物理机之间直接复制文件和文本。注意,许多操作都必须使用root权限,所以建议每次开启虚拟机都先sudo su,输入当前用户密码,以进入root权限模式,方便操作。
将海思的交叉编译工具链uclibc安装到宿主机linux,并配置环境变量,示例:
tar -zxf /home/arm-hisiv500-linux.tgz
cd /home/arm-hisiv500-linux
chmod +x arm-hisiv500-linux.install
./arm-hisiv500-linux.install
source /etc/profile
为方便开发调试,宿主机linux和windows需要共享一些文件,为此,需要给linux安装samba服务等等。以下为示例:
apt-get install samba
apt-get install smbclient
mkdir /home/smbshare
chmod 777 /home/smbshare
cp /etc/samba/smb.conf /etc/samba/backup _smb.conf
gedit /etc/samba/smb.conf
在文件的最后面加入以下内容,创建共享服务:
[smbshare]
path = /home/smbshare
available = yes
browseable = yes
public = yes
writable = yes
然后添加密码并重启服务:
touch /etc/samba/smbpasswd
smbpasswd -a wjl
/etc/init.d/smbd restart
配置完成之后,在windows文件夹处输入\\xxx.xxx.xxx.xxx会看见一个share目录,这个目录就是samba共享的目录(xxx.xxx.xxx.xxx表示虚拟机的ip)。
用法一:代码保存在linux机器中,windows获取共享,在windows里,将samba共享的目录映射为网络驱动器,将代码工程复制到共享目录,用source insight等读写。若宿主机IP发生变更,重映射到同一驱动器号即可(例如,Z:\\)。
用法二:代码保存在windows机器中,linux获取共享,以下为示例:windows下建立目录,共享给everyone,允许读写,启用网络发现,启用文件夹和打印机共享,开启密码保护共享。在宿主机linux里挂载该目录。以下为示例:
mkdir /home/winshare
chmod 777 /home/winshare
mount -t cifs //192.168.1.108/ipc /home/winshare -o username='wjl',password='123'
cifs也基于samba服务,如缺失则输入:apt-get install cifs-utils
如果共享目录里的工程,在linux下编译时,报错Cannot allocate memory,可修改windows注册表的以下键值,然后重启server服务,解决这个问题:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session
Manager\Memory Management\LargeSystemCache ,修改为1。
若该键不存在,则手动创建,类型为DWORD。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters\Size,修改为3。
然后cmd输入services.msc,找到server服务重启即可,也可以重启机器。
为宿主机的linux安装open-sshserver,在windows安装secureCRT或者其他类似软件,方便开发和操作。
apt-get install openssh-server openssh-client
/etc/init.d/ssh restart
建立secureCRT连接,协议ssh2,默认端口22,主机名为宿主机linux的ip,填写宿主机的linux用户名,密码
将板子用串口模块接上电脑,secureCRT建立串口连接,波特率115200,8位数据,1位停止,无奇偶校验。在串口登录板子的linux,默认用户是root,密码是直接按回车键,看到welcome to hilinux即为登陆成功。
为方便操作,可先关闭所有进程,修改网络配置:(可能需要按 i 进入编辑模式)
vi /opt/app/config/wpa_supplicant.conf
修改WiFi的名称和密码之后,按ESC,退出编辑模式,输入:wq,保存退出。
复位电路板,用ifconfig查看板子的IP地址(注意不是ipconfig),用secureCRT建立telnet连接,默认端口23,登录板子的linux。若telnet未开启,可在串口开启:telnetd。
如需修改root密码,可使用passwd root。
为宿主机安装nfs服务,使目标机可以直接从宿主机获取文件,方便调试,注意关闭宿主机防火墙,使得能够互相ping通。常用命令:ufw status;ufw enable;ufw disable
以下为示例:
apt-get install nfs-kernel-server
mkdir /home/nfs
chmod 777 /home/nfs
gedit /etc/exports
在文件末尾添加:
/home/nfs *(rw,sync,no_root_squash)
重启服务:
/etc/init.d/nfs-kernel-server restart
再输入:
showmount -e
如果出现:
/home/nfs *
则NFS共享设置成功,该目录现在可以被其他IP挂载。
然后在开发板的终端输入:
mount -t nfs 192.168.1.114:/home/nfs /home -o nolock
此处nolock的作用:
Disable NFS locking. Do not start lockd. This has to be used with some old NFS servers that don't support locking.