linux uboot kenerl filesystem关系

每次烧写都是uboot,image,roots,为什么不整一套,为什么分开

什么是uboot 什么是内核,三者为什么分开

如果你上网去搜一下,你会发现这样的答案

另注:本文含有大量的错误和意测成份,智者勿入

如果你希望只得到的这些就满足的话,后续的不需要再看了

我们拿到一个开发板,项目是为了“使用的”,市面上有大量的不同产商的开发板(如果只有一个产商也就不需要这么麻烦了),我们的的项目所要实现的功能只需要几种,我们却需要不断的与底层的寄存器打交道,为了写一个LED灯,可能需要查阅大量的文件,写几十,上百行的代码,初始化时钟,配置引脚,开启时钟,读写寄存器;为了读写文件,需要使用不同的协议,不同的协议,移植到其它地方,还是需要写大量的相同的代码,修改的只是针对不同板子的寄存器,更不要说还有有显示器,输入输出 键盘 鼠标 等统一的操作;同样是点LED灯,不同的板子寄存器地址,操作还不同,大量的重复操作;

操作系统就是一个软件,帮我们处理底层的操作,然后使我们更专注于我们的任务,项目使用,而不是每次都要重新操作大量的重复的操作

我们也可以自己写操作系统(定制的操作系统,针对具体的任务的),但是有个统一的操作系统,并且经过验证的,更大适应性的,

规范的,操作系统有个特征,就是经过千C百练 验证(砸不烂,很稳定)还有一群人给你维护,修正,你自己写的就,看你技术水平了

操作系统就操作系统吧,为什么又分成uboot kernel roots呢

我们先来看一下操作系统吧,最简单的操作系统while(){}语句,单行的,想要什么往里面写就行,点灯,BEEP,显示,键盘都可以; 

OK,换一块不同的板子,照样查寄存器,读写寄存器,点灯,BEEP,显示

再换块不同的板子,再查寄存器,点灯,BEEP

操作都一样,不停的,不断的重复同样的操作,所要改的只是寄存器的地址;一次两次还可以,上百人,上百次,上千人; OK

上面是最简单的操作系统了:给操作系统一个定义吧,就是一软件,跟底层打交道,使客户更专于自己的需求与项目,而不是与底层打交道

OK

上面的操作系统简陋了点,有点浪费,一时只运行一个任务,能不能同时多运行几个,点灯的同时,beep,同时还监控外面有没有信号传入,如接个热敏电阻看下开水是不是熟了(好吧,while中也能实现),但是实现起来有点烦索,我给你包装包装,你只要调用相应的函数就能另开一个任务(就是更方便用),这样下次就不需要修改哪,修改哪,加个任务在中间; 这就是“多任务”的由来了(伪“多任务”)最终还是由一个CPU通包,分给不同的任务一定时间,看起来像多任务; 好吧这时也不需要linux,或是linux的kenel也就可以了,不需要文件系统

操作系统

while(){}ucos  freeRtooslinux winodws
        ——>        ——>        ——>

我们先看一下早期的“电脑”,一块芯片,一个几Byte的内存,几个输入输出“按键”进行输入输出进行“计算”任务(需要什么操作系统)

——>——>——>——>——>

那时处理器产商很少,或说只有一个巴掌能数得过来的,最后INTEL一枝独秀,但是吧你说你把一整套硬盘,内存,显卡。。。都集成到一块了,也就不需要分什么uboot先引导kernel,kernel再加载roots了,但是他只做芯片,外围的给你们自己配去了,只能了你一个小小的flash让你存储信息,好吧,这就来了,你没办法了,你只能在他提供的一个小小芯片里把你的,大大的系统引进来,引就引进来吧,但计算机只用来点灯,BEEP,监控,这么大的性能,完成一个小小的任务有点太可惜了,还是拿来办点现实中的事吧,比如写个论文,画个报表,看一下千里之外的工地上有没有人在偷懒,看一下工程运行的怎么样了,发个邮件给客户,晚上约个时间吃饭,好谈谈下个项目

我们使用rtos的时候,你操作吧,还是需要涉及到一些专门知识与硬件相关的,对非专业的,由其是大企业,大财主,大需求来说,你让他来操作底层的,然后告诉他可以让你的工作效率大大提升? (我想他会把锤子砸你头上)

