当前位置:首页 > 物联网 > 大鱼机器人
[导读]这篇文章简单我们来一起梳理嵌入式Linux的一些知识,方便于一些想跟我一样想要由单片机进阶到嵌入式Linux的朋友做一些参考学习。 现在随着嵌入式Linux的教程不断增多,相信应该有不少学单片机的朋友开始折腾这个了吧~

前言

这篇文章简单我们来一起梳理嵌入式Linux的一些知识,方便于一些想跟我一样想要由单片机进阶到嵌入式Linux的朋友做一些参考学习。

现在随着嵌入式Linux的教程不断增多,相信应该有不少学单片机的朋友开始折腾这个了吧~

嵌入式Linux学哪些东西

1、认识Linux


学单片机的朋友有些已经有一些Linux基础了,但也不乏有些朋友没用过Linux,甚至有些初学的读者朋友没听说过Linux,为了照顾这些朋友,这里简单地认识一下Linux:

2、认识嵌入式Linux

学习嵌入式Linux我们需要关注以下几大块内容:


嵌入式Linux软件部分最重要的三部分当属Bootloader、Linux内核、根文件系统。有了这三部分,这才是一个最小的、完整的、可运行程序的嵌入式系统。

(1)BootLoader

BootLoader 是在操作系统运行之前运行的一段代码, 用于引导操作系统。开源的BootLoader 有很多种,比如RedBoot、U-Boot 等 ,其中U-Boot用得最多。U-Boot的源码非常庞大:


我们的学习重心在于学会怎么把芯片原厂移植好的U-Boot拿来修改然后适配我们的板子:


平时说的U-Boot移植通常都是指把芯片原厂移植好的U-Boot拿来修改适配我们板子的过程。

(2)Linux内核

Linux 内核(英语:Linux kernel)是一种开源的类 Unix 操作系统宏内核。我们要学习移植的Linux内核也是把芯片原厂移植好的Linux内核包拿来作移植。内核源码目录如下:

(3)根文件系统

根文件系统(rootfs)是内核启动时所 mount(挂载)的第一个文件系统,内核代码映像文件保存在根文件系中。

而系统引导启动程序会在根文件系统挂载之后从中把一些基本的初始化脚本和服务等加载到内存中去运行。

这里的根文件系统的重要性犹如我们电脑的系统盘,有这个系统盘我们才能装我们的系统。根文件系统有根目录/,根目录下有很多子目录:

(图片来源:百问网)

根文件系统需要专门的框架来制作,这样的框架有:BusyBox、Yocto、Buildroot 等。

(4)Linux驱动

Linux驱动应该是我们学习嵌入式Linux的起始点与重心。上面那三大块内容已经为我们创建好了完整的嵌入式Linux环境。

有了这样一个环境,我们的Linux驱动就可以装在上面。Linux驱动:


Linux中有三大类驱动:字符设备驱动、块设备驱动、网络设备驱动。

设备树(Device Tree):描述设备树的文件。这个 DTS 文件采用树形结构描述板级设备,也就是开发板上的设备信息,比如CPU 数量、 内存基地址、 IIC 接口上接了哪些设备、 SPI 接口上接了哪些设备等等。

(5)Linux应用

Linux中:一切皆文件。在C编程中,我们都知道对文件的操作都是打开文件、读写文件、关闭文件等。

在嵌入式Linux应用编程中,我们的关注点也是怎么操作(open、close、read、write等)这些文件(设备文件等)。

3、一点经验

嵌入式Linux的学习相对于单片机的学习来说要难很多,不仅要学的内容变多了,光是熟悉开发环境(Linux环境、交叉编译器、Makefile等)这一块就挺多内容。

从深度上更是比单片机要深不少,比如以前学STM32是IDE编译,嵌入式Linux是直接用编译器编译或使用编译脚本编译。

从我入门到放弃的经验来看,从Linux驱动和应用开始学是比较好的,不要一上来就去撸上面那三个巨头,不然很容易从入门到放弃。。。

学习这个做好吃苦的准备,可能很多问题都会令你暴走。比如你按照教程来做,最后出来的结果可能不一样,可能会冒出很多问题,这都是很正常的。

而且有时候看似只是一个问题,但这个问题会牵扯着其它问题,得有耐心的解决。

比如之前我在编译Linux内核的时候,出现如下问题:


