首页 / 通信硬件知识分享
#

通信硬件知识分享

#
26283次浏览 462人互动
此刻你想和大家分享什么
热门 最新
2024-12-26 16:45
已编辑
中华女子学院 嵌入式软件工程师
嵌软能否速成?
个人认为可以,但极力不推荐,建议大一开始稳扎稳打,卷比赛实习,后期秋招会很顺利,薪资也能A得比较高下面内容仅个人经验看法总结准备方向:嵌入式MCU一、什么前提?1. 距离秋招时间只有不到3个月,而且你惊讶的发现你大学都在摆,一个实习都没有(或者实习完全不垂直)2. 单片机你懂一点但是不多,属于那种看了就会上手就废的类型3. 你不会嵌入式linux4. 学历稍微好一点5. 本科二、快速上手?1. 准备两个板子,一个性能低一点一个高一点,方便后续做项目,可以都用STM322. 牛客或者其他平台找别人的简历,因为嵌入式方向很杂,本科可能更适合做MCU,硕士更适合做Linux;小公司更注重实习和垂直经历,项目最好与公司业务强相关,大公司则比较宽容,可以做一些通用的但是有一定深度的项目(烂大街项目魔改)2. 去B站找板子对应的视频,按你期末速成的样子3倍速学,大概理解框架后直接啃文档3. 最好上手搭一个真实项目,必须你一个人完成,并且最后项目能运行,那么OK这一部分没问题了,日后面试官问你你也能侃侃而谈4. 先学裸机,后续务必速成RTOS,都是裸机项目不可取别怕烧钱,板子材料直接买,不想买就找师兄师姐援助,再不济打比赛顺路报销,总之必须要动手实践做实物三、水个简历?非常好,你现在已经成功做了两个烂大街项目,一个MCU一个RTOS甚至还不经意整了个Linux项目(项目大概2-3个最好),那现在请开始准备你的简历1. 简历可参考互联网前后端的格式,大差不差,基本都是技术栈+项目+实习+比赛+个人情况2. 准备八股文3. 润色项目,深挖难点4. (不推荐走此歪门邪道)如果你实在不知道自己要做哪个方向的,那么可以选三个项目分别对应三个不同的领域,然后海投让公司来做选择,总有一个能与你做的内容相匹配四、开始面试?嵌软(非Linux)面试难度相比于互联网低得多,一般而言投递嵌入式MCU中小厂甚至部分大厂都不会要求面试的时候手撕算法(笔试会有算法题)所以如果你不投头部大厂,面试手撕算法完全可以不准备,把时间留给做项目以及背八股一般面试时基本全问项目,八股拷打属于少数,所以务必确保你对你的项目熟稔于心条理清晰的把你会的说出来就完了,最好详细一些
feelinghappy:在年轻时如果生活所迫,速成(迅速获得工作能力,胜任工作ok的)。后续需要努力深耕,建立自己的护城河。
点赞 评论 收藏
分享
2024-12-12 08:33
嵌入式开发必备基础知识
  1. 嵌入式系统的组成嵌入式系统通常由以下几个部分组成:硬件平台:包括微处理器(如ARM、MIPS、x86等)、传感器、执行器、输入输出设备(如LCD、按键、LED等)。操作系统:嵌入式系统可以使用实时操作系统(RTOS)或裸机(bare-metal)开发。RTOS如FreeRTOS、uC/OS-II等,裸机编程通常指直接与硬件打交道,没有操作系统的介入。软件:包括驱动程序、应用程序、系统软件等。驱动程序负责硬件与软件的通信,应用程序则实现系统功能。2. 嵌入式开发工具链嵌入式开发通常需要一系列的开发工具:集成开发环境(IDE):常用的IDE有Keil、IAR Embedded Workbench、Eclipse等,它们提供了代码编辑、编译、调试等功能。编译器:常见的嵌入式编译器有GCC、ARM Compiler等,能够将源代码编译成适合嵌入式平台的机器代码。调试器:如JTAG调试器、ST-Link、OCD等,用于调试程序的执行,帮助开发者查看寄存器、内存等信息,实时诊断问题。仿真器:帮助开发者在没有实际硬件的情况下测试代码。3. 嵌入式编程语言嵌入式开发中,最常用的编程语言是:C语言:几乎所有嵌入式开发都使用C语言,因为它能够直接操作硬件,提供较高的执行效率,并且占用内存较少。嵌入式开发中,C语言常用于编写驱动、操作系统和应用层代码。汇编语言:对于需要极高性能和硬件控制的任务,汇编语言有时用于优化代码,直接操作硬件寄存器。C++:在一些复杂的嵌入式系统中,C++用于面向对象编程,尤其是在处理较为复杂的算法时。4. 嵌入式开发中的实时性要求实时性是嵌入式系统中至关重要的概念,特别是在处理信号采集、控制系统时。根据实时性要求,嵌入式系统可以分为:硬实时系统:对时间要求非常严格,任务必须在规定的时间内完成,否则将导致系统失败。例如,航空航天、医疗设备等。软实时系统:虽然有时间限制,但如果超时不会导致系统完全失败,系统仍然能正常工作。例如,视频播放、音频处理等。5. 基本的嵌入式开发流程嵌入式开发流程一般包括以下步骤:需求分析:明确系统的功能需求、硬件需求、性能要求等。硬件选择:选择适合的微控制器(MCU)或微处理器(MPU),并了解其硬件资源(如GPIO、UART、SPI、I2C等外设)。软件设计:根据需求设计嵌入式软件架构,包括驱动、RTOS配置、应用层逻辑等。编程与调试:在开发环境中编写代码,进行调试和测试,确保软件的正确性和性能。测试与验证:在目标硬件上进行系统测试,验证软件和硬件的协同工作。我面试看的是大佬的面经,链接放下边了  c++/嵌入式面经专栏-牛客网 https://www.nowcoder.com/creation/manager/columnDetail/MJNwoM
