嵌入式开发学习路线——写给初入门的同仁

嵌入式开发学习学习路线 一、嵌入式的难点 嵌入式开发比互联网软开(比如Java后端)还是要难一些的,比如Java开发,基本也都是用户态的东西,但嵌入式很多东西都深入到了内核态。 二、总体学习思路 总体来说,还是可以把嵌入式学习分为三个大的阶段: 首先基础学习阶段,这就包括通用编程基础(C语言、数据结构/算法、操作系统、计网、计组、Linux系统基础)和基本的硬件基础,扎实地掌握这两大基础,是后续持续发展和不断进步的动力源泉。 其次就是嵌入式应用编程阶段,或者说系统平台编程阶段。因为一般会以特定的嵌入式平台和特定的嵌入式操作系统为依 阅读详情
AI摘要

本文提供了一条从C语言编程到嵌入式系统开发的学习路线。覆盖了从基础编程到高级内核开发所需的资源,适合希望深入了解嵌入式领域的开发者。

 一般的应用开发,例如桌面应用的开发,移动应用的开发,通常都是在一个IDE集成开发环境中完成。

开发者,熟悉了IDE的使用,熟悉了相关应用编程接口API,就能开发应用了。不需要关心系统本身的太多东西。

(当然,这并不是说,一般的应用开发,不需要了解很多的系统知识。如果开发者具有深厚的系统知识,那当然对于应用开发大有帮助)。

而嵌入式开发却有所不同,他相当于是做系统集成。

开发者可能需要自己确定使用什么cpu,什么内存,什么flash,使用什么外围设备。

同时,整个系统的软件,包括boot、内核、文件系统、应用程序,可能有部分或全部需要自己去拼凑或开发。

这样的话,光靠一点点编程语言的知识,就难以搞定了。


那怎么办呢,当然要学习一些额外的东西了。


好了,话归正转。下面给出相关的学习资料。资料出现的顺序,也就是我们学习的顺序。

 

1.  C程序设计语言

    C语言作者写的书,超级精简。因为精简,所以,这本书要很认真的读。不要求快,要细嚼慢咽,要多思考,要从头到尾(包括附录)的读。

  

2.  Unix环境高级编程 第2版

    知名的Unix编程书籍。学完这本书,对一般的Linux应用开发,基本上可以达到得心应手的地步。

 

3. Unix网络编程 第3版 第1卷

    知名的Unix编程书籍。学完这本书,对一般的Linux网络应用开发,基本上可以达到得心应手的地步。

    (说句题外话,如果自我要求不高的话,学完这3本书,出去混口饭吃已经不是大问题了。)

       (另外,如果想深入一点理解网络,TCP/IP详解 卷2  是一本非常好的书)

 

4.  深入理解计算机系统

    注意,到这里,要进入关键的一步了。这本书,共分为3部分,我们只要看前2部分即可。

    这本书,要相当认真的学习。不仅要看,要思考,还要做完所有的练习题(做题非常重要,一定要坚持先做,再看答案)。

    同时,书中的内容不可能解答你全部的编程疑问。因此,在学习过程中,对自己以前不理解的概念(如C语法的含义,C++多态究竟是如何实现的等问题),要多写小函数或者小代码片段,多分析他们对应的汇编代码(objdump这个最精确;当然,通过使用-S编译选项也行,它的可读性要好一点,但是可能会带有宏指令)。另外,我的经验是,写小函数时,参与运算的变量,最好将它定义为入参(编译器不敢优化)而不是局部变量或全局变量(容易被编译器优化,导致未能生成你要想看的机器码)。

        这本书学完,你将真正成为C语言(甚至C++)的专家。因为你将从机器码的层次,理解C(及C++)的语义究竟是怎么实现的。你还会理解,从C语言代码生成可执行程序的整个过程(预处理,编译,链接,静态库,动态库等)。你还将理解进程的概念,包括进程如何运行,进程如何与OS交互(中断、异常、系统调用)。

 

5.  Linux内核设计与实现

    到这里,算是开始踏入Linux内核的大门了。这本书,从比较高的层次介绍Linux内核。是非常好的内核入门书籍。

 

6.  Linux内核源代码情景分析

    华人写的书,超级通俗易懂。从帮助读者理解内核的角度来看,本书几乎可以算是最好的一本书了。

 

7. Linux设备驱动程序

    这本书非常注重实用。我们最终的开发,基本上,要么是开发驱动,要么是在内核中做些应用(并与用户态做一定交互)。而这本书恰恰教给我们最老练的开发方法。

 

