嵌入式Linux应用开发① | 嵌入式LInux介绍及开发环境搭建

1.嵌入式Linux

嵌入式Linux是对运行在嵌入式设备上的Linux的统称,它们都是经过高度裁剪、具备特定功能的嵌入式Linux操作系统。
嵌入式设备性能、资源有限,所以不能将标准的Linux应用到嵌入式和设备上,所以对标准的Linux进行内核裁剪,针对某一个特定的功能进行完善,就可以应用到嵌入式设备上,主要有两种:

  • 小型化:针对大小进行改进,eg.ETLinux、uLinux、ThinLinux等
  • 实时化:针对实时性进行改进,eg.RTLinux、RTAI等

2.嵌入式Linux的开发方向

嵌入式Linux的开发主要有以下三个:

  • 内核开发:裁剪Linux,适配驱动,目的是可以运行起来Linux;
  • 应用开发:在运行起来Linux的基础上,进行应用开发;

这里我们先从应用开发入手,待学会基本开发再学习内核开发也不迟~

3.嵌入式Linux的开发模型

  • 宿主机用来开发程序
  • 目标板用来运行程序

4.嵌入式Linux应用开发硬件环境

  • 已经运行起来Linux的开发板
  • 串口:用于Linux终端
  • 网口:用于SSH、文件传输、远程调试程序

这里我使用的硬件平台是NXP的iMX287。

5.嵌入式Linux应用开发软件环境

5.1.交叉编译工具链

宿主机运行的是标准Linux操作系统,编译出的程序却需要在目标机的Linux上跑,这就叫交叉编译,需要使用交叉编译器,之前我们已经使用过arm-none-eabi-gcc编译STM32的程序,这个编译器的目标系统是ARM,不运行操作系统,仅运行前后台程序,这里我们ARM开发板运行了Linux操作系统,所以不能使用这个编译器,需要使用arm-none-linux-gnueabi-gcc交叉编译器。

5.2.安装交叉编译器

arm-none-linux-gnueabi-gcc下载
下载解压版:
在这里插入图片描述

解压:

tar -jxvf arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2

移动到/usr下面:

进入目录查看,bin下存放着我们需要的工具:

将这个位置添加到用户环境变量,使用vim ~/.bashrc,然后再最后添加:

export PATH=$PATH:/usr/arm-2014.05/bin

然后使用命令source ~/.bashrc更新系统路径,使添加的环境变量立即生效:

然后输入arm-none-linux,连按tab,检查是否可以自动补全,如果可以,则安装成功:

如果是64位操作系统,这个时候还不能使用,只能自动补全,但不能执行:

解决方案 —— 安装库:

sudo apt-get install libc6-i386

再次查看gcc版本,成功:

5.3.使用交叉编译器

arm-none-linux-gnueabi-gcc和之前的gcc使用无太大差异,示例如下。
先编辑文件:

然后使用交叉工具链编译:

编译完成后,接下来我们配置网络环境,通过网络将生成的可执行文件传递到目标板上运行。

6.嵌入式Linux应用开发串口环境

  • 将开发板命令行输出串口连接到电脑上(通过USB转串口);
  • 电脑上使用终端软件连接串口(不建议使用串口助手);

7.嵌入式Linux应用开发网络环境

参考之前这篇Ubuntu远程访问和文件传输 | 配置SSH和VNC服务

7.1.前提

1.开发板已连接上可以正常上网的路由器
使用udhcpc开启自动获取ip:

然后使用ifconfig查看网络状态:

使用route查看路由表:

ping一下百度(61.135.169.105),测试是否可以连接外网:

2.开发板和windows互ping,检测网络:
在windows命令行中使用ipconfig查看ip地址,然后ping开发板:

开发板ping windows主机:

  1. 配置虚拟机网络使用桥接模式(必须,使用NAT模式无法连接开发板
    在这里插入图片描述

查看虚拟机ip地址:

7.2.使用SSH进行远程登录和文件传输

  1. 首先使用sshd命令查看开发板sshd状态(如图表示开启):

  2. 在windows主机上使用xshell登录开发板

如果不想使用这种创建的方式,也可以直接使用命令:

ssh <用户名>@<ip地址>

  1. 在windows主机上使用winscp通过ssh进行文件传输

这样就可以在windows主机和开发板之间传递文件了(同样,可以在windows主机和虚拟机之间传文件)。

  1. 在虚拟机Linux上使用ssh登录开发板

  2. 在虚拟机Linux上使用ssh传送文件到开发板

7.3.使用NFS进行搭建网络文件系统

7.4.使用TFTP进行文件传输

猜你喜欢

转载自blog.csdn.net/Mculover666/article/details/85337179