完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
1.1 嵌入式 Linux 的组成与教程
1.1.1 嵌入式 Linux 的组成 嵌入式 Linux 系统,就相当于一套完整的 PC 软件系统。 很多人喜欢从系统启动流程开始学习:先学习裸机,裸机集合起来就是 u-boot,再学习内核移植、驱动开发,接下来学习根文件系统,最后学习 APP 开发。 学习裸机需要 2、3 个月,学习 u-boot 也需要 2、3 个月,结果工作中 u-boot 基本不用改,并且 u-boot比驱动开发还难! 按这套流程下来,学了后面忘了前面,最惨的是:不能快速上手工作,消耗学习热情! 入门讲究的是快速,入门之后再慢慢深入 特别是对于急着找工作的学生,对于业余时间挑灯夜读的在职工程师,一定要快! 1.1.2 新教程有哪些内容 按学习者的水平,新教程分为 2 部分:快速入门(APP 基础、驱动基础、外加一个综合项目)、提升(更 多项目、驱动大全、各类专题)。 在文档中,它们又被分为若干篇,比如: 《第 4 篇 嵌入式 Linux 应用开发基础知识》 《第 5 篇 嵌入式 Linux 驱动开发基础知识》 《第 6 篇 实战项目》 《第 7 篇 驱动大全》 《第 8 篇 调试技术》 《第 9 篇 专题》 下图是一个形象化的概述: 1.2 快速入门:搭建环境-》APP 基础-》驱动基础-》马上做项目 以项目为导向,在做项目的过程中缺啥补啥。 这可以学以致用,避免在漫长的学习过程中失去方向。 在 APP 基础、驱动基础的课程中,会先讲解一些必须的知识:无论你以后是做 APP 开发、驱动开发,都必须掌握的知识。 然后就讲解一个项目,把 APP 基础、驱动基础这 2 部分知识活用起来。 1.2.1 讲哪些内容? 1.2.2 怎么讲呢? 比如以 LED、按键为例: ① 先讲 LED、按键的驱动,怎么编写 APP 操作 LED、按键; ② 再讲按键中断,深入理解 Linux 系统机制:休眠-唤醒、进程-线程、poll、异步通知; ③ 接着讲 APP 怎么进行多线程编程、进程通信。 ④ 最后讲项目时,就会涉及 LCD 编程、电容屏编程、进程通信、多线程。 通过这样的“交叉讲解”,可以更快速地掌握整个体系,快速形成总体观,快速具备工作能力。 1.2.3 初学者按照这个顺序学习 1.3 提升:入门之后按需学习 可以学习更多的、更贴合自己需要的项目,也可以深入钻研驱动程序,或是研究其他专题。 1.3.1 实战项目 会讲解这样的项目(不限于,请多提建议): 定位为:快速掌握项目开发经验,丰满简历。 涉及的每一部分都会讲,比如如果涉及蓝牙,在这里只会讲怎么使用,让你能写出程序;如果要深入,可以看后面的蓝牙专题。 1.3.2 驱动大全 包括基础驱动、高级驱动。 这些驱动都是独立成章,深入讲解。 虽然基础驱动弱化了,但是作为 Linux 系统开发人员,这是必备技能,并且从驱动去理解内核是一个好方法。 在讲解这些驱动时,会把驱动的运行环境,比如内核调度,进程线程等概念也讲出来,这样就可以搭建一个知识体系。 没有这些知识体系的话,对驱动的理解就太肤浅了,等于在 Linux 框架下写裸机,一叶障目,不见泰山。 定位为:工具、字典,用到再学习。 1.3.3 调试专题及其他专题 想深入学习的任何内容,都可独立为专题。 比如 U-boot 专题、内核内存管理专题、systemtap 调试专题。 1.4 常见问题 1.4.1 从裸机开始学习效率不高 也许会有人说,是不是因为你们还没录 IMX6ULL 的裸机视频,所以建议我们不从裸机开始学习?当然不是,裸机操作如此简单,我们的裸机文档已经有 600 多页,近 30 多个实验,比任何同行的实验都多。 韦东山从 2008 年起开始做嵌入式 Linux 培训(2011 年录视频),引入了很多新的风格: ① 第一个使用画图板,现场画图讲解原理,现场写代码,现场调试; ② 设计了一套全新的体系:在 Linux 下开发裸板、U-Boot、再学习驱动、再到项目; 我们近 10 年来只做视频,并且只做 Linux,视频质量我们说第二,应该没人敢说第一。 但是,从 2019 年起,我们决定全部推倒重来,录制全新视频了。 为什么? 有一个学员的话“震惊”了我们:U-Boot 的学习比驱动还难,但是在工作中 U-Boot 会用就行基本不用改。 就效率来说,再从裸板、U-Boot、驱动再到项目,这条学习路线太耗时了。学完裸机再到驱动时,可能已经忘了裸机的知识。 1.4.2 什么人需要学习裸机 如果你符合这些条件之一,那么可以从裸机开始学习: ① 没有硬件基础,比如看不懂原理图,想纯粹地掌握硬件编程; ② 没有单片机开发经验,想顺便掌握单片机的开发技能; 学习 STM32 还不如在 Linux 下学习裸机,Windows 工具封装了太多细节,在 Linux 下学习可以学到更多,并且完全覆盖 STM32 单片机的知识。 ③ 有单片机基础,但是想深入内部原理的人(MDK 等图形工具屏蔽了太多细节); ④ 想深入研究 U-Boot,但是 U-Boot 又太复杂,所以先把各个部件按裸机来研究一下; ⑤ 想深入了解主芯片的人: 在日常开发过程中,我们使用 Linux 驱动来操作硬件,很多时候不涉及寄存器。如果你需要微调驱动、解决 BUG,那就需要看芯片手册。在我们的裸机文档里,有深入的讲解。 注意: 目前我们只编写了 100ASK_IMX6ULL 的裸机文档,并不是每个人都要学习裸机,所以我们把它放到文档最后。 1.4.3 这套视频/文档为什么用那么多开发板? 1. 先讲通用知识,再讲特定的知识 芯片在不断发展,你用 A 芯片学习了,工作中很可能用另一款 B 芯片。讲课时,我们必须把通用的知识 概括出来。如果只用一款芯片来讲课,我无法清晰地概括出通用知识。 2. 用多款板子,才能讲更多知识 比如 IMX6ULL 芯片中没有 GPU,使用它可以讲 Framebuffer 驱动程序。 但是用 STM32MP157 时,就可以讲 GPU 的知识,也可以讲 Framebuffer emulation。 1.4.4 以前的视频是从裸机讲起的,现在为什么改了? 2005 年左右,嵌入式 Linux 在全世界、在中国刚刚兴起。那时候芯片厂家 Linux 开发包不完善,从bootloader 到内核,再到设备驱动都不完善。 所以工作中需要掌握所有知识:U-boot、Linux 内核、Linux 设备驱动、应用、项目。 但是 U-boot 那么难,那就先把它拆解开学习各个裸机程序吧。所以以前的课程就会分为这几部分:裸机、U-boot、Linux 内核、Linux 设备驱动、应用、项目。 现在 15 年过去了,嵌入式 Linux 世界发生了翻天覆地的变化: ① 基本系统能用 芯片厂家都会提供完整的 U-boot、Linux 内核、芯片上硬件资源的驱动。 方案厂家会做一些定制,比如加上某个 WIFI 模块,会添加这个 WIFI 模块的驱动。 你可以使用厂家的原始方案,或是使用/借鉴方案商的方案,做出一个“能用”的产品。 ② 基础驱动弱化;高级驱动专业化 基础的驱动,比如 GPIO、UART、SPI、I2C、LCD、MMC 等,有了太多的书籍、视频、示例代码,修修改改总是可以用的。 很多所谓的驱动工程师,实际上就是“调参工程师”。 我们群里有名的火哥,提出了一个概念:这些驱动就起一个“hardware enable”的作用。 高级的驱动,比如 USB、PCIE、HDMI、MIPI、GPU、WIFI、蓝牙、摄像头、声卡。 体系非常复杂,很少有人能讲清楚,很多时候只是一笔带过。 配置一下应用层工具就了事,能用就成。 这些高级驱动,工作中需要专门的人来负责,非常专业。 他们是某一块的专家,比如摄像头专家、音频专家。 ③ 项目为王 你到一个公司,目的是把产品做出来,会涉及 APP 到内核到驱动全流程。 中小公司玩不起华为中兴的配置,需要的是全面手。 大公司里,只负责很小很小一块的镙丝钉,位置也不太稳固啊。 所以,如果你不是立志成为某方面的专家,那就做一个全栈工程师吧。 所以,可以先掌握必备的 APP 基础、驱动基础,然后马上开始学习项目开发。 |
|
|
|
只有小组成员才能发言,加入小组>>
4345个成员聚集在这个小组
加入小组3287 浏览 0 评论
航顺(HK)联合电子发烧友推出“近距离体验高性能Cortex-M3,免费申请价值288元评估板
4232 浏览 1 评论
4238 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 00:14 , Processed in 0.557727 second(s), Total 75, Slave 58 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号