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

前言

随着技术领域的发展,单片机虽然有实时性好的特点,但是面对多任务并发以及人机交互等却力不从心,所以人们开始追求更高工艺更高性能的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显示消息或输出其他命令的结果

用户相关

指令作用
sudoroot权限运行
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调试文件
manshell命令使用手册
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边积累提升。

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值