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

通信硬件知识分享

#
活动
274次浏览 5人互动
活动详情
活动规则
快来分享你的宝藏,拿牛币换大礼!!
50牛币
牛可乐捶背棒
此刻你想和大家分享什么
热门 最新
经典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
点赞 评论 收藏
分享
嵌入式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
点赞 评论 收藏
分享
单片机入门最佳路线,避开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++面经推荐大佬面经  链接在下边  c++/嵌入式面经专栏-牛客网 https://www.nowcoder.com/creation/manager/columnDetail/MJNwoM
点赞 评论 收藏
分享
嵌入式开发必备基础知识
#通信硬件知识分享# 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
点赞 评论 收藏
分享
嵌入式开发必备基础知识
#通信硬件知识分享# 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
点赞 评论 收藏
分享
嵌入式平台介绍
#通信硬件知识分享# 嵌入式开发就是指在嵌入式操作系统下进行开发,包括在系统化设计指导下的硬件和软件以及综合研发。除暂且分离硬件的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
点赞 评论 收藏
分享
嵌入式开发必备基础知识
#通信硬件知识分享# 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
点赞 评论 收藏
分享
嵌入式发展前景
#通信硬件知识分享# 嵌入式软件工程师则主要负责嵌入式设备上的软件开发工作,与传统软件工程师不同。传统的软件工程师通常开发PC或服务器上运行的应用程序,所依赖的操作系统大多是Windows、Linux等,而嵌入式软件工程师的工作环境则是诸如Wince、VxWorks、Linux等嵌入式操作系统。一、嵌入式软件工程师的工作通常包括:1. 应用程序开发:根据客户需求开发嵌入式设备上的应用程序,如智能家居设备、医疗仪器的用户界面等。2. 嵌入式开发工具的使用:使用专门的开发工具,如Wince下的EVC(Embedded Visual C++)或Linux下的QT等。3. 底层软件设计:尽管嵌入式软件工程师的主要工作在上层软件,但有时也需要参与到底层驱动的设计和调试中,确保上层应用与硬件的协调。二、嵌入式硬件工程师与嵌入式软件工程师的区别1. 工作性质的区别嵌入式硬件工程师主要负责设计和搭建硬件平台,为软件工程师提供开发环境。硬件工程师的工作更像建筑师,设计并构建产品的硬件基础;而嵌入式软件工程师则像室内设计师,为产品增添功能和美感。硬件工程师的工作重点在于确保电路的正常工作以及各种外设和芯片的兼容性,他们在设计时需要考虑以下几个关键问题:- 功耗:控制电路设计的功耗,特别是在便携式设备中,这一因素尤为重要。- 电磁干扰(EMI):确保电路不会干扰其他设备,也不容易受到外部干扰的影响。- 生产可行性:电路设计不仅要满足功能需求,还需考虑生产的便捷性和成本。- 可靠性:设计要能经受住长时间的使用和环境考验。 而软件工程师则专注于通过编写代码实现产品的功能,他们的主要职责包括应用程序开发、操作系统移植、以及优化软件性能等。2. 项目依赖的差异硬件的设计在整个项目中尤为关键。没有硬件,软件无法运行;但是在某些嵌入式系统中,硬件产品可以独立工作,比如简单的单片机应用无需操作系统支持。这种情况下,硬件工程师往往需要负责从硬件设计到功能实现的所有工作。而软件工程师在某些项目中可以缺席,特别是在没有复杂操作系统或用户交互界面的系统中。3. 就业形式的差异国内嵌入式软件工程师的就业市场较为广泛,培训资源也多,因此入门较为简单。硬件工程师由于门槛较高,需要深入的电路设计知识和实践经验,因此市场需求相对较少,但核心硬件开发人员的需求始终存在。一旦硬件产品定型,软件的升级和维护成本较低,因此在后期,企业会更依赖软件开发来提高产品的功能和竞争力,这也导致嵌入式软件工程师在企业中的需求量较大。我面试看的是大佬的面经,链接放下边了  c++/嵌入式面经专栏-牛客网 https://www.nowcoder.com/creation/manager/columnDetail/MJNwoM
点赞 评论 收藏
分享
玩命加载中
牛客网
牛客企业服务