| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 系统运维 -> 嵌入式系统学习整理-oneday -> 正文阅读 |
|
[系统运维]嵌入式系统学习整理-oneday |
前言????????嵌入式计算机的真正发展是在微处理器问世之后。1971年11月,算术运算器和控制器电路成功的被集成在一起,推出了第一款微处理器,其后各厂家陆续推出了8位、16位微处理器。以这些微处理器为核心所构成的系统广泛地应用于仪器仪表、医疗设备、机器人、家用电器等领域。微处理器的广泛应用形成了一个广阔的嵌入式应用市场,计算机厂家开始大量地以插件方式向用户提供OEM产品,再由用户根据自己的需要选择一套适合的CPU板、存储器板及各式I/O插件板,从而构成专用的嵌入式计算机系统,并将其嵌入自己的系统设备中。本文主要写了嵌入式的发展、环境基本搭建及初学者的一些常用命令。 一、嵌入式是什么?1.嵌入式的定义????????嵌入式系统是以应用为中心,以现代计算机技术为基础,能够根据用户需求(功能、可靠性、成本、体积、功耗、环境等)灵活裁剪软硬件模块的专用计算机系统。 ????????从构成上看,嵌入式系统是集软硬件于一体的、可独立工作的计算机系统;从外观上看,嵌入式系统像是一个“可编程”的电子“器件”;从功能上看,它是对目标系统(宿主对象)进行控制,使其智能化的控制器。 ????????由于嵌入式面向的是“可编程”的独立电子“器件”,所以嵌入式系统兼有硬件和软件。 ????????嵌入式系统的硬件部分看起来与通用计算机系统的没有什么区别,也由处理器、存储器、外部设备、I/O接口、图形控制器等部分组成。但和通用计算机不同的是为满足嵌入式系统在速度、体积和功耗上的要求,操作系统、应用软件、特殊数据等需要长期保存的数据,通常不使用磁盘这类具有大容量且速度较慢的存储介质。 ????????嵌入式系统的软件体系是面向嵌入式系统特定的硬件体系和用户要求而设计的,是嵌入式系统的重要组成部分,是实现嵌入式系统功能的关键。嵌入式系统软件体系和通用计算机软件体系类似,分成驱动层、操作系统层、中间件层和应用层等四层。 2.嵌入方式? ? ? ??????????嵌入式系统还有嵌入方式的不同,分为全嵌入式方式和半嵌入式方式,全嵌入方式的嵌入式系统可独立运行,半嵌入式方式的嵌入式系统必须搭配通用计算机才能完成工作。 3. 基本开发流程????????以Linux操作系统为例,论述嵌入式系统的开发流程。 ? ? ? ? ① 建立开发环境 ? ? ? ? ② 配置开发主机的参数 ? ? ? ? ③ 建立引导装载程序BOOTLOADER ? ? ? ? ④ 下载已经移植好的Linux操作系统内核 ? ? ? ? ⑤ 建立应用程序的FLASH磁盘分区 ? ? ? ? ⑥ 开发应用程序 ? ? ? ? ⑦ 烧写内核、根文件系统和应用程序,发布产品 二、嵌入式开发环境1.ubunt系统的诞生????????首先,操作系统大家应该都有所了解,大家听得最多的应该就是IOS和安卓了。其实,操作系统的本质就是管理计算机硬件与软件资源的计算机程序。而操作系统经过诞生、迭代至现在已经产生了许多系统和版本。自1946年第一台计算机诞生初期,还未诞生操作系统,但是有一些批处理操作来处理人工操作大计算机资源利用率低的问题。 ????????从上世纪60年代中期,国际上开始研制一些大型的通用操作系统。这些系统试图达到功能齐全、可适应各种应用范围和操作方式变化多端的环境的目标。但是,这些系统过于复杂和庞大,不仅付出了巨大的代价,且在解决其可靠性、可维护性和可理解性方面都遇到很大的困难。 ????????相比之下,UNIX操作系统却是一个例外。这是一个通用的多用户分时交互型的操作系统。它首先建立的是一个精干的核心,而其功能却足以与许多大型的操作系统相媲美,在核心层以外,可以支持庞大的软件系统。它很快得到应用和推广,并不断完善,对现代操作系统有着重大的影响。 ????????真正意义上的第一代操作系统发明者(肯.汤姆森)电气工程硕士,1966年加入贝尔实验室,当时参与多使用者分时作业系统的制作,名叫Multics,汤姆森在工作期间开发了一款名为“star travel”的游戏,在这个期间创造了Bon语言,后因为贝尔实验室退出Multics,为了玩游戏,汤姆森用B语言在老旧的PDP-7机器上写出了第一个操作系统Unix,并重写了“star travel”。 ????????由于B语言不够强大,汤姆森联合丹尼斯·里奇制作了C语言,并重写了Unix。 ????????理查德·斯托曼(自由软件之父)1953年出生于美国纽约曼哈顿地区,1971年进入哈佛大学学习,同年受聘于麻省理工学院人工智能实验室(AI Laboratory),成为一名职业黑客。他于1985年发表了著名的GNU宣言(GNU Manifesto),正式宣布要开始进行一项宏伟的计划:创造一套完全自由免费,兼容于Unix的操作系统GNU(GNU's Not Unix!)。之后他又建立了自由软件基金会来协助该计划。 ????????GNU工程激励了许许多多年轻的黑客,他们编写了大量自由软件。最后,林纳斯·托瓦兹(Linux之父)写了一个类似Unix操作系统的内核,称为Linux,把所有GNU软件和硬件连接了起来,但Linux并不能代表整个操作系统,Linux只是个内核,整个系统还包含数以百计的软件工具和实用程序,大多是由GNU黑客们完成。他认为,整个操作系统称为GNU/Linux比较合适。Linux内核为GNU工程画上了一个完满的句号。 2.Linux发行版本2.1 红帽系列????????Red Hat Enterprise: ????????????????这个是企业级的linux,主要面向服务器。作为商业版,有比较好的配套软件和技术支持。 ????????Fedora: ????????????????由社区维护,去除了一些商业软件。红帽实际上赞助了这个项目,以便以此作为技术测试平台。 ????????CentOS: ????????????????这个版本不来自红帽的公司,是收集红帽公开的源码组成的免费版本,由社区维护,和红帽完全兼容。 2.2 SUSE系列????????SUSE Linux Enterprise: ????????????????和红帽商业版类似,德国的发行版本。 ????????openSUSE: ????????????????SUSE的免费版本。 2.3 Debian系列????????Debian: ????????????????完全免费,社区维护的Linux版本,有很大的用户群,所以遇到问题,基本都可以找到社区用户的支持。 ????????Ubuntu: ????????????????由一个基金提供支持的免费Linux版本。继承自Debian。界面很友好。 ????????在现在的PC端操作系统已经被Windows和Linux占领,每一个新电脑预装的都是Windows系统,而Windows系统是用Unix开发的,并不开源,这对嵌入式开发有很大影响。我们需要对系统进行裁剪开发等操作,这时就需要开源的Linux系统进行开发。但是开源的Linux好操作吗?答案是否定的,对初学者来说,进行开发就需要熟悉命令行模式,而命令行模式大量的简写命令,在不小心的情况下很容易误处理,从而使系统崩溃。难道开发只能舍弃好用的Windows吗? ????????为了降低初学者开发,在后面的发展中产生了虚拟机,利用虚拟机运行ubunt,可以建立备份,避免ubunt系统崩溃产生的不良后果。 ? ? ? ? 注:虚拟机(Virtual Machine)指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。 UNIX操作系统: ????????闭源的操作系统,苹果手机IOS系统就是基于UNIX开发的。 linux操作系统: ????????开源的操作系统,安卓系统、鸿蒙系统是基于LINUX开发的。 3.虚拟机的安装及使用?????????虚拟机及ubunt的下载可以自行百度或者使用我的百度网盘链接。 ????????虚拟机版本:15和16 ????????ubunt版本:12.04(密码为1) ????????链接:https://pan.baidu.com/s/1lacVi_dcQkHp2CO21yssZg ????????提取码:1111 第一步:运行vmware虚拟机,然后点击“打开虚拟机” 或者在菜单栏中点击“player”,然后选择“文件”中的打开 第二步:选择解压缩之后的Ubuntu 64 位.vmx 第三步:运行ubuntu系统 点击“播放虚拟机”即可打开ubuntu操作系统 第四步:进入ubuntu系统 点击用户linux,然后输入密码1,即可进入系统 三、终端????????ubuntu系统同样有图形界面,跟windows类似,通过鼠标就可以操作所有的功能,但是作为大多数的嵌入式产品,不会在开发板上安装图形界面,因为占用的空间太大,费用提高,所以一般都不会安装,所以linux系统的操作一般都使用控制终端来操作。而终端就是ubunt系统的命令行模式。 1. 如何打开终端方法1: ????????点击左边菜单栏中的终端即可; 方法2: ????????进入文件系统的某一个目录,然后鼠标右键点击在终端打开之后,会刚好在终端里面进入当前目录; 方法3:? ? ????????使用快捷方式ctrl+alt+t打开终端; ????????使用快捷方式ctrl+shift+n打开同路径的终端; ????????使用快捷方式ctrl+shift+t以分屏的形式打开同路径的终端。 2. 终端默认的命令行提示符????????如上图所示,打开终端时默认出现的字符代表什么意思呢? ????????linux@ubuntu:~$ ????????linux:用户名 ????????ubuntu:主机名 ????????~:表示路径 ????????~:表示路径从家目录开始 ????????/:表示路径从根目录开始 ? ? ? ? 注:cd 为终端中的一个命令,为进入目录。 ????????cd / 进入根目录 ????????cd ~ 进入家目录? ????????$:表示操作权限 ????????$:普通用户权限 ????????#:管理员root权限 ????????使用sudo su root切换到管理员root用户 ????????注:ubunt输入密码时没有回显。? ? ? ? ? 注:sudo 为当前命令升级管理员权限并在执行命令时输入密码。 ? ? ? ? 注:su 为切换用户命令,root 为管理员用户。 ? ? ? ? 当你已经为管理员时,不必再使用sudo了,使用su linux就可以切换到linux用户。 ? ? ? ? 注:使用exit命令可以回退到上一个用户,如果已经到。 ????????开机的第一个用户,使用exit命令表示关闭终端。 3. 其他常用命令及快捷方式????????终端字体调整: ctrl shift + ????????字体变大 ctrl - 字体变小 ????????清屏: 使用命令clear 使用快捷方式ctrl l ????????关闭终端: 使用命令exit 使用快捷方式ctrl d ????????上下键 :查看命令的历史记录 ????????tab键 :命令或者文件名补全 ? ? ? ? ? ? ? ? ? ? ?tab 跟至少一个字母,如果只有一个文件或者命令,就会立即补全 ? ? ? ? ? ? ? ? ? ? ?如果有多个,需要敲两次tab键就会显示所有的 四、常用Linux命令和快捷方式4.1?命令格式????????命令 选项 参数 注意: ? ? ? ? ① 可以没有选项和参数; ? ? ? ? ② 命令、选项和参数之间必须加空格; ? ? ? ? ③ 命令输入完毕之后按回车就会运行当前命令。 4.2 常用的linux命令????????4.2.1 lsls 列出当前目录下的文件名 ls 目录名 列出指定目录下的文件名 ????????例如:ls code 查看当前目录下code目录下的文件名 ls / 查看根目录下的文件名 ls -a 列出当前目录下所有的文件名,包括隐藏文件 ls-lh:显示文件属性信息的同时将文件大小按单位显示。(-h不能单独使用) ls-i:显示文件同时将inode号显示(文件系统识别文件的唯一标号) ls-R:递归显示文件 ls -l 列出当前目录下文件的详细信息,如下: ????????drwxr-xr-x 4 linux linux 4096 7月 15 15:49 code d:文件类型,linux一切皆文件,不以后缀名作为文件类型的区分 ????????linux里面一共有7中文件类型 b c d?- l s p ????????b:块设备文件 ????????c:字符设备文件 ????????d:目录文件 ????????-:普通文件 ????????l:软链接(符号链接)文件 ????????s:套接字文件 ????????p:有名管道文件 rwxr-xr-x:文件的操作权限 以三个为一组,一共有三组,分别表示当前用户、 当前用户所在组以及其他用户对当前文件的操作权限 ????????r:读权限 w:写权限 x:可执行权限 ????????-:不具有这个权限 ????????4:链接文件的个数 ????????linux:用户名 ????????linux:组名 ????????4096:文件大小 ????????7月 15 15:49:时间戳,当前文件最后被修改的时间 ????????code:文件名 ? ? ? ? Linux根目录下各个文件夹所代表的内部文件类型 ????????{Linux系统中目录结构类似一颗倒置的树/根目录} ????????{/bin:存放二进制文件(比如存放一些命令:可执行二进制文件(普通文件:绿色))} ????????{/dev:存放的是设备驱动文件(比如:/dev/input/mouth)} ????????{/media:} ????????{/proc:如果一个程序在执行,这个目录就会记录程序相关的所有的信息}{ubuntu第一个执行的程序为:init记录在/proc/1里面} ????????{/sbin: s 系统 bin 二进制 ,系统内部的二进制文件(root权限)} ????????{/boot:和系统启动相关的目录} ????????{/etc:系统配置文件,如:passwd保存用户信息文件和shadow存放密码的文件} ????????{/home:家目录 /home/linux linux的家目录} ????????{/root:超级用户家目录} ????????{/lib:库目录 ????????{/usr:用户特有的一些目录,比如/usr/include/stdio.h} 4.2.2 cd命令????????cd 目录名 进入指定的目录 ????????cd / 进入根目录 ????????cd ~ 进入家目录 ????????cd 进入家目录 ????????cd - 进入上一次的路径 ????????cd . : .表示当前路径,所以表示进入当前路径 ????????cd .. : ..表示上一级路径,所以表示进入上一级目录 ? ? ? ? 注:cd不支持sudo给权限 绝对路径:从根目录开始进入到指定目录的路径 相对路径:从当前目录开始进入到指定目录的路径 4.2.3 pwd命令????????pwd 显示当前路径的绝对路径 4.2.4 touch命令????????touch 文件名 创建一个普通文件 如果文件已经存在,则表示更新时间戳 4.2.5 mkdir命令????????mkdir 目录名 创建指定的目录 ????????mkdir 目录1 目录2 目录3 目录4 在当前目录创建多个目录文件 ????????mkdir -p 目录1/目录2/目录3/目录4 嵌套的创建多个目录文件 4.2.6 rmdir命令????????rmdir 目录名 删除指定的空目录 注意:目录必须为空才可以删除,否则报错 4.2.7 rm命令????????rm 文件名 删除一个文件(不能是目录文件) rm -rf 文件名 删除一个目录文件 ????????注:rm删除的回收站找不回 ????????rm *.c 删除所有以.c结尾文件 ????????rm -r 删除目录(递归删除) ????????rm -rf 强制删除 ????????rm * -rf 强制删除所有文件目录 ????????rm !(3.c)-rf 删除3.c的其他文件 4.2.8 cp命令????????cp 文件名 目录名 将文件复制到指定目录中 ????????cp -a 目录1 目录2 将目录1拷贝到目录2里面 ????????cp 文件名1 不存在的文件名2 创建文件名2并将文件1的内容拷贝过来 ????????cp -a 目录1 不存在的目录2 创建目录2,然后将目录1中的文件拷贝给文件2 ????????cp 目录 路径 -r 4.2.9 mv命令????????mv 文件名 目录名 将文件移动到目录中 ????????mv 目录1 目录2 将目录1移动到目录2中 ????????mv 文件名1 不存在的文件名2 将文件名1重命名为文件名2 4.2.10 cat命令????????cat 文件名 将文件内容显示到终端上 4.2.11 echo命令????????echo命令 ????????将echo后输入的字符在终端上打印出来 ????????echo ????????echo 中国 ????????>?:重定向,将本来要向终端上显示的内容(echo > 1.c 清空文件并替换到文件中) ????????>>:追加,(echo >> 1.c helloword 在文件尾部追加helloword字符串,原文件不会被清空) 总结????????肯·汤姆森: ????????发明了B语言,发明了UNIX操作系统,发明了C语言 ????????丹尼斯.里奇: ????????AT&T公司的员工,UNIX之父,C语言之父 ????????理查德.斯托曼 ????????自由软件之父,创办了自由软件基金会,为了仿照UNIX写一个开源的操作系统 ????????林纳斯.托瓦兹 ????????linux之父 ????????虚拟机及ubunt的下载安装 ????????ubunt中终端的常用命令 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/29 8:44:13- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |