Linux嵌入式有发展吗,以及对uboot,kernel,rootfs的领悟
工作多年后,对uboot,kernel,rootfs的领悟,总结
上大学时,51单片机,正点原子的stm32,linux arm开发。对uboot,kernel,rootfs的理解云里雾里,感觉自己很懂了
其实开发板,学到的东西,很基础,离真正产品,有的是有很大差距的。
一、uboot
以前简历写,熟悉uboot,kernel,能够移植uboot,kernel。
现在我肯定不会这么写,这是工作多么后的感悟,除了芯片公司,华为,联发科,没有人搞这个,其他公司,车厂可能要对uboot进行修改
但是不可能是从官网下载,直接拿来移植的,都是芯片商给的,移植过的,只有他们自己对芯片寄存器很熟悉,很多门道,是不会开放出来的。所以这部分只能芯片公司自己移植,我们拿到的,是修改好的,我们只是修改适配而已(换了个不同分辨率的屏幕,要改吧,换个网卡,nand,emmc,ddr,要改吧)。没有985学历,不要研究太透彻,懂一点原理,分区,烧录,传参,就可以了。学了基本没用。
现在我的简历,写会修改设置uboot,懂一部分启动原理。
uboot到底是干嘛的,想想,emmc的镜像文件是怎么被读到ddr的,emmc为啥可以被分区,烧录镜像,tftp网络命令为啥可以运行,启动设备时,为啥lcd可以看到图像,kernel还没启动,怎么出图像的。面试时,怎么减少开机启动时间。
uboot的作用
第一目的、就是帮助启动内核的,这是主要目的(告诉内核,从内存哪地址启动,dts,rootfs在哪,分区多大,文件系统是什么格式,init启动进程是什么,比如linuxrc)。第二目的,提供对硬盘,emmc,nand,分区指令,烧录镜像的指令。第三目的、提供一些驱动,对外设进行初步初始化,可以初步使用,比如开机时,快速出声音,图像,8s启动,谁知道你启动没。
所以减少开机时间,可以根据产品,快速出图像,后面慢慢启动就好了,比如电视机。
普通工作,随便了解点uboot,会分区,,设置参数,修改外设驱动(用到再学),会做sd卡固化镜像(如果芯片商没有提供方案)ok了。
其实uboot和裸机开发时没多大区别
第一、设置cpu,时钟,看门狗,cach,mmu,中断。
第二、就是驱动外设了,lcd,emmc(公司用到再学,学了也忘记)
二、kernel
要深入了解内核吗,不用。不管做应用开发,驱动开发也好,知道,系统原理,驱动框架,进程管理调度,内核竞争,信号,中断,锁,这些就够了。
三、rootfs
芯片公司基本会提供,普通工作,都只是添加点启动配置命令,启动一些应用程序,挂载mount emmc分区等。
四、工作感悟
走驱动这条路,其实没什么意思的,都是培训机构,一直在吹嘘的,驱动工资高,欺骗学生的,其实,国内除了华为,几家,没有人
做芯片的,驱动开发,大部分是移植驱动。有些手机公司,OPPO,vivo,应该也没有什么改的驱动。触摸屏驱动商,早就写好了,驱动
不需要了,内核驱动都写好了,会用就行了。岗位少,应用开发多。别再吹嘘linux驱动了,单片机都比他好,岗位多。
没有985,211学历,还是搞应用开发多点好,结合点移植驱动,部署镜像等等。比如音视频开发,海思平台,改改sdk应用代码,加入写网络协议,移植修改点驱动,配置,部署烧录镜像。
有学历的,可以搞搞算法,图像识别,语音识别,人工智能,会点基础的linux就可以了,不要转入uboot,kernel,驱动里去。
上一份工作是2022,11—2023,11年底,汽车公司,底层修修改改,编译镜像,修改后,客户给东西,重新编译给他,客制化配置启动参数,环境,支持应用部门,不懂怎么使用某些驱动。验证emmc,网络,检查死机log,原因。没有任何乐趣。果断离职了。再也不去汽车公司了。还是搞搞算法,应用开发好,qt,音视频采集等等。熟悉产品,有可能,有机会自己创业,搞驱动开发,机会没有,认识一个产品,行业的发展情况。所以,我还是继续搞应用开发,有可能是单片机加rtos,gui,linux应用开发等等。
在家玩了一年,纯粹不想上班,上班没有乐趣,压榨的没有生活意义,不去攀比买房车,就没有压力。有机会做做qt,小家电,智能设备,自己创业。
相关文章:
Linux嵌入式有发展吗,以及对uboot,kernel,rootfs的领悟
工作多年后,对uboot,kernel,rootfs的领悟,总结 上大学时,51单片机,正点原子的stm32,linux arm开发。对uboot,kernel,rootfs的理解云里雾里,感觉自己很懂了 其…...
基于Springboot+Vue的公寓管理系统(含源码+数据库)
1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: SpringBoot自带 apache tomcat 主要技术: Java,Springboot,mybatis,mysql,vue 2.视频演示地址 3.功能 该系统…...
多功能声学气膜馆:承载梦想与希望的舞台—轻空间
在9月29日上午,苏州大学应用技术学院的2024级新生开学典礼暨开学第一课在轻空间建造的多功能声学气膜馆内盛大举行。这一盛典不仅见证了2849名新生的入学,也展示了气膜馆的独特魅力与优越功能。 卓越的声学表现 声学气膜馆采用高性能材料,确保…...
【线程】线程池
线程池通过一个线程安全的阻塞任务队列加上一个或一个以上的线程实现,线程池中的线程可以从阻塞队列中获取任务进行任务处理,当线程都处于繁忙状态时可以将任务加入阻塞队列中,等到其它的线程空闲后进行处理。 线程池作用: 1.降…...
输出 / 目录下所有目录文件的大小并排序
使用 du -sh /* 输出 / 目录下所有的目录总大小,看下效果: [rootlocalhost ~]# du -sh /* 0 /bin 110M /boot 0 /dev 32M /etc 12K /home 0 /lib 0 /lib64 0 /media 0 /mnt 0 /opt du: cannot access ‘/proc/2731/task/2731/fd/4’: No such file or …...
【hot100-java】【编辑距离】
多维dp篇 class Solution {public int minDistance(String word1, String word2) {char [] sword1.toCharArray();char [] tword2.toCharArray();int ns.length;int mt.length;int [][] fnew int[n1][m1];for (int j1;j<m;j){f[0][j]j;}for(int i0;i<n;i){f[i1][0]i1;for…...
随手记:牛回速归
上周-国庆前:牛回速归 国庆:小心被套住 国庆后:一片迷茫 总结:要是上周到国庆前的基本都能捞到,后面情况不好说 后续持续更新...
UI设计师面试整理-设计过程和方法论
在UI设计师面试中,清晰地阐述你的设计过程和方法论是至关重要的。这不仅可以展示你的专业技能和设计思维,也能让面试官看到你是如何解决实际设计问题的。以下是一个全面的UI设计过程和常用方法论的概述,你可以根据你的经验进行相应调整。 1. 设计过程 a. 研究与发现阶段(Re…...
ACM 纳新每日一题 4329: 三进制
首先我们要学习的是数制转化 这里我找了一篇博客https://blog.csdn.net/weixin_53564801/article/details/123665194 一定要注意0需要单独特判一下,这个点尤其重要 然后关于这道题可以使用递归来实现,如下: 递归的代码比较简洁,但…...
WebGIS包括哪些技术栈?怎么学习?
WebGIS,其实是利用Web开发技术结合地理信息系统(GIS)的产物,它是一种通过Internet实现GIS交互操作和服务的最佳途径。 WebGIS通过图形化界面直观地呈现地理信息和特定数据,具有可扩展性和跨平台性。 它提供交互性&am…...
无人机之集群控制及应用
一、无人机集群控制 无人机集群控制是指通过先进的通信、导航和控制算法,实现多架无人机之间的协同、协调和高效的任务执行。其关键技术包括: 通信技术:实现无人机之间的实时数据传输和共享,确保集群控制的准确性和稳定性。 路径…...
AV1 Bitstream Decoding Process Specification--[9]:语法结构语义-5
原文地址:https://aomediacodec.github.io/av1-spec/av1-spec.pdf 没有梯子的下载地址:AV1 Bitstream & Decoding Process Specification摘要:这份文档定义了开放媒体联盟(Alliance for Open Media)AV1视频编解码…...
APISIX 联动雷池 WAF 实现 Web 安全防护
Apache APISIX 是一个动态、实时、高性能的云原生 API 网关,提供了负载均衡、动态上游、灰度发布、服务熔断、身份认证、可观测性等丰富的流量管理功能。 雷池是由长亭科技开发的 WAF 系统,提供对 HTTP 请求的安全请求,提供完整的 API 管理和…...
音频剪辑还能在线做?以前的我真是OUT了,效果秒杀专业软件
以前,剪辑音频都得靠那些专业的音频师,用很贵的设备和复杂的软件才行。不过,现在有了互联网和云计算,在线音频剪辑变得简单多了。只要你有台能上网的电脑或者手机,就能轻松做出很棒的音频。这个变化让更多人都能玩音频…...
Library介绍(三)
环境描述 工作条件 一般lib文件里面包含了芯片的工作条件即operation conditions,其指定了工艺(process)、温度(temperature)和电压(voltage),见图1。 其中,process代表了…...
VMware搭建DVWA靶场
目录 1.安装phpstudy 2.搭建DVWA 本次搭建基于VMware16的win7系统 1.安装phpstudy 下载windows版本:小皮面板-好用、安全、稳定的Linux服务器面板! 安装后先开启mysql再开启apache,遇到mysql启动不了的情况,最后重装了phpstud…...
使用 Llama-index 实现的 Agentic RAG-Router Query Engine
前言 你是否也厌倦了我在博文中经常提到的老式 RAG(Retrieval Augmented Generation | 检索增强生成) 系统?反正我是对此感到厌倦了。但我们可以做一些有趣的事情,让它更上一层楼。接下来就跟我一起将 agents 概念引入传统的 RAG 工作流,重新…...
一行命令将Cmder添加到系统右键菜单中----配置环境
第一步,去官网下载一个简版的文件 ** 第二步,将下载的文件解压后如图,找到Cmder.exe右键以管理员身份运行 第三步,在窗口输入cmder /register all然后回车 第四步,OK!不管在哪里都可以使用了,直接右键即可...
【系统架构设计师】专题:基于构件的软件工程考点
更多内容请见: 备考系统架构设计师-核心总结目录 文章目录 一、构件概述二、构件模型三、CBSE的特征四、CBSE的过程五、构件组装一、构件概述 基于构件的软件工程(Component-Based Software Engineering,CBSE) 是一种基于分布对象技术、 强调通过可复用构件设计与构造软件系…...
目前最好用的爬虫软件是那个?
作为一名数据工程师,三天两头要采集数据,用过十几种爬虫软件,也用过Python爬虫库,还是建议新手使用现成的软件比较方便。 这里推荐3款不错的自动化爬虫工具,八爪鱼、亮数据、Web Scraper 1. 八爪鱼爬虫 八爪鱼爬虫是一…...
Linux应用开发之网络套接字编程(实例篇)
服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...
DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径
目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...
Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)
文章目录 1.什么是Redis?2.为什么要使用redis作为mysql的缓存?3.什么是缓存雪崩、缓存穿透、缓存击穿?3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...
java 实现excel文件转pdf | 无水印 | 无限制
文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...
django filter 统计数量 按属性去重
在Django中,如果你想要根据某个属性对查询集进行去重并统计数量,你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求: 方法1:使用annotate()和Count 假设你有一个模型Item,并且你想…...
vue3+vite项目中使用.env文件环境变量方法
vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量,这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...
今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存
文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...
算法:模拟
1.替换所有的问号 1576. 替换所有的问号 - 力扣(LeetCode) 遍历字符串:通过外层循环逐一检查每个字符。遇到 ? 时处理: 内层循环遍历小写字母(a 到 z)。对每个字母检查是否满足: 与…...
vue3 daterange正则踩坑
<el-form-item label"空置时间" prop"vacantTime"> <el-date-picker v-model"form.vacantTime" type"daterange" start-placeholder"开始日期" end-placeholder"结束日期" clearable :editable"fal…...
二维FDTD算法仿真
二维FDTD算法仿真,并带完全匹配层,输入波形为高斯波、平面波 FDTD_二维/FDTD.zip , 6075 FDTD_二维/FDTD_31.m , 1029 FDTD_二维/FDTD_32.m , 2806 FDTD_二维/FDTD_33.m , 3782 FDTD_二维/FDTD_34.m , 4182 FDTD_二维/FDTD_35.m , 4793...
