首页 / 嵌入式项目
#

嵌入式项目

#
30644次浏览 301人互动
此刻你想和大家分享什么
热门 最新
关于嵌入式的一些建议
分享一些建议吧,当然可能建议的有点久远了(个人看法,仅供参考)。如果已经拿到了offer或者是mcu+rtos方向基本都学完了的,请保持继续学习,不要摆烂。特别是趁还有时间,能多学一点对以后职业生涯是很有好处的,甚至能帮助你快速度过试用期。我根据我上班的一些体验来说一下如果大家还有时间的话,需要再多学些什么东西:第一个是c➕➕,上班以后发现c/c➕➕你都要会,c++可以先只学一个基础(至少类和对象、函数重载、构造析构函数、引用、拷贝等)第二个还有时间的话,继续往linux方向学,能学多少学多少,至少你要学会使用linux系统,shell命令敲的很6,并且makefile/gcc工具链是必须要会的。因为对于大多数公司来说没有keil给你用,只能自己去写编译脚本。然后,接下来先往linux应用方向学习(后学linux驱动),主要熟悉linux的系统调用api,到这一步,我觉得整个嵌入式软件的基础已经差不多了。因为在企业中,每个公司行业不一样。我们所谓的mcu、rtos、linux等嵌入式技术栈,其实都是基础(公司内部喜欢称为“平台”),产品功能都是在这些平台上实现的,而每个行业的专精知识才是薪资溢价的重头戏,行业专精知识是什么呢?举个例子,比如我所在的通信行业,协议栈就是最核心的东西,这些协议栈可能部署在arm、dsp、fpga或者是其他SOC平台上,这些平台可能要求你用实时操作系统、linux系统等等。又比如新能源行业的bms、工控行业的伺服驱动等等。因此,建议大家尽量快速把基础打牢固,从而能更快在行业扎根。最后,如果有需要《STM32➕RTOS项目》、《嵌入式八股文合集》及《Freertos开发手册》等资料,也可以私信笔者获取。
点赞 评论 收藏
分享
如何寻找嵌入式项目
经常看见粉丝朋友问在哪里才能找到不烂大街的项目,今天笔者来分享一下如何寻找。以下为个人看法,仅供参考。一、b站b站大学里边有许多项目,可以按照关键词搜索。如搜mcu   rtos项目;不过个人觉得能写在简历上的项目很少,很多智能家居和小车,因此不太建议去该平台寻找。二、Github作为全球最大的开源社区,github里边的开源项目丰富且质量较高。大家可以在里边搜寻开源项目进行复现,但大多数人不知道怎么进行检索,可以按照如下方式:输入"in: description stm32 language: stars:>100 pushed:>2020-12-01”。按照上述方式,可以检索出描述里有stm32,编程语言为c语言,收藏数>100并且更新日期在2020 年12月份之后的项目,这样就能大大提高检索效率。但github上边项目缺点是复现难度大,难度在于开发文档不详细、代码难度高等;同时,大多数好的项目需要实现一个真正的产品,因此通常需要机械结构知识,进行实体制造,外壳封装等,这会导致复现周期加长且需要学习机械或者3D打印知识。因此,可以综合考虑以上因素,在github上选择适合你自己的项目。三、由企业举办的公开赛事官网或课题组项目这些官网里边通常会出现企业命题,会告诉你要做出一个什么东西,会有一个比较宽泛的需求给到你。这些需求说不定就会给你创造出做项目的灵感。课题组项目是可遇不可求的,如果感觉课题组项目和你以后想去的行业方向比较接近,那你就可以将你的课题组项目与你想去的行业多结合起来形成一个新项目,并实现出来,拿去写简历,这也是很不错的。四、复现身边的“老古董”和跨界融合逛逛电子垃圾市场或拆解旧设备(比如说复现且升级改造一个微波炉),逆向工程其硬件和部分功能,尝试用现代微控制器复现或升级改造,这本身就是个极具挑战且独一无二的项目。也可以把嵌入式技术和非传统领域结合,比如用嵌入式系统做艺术装置交互控制、结合生物传感器做健康监测小设备、或者给传统乐器加装智能反馈系统。五、咸鱼及小红书必要的时候,也可以选择知识付费。不过在筛选项目的时候需要考虑以下几点:这个项目是否烂大街、技术栈涉及哪些、有哪些亮点、能否复现成功、开发文档是否详细、是否提供教程和工程源码、电路原理图、接线图等等。总之一句话:需要确定是否能满足你自己的需求,这一点很重要!六、实习个人觉得实习是最优解。如果你能看到公司的产品,尽量把它复现出来,哪怕简单一点。并且也可以写成自己的实习经历(哪怕没能做出来也要会吹,且写在简历上),增加优势。如果实在没能实习,则按照前边讲解的几种方法寻找项目。最后,如果有需要《STM32➕RTOS项目》、《嵌入式八股文合集》及《Freertos开发手册》等资料,也可以私信笔者获取。
点赞 评论 收藏
分享
Bootloader基础概念
Bootloader也叫做引导加载程序。在嵌入式系统上电复位后首先运行引导加载程序,它的功能主要是负责系统的上电自检、必要的硬件初始化、建立储存空间映射,并加载和启动操作系统。Bootloader一般储存在bootROM中,当前使用最多的类型是NOR flash rom,在大多数的嵌入式系统中,flash里边不仅储存了bootloader,还储存了用户程序代码。接下来说一下bootloader如何加载用户程序, 有以下四种方式:方式一:在flash中运行也就是说在嵌入式系统上电或者复位后,执行bootloader代码,完成必要的硬件初始化后, 直接跳转到flash中用户程序的入口地址继续执行。方式二:在RAM中运行在单片机上电或者复位后,在flash中执行bootloader代码,完成必要的硬件初始化,接下来将flash中的操作系统和用户程序代码拷贝到RAM中,然后跳转到ram中的用户程序入口地址执行程序。方式三:从外存储器加载这种情况下,用户程序不存在flash中,而是存在外存中,但是bootloader还在flash中,此时在bootloader中必须要有访问外存的驱动程序,在处理器上电复位后,执行flash中的存放的bootloader代码,完成硬件初始化,通过外存驱动程序去读取外存中的用户程序,并将其复制到RAM中,然后跳转到用户程序的入口地址。方式四:从通信端口加载这种方式与方式三类似,不过需要在访问外存的驱动程序中添加通信端口的驱动程序,比如串口、以太网等,一般用于固件程序的更新调试。前三种方式属于启动加载模式,这是嵌入式系统正常工作时使用的启动方式。第四种加载方式属于下载模式,这是在调试或者维护更新阶段使用的系统启动方式。在下载模式下,bootloader 会通过通信端口从上位机或者服务器上下载操作系统映像/用户程序,暂存到RAM中,然后将其烧录到flash中,也可以烧录到SRAM中运行。最后,如果有需要《STM32➕RTOS项目》、《嵌入式八股文合集》及《Freertos开发手册》等资料,也可以私信笔者获取。
点赞 评论 收藏
分享
关于嵌入式软件开发两个方向的看法
首先声明:以下为笔者个人看法,仅供参考,如果你觉得不对,直接别看。之前和粉丝聊过学习路线的问题,发现还是有一些误区存在--同时学linux和mcu方向。这本身没有什么问题,毕竟多学一点也没有毛病。但是由于两个方向的应用场景不同,这就导致无法在同一份工作既做Linux,又做mcu;并且对于大多数人来说,无法同时精通这两个方向,还需要花费大量时间。因此,如果在时间不充裕的情况下,挑一个方向去学习就够了,不需要两个都学。那么接下来分别说一下两个方向:mcu方向(也称为嵌入式软硬件方向)更专注于软硬件结合,也就是说除了软件部分之外,还需要懂硬件,基本的要求是要能看的懂电路原理图和PCB。如果在软件和硬件分的没那么开的公司,作为一名嵌入式软件工程师,不仅要自己写代码,还需要自己画原理图,画PCB。在软硬件分开的情况下,基本要求是要能看的懂电路原理图。这也是大多数人缺乏的点,为什么没offer,为什么没面试,这就是原因。如果你没学历,那只能卷技术(软件和硬件),将自己提高到入门工程师的水平,这样你才能拿到offer,因此建议大家做项目不要只去找开源代码,把别人代码看懂就完事了,而是要自己去把原理图看懂,把硬件焊出来,自己再去把软件部分调通,这才是企业希望看到的项目。linux方向由于岗位较少,通常需要驱动/内核/应用一起做,仅有部分公司或者原厂才会放出单一的岗位出来,如单独的linux驱动岗位,内核/应用岗位等,这个方向可能对硬件能力的要求较低。由于岗位较少,因此门槛就稍微高一些。上述就是笔者对嵌入式两个方向的看法,仅供参考。最后多说一句的是,简历谨慎同时写linux项目和mcu项目,因为实习的时候,主管说看见同时写的,有很大可能是机构出来的,可能简历无法过筛。最后,如果有需要《STM32➕RTOS项目》、《嵌入式八股文合集》及《Freertos开发手册》等资料,也可以私信笔者获取。
点赞 评论 收藏
分享
嵌入式企业级项目分享-在线式智能分析平台
本人学校普普通通,通过读研期间系统学习嵌入式知识,以及帮助导师做了4个企业级项目,慢慢积攒了开发经验。以至于在2023年秋招,收获了满意offer。目前就职于汇川技术,嵌入式软件工程师岗位。趁着周末整理读研期间所作的一个项目,需要项目资料的学弟学妹可以私聊我。项目所属行业:该项目属于仪器仪表行业的产品,主要应用于化工生成、科学研究以及其他领域的气体测量与分析。项目解决的问题:由于传统的气体检测仪器,不能有效的测量混合气体中的浓度信息,设计该产品,基于气体的热导率不同,通过测量混合气体热导率,间接确定被测组分含量。项目中能学到什么:1、产品的行业知识:调零校准,环境背景补偿以及工业数据的通讯与传输等;2、产品硬件电路设计,包含三个电路板:模拟信号采集电路、温控PID电路、主控数字电路板。3、基于freertos操作系统设计产品的软件开发框架设计思路,高内聚低耦合。4、高速串口通讯框架设计,可靠,防止丢包,支持数据流和数据帧格式传输等。5、基于外部存储器(eeprom或flash)的微数据库,实现数据的存储与增删改查。6、工业通讯协议Modbus RTU与TCP通讯,串口驱动用于Modbus RTU通讯,编写以太网芯片驱动用于Modbus TCP通讯。7、面向对象编程实现产品功能,包括灵活的接口配置,通道选择以及数据的运算过程等。
点赞 评论 收藏
分享
STM32上电复位后如何执行到main函数
当你给STM32开发板通电或者按下复位键的那一刻,STM32内核(通常是Cortex-M系列)立即进入一个确定的状态。硬件复位逻辑强制程序计数器指向一个极其特殊的固定内存地址。对于大多数STM32,这个地址是0x00000000(或者根据BOOT引脚配置映射到其他存储区域的起始地址,例如内部Flash通常是0x08000000)这个地址存放的不是普通指令,而是整个启动流程的第一个关键要素——主堆栈指针的初始值。内核做的第一件事就是读取这个值并初始化MSP寄存器,为后续的函数调用和中断处理建立好堆栈基础。紧接着,内核会读取紧邻的下一个地址(0x00000004)的内容,这个位置存放的是复位向量的地址,也就是复位处理函数的入口点。内核将这个地址加载到程序计数器PC中,至此,硬件自动执行的步骤完成,程序跳转到了软件定义的复位处理函数开始执行。复位处理函数通常由芯片厂商在启动文件中用汇编语言编写(例如startup_stm32fxxxxx.s中的Reset_Handler)。这个函数是启动流程的核心协调者。它的首要任务是调用SystemInit()函数。这个函数由ST的HAL库或标准外设库提供,负责对芯片至关重要的系统级硬件进行初始化。其核心工作包括配置内部时钟源、设置PLL倍频器以将时钟提升到芯片运行所需的高频率、初始化外部高速时钟(如果使用的话)、配置Flash访问等待状态(因为Flash速度通常跟不上内核全速运行)、以及设置关键的系统控制寄存器如SCB->VTOR以正确指向中断向量表的位置。这一步确保了内核和主要总线拥有正确且稳定的时钟信号,是后续所有操作能够正确执行的基础保障。完成关键的时钟和基本系统配置后,启动流程进入一个容易被忽视但极其重要的阶段——由编译器运行时环境负责的数据初始化。复位处理函数接下来会跳转到一个通常名为__main的入口点(这是ARM编译器工具链的约定,其他工具链如GCC可能有类似_start的机制)。__main并非用户编写的main函数,而是编译器提供的库函数。它的核心职责是处理C语言运行环境。这包括:将存储在Flash中的初始化值(.data段)复制到对应的SRAM位置,确保全局变量和静态变量拥有正确的初始值;将未初始化的全局变量和静态变量所在的内存区域(.bss段)清零,防止出现随机值;如果使用了C++,还会执行全局对象的构造函数。这些操作是C/C++程序能够正确运行的前提条件,没有它们,全局变量将处于不确定状态。当所有的底层硬件初始化、运行时环境设置和数据准备就绪后,__main函数最终会调用用户编写的应用程序入口——main()函数,此时进入main函数执行。
点赞 评论 收藏
分享
如何写嵌入式软件开发简历中专业技能部分
今天更新如何写嵌入式软件开发简历中的专业技能部分,笔者建议分点写。首先,专业技能的核心是清晰分类与精准描述。 别把所有技术名词堆在一起。建议按技术栈的自然逻辑分块,比如:处理器架构/平台、编程语言与标准、操作系统/实时内核、外设接口与协议、开发调试工具、软硬件协同、开发方法与流程。这样面试官扫一眼就能定位到关注点。每类里,把你真正掌握的核心技术放前面,不熟的放后面或者干脆不写。投递不同方向的岗位,要调整顺序突出重点,比如投汽车电子,CAN、 AutoSAR这些就得靠前。其次,避免笼统,追求细节深度。这是最容易出问题的地方。不要只写“熟悉STM32"、“了解FreeRTOS"。面试官想知道你具体会什么、用到什么程度。好的写法是拆解技术点并体现应用能力。例如,“熟练掌握STM32F4系列MCU开发(HAL/LL库),具备GPIO、ADC、TIM (PWM/输入捕获)、USART、SPI、12C、 DMA等外设驱动开发与调试经验"。再比如RTOS,写成“精通FreeRTOS任务调度、优先级管理、任务间通信(队列、信号量、事件组)、 内存管理及Tickless低功耗模式应用”。量化成果更好,如“优化中断处理程序,降低关键任务延迟20%”。第三,关注软技能与底层能力。嵌入式开发不仅是写代码。体现你解决复杂问题的底层能力很重要。比如:“深入理解C语言内存管理(堆栈、 静态区)、指针操作及常见陷阱规避”、“具备扎实的硬件基础,能阅读原理图、数据手册,使用示波器、逻辑分析仪进行硬件协同调试”、“熟练使用GCC交叉编译工具链,掌握Makefile/CMake项目构建”、“具备Bootloader 开发、固件升级(IAP)经验”。这些点能显著拉开差距,证明你能独立搞定问题。最后,诚实是底线,用词需谨慎。“精通”慎用, 除非你真是领域专家,能应对最刁钻的问题。“熟练掌握”、“具备.经验”、“熟悉…原理与应用”更稳妥。每一条写上去的技能点,都要做好被深挖细节的准备。别为了堆砌关键词写自己没碰过的工具或协议,面试官几个问题就能问出来。硬件相关的技能,如基本的电路调试、焊接、看时序图,如果是纯软件岗可简略带过或不写,但如果是偏底层的驱动或系统开发,这就是重要加分项。记住,简历上的专业技能不是广告词,而是你技术能力的精准快照。写实、写深、写透,让面试官看到你解决问题的实际能力,远胜过华丽的辞藻和空洞的罗列。面试的本质是验证简历的真实性,确保你写下的每一条,都是你真正走过的路和焊过的板子调过的时序。最后,如果有需要《STM32➕RTOS项目》、《嵌入式八股文合集》及《Freertos开发手册》等资料,也可以私信笔者获取。
点赞 评论 收藏
分享
玩命加载中
牛客网
牛客网在线编程
牛客网题解
牛客企业服务