随着技术领域的发展,单片机虽然有实时性好的特点,但是面对多任务并发以及人机交互等却力不从心,所以人们开始追求更高工艺更高性能的soc芯片,并且在上面跑linux系统。嵌入式linux应用如此广阔的原因有以下几点:
计算机是由数字电路组成的可以运算的机器,它可以处理文本、声音、图像等数据。它们统一采用标准化的硬件设备:cpu、内存、硬盘、外接设备(鼠标、键盘)
而嵌入式是什么呢?可以归结来说,是指定制/裁剪后专门用于某个用途的计算机。举个例子,一个门禁系统就相当于是一个只有摄像头和屏幕的计算机。
我们日常生活中接触最多的系统就是windows了,除此之外还有的操作系统有linux、Mac、Android、IOS等。
操作系统的作用是管理进程、线程,调度任务以及文件等,想要了解的可以参考:概念科普
程序是由一系列计算机指令组成的,它需要安装在操作系统上面运行。
程序使用的步骤一般有:编译、链接、下载、运行、调试。经过循环这些步骤可以得到一个可用的程序。
常用的开发程序工具有:VScode、Source Insight、Vim、gcc等
学习linux去了解常用的网络协议功能是必要的,毕竟我们是互联网行业。接下来我在百度中找了一些常用协议的解释,详细请到网上查询:
地址解析协议。是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到局域网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。地址解析协议是建立在网络中各个主机互相信任的基础上的,局域网络上的主机可以自主发送ARP应答消息,其他主机收到应答报文时不会检测该报文的真实性就会将其记入本机ARP缓存;
IP是Internet Protocol(网际互连协议)的缩写,是TCP/IP体系中的网络层协议。设计IP的目的是提高网络的可扩展性:一是解决互联网问题,实现大规模、异构网络的互联互通;二是分割顶层网络应用和底层网络技术之间的耦合关系,以利于两者的独立发展。根据端到端的设计原则,IP只为主机提供一种无连接、不可靠的、尽力而为的数据包传输服务
ICMP协议是一种面向无连接的协议,用于传输出错报告控制信息。. 它是一个非常重要的协议,它对于 网络安全 具有极其重要的意义。. [3] 它属于 网络层协议 ,主要用于在主机与路由器之间传递控制信息,包括报告错误、交换受限控制和状态信息等。. 当遇到IP数据无法访问目标、IP 路由器 无法按当前的传输速率转发 数据包 等情况时,会自动发送ICMP消息。 ICMP 是 TCP/IP 模型中网络层的重要成员,与 IP 协议、ARP 协议、RARP 协议及 IGMP 协议共同构成 TCP/IP 模型中的网络层。.
传输控制协议(英語:Transmission Control Protocol,縮寫:TCP)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。 在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能。 用户数据报协议(UDP)是同一层内另一个重要的传输协议
UDP 协议简介. UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是 OSI (Open System Interconnection, 开放式系统互联 ) 参考模型中一种无连接的 传输层 协议,提供面向事务的简单不可靠信息传送服务,IETF RFC 768 [1] 是UDP的正式规范。. UDP在IP报文的协议号是17。. UDP协议与 TCP 协议一样用于处理数据包,在 OSI 模型中,两者都位于 传输层 ,处于IP协议的上一层。. UDP有不提供数据包分组、组装和不能对数据包进行排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。
DNS协议是用来将域名转换为IP地址(也可以将IP地址转换为相应的域名地址)。 DNS是一种可以将域名和IP地址相互映射的以层次结构分布的数据库系统。 DNS系统采用递归查询请求的方式来响应用户的查询,为互联网的运行提供关键性的基础服务。
DHCP( 动态主机配置协议 )是一个局域网的网络协议。 指的是由服务器控制一段IP地址范围,客户机登录服务器时就可以自动获得服务器分配的IP地址和子网掩码。 默认情况下,DHCP作为Windows Server的一个服务组件不会被系统自动安装,还需要管理员手动安装并进行必要的配置。
FTP(File Transfer Protocol,文件传输协议) 是 TCP/IP 协议组中的协议之一。FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客户端。其中FTP服务器用来存储文件,用户可以使用FTP客户端通过FTP协议访问位于FTP服务器上的资源。在开发网站的时候,通常利用FTP协议把网页或程序传到Web服务器上。此外,由于FTP传输效率非常高,在网络上传输大的文件时,一般也采用该协议。
超文本传输协议(Hyper Text Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII形式给出;而消息内容则具有一个类似MIME的格式。这个简单模型是早期Web成功的有功之臣,因为它使开发和部署非常地直截了当。
使用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的时候经常需要pc端与ARM之间进行数据交换或者文件传输挂载等,所以需要设置一个静态ip方便我们使用。
这几种传输协议主要方便用于不同服务端之间文件的传送:
使用FileZilla工具开启服务
linux开发时必须掌握c语言的,linux内核就是使用c语言来写的。平时我们开发应用程序,底层驱动等都需要使用c语言。这里建议大家学习c语言的时候稳扎稳打,也可以边学习linux边积累提升。