点赞 评论 收藏
分享
2024-12-11 08:19
经典30个嵌入式面试问题
  1. 什么是嵌入式系统?2. 嵌入式系统和普通计算机系统有什么区别?3. 嵌入式系统的主要应用领域有哪些?4. 嵌入式系统的设计流程是什么?我这里有单片机、嵌入式、plc、需要资料的在评论区扣个65. 请解释一下嵌入式系统的实时性。6. 嵌入式系统中常用的微处理器架构有哪些?7. 请解释一下中断和中断处理程序。8. 嵌入式系统中的存储器类型有哪些?9. 请解释一下嵌入式系统中的闪存和EEPROM的区别。10. 嵌入式系统中常用的通信接口有哪些?11. 请解释一下I2C和SPI总线协议。12. 什么是多任务处理和实时操作系统(RTOS)?13. 嵌入式系统中常见的调试技术有哪些?14. 请解释一下嵌入式系统中的功耗管理技术。15. 嵌入式系统中常见的电源管理技术有哪些?16. 什么是嵌入式软件开发流程?17. 请解释一下嵌入式系统中的编译器优化。18. 嵌入式系统中的固件和驱动程序有什么区别?19. 请解释一下嵌入式系统中的模拟和数字信号处理(DSP)。20. 嵌入式系统中常见的传感器有哪些?21. 请解释一下嵌入式系统中的PWM(脉宽调制)。22. 嵌入式系统中常见的电机控制技术有哪些?23. 请解释一下嵌入式系统中的模拟输入和输出接口。24. 嵌入式系统中的实时时钟(RTC)有什么作用?25. 请解释一下嵌入式系统中的看门狗定时器(Watchdog Timer)。26. 嵌入式系统中的RTOS调度算法有哪些?27. 请解释一下嵌入式系统中的任务间通信机制。28. 嵌入式系统中常见的电源管理芯片有哪些?29. 请解释一下嵌入式系统中的引脚复用技术。30. 嵌入式系统中的电磁兼容性(EMC)有什么重要性?嵌入式C++面试冲刺可以看大佬面经  链接在下边  c++/嵌入式面经专栏-牛客网 https://www.nowcoder.com/creation/manager/columnDetail/MJNwoM
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
2024-12-19 18:53
什么是芯片验证,芯片设计/验证工程师是做什么的?
ASIC(Application-Specific Integrated Circuit)芯片设计流程包含以下几个步骤:design specification(规范制定)->design entry(设计入口)->design synthesis(综合)->physical design(物理设计)->design sign-off       而我们常说的芯片验证一般指的就是在pre-silicon阶段使用仿真工具对设计的功能性进行验证。一般来说一个完整的硬件研发部门需要由这四个职能部门构成:硬件设计、逻辑设计、软件设计、测试平台。其中芯片验证是属于成品测试,有时候会在单板上去验证某个单元模块的芯片的功能实现情况,根据给入的信号和反馈得到的信号来判断,也有公司做芯片测试仪器产品,用于验证和测试一个芯片的性能和电参数,这样可以保证生产出来的芯片性能和电参数在送出去之前都能通过检测达到合格。       硬件设计部分需要完成包括但不仅限于产品设计书的文档编写,具体工作还有器件与芯片的选型、电路各模块功能的设计,各功能模块之间的通信,整个电路的设计架构是最为重要的也是最顶层,决定了整个电路的布局合不合理以及性能最终实现情况,       逻辑设计处于硬件设计之后,需要实现由前面已经设计好的电路的具体功能,电路设计好了,每个模块需要实现相应的功能,这时候就要逻辑这块的同事去编写好功能代码和运维脚本去烧录到芯片中,比如FPGA和CPLD,FPGA用于数据和信息的处理,CPLD可用于整板的运维和监控。       软件设计则完成整个板子的软件部分,给整板植入一个操作系统,需要在这个平台上完成各个模块之间的功能调用以及协同合作,能够实时看到整板的运行情况,以及整板运行时的各参数指标,去控制整板各个功能的启用和停止。       测试平台就负责将经过前面处理好的整板进行软硬件测试,运行工作一段时间,看是否会出现异常,将测试以及工作运行过程遇到的异常现象总结并反馈给前面的软硬件团队,沟通解决方案,硬件部分的问题交给硬件设计部门,软件部分的问题交给软件设计部门。反馈回去之后,再重新走一遍前面的流程,确保新引进的变动不会对整板功能实现带来影响。       芯片验证工程师的工作内容就是编码验证IC模块,验证设计代码,具体就是根据芯片规格和特点设计并实现验证环境;根据芯片或模块的规格,利用已实现的验证环境进行验证和回归。
点赞 评论 收藏
分享
2024-12-30 21:32
已编辑
单片机入门最佳路线,避开90%新手的坑
  时间很快,不知不觉从事单片机开发很多年了,对于单片机怎么学这个话题,感慨万千。单片机在外行人看来门槛很高,既要懂硬件又要会编程,大多数人还没开始已经吓尿了!其实,单片机并大家没想的这么难,关键就是方向正确+努力。下面来讲讲我的自学经历。曾经我和大多数即将步入社会的学生一样,不知道自己以后该做什么,对未来充满无助和迷茫。更糟的是,我在大学时候还因为生病耽误了半年课程,对那时候的我来说,回校第一件事就是给自己列计划,怎么补回自己失去的半年,赶上同学的进度。一开始选择计算机这个专业,就是看重了它的毕业工资高。但是编程分为很多种,C、C++、java、PHP等等等,一开始眼花缭乱,到底哪个最赚钱?我接触单片机还是因为我的导师,我的导师第一天就问我对单片机感不感兴趣,当时懵懵懂懂,然后想着多学无害。然后觉得这玩意有意思,因为能通过写程序去控制硬件去完成一些有趣的操作,比如说最经典的点灯,智障小车等等。或许我是比较喜欢这种”即时反馈”,可以一边学一边做出好玩的东西出来。不过这中间走错了不少弯路。如果当初我能看到这样一篇指引方现在想想,向的文章,那该有多么幸运。Ok,干货正式开始,我将通过以下2点来讲述单片机要怎么学,才不会从入门到放弃。1.单片机要学什么?2.入门最佳学习路线一、单片机要学什么?我们不管学什么,最重要的目的都是奔着赚钱的,这点应该没人反驳吧?对于单片机来说,前期变现唯一的方式就是去找工作。我们直接打开招聘平台,然后搜”单片机工程师”、或者”嵌入式工程师”职位。你只有了解招聘者想要什么技能,你才能对症下药,不能人家要求你会串口总线,你简历上写个妖鬼蛇神,hr没从你简历里得到有用的技能,你简历就进人才库了。多看几个职位你就会发现大家的要求都是大同小异,我们只要抓住这些职位的共同要求,这个要求通常就是这个职位的刚需,而这些就是我们要学的。什么?你还是总结不出来?没关系,我早想到了!继续往下看!二.入门最佳学习路线入门学习路线大纲:电子元器件-电路基础-C语言-单片机-AD软件使用1.电子元器件单片机主要是用来控制硬件的,所以基本的电路必须要懂,而电路是由各种电子元器件组成的。这些呢,你也可以看一下数字电路和模电的书,补充这部分的知识,当然也可以看教学视频!!3.C语言首先C是基础语言,对于c语言的入门,我觉得对于绝大多数的同学都没什么问题,因为我也看到很多同学跨专业的同学考计算机二级,那样的难度足够入门了,新人学c我建议是一遍学一边敲代码,理论和实践结合你理解的更深奥。4.单片机目前市面上主流的单片机就是STM32一大类的,不过你想干嵌入式必须会linux或者rtos,这部分也是一大难点,所以我建议同学们也可以用imx6ull一类的跑linux的板子学一下linux系统,而STM32可以学一下常用的外设(GPI0、Timer、中断、USART、IIC、SPI.PWM、DMA、ADC,CAN)就可以了,其他工作需要用到的时候再去学。5.总结正确的方向可以让你事半功倍,走错路比入错行更难受嵌入式C++面经推荐大佬面经  链接在下边   http://daxprogram.com