根据问题描述:缺少了一个叫lzop的东西,然后我按提示安装这个东西,然后又冒出问题:


然后只能到网上找解决方法,然后一个一个方法试,最后解决了:

我的实验方法是和教程一样的,包括开发环境都是教程提供的,这样与教程完全一样的操作都能出现问题,何况有时候得自己搭环境,那出错的概率会更大。

无论如何,都不要那么容易放弃。

-END-
﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
免责声明: 本文转自网络,版权归原作者所有,如涉及作品版权问题,请及时与我们联系,谢谢!

猜你喜欢

一个单片机的小问题。 <<戳这里
做技术的,聊聊研发。 <<戳这里
硬件工程师如何成为焊接界的高手。 <<戳这里

 最 后   
 

若觉得文章不错,转发分享,也是我们继续更新的动力。
5T资源大放送!包括但不限于:C/C++,Linux,Python,Java,PHP,人工智能,PCB、FPGA、DSP、labview、单片机、等等!
在公众号内回复「 更多资源 」,即可免费获取,期待你的关注~

长按识别图中二维码关注

免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读

PSOC™ Edge E84 AI 开发套件是一款用于嵌入式和边缘人工智能应用的开发板。本指南将说明如何配置 Arduino IDE 以支持 PSOC™ Edge E84 AI 开发套件,并提供在该开发板上编译、上传和运...

关键字: 嵌入式 边缘人工智能 Arduino

Agentic AI 正在生成比以往更多的模型、代码、需求以及测试工件,但更多的产出并不意味着更快的系统级开发进展。这种脱节源于系统连续性的中断:每次工具之间的交接都会丢失可执行的系统状态,迫使工程师在继续工作之前,从静...

关键字: 电动汽车 Agentic AI 嵌入式

本项目将一块STM32板改造为一个简单的音频设备,通过三个按钮进行控制。按下其中一个按钮可播放音调,另外两个按钮则用于通过扬声器调节频率的上下变化。该项目探索了嵌入式编程的基础知识,包括GPIO配置、方波生成以及实时响应...

关键字: 扬声器 嵌入式 方波 STM32

树莓派Pico 2是树莓派推出的最新微控制器开发板,搭载强大的RP2350微控制器。它提供更快的性能、更大的内存、增强的安全性,并支持Arm Cortex-M33和Hazard3 RISC-V两种架构。

关键字: 嵌入式 MicroPython 树莓派 RP2350

语音控制在消费电子产品中已十分常见,但将其集成到嵌入式项目中却仍然令人意外地困难。大多数解决方案依赖云服务、需要大量编程,或仅限于固定的一组预设命令。对于创客、学生和业余爱好者而言,将离线语音识别功能融入ESP32项目可...

关键字: 消费电子 嵌入式 ESP32-S3

在后端服务、嵌入式系统的长期运行过程中,多线程死锁是最让人头疼的疑难问题之一。很多时候程序没有任何崩溃迹象,CPU占用率也很低,日志输出突然完全停滞,所有业务请求全部卡死,进程就像进入了永久休眠状态。不少开发者遇到这类问...

关键字: GDB 嵌入式

康佳特基于 AMD 锐龙 AI 嵌入式 X100 系列处理器的COM-HPC Client conga-HPC/cRX1模块 树立性能新标杆

关键字: AI 嵌入式 处理器

在嵌入式开发、硬件调试和芯片测试的世界里,JTAG是一个无处不在却又常常被开发者一知半解的核心存在。很多工程师天天用JTAG下载程序、调试芯片,却未必能说清它的本质,遇到下载失败、连接中断的问题时,只会盲目更换仿真器,找...

关键字: JTAG 嵌入式

AI编程助手已经彻底改变了一名开发者一个上午能完成的工作量。过去需要几个小时才能理清思路、写出草稿的代码,现在几秒钟就能生成。对于探索性工作和快速原型开发来说,这种效率提升是实实在在的。

关键字: AI编程助手 代码 嵌入式

很多嵌入式开发者调试IIC通信时,都遇到过这类看似无解的问题:代码逻辑完全符合数据手册要求,示波器抓波形也看不出明显异常,但总线就是随机丢包、传感器偶尔返回乱码,甚至完全无法通信。排查到最后才发现,要么是GPIO配置成了...

关键字: 嵌入式 上拉电阻
关闭