嵌入式 Linux 学习
在学习嵌入式 Linux 之前,我们先来了解一下嵌入式 Linux 有哪些东西。
1. 嵌入式 Linux 的组成
嵌入式 Linux 系统,就相当于一套完整的 PC 软件系统。

无论你是 Linux 电脑还是 windows 电脑,它们在软件方面的组成都是类似的。
我们一开电脑的时候,对 windows 电脑有一个黑乎乎的界面,有些黑白的文字,这是 BIOS 在运行,它的目的是想去启动 windows。我启动 windows 的目的是干嘛,我启动 windows 是想去玩各种应用程序,于是,这 windows 要找到 C 盘,在 C 盘里面找到各种应用程序。
那么对于 Linux 它也是类似的,在 Linux 系统中一上电运行的是一个 bootloader,它的目的也是想去启动内核,我启动这个内核肯定是想去玩各种应用程序,这应用程序在哪里?对于 windows 来说,以前是在 C 盘,对于 Linux 来说,它在根文件系统里面,这个内核要识别出根文件系统,然后运行里面的应用程序。从启动流程来看,一上电是 bootloader,bootloader 会启动内核,内核会去识别出或者称为挂载根文件系统,然后去运行应用程序。
所以很多人是怎么学习嵌入式 Linux 呢?很多人喜欢从系统启动流程开始学习:先学习裸机,裸机集合起来就是 u-boot,再学习内核移植、驱动开发,接下来学习根文件系统,最后学习 APP 开
发。整个流程下来非常耗时,并且得不偿失。
学习裸机需要 2、3 个月,学习 u-boot 也需要 2、3 个月,结果工作中 u-boot 基本不用改,并且 u-boot 比驱动开发还难,得不偿失!内核本身呢?注意了我们说的这个内核是什么,裁剪移植,甚至还有各种专题,比如说内存系统、进程管理系统,文件系统等等,但是裁剪移植一般来说都是芯片厂家都做好的,你花大量的精力去学习这一块,在工作中基本上用不到,所以也是得不偿失。
按这套流程下来,学了后面忘了前面,最惨的是:不能快速上手工作,消耗学习热情!
入门讲究的是快速,入门之后再慢慢深入,特别是对于急着找工作的学生,对于业余时间挑灯夜读的在职工程师,一定要快!
以前之所以按照这套流程(2008 年左右的主流的学习流程)来学习,是因为之前的芯片厂家对 Linux 的支持还不到位,很多时候需要你去改 bootloader,很多时候需要你去裁剪移植内核,以前这部分的人才都比较紧缺,所以在十几年前按照这套流程来学习。但是现在不是这样了,像你再这样去学习的话,得不偿失。十几年过去了,厂家对 Linux 的支持越来越完善。
2. 嵌入式 Linux 的学习路线
那么我们怎么去学习呢,我们怎样学习才能够学以致用,这是我们新的学习路线图。