点赞 评论 收藏
分享
2024-12-10 08:17
嵌入式36题
  1. 什么是进程、线程,各自有什么优点2. 多进程、多线程的优缺点3. 什么时候用进程,什么时候用线程4. 多进程、多线程同步(通讯)的方法5. 进程的空间模型6. 父进程、子进程的关系以及区别7. 什么是线程同步和互斥8. 线程同步与阻塞的关系9. 同步一定阻塞吗?阻塞一定同步吗?10. 孤儿进程、僵尸进程、守护进程的概念11. 基本概念12. 正确处理僵尸进程的方法13. new和malloc的区别14. malloc的底层实现15. 在1G内存的计算机中能否malloc(1.2G)?为什么?16. 指针与引用的相同和区别;如何相互转换?17. C语言检索内存情况 内存分配的方式18. extern "C" 的作用19. 头文件声明时加extern定义时不要加20. 函数参数压栈顺序,即关于__stdcall和__cdecl调用方式的理解21. 重写memcpy()函数需要注意哪些问题22. 数组到底存放在哪里23. struct和class的区别24. char和int之间的转换25. static的用法(定义和用途)26. const常量和#define的区别27. volatile作用和用法28. 常量指针、指针常量、常量引用29. C/C++中变量的作用域30. C++中类型转换机制及适用环境31. dynamic_cast转换失败时的情况32. TCP、UDP的区别33. TCP、UDP的优缺点34. TCP和UDP适用场景35. TCP为什么是可靠连接36. 典型网络模型了解吗?我面试看的是大佬的面经,链接放下边了  c++/嵌入式面经专栏-牛客网 https://www.nowcoder.com/creation/manager/columnDetail/MJNwoM
