嵌入式Linux应用编程—嵌入式Linux常识2

1.3平台

咱们一般所说的平台包括硬件平台和软件平台。html

处理器和它的外围电路组成在一块儿,就是所谓的硬件平台。如一个ARM架构处理器和外围电路组成的单板,咱们称为ARM平台。linux

一个嵌入式系统是针对某个应用来开发的,所以不可能在搭建的ARM平台上,再去开发针对这个ARM平台的编译软件和工具等。那该怎么办?windows

因为x86和x64平台上的资源丰富,所以能够在x86或x64平台上进行编辑、编译代码,而后将编译后的可执行文件下载到单板上去。看起来彷佛能够,可是不一样架构的处理器有不一样的指令系统,须要相应的编译器;这样使得在x86或x64平台编译的代码彻底不能再ARM中运行。要实现从x86或x64跨平台到ARM平台,须要一个工具:交叉编译/连接器。服务器

一般ARM平台的交叉编译器为arm-elf-gcc或arm-linux-gcc,交叉连接器为arm-elf-ld或arm-linux-ld。arm-elf-gcc和arm-linux-gcc都是基于ARM平台的交叉编译软件,区别在于它们使用的C库不一样。arm-elf-gcc通常使用uClibc/uC-libc或Red Hat专门为嵌入式系统开发的C库newlib。而arm-linux-gcc使用的是GNU的Glibc。咱们常使用的交叉编译/连接器是arm-linux-gcc和arm-linux-ld。网络

软件平台是指能够编译出对应操做系统的可执行程序。如在Linux服务器的终端能够编译出Linux系统运行的程序,那么Linux服务器的终端就能够看作Linux的软件平台;在windws下Wind River workbench能够编译出在Vxworks下运行的程序,那么Wind River workbench能够看作是Vxworks的软件平台。架构

看到这里,你可能脑子一团槽,到底该怎么创建开发使用的平台(或称环境)。工具

首先须要一台Linux服务器来编译代码,可是Linux开发人员不多是一我的,所以须要一台windows系统的电脑来远程登陆Linux服务器,建议远程登陆软件选择SecureCRT。使用SecureCRT也能够登陆单板的文件系统,在链接后,使用ls能够查看根目录下的内容。在Linux中使用vi或gedit来编辑代码效率慢,所以能够在windows平台下的VS来编辑代码,编辑好后再从windows上传到Linux服务器,建议文件传输工具FTP选择FileZilla或SecureFX。学习

当咱们在windows下的VS中编辑完代码,经过FTP上传到Linux服务器;在Linux服务器的终端进行编译;编译完成后下载到单板中,执行查看结果。字体

将编译好的可执行文件下载到单板上有不少方法,这里介绍4种。ui

1.将编译好的代码经过FTP下载到windows系统中,在windows平台下使用OpenJTAG(须要烧写软件)、JLink、并口JTAG下载到单板中,方式的选择主要看你单板支持那种方式。

因为并口JTAG须要使用并口JTAG转接板,而如今大部分电脑没有并口,所以不多被使用。而使用USB转JTAG板,有2种方式,分别是OpenJTAG和JLink。

常使用OpenJTAG烧写bootloader或较小的可执行文件(裸板程序)。而JLink只支持烧写NOR FLASH。

2.在windows下使用SecureCRT登陆单板后,进入bootloader中,使用串口(须要软件dnw)、tftp(须要软件tftpd32)将windows下的文件下载到单板。

前提是单板的bootloader支持USB串口下载或tftp服务(网线下载)。

3.当bootloader和Linux服务器支持NFS服务时,能够在bootloader界面直接使用NFS命令从Linux服务器将文件下载到单板,这样就不须要将文件从Linux服务器再下载到Windows中。

4.感受这样下载太麻烦,还可使用NFS服务在Linux服务器上设置网络文件共享目录,而后使用SecureCRT登陆单板,进入单板的文件系统,使用mount来挂载目录(我的建议这种方法)。

NFS除了下载和挂载目录这2个功能外,还可使用NFS做为根文件系统来启动单板。若Linux服务器不支持NFS,能够本身安装。

在Linux服务器上编译须要交叉编译/连接器。若本身制做交叉编译工具链,须要gcc编译器、lib库(选择Glibc)、辅助工具(能够选择crosstool、binutils)。

1.4安装Linux系统和配置开发环境

咱们在学习Linux时,若只有一台windows系统的电脑,能够安装虚拟机(建议选择VMware),在虚拟机上安装Linux系统。

在虚拟机上安装Linux系统,对电脑的硬件有必定的要求:CPU是intel i5及以上;内存4G;固态硬盘;预留20G的硬盘空间存储数据。

在虚拟机上经常使用的Linux系统有Ubuntu、CentOS,我我的选择的是CentOS6.6。

在VMware下,选择”CentOS”,点击”开启此虚拟机”;等待一段时间后,就能够登陆用户名和密码,Linux系统支持多个用户,其中有一个用户是root,即超级用户;若要关闭”CentOS”,则在CentOS内选择”系统”->”关机”,千万不要直接在VMware上直接叉掉CentOS6.6的窗口或者右击”CentOS6.6”->”电源”->”关闭客户机”,这样可能会破坏CentOS6.6的文件系统,至关于笔记本中长按5秒电源键强制关机的操做。

在CentOS中,登陆后还能够注销当前用户,再登陆另外一个用户,而没必要从新关机、开机。

VMware还支持虚拟机挂机的操做,右击”CentOS6.6”->”电源”->”挂起客户机”,这样就冻结了虚拟机CentOS6.6的当前状态,再点击”继续运行此虚拟机”,就恢复了虚拟机的状态。可是须要注意的是虚拟机恢复后,其时间也是恢复以前的状态,所以会不许确;重启后就会从新校准。

CentOS6.6安装完后,还须要设置IP,让其和主机创建网络链接,使用桥接模式或NAT模式均可以。我使用的是NAT模式,参考博客:https://blog.csdn.net/qq_37131111/article/details/54000029。

IP设置好后,以root用户登陆,点击”系统”->”首选项”->”网络链接”,选择网卡,在IPV4处选择网络链接的方式,是自动模式仍是手动设置静态IP模式。我选择自动DHCP模式。设置好后,左击右上角的网络图标,选择要创建网络链接的网卡,如”systerm eth0”。等待一段时间后,网络创建链接。

进入终端,使用ifconfig命令来查看网卡eth0的IP地址,再使用ping www.baidu.com,查看网络是否连通。

因为只有一台服务器,不可能每一个人都来操做这台服务器,所以还须要安装SecureCRT进行远程登陆。安装结束后,点击”File”->”Quick Connect”,在Hostname处填写Linux服务器中网卡的IP,在Uername处填写用户名,链接后还须要填写用户密码。

右击创建的会话,选择”Session Options”,在其中设置字体显示颜色、缓冲行数、字体大小、编码方式UTF8等,以下所示。

 

最后是安装FTP工具,我选择的是SecureFX,中文乱码问题能够参考:https://jingyan.baidu.com/article/02027811624d941bcd9ce56b.html。