8    u-boot学习

      这里推荐的不是书籍了,而是一篇网络资料。

       http://www.cnblogs.com/heaad/archive/2010/07/17/1779829.html

        上面这篇文章,是一篇非常不错的介绍u-boot工作机制的好文。

        另外,学习u-boot,最好还是买块开发板,以便于实验。

       开发板不用买高档的,买个基本的arm9的就行了。因为我们是学习嵌入式系统原理,有个基本的arm9 CPU就足够了。

       当然,如果是做产品,那还是需要根据产品本身的需求来做选型的。

        有了开发板,就可以修改、编译、烧写u-boot、内核、根文件系统了。

        有了开发板,就可以理解从CPU一通电开始,到Linux跑起来,到最后应用跑起来,在这整个过程中,机器里所发生的一切事情了。

 

好了,在下能介绍的内容就这么多了。后面搞什么,怎么搞,就看大家自己的啦。


嵌入式开发学习路线 基础知识数字电路基础:学习二进制、十六进制、布尔代数、逻辑门等。计算机组成原理:了解CPU、内存、总线、I/O接口等硬件组成。操作系统基础:区分嵌入式操作系统和RTOS。编程基础:掌握C语言和汇编语言。硬件基础:学习电路原理、常见传感器与接口、开发板与硬件平台。核心技能嵌入式软件开发:了解嵌入式系统架构,编写固件,掌握中断与定时器。调试与测试:使用调试工具如JTAG、SWD,以及逻辑分析仪和示波器。RTOS:理解RTOS的基本概念,学习多任务编程。驱动程序开发。 阅读详情

相关推荐

GEO生信数据挖掘实战:从临床信息提取到多维分组可视化(聚类与PCA)

本文以GSE1297数据集为例,详细讲解了GEO生信数据挖掘中临床信息提取与分组构建的实战流程。通过R语言解析样本元数据,利用字符串处理技术从文本中精准构建疾病与对照分组,并强调使用层次聚类图和PCA图进行可视化验证,确保分组合理性与分析可靠性,为后续差异表达等高级分析奠定坚实基础。

cheese的博客 361

什么是嵌入式开发?

本文对嵌入式软件开发以及嵌入式Linux进行了系统的概述,通过网上查阅资料阐述了操作系统、内核、处理器等相关概念,还分别从底层开发和应用层开发的角度总结了嵌入式Linux软件开发内容,顺便丰富了系统调用、交叉编译、ARM、驱动框架、设备树、内核源码等知识。

weixin_45389997的博客 3万+

深度学习中 Internal Covariate Shift 问题以及 Batch Normalization 的作用

深度学习中 Internal Covariate Shift 问题以及 Batch Normalization 的作用前言一、Batch Normalization是什么?1.1 Internal Covariate Shift1.2 Internal Covariate Shift 带来的影响1.3 如何减缓 Internal Covariate Shift 问题带来的影响白化(Whitening)白化存在的问题二、Batch Normalization2.1 传统 Normalization2.2 改进

一扣解千愁的博客 4297

嵌入式学习路线

任何学习一定要有路线图,根据同学,网上搞C和搞硬件的,结合自己的思考整理了一份嵌入式学习路线,之前整理了一份不是很满意,现在又整理了一份。 嵌入式开发学习路线份三个阶段

QWERT520的专栏 5万+

Skiplist,B,B+tree,LSM tree

SkipList 理解(如何实现): 即使是有序的链表,查找的时间复杂度也是O(n),但链表不能随机访问所以不适用于二分查找,使得查找的时间复杂度为O(logn)。 于是将有序链表和二分查找结合得到了SkipList,类似于二叉搜索树,这是一种以空间换时间的算法,通过在每个节点中增加向前的指针,从而提升查找效率(如下图所示)。 一开始如a所示,是一个有序的链表,时间复杂度O(n)。随后建立了e所示的SkipList,从最顶层往下查找,可以跳过许多元素,减少查找次数。 ​

weixin_45875458的博客 948

【YOLOv11多模态涨点改进】独家创新首发 | TGRS 2025 | 引入CDFIM跨模态差异特征交互模块,通过差异特征提取和融合增强机制,减少了冗余信息,显著提升了小目标的检测精度,高效涨点改进

🔥本文给大家介绍使用 CDFIM跨模态差异特征交互模块改进 YOLOv11多模态目标检测,通过有效的差异特征提取和增强,显著提升了小目标的检测精度,特别是在复杂背景和低对比度环境下。该模块通过残差加法和通道与空间注意力机制,增强了可见光与红外模态之间的互补特征交互,减少了冗余信息,提高了检测稳定性。尽管提升了特征交互,CDFIM 仍保持轻量化设计,计算开销和参数量较低,适合实时检测应用。总的来说,CDFIM 模块在保留原始模态信息的同时优化了特征融合,有效提高了 YOLO 在多模态目标检测中的鲁棒性和精度

Ai缝合怪、助力小伙伴高效发论文 132

呕心沥血整理的的嵌入式学习路线