而linux windows则提供了一整套的程序,但同时带来了体积急速膨胀的

一整套的任务管理机制,创建,退出,程序之间的交互,多任务(就是更方便使用,而不需要每个人都要专业知识才能应对,只需要记住几个简单的命令即可)

我们拿ARM,X86是拿来为了办公,为了休闲,查找信息,计算 控制用的,而不是为了显示几个图片;点几个灯的

好吧,这时你靠rtos就不行了,你要写文档,你要写报表,你要统计今年的销售额,写文档总得有个存放文档的地方吧,难到写个文档还要写一堆代码(还不如直接写在本子上呢),你要上网,总要有个显示器吧,总得有个键盘,鼠标,一个图片动Z几KB,几十M的,你喊我用几KB的机器给你加工处理

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/112412.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux系统编程04

进程的概念 进程(动态)是一个正在运行的程序(静态) 多道程序设计缺点: (1)缺乏隔离,各个程序之间可以直接访问,使用对方的数据 (2)内存使用率低&a…

香港服务器在国内访问太慢怎么能提高?

​  一直以来,全球化业务需求的增长是跟随着蓬勃向上的互联网而发展的。有了网络,海外贸易就在鼠标的轻点中完成。而IDC市场中的香港服务器也因为免备案政策的特性,开始逐渐成为企业想要跨越地域壁垒而考虑的对象。但在使用过程中&#xff…

新手如何找到Docker容器(redis)中的持久化文件?

具体步骤 要查看Docker容器的dump.rdb和appendonly.aof文件(如果启用了AOF持久化)的位置,我们需要知道容器中Redis配置文件的内容或者容器的数据卷的挂载位置。 这里是一般步骤: 查找容器的数据卷挂载位置 使用docker inspect命令…

内存爆炸、CPU100%问题定位

目录 一、内存爆炸相关1、关于-Xms(最小堆内存)和-Xmx(最大堆内存)2、JVM初始化时申请实际物理内存3、OutOfMemory问题排查(1) 堆内存溢出排查(2) 堆外内存溢出排查 二、CPU 100及死锁问题定位1、CPU 100问题排查(1) 找到程序对应进程号(2) 查找进程对应的线程编号(3)查看线程堆…

[Hive] if返回null和0的区别

count(if(pv>1000000,1,0))count(if(pv>1000000,1,null)) 区别 count(if(pv>1000000,1,0)) 和 count(if(pv>1000000,1,null)) 之间的区别在于对于不满足条件的情况下的处理方式。 count(if(pv>1000000,1,0)):这个表达式中,如果 pv 的值…

【Godot】给不规则的 TileMap 划分子区域块部分代码

4.1.beta2 给不规则的 TileMap 划分子区域块部分代码 ## 生成房间内部数据 func generate_room_inside_data():GLog.info("生成房间内部数据")# 划分房间的各个矩形块for room_coords in room_coords_to_data:var room_data room_coords_to_data[room_coords] as D…

零基础入门网络渗透到底要怎么学?_网络渗透技术自学

前言: 很多朋友问我,想搞网络安全,编程重要吗,选什么语言呢? 国内其实正经开设网络安全专业的学校很少,大部分同学是来自计算机科学、网络工程、软件工程专业的,甚至很多非计算机专业自学的。…

使用自定义 PyTorch 运算符优化深度学习数据输入管道

在这篇文章[1]中,我们讨论 PyTorch 对创建自定义运算符的支持,并演示它如何帮助我们解决数据输入管道的性能瓶颈、加速深度学习工作负载并降低训练成本。 构建 PyTorch 扩展 PyTorch 提供了多种创建自定义操作的方法,包括使用自定义模块和/或…

驱动day2:LED灯实现三盏灯的亮灭

head.h #ifndef __HEAD_H__ #define __HEAD_H__ #define PHY_PE_MODER 0x50006000 #define PHY_PF_MODER 0x50007000 #define PHY_PE_ODR 0x50006014 #define PHY_PF_ODR 0x50007014 #define PHY_RCC 0x50000A28#endif 应用程序 #include <stdio.h> #include <sys/…

Linux性能优化--补充

14.1. 性能工具的位置 本书描述的性能工具来源于Internet上许多不同的位置。幸运的是&#xff0c;大多数主要发行版都把它们放在一起&#xff0c;包含在了其发行版的当前版本中。表A-1描述了全部工具&#xff0c;提供了指向其原始源位置的地址&#xff0c;并注明它们是否包含在…