点赞 评论 收藏
分享
2024-12-06 08:57
嵌入式平台介绍
  嵌入式开发就是指在嵌入式操作系统下进行开发,包括在系统化设计指导下的硬件和软件以及综合研发。除暂且分离硬件的EDA研发以外,侧重的就是在一定硬件条件下的系统化设计和软件研发。定义嵌入式开发是指利用分立元件或集成器件进行电路设计、结构设计,再进行软件编程(通常是高级语言),实验,经过多轮修改设计、制作,最终完成整个系统的开发。这种嵌入式开发,适用于未来产品比较单一,产量比较大,产品开发周期比较长,成本控制比较严格的系统。嵌入式技术不是单纯的软件技术,也不是单纯的硬件技术,是一门如何在一个特定的硬件环境上开发与构建特定的可编程软件系统的综合技术。嵌入式技术是在嵌入式系统的发展中应运而生的,它是依附于嵌入式系统,并推动嵌入式系统不断向前发展的核心动力。嵌入式是一种专用的计算机系统,作为装置或设备的一部分。通常,嵌入式系统是一个控制程序存储在ROM中的嵌入式处理器控制板。事实上,所有带有数字接口的设备,如手表、微波炉、录像机、汽车等,都使用嵌入式系统,有些嵌入式系统还包含操作系统,但大多数嵌入式系统都是是由单个程序实现整个控制逻辑。嵌入式技术近年来得到了飞速的发展,但是嵌入式产业涉及的领域非常广泛,彼此之间的特点也相当明显。例如,很多行业:手机、PDA、车载导航、工控、军工、多媒体终端、网关、数字电视等。 主流平台主流的嵌入式平台有三种:ARM平台、DSP平台和FPGA平台。一、ARMARM微处理器是由ARM公司提供IP(Intellectual Property,知识产权)授权,交付多个芯片设计厂商整合生产的。在2007年,意法半导体(ST)公司成为第一个引入ARM Cortex-M授权的半导体厂商,开启了高性能、低成本、低功耗的ARM嵌入式芯片新时代,其生产的STM32系列微处理器是最流行的Cortex-M微处理器。ARM嵌入式系统广泛应用于自动检测与控制、智能仪器仪表、机电一体化设备、汽车电子及日常消费电子产品中,其优越的性能和完善的开发环境得到广大电子工程师的青睐。二、DSP平台嵌入式DSP处理器(Embedded Digital Signal Processor,EDSP),是专门用于信号处理方面的处理器,其在系统结构和指令算法方面进行了特殊设计,芯片内部采用程序和数据分开存储及传输的哈佛结构,具有专门硬件乘法器,采用流水线操作,提供特殊的DSP指令,可用来快速地实现各种数字信号处理算法,具有很高的编译效率和指令的执行速度,在数字滤波、FFT、谱分析等各种仪器上获得了大规模的应用。三、FPGA平台随着平台级FPGA产品的出现和EDA设计工具软件的不断发展,利用现有的FPGA和EDA工具,人们也可以很方便地在FPGA中嵌入RISC(Reduced Instruction Set Computer,精简指令集)处理器内核、DSP算法、存储器、专用ASIC模块、其它数字IP Core以及用户定制逻辑等,构建成一个可编程的片上系统(SOPC),把原来需要在PCB上采用处理器、DSP、若干ASIC芯片才能实现的功能全都集成到了单片FPGA上。FPGA内部嵌入了丰富的乘法器(DSP)资源、高速收发器(GTP/GTX)资源、以太网MAC资源、嵌入式处理器(Power PC)资源、时钟及锁相环资源、存储器(BRAM)资源等,甚至在Xilinx公司最新推出的Zynq-7000系列芯片之中嵌入了ARM资源,将传统的FPGA演变成了ARM+FPGA的扩展开发平台。这些嵌入的硬件资源极大地增强了传统FPGA的功能,提升了FPGA的工作效率和灵活性,使得一块FPGA平台就可适用于多种产品,进行各种扩展。开发者只需要掌握Verilog HDL等硬件描述语言和嵌入式系统开发的相关知识,就可对整个系统进行编程和控制。  我面试看的是大佬的面经,链接放下边了  c++/嵌入式面经专栏-牛客网 https://www.nowcoder.com/creation/manager/columnDetail/MJNwoM
