01.嵌入式开发概述、Linux安装与使用

嵌入式开发概述、Linux常用命令

1.嵌入式开发VS传统开发(单片机开发)

单片机开发:软件->硬件

​ 缺点:软硬件的耦合度太高(软件依赖于硬件);不同硬件发生变化,相应的软件也要发生改变;

改变方法:依赖关系倒转,加入嵌入式操作系统。软件–>操作系统–>硬件;解放上层应用软件

嵌入式开发:在已有的硬件上移植操作系统,一种专门设计用于执行特定任务的计算机系统。

软件(上层 应用软件)–>操作系统(底层 系统软件:驱动、BSP、内核)–>硬件

eg:实现打开摄像头的功能,软件调用open函数–>操作系统实现open函数–>打开摄像头

两者区别:两者是否有操作系统

常见的嵌入式操作系统:Linux、uClinux、WinCE、PalmOS、Symbian、eCos、uCOS-II、VxWorks、pSOS、Nucleus、ThreadX 、Rtems 、QNX、INTEGRITY、OSE、C ExecuTIve

商业型:VxWorks(实时性高:系统能够按照预定的时间要求进行实时响应的能力)、WinCE、PalmOS、Symbian、QNX、pSOS、VRTX、Lynx OS、Hopen、Delta Os

免费型:Linux、uClinux、uC/OS-II(内存小)、eCos、uITRON

2.嵌入式优缺点

嵌入式优点:功耗低,体积小

eg:一张任天堂的游戏卡带内存60K,相当于60*1024B *8bit大小

嵌入式操作系统优点:解决了软硬件的耦合度,提高了软件的移植性,让每个人都适配;提供了许多开源的工具和库,提高了开发效率;可以实现多任务和多线程。

缺点:成本上升

3.嵌入式开发的就业前景

嵌入式开发学习路线:

(1)、嵌入式Linux操作系统的使用(命令:80-120)

(2)、嵌入式Linux开发工具(gcc、gdb、makefile、git、shell、cmake)

(3)、嵌入式C语言实战(代码量:1.2w 核心语法:用和理解)

(4)、嵌入式数据结构(栈、队列、链表、数(平衡二叉树、红黑树)、排序、图)

(5)、嵌入式Linux C开发(文件、进程、进程通信、多线程、网络、数据库:sqlite3)

(6)、嵌入式C++语言实战(C++11/14/17/20核心语法、STL库)

(7)、嵌入式设计模式(14-18种)

(8)、嵌入式GUI开发(Qt:界面、布局、事件、文件、多任务、网络、数据库)

(9)、嵌入式智能硬件开发(stm32-F4:接口、总线)

(10)、嵌入式操作系统移植(u-boot、内核、文件系统)

(11)、嵌入式底层驱动开发(9种设备驱动)

