嵌入式linux学习路径--新手入门篇

嵌入式linux如何入门?

  • 前言
  • 基础概念
    • 计算机与嵌入式的关系
    • 操作系统是什么?
    • 程序
    • 网络
      • ARP
      • IP
      • ICMP
      • TCP
      • UDP
      • DNS
      • DHCP
      • FTP
      • HTTP
  • linux系统命令
    • 目录相关
    • 文件相关
    • 用户相关
    • 系统相关
    • 网络相关
    • 程序相关
    • 其他
  • linux系统配置
    • 环境变量
    • 设置静态ip
    • TFTP、Samba、NFS服务
  • C语言基础掌握

前言

随着技术领域的发展,单片机虽然有实时性好的特点,但是面对多任务并发以及人机交互等却力不从心,所以人们开始追求更高工艺更高性能的soc芯片,并且在上面跑linux系统。嵌入式linux应用如此广阔的原因有以下几点:

  1. 低成本开源系统
    Linux在开源方面做得很好,它允许任何人下载并且修改linux的源码,这样子在开发成本上就大大降低了,使得大量的爱好者一同参与linux的开发,网上资料就非常齐全。
  2. 可应用于多种硬件平台
    linux可以在多种体系架构上运行,比如大家熟悉的X86、ARM、PowerPC等,并且在linux内核里,对硬件的管理是采用框架的形式,即从一个平台移植到另一个硬件平台的时候对于应用层是没有影响的。
  3. 可定制的内核
    linux内核本身就是非常精简全面,我们在进行嵌入式的时候就是利用了这个特点,将需要用到的内容保留、裁剪出来经裁减的 Linux 内核最小可达到 150KB 以下,从而得到一个用的资源更少,运行更稳定,速度更快的系统。
  4. 良好的网络支持
    Linux 是首先实现 TCP/IP 协议栈的操作系统,它的内核结构在网络方面是非常完整的, 并提供了对包括十兆位、百兆位及千兆位的以太网,还有无线网络、Token ring(令牌环)和 光纤甚至卫星的支持,这对现在依赖于网络的嵌入式设备来说无疑是很好的选择。
  5. 安全化
    嵌入式操作系统应能够提供安全保障机制,源码的可靠性越来越高;

基础概念

计算机与嵌入式的关系

计算机是由数字电路组成的可以运算的机器,它可以处理文本、声音、图像等数据。它们统一采用标准化的硬件设备:cpu、内存、硬盘、外接设备(鼠标、键盘)
而嵌入式是什么呢?可以归结来说,是指定制/裁剪后专门用于某个用途的计算机。举个例子,一个门禁系统就相当于是一个只有摄像头和屏幕的计算机。

操作系统是什么?

我们日常生活中接触最多的系统就是windows了,除此之外还有的操作系统有linux、Mac、Android、IOS等。
操作系统的作用是管理进程、线程,调度任务以及文件等,想要了解的可以参考:概念科普

程序

程序是由一系列计算机指令组成的,它需要安装在操作系统上面运行。
程序使用的步骤一般有:编译、链接、下载、运行、调试。经过循环这些步骤可以得到一个可用的程序。
常用的开发程序工具有:VScode、Source Insight、Vim、gcc等

网络

学习linux去了解常用的网络协议功能是必要的,毕竟我们是互联网行业。接下来我在百度中找了一些常用协议的解释,详细请到网上查询:

ARP

地址解析协议。是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到局域网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。地址解析协议是建立在网络中各个主机互相信任的基础上的,局域网络上的主机可以自主发送ARP应答消息,其他主机收到应答报文时不会检测该报文的真实性就会将其记入本机ARP缓存;

IP

IP是Internet Protocol(网际互连协议)的缩写,是TCP/IP体系中的网络层协议。设计IP的目的是提高网络的可扩展性:一是解决互联网问题,实现大规模、异构网络的互联互通;二是分割顶层网络应用和底层网络技术之间的耦合关系,以利于两者的独立发展。根据端到端的设计原则,IP只为主机提供一种无连接、不可靠的、尽力而为的数据包传输服务

ICMP

ICMP协议是一种面向无连接的协议,用于传输出错报告控制信息。. 它是一个非常重要的协议,它对于 网络安全 具有极其重要的意义。. [3] 它属于 网络层协议 ,主要用于在主机与路由器之间传递控制信息,包括报告错误、交换受限控制和状态信息等。. 当遇到IP数据无法访问目标、IP 路由器 无法按当前的传输速率转发 数据包 等情况时,会自动发送ICMP消息。 ICMP 是 TCP/IP 模型中网络层的重要成员,与 IP 协议、ARP 协议、RARP 协议及 IGMP 协议共同构成 TCP/IP 模型中的网络层。.

TCP

传输控制协议(英語:Transmission Control Protocol,縮寫:TCP)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。 在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能。 用户数据报协议(UDP)是同一层内另一个重要的传输协议

UDP

