小白入手嵌入式的一点入门建议

本文分享了一位自动化专业毕业生的嵌入式学习历程,从Linux系统搭建到嵌入式Linux环境搭建,再到U-Boot系统、Linux内核移植、驱动开发、应用学习等,覆盖了嵌入式Linux开发所需的基础知识和高级技能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

                      **我的嵌入式学习历程**

写在前面: 关于嵌入式的学习,CSDN或者知乎上的所有有价值的回答几乎都大同小异。我的回答以我自己的亲身经历结合我师兄师姐的经验提炼,希望对有兴趣投身这一行的有所启示。 本人安徽普通一本自动化专业小白一枚,在校学习主修课程是电路,数电模电,plc自控,电力电子技术等,大三一开始就没有考研的打算 就开始琢磨着找工作。在师兄师姐以及一些老师推荐。看我这个基础挺适合走嵌入式这条道路的,于是大三到大四秋招前便开始学习嵌入式技术 。 今年校招进的南京一家通讯公司做嵌入式开发(10k *14)。 本答案有部分引用其他版主回答,欢迎大家在评论留言探讨,一起学习,共同进步。
下面讲的一些都是些知识点概括性东西,让你知道嵌入式这行主要用到哪些知识。 在自学嵌入式这条过程中,我真的首推b站。 我一直认为b站是个学习平台,而非一个视频平台。里面诸如韦东山 华清远见。正点原子野火很多的教育教学视频都是免费的。 跟着后面学能了解不少东西。 最后,牛客力扣还有看准网刷一些大公司的嵌入式开发笔试面试题,看看学长学姐的面经。校招都能进去不错的公司。
嵌入式的技能清单和升级线路

第一部分:Linux平台搭建与环境熟悉

了解linux系统;区分各种版本的Linux系统,以便于拓展 Linux视野。

1、Linux 简介;

2、Linux 系统的主要特点;

3、Linux 的组成;

4、主要的 Linux 版本;

5、嵌入式 Linux简介与发展

第二部分:虚拟机安装和LINUX系统安装

1、虚拟机安装;

2、Linux系统的安装(Ubuntu,Redhat);

3、Linux系统的常用软件的安装;

4、Linux快速入门

5、 熟悉运用 Linux环境下,常用命令的操作与系统设置,如常用的 Shell;掌握基本的Shell(bash) 应用

第三部分:嵌入式LINUX环境搭建

1、 建立嵌入式 Linux开发环境

2、 熟悉嵌入式开发平台

3、 嵌入式 Linux开发工具

4、 Linux下的调试技巧

5、 MAKE工程管理器

6、 硬件环境的搭建;arm-linux-gcc与 gcc安装配置

第四部分: U-Boot 系统

了解 U-Boot 的作用及工作流程;了解Bootloader 的代码结构、编译过程;移植U-Boot;掌握常用的U-Boot命令。

1、 Bootloader介绍
2、 u-boot工程介绍
3、 u-boot的编译使用
4、 u-boot源码分析
5、 u-boot资源分配
6、 配置编译u-boot
7、 u-boot移植过程
8、 u-boot常用命令操作
9、 添加u-boot新命令
10、设置u-boot环境变量

第五部分:LINUX内核移植 ( 推荐本书孟宁的《庖丁解牛Linux内核分析》,讲的还行还有那本kernel完全注释也不错 )
主要的熟悉内核的原码结构和kbuild Makefile语法;掌握和内核、驱动模块编译相关的原理及方法。

1、Linux内核介绍
2、Linux内核特点
3、Linux内核源代码结构
4、Linux内核选项解析
5、Linux内核编译链接
6、内核模块编译、使用方法

第六部分:LINUX根文件系统

1、busybox 包移植、编译
2、Linux跟文件系统制作过程
3、根文件系统介绍
4. nfs文件服务器系统搭建

第七部分:LINUX驱动开发 (最广最多的就是字符设备了,驱动编写说简单简单说难也难,写多了感觉就挺枯燥的。)

1、了解掌握三大设备字符,块,网络设备具体。首先最简单的 按键 GPIO口控制led灯驱动
2、spi,iic,can三大总线。以及中断驱动,在驱动中中断程序的编写,消息队列的应用
3、ADC驱动开发
4、网卡驱动开发
5、串口uart驱动开发
6、LCD屏,液晶显示器
7、触摸屏驱动+tslib(中间插件移植与设置),
8、USB驱动开发+USB无线网卡移植
9、maplay移植与应用(mp3播放)+mplayer移植与应用(视频播放Mp4/广告机等播放) HDMI接口的使用
10、SD驱动开发
11、RTC驱动开发
12、电源管理

第八部分:Linux 应用学习(感觉部分计算机学院也适合搞这个。我的一些计院朋友走的是嵌入式上层应用 工资也高。)

主要目标是精通嵌入式Linux下的程序设计,熟练掌握嵌入式Linux的开发环境、系统编程以及网络编程,熟悉C++、QT编程并且深刻体会整个嵌入式Linux项目开发流程,强化学员对Linux应用开发的能力。

1、Linux系统中的进程的概念,在应用程序中线程与父子进程的创建与应用
2、线程之间、进程之间的通信
3、进/线程间区别联系。
4、管道(PIPE)
5、信号(SIGNAL)
6、内存映射(MAPPED MEMORY)
7、消息队列(MESSAGE QUEUE)
8、信号量(SEMAPHORE)
9、共享内存(SHARE MEMORY)
10、TCP协议在应用程序中的编程开发(SOCKET套接字编程开发)
10.1. ISO/OSI七层协议模型与IP网络四层模式
10.2.TCP/IP协议簇
10.3. 基于嵌入式Linux的TCP/IP网络结构
10.4. 基于嵌入式Linux的SOCKET编程
10.5.UDP与TCP的区别
10.6. UDP SERVER-CLIENT关系程
11、文件读写与存储