(12)、嵌入式人工智能(Python、深入学习、模型部署及优化

4.软硬子系统的选择

嵌入式硬件子系统:嵌入式处理器、存储器、模拟电路、电源、接口控制器、接插件等

微处理器和嵌入式处理器:嵌入式系统通常使用特定的微处理器或嵌入式处理器,这些处理器具有低功耗、高性能和实时性要求等功能。

嵌入式操作系统:嵌入式系统需要使用专门的嵌入式操作系统,如RTOS(实时操作系统),用于管理硬件资源、任务调度、外设驱动程序等。

嵌入式软件开发:嵌入式系统的软件开发包括底层驱动程序开发、应用程序开发、算法实现优化等。通常使用C、C++等编程语言进行开发。(PS:Java和python需要额外的字符表占用内存,而C和C++更接近底层系统语言)

嵌入式系统架构开发:嵌入式系统的架构设计涉及硬件和软件的结合,需要考虑功耗、性能、实时性、可靠性等因素,并选择合适的处理器、存储器和外设等。

eg:设计一款音乐播放器需要前端界面(qt/web)-------数据传输方式(tcp/http等)-------文件服务器(Linux),用户数据存储需要远端服务器(数据库)。

通信和网络技术:嵌入式系统可能需要与其他设备或系统进行通信和互联,因此需要涉及通信协议、网络技术、无线技术等相关技术。

传感器和执行器技术:嵌入式系统通常需要与外部进行交互,使用传感器(外界数据的量化让计算机可以衡量)来获取输入数据,通过执行器实现相应的输出控制。

实时系统设计:某些嵌入式系统对实时性要求较高,需要进行实时系统设计,确保任务的及时响应和完成。

电源管理技术:嵌入式系统通常要求低功耗和长电池寿命,因此需要采用有效的电源管理技术,包括功耗优化、休眠模式等。

嵌入式软件子系统:底层驱动、操作系统、应用程序

嵌入式系统CPU的选择:

(1)、架构和功能:不同的CPU架构(如ARM,x86 32位,x64 64位等)具有不同的指令集和性能特点。选择适合项目需求的架构和性能级别是关键。

(3)、集成度和外设支持:考虑CPU的集成度和外设支持情况。一些CPU芯片集成了许多外设和接口,如UART、SPI、I2C、USB等,这可以简化系统设计和开发过程。

一个程序的运行需要从硬盘调入内存,再从内存调入CPU,影响速度的因素有:存储器的读取速度以及cpu的处理速度

ARM体系结构:crotex-M--------->MCU(stm32)

​ crotex-R----------实时性

​ crotex-A---------->MPU

5.嵌入式Linux的安装与使用

Linux发行人:Linux Torvalds 于1991年10年由UNIX改来

Linux特点:社团、免费、开放、易获得、稳定、健壮、GPL、软件

Linux的发展与壮大:

支持POSIX:可移植操作系统接口

GUN计划:GNU is not unix; gcc gdb make

GPL协议:要求GPL程序的演绎作品也要在GPL之下;

Linux主流发行版:

Debian-----Ubuntu-----Linux Mint

Fedora-----RHEl------(CentOS、Oracle Linux)

SUSE-------SLES------openSUSE

虚拟机的作用:通过软件方法模拟一台PC机

虚拟机的种类:vmware:商业版本 windows、

​ virtualPC:微软支持Windows、

​ virtualBOX支持Linux和windows

6.Linux 常见命令:

文件分类:-普通文件、d目录文件、c/b设备文件、l链接文件(-s共享文件 -f堆文件 -p 管道文件 )

ls查看文件列表

ls显示当前目录中的文件名

ls -a打开显示所有文件及目录(含隐藏文件)

ls -l 显示文件的详细属性信息

ls -al 显示所有文件及其权限

ls-X 依据扩展名将文件排序显示

ls -R 递归显示所有子文件

ls / 打开 根目录

Linux系统目录结构:

/bin 存放常用命令

/sbin*:系统管理员使用的系统管理程序、超级用户命令

/boot 启动Linux的核心文件,包括一些连接文件以及镜像文件

/dev 存放Linux的外部设备,在Linux中访问的方式和访问文件的方式是相同的

/etc 存放所有系统管理所需的配置文件和子目录

/home 用户的主目录

/lib 存放着系统最基本的动态连接共享库

/lost+found:一般情况下是空的,当系统非法关机后。这里就存放了一些文件

/media:自动识别一些设备,识别的设备挂载到这个目录下

/mnt:让用户临时挂载别的文件系统的

/opt:主机额外安装软件所摆放的目录

/proc :一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。

/root:root用户的工作目录

/tmp 是 temporary(临时) 的缩写这个目录是用来存放一些临时文件的

/usr/bin:系统用户使用的应用程序

/usr:第三方软件的默认安装目录

对文件夹的相关操作:

mkdir 创建文件夹;方法:mkdir 文件夹名;eg:mkdir ./Vcode1.0/text相当于在当前目录下的Vcode1.0文件夹中创建一个叫text的文件

创建共享文件夹:sudo vmhgfs-fuse .host:/ /mnt/hgfs/ -o allow_other -o uid=1000

rmdir 删除文件夹;方法:rmdir 文件夹名; eg: rmdir test0710 和 rm -r作用相同,但是rmdir只能删除一个空目录

对文件的相关操作:

touch 创建文件; 方法:touch 文件名;eg: touch 1.c相当于创建一个1.c的文件

rm 删除文件;方法:rm 文件名

rm -r目录名 删除一个目录

rm -i 文件名 删除前询问是否删除;

rm -f 文件名 强制删除

rm -rf 文件夹 强制删除该文件夹及子目录

mv 移动文件、文件重命名 ;方法:mv 文件 路径 移动文件剪切

​ 方法: mv 文件名 新文件名

cp 复制文件;方法:cp 要复制的文件 文件名 本目录下实现复制

cp 要复制的文件 路径/文件名 实现跨目录复制

cp -r 目录名 目录名 拷贝目录

find 查找命令;方法: find 路径 -name 文件的名字 查找相应路径下的文件

find . -name "*.c" | wc -l 查找当前目录下.c文件个数

find . -name "*.c" | xargs wc -l 查看当前目录下.c文件行数

其他命令:

chmod 命令:修改文件的权限;方法:chmod 权限 路径

eg:修改rwx rwx r-x 为rwx rwx rwx相当于chmod 777 文件名或路径

要求:本人(当前用户)全权限,本组不可修改,其他人只可运行 rwx r-x --x 751

单独修改某一用户的权限:chmod u+x 文件名:修改当前用户的执行操作变为可执行

chmod g+x 文件名:修改与当前用户同组用户权限

chmod o+x 文件名:修改其他用户

pwd 显示当前所在的绝对路径;

~代表工作目录;.代表当前目录;/代表根目录;

绝对路径:从根目录出发的路径;相对路径:有个参照物的

通配符:* 代表任何条件都满足;eg:sudo find *.c代表查找满足所有.c的所有文件

ifconfig 查看网卡信息

ifconfig 网卡名 IP地址 实现设置网卡的IP,如果是静态IP无法更改

ifconfig 网卡名 down 实现关闭网卡的功能

ifdown 网卡名 关闭网卡

ifconfig 网卡名 up 实现开启网卡的功能

ifup 网卡名 开启网卡

apt-get命令:管理服务软件,需要先设置软件源并更新

apt-get install httpd 安装指定的服务软件

apt-get update 更新软件列表

apt-get remove httpd 卸载指定的服务软件

apt-get -purge remove httpd 卸载指定的服务软件及配置信息

apt-get clean 删除所有已经下载的包文件

apt-get autoclean 删除已下载的旧包文件

apt-get autoremove 卸载所有自动安装且不再使用的软件包

which命令:查找命令文件,能够快速搜索二进制程序所对应位置

which rebot 查找某个指定命令文件所在位置

which shutdown poweroff 查找多个指定命令文件所在位置

whereis命令:查找指定命令程序及相关文件所在位置 whereis poweroff

uname命令:查看系统信息 uname -a

diff命令:比较两个文件的不同之处 -a逐行比较

vim编辑器:

**:wq! **强制保存退出

a 进入编辑模式

可以使用vim /etc/vim/vimrc 来配置vim文件

查看文件的相关命令:

**cat 命令:**查看文档内容

tac 命令:反向显示文档内容

more命令:分页显示文本文件内容,只能从前往后浏览

less 命令:用于分页显示文件内容,可以从前往后,还可以从后往前浏览

head 命令:显示文件开头内容,默认为前100行

head -n 10 file.c 显示文件的前10行内容

head -c 20 file.c 显示文件的前20个字符

tail 命令:默认显示文件尾部的后10行内容

tail -f file.cfg 持续刷新显示指定文件尾部的后10行内容

tail -n 5 file.c 显示文件的后5行内容

tail -c 30 File.cfg 显示指定文件尾部的后15个字节

file 命令:识别文件类型,也可以用来辨别一些内容的编码格式

file File.cfgfile /bin/ls查看指定文件类型

grep命令:强大的文本搜索工具;man 1 grep :-n显示行号-r表示递归查找

grep root /etc/passwd 搜索指定文件中包含某个关键词的内容行

grep ^root /etc/passwd 搜索指定文件中以某个关键词开头的内容行

grep linuxprobe /etc/passwd /etc/shadow 搜索多个文件中包含某个关键词的内容行

grep -h linuxprobe /etc/passwd /etc/shadow 搜索多个文件中包含某个关键词的内容行,不显示文件名称

grep -c root /etc/passwd /etc/shadow 显示指定文件中包含某个关键字行的数量

创建新用户的相关操作

创建新用户:sudo adduser 用户名

删除用户:sudo deluser 用户名

切换用户:su 用户名

更改密码:sudo passwd 用户名

压缩相关命令:

tar 压缩、解压缩命令

tar-c: 创建备份文件

tar-v: 显示压缩过程详细信息

tar-z:使用gzip命令压缩

tar-f: 指定压缩目标文件

tar-x:从压缩包内提取文件

tar -czvf dir.tar.gz dir/将dir 目录打包成dir.tar.gz

tar-zxvf dir.tar.gz 解压缩dir.tar.gz

进程相关命令:

**ps命令:**显示进程状态(例如进程的号码、发起者、系统资源使用占比、运行状态等),经常会与kill命令搭配使用来中断和删除不必要的服务进程,避免服务器的资源浪费;

​ a:显示一个终端的所有进程信息

​ -A:显示和终端关联的所有进程信息

​ e:显示每个程序所使用的环境变量

​ -e:显示所有进程,和终端不关联,和—A效果相同

​ -le :查看系统中所有的进程,而且还能看到进程的父进程的 PID 和进程优先级

​ -ef :和le 相似,比le显示少一些,其中e显示的最少;ps -ef | grep ssh将当前系统运行状态中指定进程信息过滤出来;

ps aux 查看系统中所有的进程

kill命令:用于杀死进程,如果并没有被结束,则可以使用信号9进行强制杀死进程;kill -9 进程名

​ -l显示系统支持的信号列表

7、ssh远程连接

SSH是一种网络协议,用于计算机之间的加密登录。

登录原理:

​ | 1、登录请求---------------------------------------------->|

​ |<--------------------------------------2、发送自己的公钥 |

客户端--------> |3、加密登录信息后登录-------------------------------> |<-------------服务端

​ |<--------------4、使用私钥解密登录信息,验证登陆|

使用ssh实现远程连接的常用工具:Xshell、向日葵、MobaXterm、SourceCRT等

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值