嵌入式开发过程中很重要的一环节就是开发环境的搭建,开发环境搭建的好可以很好的提高开发效率。其中关键的一部就是挂载运行程序,对于程序的挂载运行需要借助NFS服务器,下面介绍windows和linux操作系统下NFS服务器的搭建。
对于ubuntu系统的安装有两种方式,一种是安装在虚拟机里(vbox或vmware)另外是直接安装在裸机上。对于本文主要是针对裸机的安装,而对于虚拟机的安装也类似甚至还更加简单。作者建议对于做嵌入式开发,个人觉得安装一个linux系统在你的裸机上会更好,一来速度更改,特别对于有大型工程要进行编译的(如qt)效果特别明显,而来现在ubuntu系统里面有足够多的软件满足你的开发需求。如果实在是离不开windows的话可以在你的linux系统里安装个虚拟机,在虚拟机里安装个windows系统,这样开发效率也会更高。呵呵、、、以上纯属个人理解。Windows粉丝绕道!
对于ubuntu14.04系统的安装主要分两步:
1、制作ubuntu14.04的系统安装盘,在此作者用的是一款universal-usb-installer U盘制作软件,就是将ubuntu14.04系统刻录到你U盘,待会从U盘启动安装系统就Ok了。对于这步大家可以各显神通。
2、磁盘分区
对于本人电脑硬件如下:i7处理器、8g内存、240g固态硬盘、1t机械硬盘。所以可用的空间比较大,毫无疑问系统肯定是安装在固态硬盘里。作者将240g的固态硬盘划分出40g挂载根目录(/)剩余的空间挂载家目录(/home),而对于机械硬盘划分了三个分区,两个300g分别用于挂载(/opt)与(/var)剩余的格式成了FAT32格式。分区弄好之后接下来的工作就是按部就班的安装系统了。
对于刚刚安装完的系统,我们可以进行一些个性话的设置,从而适合自己的开发习惯,在此作者列出自己习惯的几项设置仅供参考。
1、下载源设置
对于ubuntu系统来说没有网络是万万行不通的,所以安装完系统后的首要任务就是设置网络,对于ubuntu系统默认的下载源是在国外的服务器,这样一来下载速度可能会比较慢,所以作者习惯将它设置成国内的163服务器。
2、屏幕亮度
对于作者本人来说喜欢屏幕亮度暗一些,一天到晚盯着屏幕看太亮了看的眼睛干。而对于ubuntu14.04的系统有一个bug,就是每次开机默认将屏幕亮度设置到最亮,所以需要自己手动进行一些设置,让系统每次起来设置一个你喜欢的屏幕亮度,具体的设置如下:
(1)打开/etc/rc.local脚本
(2)在该脚本exit 0 之前添加一下语句:
echo 731 > /sys/class/backlight/intel_backlight/brightness
这样每次系统开机会读取该脚本从而设置你想要的屏幕亮度。
3、设置terminal提示信息
Ubuntu终端提示信息默认情况下很长,而且还会随着我们进入的目录深度不断的加长,作者对此感觉很不好所以每次安装完系统之后我都要将PS1这个参数修改一下。具体操作如下:
1)打开家目录下的.bashrc脚本
2)将PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
改为PS1='[\u@\W]\$ '
4、启动NFS服务器
5、停止NFS服务器
对于刚刚安装完的系统还很不完整,还不能完成开发的需求,我们还得安装一些工具软件和一些库文件,这样也是我们之前设置网络的一个重要原因。下面作者列出嵌入式开发常用的一些库文件和软件工具以满足开发需求。
安装输入法之前我们的安装一个输入法管理工具,其主要的作用是管理我们在系统中安装的各种输入法,作者习惯用的输入法管理工具是fcitx。可以在终端上输入sudo apt-get install fcitx进行安装,安装完后可以在dash里面搜索fcitx可以看到一个小企鹅的图标,点击小企鹅就可以看到如下界面:
接下来就可以通过它对你系统里面现有的输入法进行管理了,软件的具体设置还是自己默默琢磨吧在此就不啰嗦了。
(1)比较工 sudo apt-get install meld
(2)版本控制器 sudo apt-get install qgit
(3)代码查看工具 sudo apt-get install geany
(4)文档编辑工具 wps(官网下载)
(5)Svn图像界面 sudo apt-get installl RapidSVN
(6)64位系统兼容32位应用需要安装的依赖库 sudo apt-get install lib32z1 lib32ncurses5 lib32bz2-1.0 libstd32c++6 ia32-libs
(7)samba sudo apt-get install samba samba-common system-config-samba python-glade2 gksu
(8)图形编辑能手 sudo apt-get install gimp
(9)金山词霸 sudo apt-get install stardict
(10)有道词典 官网下载
( 11 ) 串口工具 sudo apt-get install minicom gtkterm
对于linux环境下要使用windows系统,那么在linux下安装个虚拟机在再虚拟机里面安装个windows是个不错的选择,而这个虚拟机作者选择的是vbox。对于vbox的安装可以直接apt-get install virtualbox,也可以到官网上去下载你自己喜欢的版本。在虚拟机里怎么安装windows我就不罗嗦了,网上百度,教程很多。接下来想说一下的是vbox下要使用usb功能,众所周知,VirtualBox 使用宿主机的USB设备需要安装扩展包。根据自己的vbox的版本,到vbox官网下载对应的扩展包,并安装,安装方法为:file-->prefrence-->extension进行安装,安装完后勾选"启用USB控制器" 及"2.0控制器"增加对USB2.0 的支持。接下来设置vbox所在的用户组在当前用户组下,设置如下:
1.查看当前用户名:
firephoenix@firephoenix-linux:~$ whoami
firephoenix
2.查看vbox 所在的组:
firephoenix@firephoenix-linux:~$ cat /etc/group | grep vbox
vboxusers:x:125:
3.将当前用户加入vbox组:
firephoenix@firephoenix-linux:~$usermod -a -G vboxusers firephoenix
4.查看vbox 所在的组:
firephoenix@firephoenix-linux:~$ cat /etc/group | grep vbox
/vboxusers:x:125:firephoenix
此时,重启系统。再次打开虚拟机,果然,USB设备都已经被识别、访问到了。
ADB(android debug bridge)作为android开发的必备调试工具可以加快我们的开发和调试过程,所以学会安装和使用ADB可以很好提高开发效率。对于ADB的安装包可到网上下载,下载完后你可以解压到任何目录下,对于ADB的安装就是一个解压过程。解压完后你就可以使用ADB的各种命令了,但是你必须在ADB的解压目录下运行,为了避免这种情况得将ADB的安装目录导出到环境变量中去。你可以在.bashrc或者.profile中添加导出命令如:export PATH=$PATH:/opt/platform-tools。接下来你就可以在任何路径下输入adb -h检查你的ABD是否可以正常运行了。
ADB安装完后接下来就是要怎么使用了,使用ADB之前需要做一些设置,因为ubuntu这样的系统都是默认以非root身份在运行的,要使用usb调试,需要sudo支持。
$ lsusb 查看usb的使用情况
经过对比插拔usb通过lsusb的打印信息可以知道新插入的usb设备位Bus 003 Device 009: ID 1f3a:1002 Onda (unverified) 而我们需要用到的信息就是1f3a就idVendor,1002就是 idProduct。接下来在/etc/udev/rules.d/目录下新建70-android.rules(不知道这个文件命名有没有要求就按这个来吧总之这样命名是可以的),并在文件里面添加以下语句:SUBSYSTEM=="usb",ATTRS{idVendor}=="1f3a",ATTRS{idProduct}=="1002",MODE="0666"
保存后退出并设置一下权限
$sudo chmod a+rx /etc/udev/rules.d/70-android.rules
一切准备工作做好之后就可以使用命令重启以下udev设备了
$sudo service udev restart
这样一来我们的ADB应该就可以使用了,如果还是不行的话可以重启一下ADB服务。接下来查看ADB设备如下:
这样就说明一切OK了,接下来就是使用ADB的各种命令进行开发和调试了如:
$adb shell
$adb push
$adb pull
对于嵌入式开发通过nfs挂载会使得开发变得十分方便,通过挂载可以很方便代码的调试,PC机上交叉编译然后直接在目标机上运行。有了nfs你还可以挂载内核与文件系统,这样也很方便内核与文件系统的调试。既然nfs这么好用那么我们就来说说如何搭建和配置nfs服务器了。
1、安装nfs服务器 sudo apt-get install nfs-kernel-server
2、建立一个nfs专用的文件夹 mkdir /nfs
3、修改nfs配置文件 sudo vi /etc/exports 作者的常用配置如下:
/nfs 200.200.200.*(rw,sync)
/nfs 192.168.1.*(rw,sync)
重启rpcbind服务 sudo /etc/init.d/rpcbind restart
重启nfs服务 sudo /etc/init.d/nfs-kernel-server restart
挂载 mount -t nfs -o nolock 200.200.200.99:/nfs /mnt
sudo apt-get install tftpd-hpa tftp-hpa
sudo vim /etc/default/tftpd-hpa
配置如下:
# /etc/default/tftpd-hpa
TFTP_USERNAME="tftp"
#这个是工作目录记得将权限改为777
TFTP_DIRECTORY="/home/firephoenix/work/tftp"
TFTP_ADDRESS="[::]:69"
TFTP_OPTIONS="--secure"
然后重启tftpd-hpa服务 sudo service tftpd-hpa restart
我的主机本机host地址:192.168.0.1
$ cd /home/firephoenix/work/tftp
$ echo "hello tftp service">>a.txt #生成一个测试文件,在tftp文件夹下
# tftp 192.168.0.1
tftp 192.168.0.1
tftp> get a.txt
tftp> q
看a.txt是否已经传输过来了,然后我们要检查一下他的内容,因为错误传输,也会生出一个同名空文件
$cd /home/work
#在tftp root文件夹外做一个文件准备传进去
$echo "hello tftp service,put to tftp serive">>send.text
# tftp 192.168.0.1
tftp 192.168.0.1
tftp> put send.txt
tftp: send.txt: No such file or directory
tftp> put send.text
tftp> q
1.7openJDK1.7安装
1、安装JDK sudo apt-get install openjdk-7-jdk
2、安装JRE sudo apt-get install openjdk-7-jre
3、配置环境变量
环境变量一般在家目录下的.bashrc脚本中进行导出,如下:
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
保存文件退出并执行source .bashrc使得脚本生效
4、检测是否安装成功
在终端中输入java -version查看打印信息,一般成功后打印下面java版本信息:
java versioin "1.7.0_95"
openJDK Runtime Environment (IcedTea 2.6.4) (7u95-2.6.4-0ubuntu0.14.04.2)
openJDK 64-Bit server VM (build 24.95-b01, mixed mode)
1.8 samba
sudo apt-get install samba samba-common system-config-samba
如果双击点击共享文件夹,提示没有权限访问网络资源,打不开,则要看看自己有没有装libtalloc2,在命令行输入sudo apt-get install libtalloc2 安装,完成后输入"sudo service smbd restart"重启samba服务,一般即可访问了。