点赞 评论 收藏
分享
2024-12-09 08:21
嵌入式开发必备基础知识
  1. 嵌入式系统的组成嵌入式系统通常由以下几个部分组成:硬件平台:包括微处理器(如ARM、MIPS、x86等)、传感器、执行器、输入输出设备(如LCD、按键、LED等)。操作系统:嵌入式系统可以使用实时操作系统(RTOS)或裸机(bare-metal)开发。RTOS如FreeRTOS、uC/OS-II等,裸机编程通常指直接与硬件打交道,没有操作系统的介入。软件:包括驱动程序、应用程序、系统软件等。驱动程序负责硬件与软件的通信,应用程序则实现系统功能。2. 嵌入式开发工具链嵌入式开发通常需要一系列的开发工具:集成开发环境(IDE):常用的IDE有Keil、IAR Embedded Workbench、Eclipse等,它们提供了代码编辑、编译、调试等功能。编译器:常见的嵌入式编译器有GCC、ARM Compiler等,能够将源代码编译成适合嵌入式平台的机器代码。调试器:如JTAG调试器、ST-Link、OCD等,用于调试程序的执行,帮助开发者查看寄存器、内存等信息,实时诊断问题。仿真器:帮助开发者在没有实际硬件的情况下测试代码。3. 嵌入式编程语言嵌入式开发中,最常用的编程语言是:C语言:几乎所有嵌入式开发都使用C语言,因为它能够直接操作硬件,提供较高的执行效率,并且占用内存较少。嵌入式开发中,C语言常用于编写驱动、操作系统和应用层代码。汇编语言:对于需要极高性能和硬件控制的任务,汇编语言有时用于优化代码,直接操作硬件寄存器。C++:在一些复杂的嵌入式系统中,C++用于面向对象编程,尤其是在处理较为复杂的算法时。4. 嵌入式开发中的实时性要求实时性是嵌入式系统中至关重要的概念,特别是在处理信号采集、控制系统时。根据实时性要求,嵌入式系统可以分为:硬实时系统:对时间要求非常严格,任务必须在规定的时间内完成,否则将导致系统失败。例如,航空航天、医疗设备等。软实时系统:虽然有时间限制,但如果超时不会导致系统完全失败,系统仍然能正常工作。例如,视频播放、音频处理等。5. 基本的嵌入式开发流程嵌入式开发流程一般包括以下步骤:需求分析:明确系统的功能需求、硬件需求、性能要求等。硬件选择:选择适合的微控制器(MCU)或微处理器(MPU),并了解其硬件资源(如GPIO、UART、SPI、I2C等外设)。软件设计:根据需求设计嵌入式软件架构,包括驱动、RTOS配置、应用层逻辑等。编程与调试:在开发环境中编写代码,进行调试和测试,确保软件的正确性和性能。测试与验证:在目标硬件上进行系统测试,验证软件和硬件的协同工作。我面试看的是大佬的面经,链接放下边了  c++/嵌入式面经专栏-牛客网 https://www.nowcoder.com/creation/manager/columnDetail/MJNwoM
点赞 评论 收藏
分享
玩命加载中
牛客网
牛客企业服务