曾经是某见的教学总监,我带出来的学生也有大几千了,基本都从事linux相关工作。网上看了很多的嵌入式学习路线,有的还凑活,有的纯粹是打广告卖板子,有的东拼西凑,简直是嵌入式劝退指南。 大致给你梳理一下我从事的一个嵌入式的课程培训体系吧。 基础 1. linux基本操作: 个人建议只要会一些基本的操作就行了,不需要太深入的学习每一个命令,用到的时候会去搜索就行了。 需要掌握的知识如下: 环境的搭建; Linux目录结构; 文件类型; 基本目录操作,文件操作,vim,ifconfig,ping,cd,cp,m

一口Linux的专栏 3万+

计算机组成原理(第三版)唐朔飞-第三章系统总线-课后习题

计算机组成原理(第三版)唐朔飞-第三章系统总线-课后习题

weixin_45735391的博客 6万+

嵌入式开发入门基础篇

嵌入式开发中既有底层硬件的开发又涉及上层应用的开发,即涉及系统的硬件和软件,C语言既具有汇编语言操作底层的优势,又具有高级语言功能性强的特点,当之无愧地成为嵌入式开发的主流语言。在 STM32开发过程中,不论是基于寄存器开发还是基于库开发,深入理解和掌握嵌入式C语言的函数、指针、结构体是学习STM32的关键。嵌入式C语言的结构特点如下。(1)程序总是从main函数开始执行,语句以分号“;”结束,采用/…/或//做注释。(2)函数是C语言的基本结构,每个C语言程序均由一个或多个功能函数组成。

happy_child_的博客 1万+

商用车重型多挡位机械式变速器(AMT)结构设计与仿真分析

本文针对商用车重型AMT变速器开展结构设计与仿真分析。设计采用12挡双中间轴结构,匹配400kW柴油发动机,最大扭矩2000Nm。通过等比级数分配传动比(头挡14.5,最高挡0.78),采用主副箱组合实现多挡位。双中间轴结构可抵消径向力,提升承载能力。关键设计包括:235mm中心距、4.5-5.0mm齿轮模数、锁环式同步器和复合润滑系统。通过Python参数化建模进行强度校核,计算显示中间轴在2000Nm工况下等效应力满足安全系数要求(屈服强度850MPa,安全系数≥2)。该设计解决了传统MT变速器操作强度

AI的内部世界的博客 115

视觉Transformer实战 | Token-to-Token Vision Transformer(T2T-ViT)详解与实现

Vision Transformer (ViT) 在计算机视觉领域取得了巨大成功,但标准的 ViT 存在一些局限性,如需要大规模预训练数据、对局部结构建模不足等。Token-to-Token ViT (T2T-ViT) 通过引入渐进式分词过程改进了原始 ViT,使其能够在中小型数据集上取得更好的性能。本节将详细介绍 T2T-ViT 的技术原理,并使用 PyTorch 从零开始实现 T2T-ViT。

盼小辉丶的博客 4万+

肝了半个月,我整理出了这篇嵌入式开发学习学习路线+知识点梳理)

不好意思久等了 这篇文章让小伙伴们久等了。 一年多以来,关于嵌入式开发学习路线、规划、看什么书等问题,被问得没有一百,也有大几十次了。但是无奈自己对这方面了解有限,所以每次都没法交代,搞得实在不好意思。 但是办法总归是有的,正如前篇文章《最近厚着脸皮联系了不少老同学》所聊,虽然我自己不从事这些方向,但寻思了一下,我的同学和朋友中,多少还是有一些从事相关方向并且在一线(或曾在一线)工作过的,所以我就请他们帮忙一起梳理这几个我不熟悉领域的学习路线,这次嵌入式开发就是其中之一。 这篇文章之所以拖这么久,因为沟..

CodeSheep 24万+

分布式系统中的“无状态”和“有状态”详解

有状态服务,即服务端需要记录每次会话的客户端信息,从而识别客户端身份,根据用户身份进行请求的处理,典型的设计如 tomcat 中的 session。例如登录:用户登录后,我们把登录者的信息保存在服务端 session 中,并且给用户一个 cookie 值,记录对应的 session。然后下次请求,用户携带 cookie 值来,我们就能识别到对应 session,从而找到用户的信息。

AI天才研究院 2万+

从入门到精通!嵌入式开发完整学习路线,小白也能轻松跟上

这一阶段聚焦“复杂系统开发”,涵盖实时操作系统、Linux嵌入式、C++进阶、QT人机交互,全面提升技术广度与深度,向中高级工程师迈进。基础打牢后,进入嵌入式开发的核心技能突破阶段,重点掌握“数据结构”和“主流单片机开发”,这是从“理论”到“实践”的关键过渡。学习的最终目的是落地项目,这一阶段通过“智能家具”企业级项目,整合所有知识,积累实战经验,适配企业招聘需求。51单片机是嵌入式入门的“最佳练手神器”,操作简单、资料丰富,能快速建立“硬件+软件”的联动认知。