这是入门的学习流程,我们建议先入门,入门之后再去学习各种专题。那么怎么入门呢?分为三部分,先学习应用程序开发,再学习驱动程序的一些基础,最后做项目。
为什么是这套流程呢?因为应用程序稍微简单一点,你可以通过应用程序快速入门;那么为什么要学习驱动程序呢?即使你以后只从事应用程序开发,你不想去做驱动程序,但是一些基础的知识仍然需要你掌握,如果你没有这些基础知识的话,你去写应用程序的时候,就不知道怎么去操作硬件,也不知道跟别人怎么交流。有了前面这两个基础之后,我们就可以编写各种项目来锻炼自己的能力。
那么我怎么去学习应用程序,驱动程序,项目呢?我要去学习应用程序的时候,建议先学习偏理论的知识,然后再去学习实战的知识,这样理论和实战就可以结合起来;学习驱动程序的时候也是一样。对于项目它们基本上就是独立的了,通过项目来把应用程序和驱动程序给融合起来。
这就是我们新的学习路线。你看完这些之后,入门就没问题了,入门之后,你就可以按自己的兴趣来学习各种专题了。
相关文章:
嵌入式 Linux 学习
在学习嵌入式 Linux 之前,我们先来了解一下嵌入式 Linux 有哪些东西。 1. 嵌入式 Linux 的组成 嵌入式 Linux 系统,就相当于一套完整的 PC 软件系统。 无论你是 Linux 电脑还是 windows 电脑,它们在软件方面的组成都是类似的。 我们一开电…...
Makedown语法
这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…...
SQLite语句
1.重写SQLiteOpenHelper // 例. public class MySQLiteOpenHelper extends SQLiteOpenHelper {public MySQLiteOpenHelper(Nullable Context context, Nullable String name, Nullable SQLiteDatabase.CursorFactory factory, int version) {super(context, name, factory, ve…...
Spring揭秘:Aware接口应用场景及实现原理!
内容概要 Aware接口赋予了Bean更多自感知的能力,通过实现不同的Aware接口,Bean可以轻松地获取到Spring容器中的其他资源引用,像ApplicationContext、BeanFactory等。 这样不仅增强了Bean的功能,还提高了代码的可维护性和扩展性&…...
校园小情书微信小程序,社区小程序前后端开源,校园表白墙交友小程序
功能 表白墙卖舍友步数旅行步数排行榜情侣脸漫画脸个人主页私信站内消息今日话题评论点赞收藏 效果图...
从Pandas到Polars :数据的ETL和查询
对于我们日常的数据清理、预处理和分析方面的大多数任务,Pandas已经绰绰有余。但是当数据量变得非常大时,它的性能开始下降。 本文将介绍如何将日常的数据ETL和查询过滤的Pandas转换成polars。 图片 Polars的优势 Polars是一个用于Rust和Python的Data…...
Node.Js编码注意事项
Node.js 中不能使用 BOM 和 DOM 的 API,可以使用 console 和定时器 APINode.js 中的顶级对象为 global,也可以用 globalThis 访问顶级对象 浏览器端js的组成 Node.js中的JavaScript组成 相比较之下发现只有console与定时器是两个API所共有的ÿ…...
floodfill算法题目
前言 大家好,我是jiantaoyab,在下面的题目中慢慢体会floodFill算法,虽然是新的算法,但是用的思想和前面的文章几乎一样,代码格式也几乎一样,但不要去背代码 图像渲染 https://leetcode.cn/problems/flood…...
AI相关的实用工具分享
AI实用工具大赏:赋能科研与生活,探索AI的无限可能 前言 在数字化浪潮汹涌而至的今天,人工智能(AI)已经渗透到我们生活的方方面面,无论是工作还是生活,都在悄然发生改变。AI的崛起不仅为我们带…...
K8s — PVC|PV Terminating State
在本文中,我们将讨论PV和PVC一直Terminating的状态。 何时会Terminting? 在以下情况下,资源将处于Terminating状态。 在删除Bounded 状态的PVC之前,删除了对应的PV,PV在删除后是Terminting状态。删除PVC时,仍有引用…...
C语言 --- 指针(5)
目录 一.sizeof和strlen对比 1.sizeof 2.strlen 3.strlen 和sizeof的对比 二.数组和指针笔试题目详解 回顾:数组名的理解 1.一维数组 2.字符数组 代码1: 代码2: 代码3: 代码4: 代码5: 代码6&am…...
Android Studio Iguana | 2023.2.1版本
Android Gradle 插件和 Android Studio 兼容性 Android Studio 构建系统基于 Gradle,并且 Android Gradle 插件 (AGP) 添加了一些特定于构建 Android 应用程序的功能。下表列出了每个版本的 Android Studio 所需的 AGP 版本。 如果特定版本的 Android Studio 不支持…...
并查集(蓝桥杯 C++ 题目 代码 注解)
目录 介绍: 模板: 题目一(合根植物): 代码: 题目二(蓝桥幼儿园): 代码: 题目三(小猪存钱罐): 代码: …...
MapReduce内存参数自动推断
MapReduce内存参数自动推断。在Hadoop 2.0中,为MapReduce作业设置内存参数非常繁琐,涉及到两个参数:mapreduce.{map,reduce}.memory.mb和mapreduce.{map,reduce}.java.opts,一旦设置不合理,则会使得内存资源浪费严重&a…...
pyside6 pytq PyDracula QVideoWidget视频只有画面没有声音
解决方案: 先不使用框架,纯pyside6代码,如果添加视频有画面有声音,那可以排除是硬件问题,如果没有画面只有声音,可能是视频解码器无法解码,换个格式的视频文件如果只有使用PyDracula 出问题&am…...
Axure基础 各元件的作用及介绍
图像热区 增加按钮或者文本的点击区域,他是透明的,在预览时看不见。 动态面板 用来绘制一下带交互效果的元件,他是动态的,如轮播图,一个动态面板里可以有多个子面板,每一个子面板对应着不同的效果。 他…...
学习Java的第六天
目录 一、变量 1、变量的定义 2、变量的声明格式 3、变量的注意事项 4、变量的作用域 二、常量 三、命名规范 Java 语言支持如下运算符: 1、算术运算符 解析图: 示例: 2、赋值运算符 解析图: 示例: 3、关…...
基于Spring Boot+ Vue的房屋租赁系统
末尾获取源码作者介绍:大家好,我是墨韵,本人4年开发经验,专注定制项目开发 更多项目:CSDN主页YAML墨韵 学如逆水行舟,不进则退。学习如赶路,不能慢一步。 目录 一、项目简介 二、开发技术与环…...
多轨迹建模方法的介绍与实操-基于R语言
本文介绍了多轨迹建模方法(Group-Based Multivariate Trajectory Modeling),这是一种扩展了单指标组基轨迹建模的技术,用于分析多个疾病生物标志物或临床重要因素的联合轨迹,以更好地理解和追踪疾病进程、行为或健康状…...
【Spring】Spring状态机
1.什么是状态机 (1). 什么是状态 先来解释什么是“状态”( State )。现实事物是有不同状态的,例如一个自动门,就有 open 和 closed 两种状态。我们通常所说的状态机是有限状态机,也就是被描述的事物的状态的数量是有…...
智平方、云深处、乐聚扎堆冲刺IPO——资本化元年开启,百亿估值背后专利暗战升级
智平方、云深处、乐聚扎堆冲刺IPO——资本化元年开启,百亿估值背后专利暗战升级成都余行10000项创新清单,助拟上市企业构建“专利护城河”,赢得资本市场信任2026年,人形机器人产业迎来“资本化元年”。据IT桔子统计,截…...
如何审计一个智能合约?
如何审计一个智能合约? 智能合约作为区块链技术的核心应用之一,凭借其去中心化、不可篡改的特性,被广泛应用于金融、供应链、游戏等领域。智能合约一旦部署便难以修改,任何漏洞都可能引发严重的安全问题,甚至导致巨额…...
GPUStack 在华为昇腾 I A 服务器上的保姆级部署指南不
开发个什么Skill呢? 通过 Skill,我们可以将某些能力进行模块化封装,从而实现特定的工作流编排、专家领域知识沉淀以及各类工具的集成。 这里我打算来一次“套娃式”的实践:创建一个用于自动生成 Skill 的 Skill,一是用…...
uniapp结合微信公众号H5静默授权:从本地调试到获取openid的完整实践
1. 理解静默授权与openid的核心逻辑 静默授权是微信公众号开发中获取用户基础信息的常用方式,特别适合不需要用户主动授权的场景。与需要用户点击确认的snsapi_userinfo授权不同,snsapi_base授权可以在用户无感知的情况下完成。这个过程中最关键的产出物…...
商业街区改造指南:盘点丽江商业街区美陈氛围提升设计公司的创新思路
丽江古城的每条巷道都在讲述商业与文化的交融。随着文旅消费升级,如何在保留在地文化根脉的同时提升街区视觉与体验感,成为运营方关注的焦点。近年来,部分设计团队在丽江开展了从纳西元素现代化转译到灯光、装置与业态融合的探索实践…...
穿戴式设备:生理信号采集与健康状态分析
**穿戴式设备:生理信号采集与健康状态分析** 在科技飞速发展的今天,穿戴式设备已成为健康管理的重要工具。它们通过实时采集心率、血氧、体温等生理信号,结合智能算法分析用户的健康状态,为疾病预防和健康干预提供科学依据。无论…...
TMC4671电机驱动调试避坑指南:从SPI通信失败到电机抖动的实战排查
TMC4671电机驱动调试避坑指南:从SPI通信失败到电机抖动的实战排查 调试TMC4671电机驱动芯片时,工程师常会遇到各种"坑"和"雷区"。本文将聚焦实际调试过程中最常见的问题,提供一套从现象到原因的逆向排查方法,…...
RGBW色彩转换器:嵌入式系统高保真白光增强方案
1. RGBW色彩转换器技术解析:面向嵌入式显示系统的高保真白光增强方案1.1 工程背景与设计动因在LED显示与智能照明嵌入式系统中,RGB三色LED驱动已成主流,但其在高亮度白光输出场景下存在固有缺陷:当需呈现高亮度中性白(…...
得意黑Smiley Sans:一款能让你爱上中文排版的窄斜体黑体终极指南
得意黑Smiley Sans:一款能让你爱上中文排版的窄斜体黑体终极指南 【免费下载链接】smiley-sans 得意黑 Smiley Sans:一款在人文观感和几何特征中寻找平衡的中文黑体 项目地址: https://gitcode.com/gh_mirrors/smi/smiley-sans 你是否厌倦了千篇一…...
Docker部署Ollama模型墒
前言 Kubernetes 本身并不复杂,是我们把它搞复杂的。无论是刻意为之还是那种虽然出于好意却将优雅的原语堆砌成 鲁布戈德堡机械 的狂热。平台最初提供的 ReplicaSets、Services、ConfigMaps,这些基础组件简单直接,甚至显得有些枯燥。但后来我…...