第九部分:QT移植与开发(与c++语言挂钩了,要有语言基础。c++算是面向过程开发中最复杂的语言)

了解嵌入式Linux下的几种常见GUI及其特点,重点能掌握QT的有关内容,具备QT程序设计能力。了解嵌入式数据库的配置与开发

1 、嵌入式Linux GUI介绍
2、嵌入式QT开发包移植
3、QT介绍及其信号插槽机制
4、 QT图形界面编程技术
5、QT应用程序与Linux驱动的衔接
6、 QT在实际项目中具体应用

第十部分:无线通讯应用

1、无线wifi模块应用
2、4G模块应用

第十一分布:嵌入式系统应用程序,驱动程序调试

1、Linux基本工具调试使用。GDB,insight调试等
2、Linux应用程序的编程

下面是一些具体比较细的知识点了

嵌入式LININX开发第一学习阶段,主要打好基础,学好C编程,Linux系统编程。

1、C语言编程基础

2、嵌入式开发基础:Linux概述安装,shell命令,vim编辑器,GCC,GDB,Makefile,交叉开发环境构建

3、嵌入式Linux系统编程:shell编程,文件编程,串口编程,进程编程,线程编程,网络编程

4、嵌入式项目开发:数据采集控制系统,串口服务器

嵌入式LININX开发第二学习阶段,掌握ARM汇编程序设计,驱动程序设计。

1、ARM体系结构:ARM体系,ARM指令,Thumb指令,汇编程序设计,逻辑程序开发

2、Linux内核移植:bootloader,内核配置,文件系统

3、驱动程序开发:驱动架构模型,字符设备驱动,块设备驱动,网络驱动

4、嵌入式项目开发:智能家居系统,视频监控系统

嵌入式LININX开发第三学习阶段,掌握C++面向对象程序设计,Qt编程。

1、C++语言编程基础

2、QT编程开发:QT开发基础,QT布局与控件,QT绘图,QT事件,QT网络通信,QT数据库,QT移植

3、嵌入式项目开发:实时视频流(海康大华等项目),gsm通信,3/4/5g的一些小项目(华为中兴爱立信) git上很多开源的小项目,随便做两个都行,简历上也好写。

我校招简历上技能知识这一块填的是:
熟练掌握C 语言(指针,数组,函数,结构体);
掌握基础数据结构和算法(堆栈,链表,队列,二叉树,哈希表,简单排序等);
熟悉C++编程语言(继承,封装,多态);
熟练掌握Linux 系统编程(文件管理,多进程,多线程,进程通信,Socket编程等);
了解Linux 内核驱动编程,熟悉shell等脚本语言,掌握Ubuntu,RedHat下程序开发;
理解面向过程和对象编程,掌握Eclipse下简单的Java及Android开发。
了解 bootloader,内核配置,文件系统,kernel移植。

### 汽车电子嵌入式开发的学习资源与入门方法 #### 一、学习路径概述 对于零基础的小白来说,进入汽车电子嵌入式开发领域需要从基础入手并逐步深入。这不仅涉及到软件编程技能,还涵盖了硬件识以及系统设计能力。建议按照以下顺序展开学习: 1. **掌握基本的编程语言** C语言是嵌入式开发的核心语言之一,在汽车电子领域尤为重要。推荐阅读《C Primer Plus》[^1]来夯实语法基础。 2. **理解微控制器(MCU)** STM32系列MCU因其广泛的应用场景成为初学者的理想选择。可以通过参考书籍如《零死角玩转STM32—F103霸道》[^2]或者官方文档《STM32F10x-中文参考手册》进行理论与实践相结合的学习。 3. **熟悉嵌入式系统的特性** 嵌入式系统具有低功耗、高可靠性等特点,需特别关注其运行环境下的特殊需求。例如,《嵌入式系统 硬件软件及软硬件协同》提供了关于如何构建高效能嵌入式架构的具体指导[^3]。 4. **探索AUTOSAR框架及相关标准** AUTOSAR(Automotive Open System Architecture)已成为现代车辆控制系统的重要组成部分。针对此方向可查阅由伍德雁主编的基础教材[^4],它能够提供有关AUTOSAR多核操作系统初步认识的内容。 #### 二、具体实施步骤中的注意事项 - 在实际动手过程中遇到困难时不要气馁,积极寻求社区支持并与同行交流经验是非常有益的做法。 - 实践环节非常重要,尝试完成一些小型项目比如利用STM32f103ZE制作简单的LED流水灯控制程序可以帮助巩固所学识点。 ```c // 示例代码:使用GPIO口驱动单片机上的LED闪烁 #include "stm32f1xx_hal.h" int main(void){ HAL_Init(); // 初始化HAL库 __HAL_RCC_GPIOA_CLK_ENABLE(); // 开启GPIOA时钟 GPIO_InitTypeDef GPIO_InitStruct = {0}; GPIO_InitStruct.Pin = GPIO_PIN_5; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); while (1){ HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5); HAL_Delay(500); // 设置延迟时间为500ms } } ``` 上述代码展示了如何配置一个通用输入输出端口(Pin),并通过循环改变该pin的状态从而点亮熄灭连接在其上的发光二极管(LED)。 --- ####
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值