从小白到架构师 8955

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

最权威ARM嵌入式开发学习路线

最权威ARM嵌入式开发学习路线 最新整理史上最齐全嵌入式资料,嵌入式的ARM体系结构的学习,下面给大家分享嵌入式从入门到精通的资料,全部免费下载,3个G的资料学习,资料都在闯客网技术论坛可以下载,有什么不懂的可以加群解决:813238832 下载链接:https://bbs.usoftchina.com/thread-206928-1-1.html 图一 为什么选择学习嵌入式? 嵌入式系统无疑是...

h_5649512的博客 1566

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

嵌入式开发学习路线规划

嵌入式硬件基本知识:了解常见的嵌入式硬件平台(如Arduino、树莓派、STM32等)。嵌入式系统概述:了解嵌入式系统在日常生活中的应用(如家电、汽车、手机等)。嵌入式硬件接口:学习GPIO、UART、SPI、I2C等常见接口的使用。:书籍:《嵌入式系统设计与开发》 —— 简单介绍嵌入式系统的工作原理。:理解嵌入式系统的定义,硬件与软件的结合,嵌入式开发的应用场景。电路基础:学习常见的电子元件(如电阻、电容、三极管、运放等)。C语言基础:变量、控制结构、指针、内存管理等。

weixin_43969367的博客 857

成为Qt开发大牛,从入门到精通,一步一步走完整个学习路线!

成为Qt开发大牛,从入门到精通,一步一步走完整个学习路线!

m0_73443478的博客 1万+

学习路线与初步软件安装_mcu 嵌入式开发学习路线

嵌入式开发是指针对特定硬件平台进行编程设计的过程,通常以微控制器(MCU)为核心,进行硬件控制、数据处理和通信等工作。嵌入式开发与传统的 PC 软件开发有所不同,它需要开发者理解硬件原理,具备一定的电路基础。MCU(微控制单元)是嵌入式开发中最常用的硬件平台,它具有较低的成本、较低的功耗以及较高的灵活性,因此成为了嵌入式系统开发的首选平台。??嵌入式开发是一项需要长期积累和不断实践的技能。在学习过程中,合理规划学习路线、掌握必要的开发工具和软件是至关重要的。

weixin_45923128的博客 382

Qt开发必备技术栈学习路线和资料

Qt开发必备技术栈学习路线和资料

m0_60259116的博客 8538

ARM嵌入式开发板学习路线指引

如何入门嵌入式?嵌入式开发学习方法步骤 如何入门嵌入式?嵌入式开发学习路线指引 嵌入式开发就是指在嵌入式操作系统下进行开发,一般常用的系统有linux,android。 平台:Cortex-A9开发板 嵌入式技术学习如何入手,从何学起呢,以下内容简单介绍嵌入式开发的学习步骤及如何成为一位合格的嵌入式工程师, 一、首先要掌握基础架构 嵌入式Linux系统从软件角度看可以分为四个部分:引导加载程序(Bootloader),Linux内核,文件系统,应用程序。 开发编译环境的搭建,...

weixin_58088629的博客 1121

肝了半个月,我整理出了这篇嵌入式开发学习学习路线+知识点梳理)_嵌入式学习路线

当然由于时间有限、能力也都有限,毕竟嵌入式全体系实在太庞大了,包括我那做嵌入式的同学,也不可能什么都懂,有些东西可能没覆盖到,不足之处,还希望小伙伴们一起交流补充,一起完善进步。所聊,虽然我自己不从事这些方向,但寻思了一下,我的同学和朋友中,多少还是有一些从事相关方向并且在一线(或曾在一线)工作过的,所以我就请他们帮忙一起梳理这几个我不熟悉领域的学习路线,这次嵌入式开发就是其中之一。因为嵌入式方面的很多东西我也不懂,我也算学习了。,所以反过来,如果嵌入式做得好的,我觉得来做互联网问题也不大,到时候就属于。

2401_87555477的博客 779

嵌入式开发学习路线图

ARM+Linux嵌入式底层内核驱动方向学习总体路线图 基础学习Ⅰ---Linux入门 目前嵌入式主要开发环境有 Linux、Wince等;Linux因其开源、开发操作便利而被广泛采用。而Linux操作系 统也只是一个简单的操作系统,简单的使用对于嵌入式开发人 员来说价值并不很高,真正有价值的是掌握Lin...

嵌入式之斋 8960
上一篇: 七条原则实现简单的代码设计
下一篇: 2012年工作学习计划——与天下同行共勉
无忧老猪
博客等级 码龄18年 200粉丝 112原创
评论 12
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值