YOLOv7改进实战 | 更换轻量化主干网络Backbone(一)之Ghostnet

前言 轻量化网络设计是一种针对移动设备等资源受限环境的深度学习模型设计方法。下面是一些常见的轻量化网络设计方法: 网络剪枝:移除神经网络中冗余的连接和参数,以达到模型压缩和加速的目的。分组卷积:将卷积操作分解为若干个较小的卷积操作,并将它们分别作用于输入的不…

官方认证:研发效能(DevOps)工程师职业技术认证

培养端到端的研发效能人才 为贯彻落实《关于深化人才发展体制机制改革的意见》&#xff0c;推动实施人才强国战略&#xff0c;促进专业技术人员提升职业素养、补充新知识新技能&#xff0c;实现人力资源深度开发&#xff0c;推动经济社会全面发展&#xff0c;根据《中华人民共…

Apache Doris (四十五): Doris数据更新与删除 - Sequence 列

🏡 个人主页:IT贫道_大数据OLAP体系技术栈,Apache Doris,Clickhouse 技术-CSDN博客 🚩 私聊博主:加入大数据技术讨论群聊,获取更多大数据资料。 🔔 博主个人B栈地址:豹哥教你大数据的个人空间-豹哥教你大数据个人主页-哔哩哔哩视频 目录 1. 基本原理

WGCNA分析教程五 | [更新版]

一边学习&#xff0c;一边总结&#xff0c;一边分享&#xff01; 往期WGCNA分析教程 WGCNA分析 | 全流程分析代码 | 代码一 WGCNA分析 | 全流程分析代码 | 代码二 WGCNA分析 | 全流程分析代码 | 代码四 关于WGCNA分析教程日常更新 学习无处不在&#xff0c;我们的教程会在…

[环境配置]anaconda3的base环境与python版本对应关系表

anaconda3版本 base环境对应python版本 Anaconda3-2018.12-Windows-x86_64.exe 3.7 Anaconda3-2019.03-Windows-x86_64.exe 3.7 Anaconda3-2019.07-Windows-x86_64.exe 3.7 Anaconda3-2019.10-Windows-x86_64.exe 3.7 Anaconda3-2020.02-Windows-x86_64.exe 3.7 An…

Alpine.js 精简重

建议有 js 基础&#xff0c;先阅读官网文档&#xff0c;如果您会 vue 类似框架&#xff0c;上手会更快 https://alpinejs.dev js 代码中可以使用 Alpine.sore 定义全局数据 Alpine.store(tabs, {current: first,items: [first, second, third], }) x-text 可以运算任何 js 表…

ubuntu16.04下标定Astra相机

ubuntu16.04下标定Astra相机 1.安装相机驱动 rosrun camera_calibration cameracalibrator.py --size 7x5 --square 0.018 image:/camera/rgb/image_raw camera:/camera/rgb 2.下载camere_calibration 3.进行标定 打开终端&#xff0c;输入 roslaunch astra_launch astrap…

从入门到进阶 之 ElasticSearch 配置优化篇

&#x1f339; 以上分享从入门到进阶 之 ElasticSearch 配置优化篇&#xff0c;如有问题请指教写。&#x1f339;&#x1f339; 如你对技术也感兴趣&#xff0c;欢迎交流。&#x1f339;&#x1f339;&#x1f339; 如有需要&#xff0c;请&#x1f44d;点赞&#x1f496;收藏…

浏览器不能访问阿里云ECS

一、浏览器不能访问端口 在阿里云ECS中构建了工程&#xff0c;nigix或者tomcat或者其他&#xff0c;然后在本地浏览器访问ip端口的时候&#xff0c;连接超时&#xff0c;解决办法&#xff1a; 进入阿里云ECS服务 -> 查看公网ip (外部连接需要使用公网) -> 进入ECS实例的…

攻防世界web篇-cookie

看到cookie立马就会想到F12键看cookie的一些信息 我这个实在存储里面看的&#xff0c;是以.php点缀结尾&#xff0c;可以试一下在链接中加上.php 得到的结果是这样 这里&#xff0c;我就只能上csdn搜索一下了&#xff0c;看到别人写的是在get请求中可以看到flag值