UDP 协议简介. UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是 OSI (Open System Interconnection, 开放式系统互联 ) 参考模型中一种无连接的 传输层 协议,提供面向事务的简单不可靠信息传送服务,IETF RFC 768 [1] 是UDP的正式规范。. UDP在IP报文的协议号是17。. UDP协议与 TCP 协议一样用于处理数据包,在 OSI 模型中,两者都位于 传输层 ,处于IP协议的上一层。. UDP有不提供数据包分组、组装和不能对数据包进行排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。

DNS

DNS协议是用来将域名转换为IP地址(也可以将IP地址转换为相应的域名地址)。 DNS是一种可以将域名和IP地址相互映射的以层次结构分布的数据库系统。 DNS系统采用递归查询请求的方式来响应用户的查询,为互联网的运行提供关键性的基础服务。

DHCP

DHCP( 动态主机配置协议 )是一个局域网的网络协议。 指的是由服务器控制一段IP地址范围,客户机登录服务器时就可以自动获得服务器分配的IP地址和子网掩码。 默认情况下,DHCP作为Windows Server的一个服务组件不会被系统自动安装,还需要管理员手动安装并进行必要的配置。

FTP

FTP(File Transfer Protocol,文件传输协议) 是 TCP/IP 协议组中的协议之一。FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客户端。其中FTP服务器用来存储文件,用户可以使用FTP客户端通过FTP协议访问位于FTP服务器上的资源。在开发网站的时候,通常利用FTP协议把网页或程序传到Web服务器上。此外,由于FTP传输效率非常高,在网络上传输大的文件时,一般也采用该协议。

HTTP

超文本传输协议(Hyper Text Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII形式给出;而消息内容则具有一个类似MIME的格式。这个简单模型是早期Web成功的有功之臣,因为它使开发和部署非常地直截了当。

linux系统命令

使用linux系统是离不开在终端的命令行操作的,以下我列出常用的基础命令需要大家掌握(需要知道命令功能,使用方法在百度上找,懂得查找不要死记)

目录相关

指令 作用
pwd 显示当前路径
ls 显示目录文件
cd 进入路径
cp 复制文件
mv 移动文件
rm 删除文件
mkdir 创建目录
mount 挂载目录
umount 取消挂载

文件相关

指令 作用
touch 创建文件
vi/vim 使用vim编辑器打开文件
cat 显示文件内容
more 以一页一页的形式显示文件内容
tail 查看文件指定位置的内容
head 查看文件的开头部分的内容
diff 比较文件的差异
echo 显示消息或输出其他命令的结果

用户相关

指令 作用
sudo root权限运行
chmod 修改文件权限
useradd 增加用户
userdel 删除用户
passwd 更改使用者的密码
groupadd 创建一个新的工作组
groupdel 删除一个工作组

系统相关

指令 作用
ps 显示当前进程的状态
kill 删除执行中的程序或工作
top 动态地持续监听进程地运行状态
free 显示内存状态
df 显示目前在 Linux 系统上的文件系统磁盘使用情况统计
date 显示或设定系统的日期与时间
ln 为某一个文件在另外一个位置建立一个同步的链接(快捷方式)

网络相关

指令 作用
ifconfig 显示或设置网络设备
ping 使用 ICMP 传输协议检测主机
netstst 显示整个linux系统的网络状态
scp 用于 Linux 之间复制文件和目录
ssh 建立ssh连接,远程登陆主机
telnet 开启终端机阶段作业,并登入远端主机
wget 用于从网络上下载资源
rz 主要用于文件的上传到服务器
sz 利用ZModem协议来从Linux服务器传送文件到本地
tcpdump 用于倾倒网络传输数据

程序相关

指令 作用
gcc 编译文件
gdb 调试文件
man shell命令使用手册
makefile 批量编译链接文本
CMake 自动生成makefile

其他

指令 作用
grep 用于查找文件里符合条件的字符串
sed 依照脚本的指令来处理、编辑文本文件
wc 计算文件的Byte数、字数、或是列数
tar 解压压缩包
gzip 压缩文件为.gz文件
yum 查找、安装、删除某一个、一组甚至全部软件包的命令
apt-get 软件包的管理工具

linux系统配置

环境变量

linux下有许多环境变量需要设置的,这个方面需要用到的时候再去网上设置查找,所以是需要积累的。这里只做一个介绍。

设置静态ip

开发linux的时候经常需要pc端与ARM之间进行数据交换或者文件传输挂载等,所以需要设置一个静态ip方便我们使用。

TFTP、Samba、NFS服务

这几种传输协议主要方便用于不同服务端之间文件的传送:
使用FileZilla工具开启服务

C语言基础掌握

linux开发时必须掌握c语言的,linux内核就是使用c语言来写的。平时我们开发应用程序,底层驱动等都需要使用c语言。这里建议大家学习c语言的时候稳扎稳打,也可以边学习linux边积累提升。

你可能感兴趣的:(linux应用开发,linux驱动开发,linux,嵌入式)