- 博客(216)
- 资源 (26)
- 收藏
- 关注
原创 【RTOS面试题】临时屏蔽/禁用中断的方法有什么用?什么时候用?做这种方法时应该注意什么?
临时屏蔽/禁用中断的方法在嵌入式系统开发中非常重要,尤其在处理中断密集型的任务时。下面将详细介绍这种方法的用途、应用场景以及注意事项。
2024-09-05 23:52:40 405
原创 线程是不是被描述为轻量级的?,线程之间的切换是否涉及改变内存上下文?
线程之间的切换确实涉及上下文切换,但这通常比进程间的上下文切换要轻量得多。线程切换主要涉及寄存器状态和堆栈指针的保存与恢复,而不会涉及内存上下文的改变,因为同一进程内的线程共享相同的内存空间。这种轻量级的特性使得线程成为实现并发执行的有效手段。
2024-09-05 23:44:52 366
原创 【RTOS面试题】什么是抢占?抢占的原理、抢占的好处、抢占有什么局限性?
抢占机制是RTOS中用来确保高优先级任务能够及时得到执行的重要手段。通过合理设置任务优先级和优化上下文切换,可以使系统具有更好的实时性能和响应性。
2024-09-05 23:44:19 485
原创 [RTOS/操作系统面试题] 什么是自旋锁?自旋锁工作原理?自旋锁的特点?自旋锁的应用有哪些?
自旋锁是多线程和多任务编程中的一种重要同步机制,特别适用于需要快速访问共享资源的场景。通过合理使用自旋锁,可以提高程序的效率和响应速度。希望这些信息对你有所帮助!
2024-09-05 23:41:13 386
原创 【单片机开发软件】Keil格式化工具-AStyle使用
每次格式化时,为了安全,AStyle会为文件创建一个备份,.orig结尾的原文件,如 xxx.c.orig。在Command中填入 xxxx\astyle-3.4-x64\astyle.exe xxxx代表你的软件所在目录 在Arguments中填入 "$E*.c" "$E*.h"a。专栏地址:【单片机开发软件技巧】, 此专栏单片机开发中相关的软件使用技巧总结,希望能够加深自己的印象,以及帮助到其他的小伙伴。大家好,又见面了,我是小超,本文是专栏【单片机开发软件技巧】专栏的第2篇文章;
2024-09-05 23:39:56 692
原创 【单片机开发软件】使用VSCode开发STM32环境搭建
勾选前两项之后,只需在工程所在的文件夹中空白处右击鼠标,就会看到一个类似“在 VS Code 中打开”的选项出现在上下文菜单里。如果不启用这项功能,就需要先启动 VS Code,然后依次点击菜单栏中的“文件”和“打开文件夹”,最后再从文件系统中导航到需要打开的文件夹位置。显然,第一种方法更加高效舒适。专栏地址:【单片机开发软件技巧】, 此专栏单片机开发中相关的软件使用技巧总结,希望能够加深自己的印象,以及帮助到其他的小伙伴。大家好,又见面了,我是小超,本文是专栏【单片机开发软件技巧】专栏的第1篇文章;
2024-09-05 23:37:43 1606
原创 【RTOS面试题】ISR中可以使用互斥锁和信号量吗?
在中断服务程序(ISR, Interrupt Service Routine)中直接使用互斥锁(mutex)和信号量(semaphore)是有风险的,因为这些同步机制通常不是中断安全的。但是,可以通过一些方法来安全地在 ISR 中使用互斥锁和信号量。
2024-09-05 23:32:28 417
原创 【RTOS面试题】RTOS和Linux的区别
实时操作系统和Linux操作系统各有特点,适用于不同的应用场景。RTOS适合需要实时响应和确定性行为的应用场景,如工业控制、医疗设备等;而Linux则更适合需要丰富功能和用户友好界面的应用场景,如桌面电脑、服务器等。在选择操作系统时,应根据具体的应用需求来决定使用哪种类型的操作系统。希望这些信息对你有所帮助!
2024-09-05 23:29:06 330
原创 ARM 架构硬件新趋势:嵌入式领域的未来
历史背景:ARM(Advanced RISC Machines)是一种精简指令集计算机 (RISC) 架构,最初由 Acorn Computers 在 1985 年设计。优势:低功耗、高能效、丰富的生态系统支持。应用场景:移动设备、服务器、物联网设备等。随着技术的进步,ARM 架构将继续引领嵌入式系统的创新和发展。无论是 AI 加速器的集成、更高效的电源管理,还是安全性增强,都将为未来的嵌入式设备带来更多的可能性。这些技术不仅推动了硬件的发展,也为我们提供了更加智能、高效、安全的生活体验。
2024-09-05 23:27:24 1561
原创 【RTOS面试题】什么是消息队列
消息队列是一种用于任务间通信的机制,它允许一个任务(生产者)向消息队列发送消息,而另一个任务(消费者)可以从队列中接收这些消息。消息队列在FreeRTOS中提供了一种简单有效的方式来实现任务间的异步通信,有助于解耦任务之间的依赖关系,提高系统的灵活性和可维护性。
2024-09-05 23:24:59 444
原创 【RTOS面试题】什么是互斥量?
互斥量(Mutex,全称为Mutual Exclusion Object)是一种常用的同步原语,用于保护对共享资源的访问,确保同一时间只有一个线程或任务能够访问该资源。互斥量可以看作是一个特殊的锁,它维护了一个内部状态,用于跟踪互斥量的拥有者。当一个线程或任务获得了互斥量之后,其他试图获取该互斥量的线程或任务将被阻塞,直到互斥量被释放。通过合理使用互斥量,可以确保程序的稳定性和可靠性。在这个例子中,两个线程分别调用increment函数,通过互斥量来保护对shared_value的访问,确保数据的一致性。
2024-09-05 23:21:14 406
原创 【RTOS面试题】什么是著名的食客问题
著名的“食客问题”(Dining Philosophers Problem)是一个经典的计算机科学问题,用来说明并发编程中的资源竞争和死锁问题。这个问题最初是由荷兰计算机科学家Edsger Dijkstra提出的,用于探讨如何有效地分配有限的资源,避免死锁和饥饿等问题。设想有五个哲学家围坐在一张圆形餐桌旁,桌上放着五只筷子,每两个哲学家之间有一只筷子。哲学家们交替进行思考和吃饭的行为。当他们想要吃饭时,他们需要同时拿起左右两边的筷子。
2024-09-05 23:20:16 360
原创 【RTOS面试题】死锁问题详解
死锁(Deadlock)是多任务或多线程环境中一个常见的问题,尤其是在实时操作系统(RTOS)中,如果处理不当,会导致整个系统停止响应。死锁发生时,两个或多个任务互相等待对方持有的资源,从而形成了一个僵局,这些任务都无法继续执行下去。二、产生死锁的四个必要条件互斥条件(Mutual Exclusion): 至少有一个资源必须处于非共享模式,即一次只能由一个任务占用。如果另一个任务请求该资源,请求者将被阻塞,直到资源被释放。占有并等待。
2024-08-13 21:51:31 425
原创 【RTOS面试题】什么是优先级反转
如果任务 B 持有一个资源锁,而任务 C 需要这个锁,这时任务 C 就会等待任务 B 释放锁。此时,如果更高优先级的任务 A 启动并准备运行,但由于任务 B 持有着资源锁,任务 A 无法获取这个锁,因此也无法执行,这就导致了优先级反转——即高优先级的任务 A 被较低优先级的任务 B 阻塞了。这个问题通常发生在多个任务共享一个资源(如一个互斥锁或信号量)时,低优先级的任务意外地阻塞了高优先级的任务。通过合理的设计和选择合适的解决方案,可以有效避免这个问题的发生,保证系统的稳定性和可靠性。
2024-08-13 21:50:33 568
原创 【小超嵌入式】C++实现简单计算器详细分析
意味着程序正常终止,返回给操作系统一个值为0的状态码,通常表示成功。输出一个提示信息,告诉用户需要输入一个运算符。这是主函数的开始,每个C++程序都必须有一个。输出一个提示信息让用户输入两个数字,再用。头文件,它提供了输入输出流的功能,如。命名空间中的标识符,而无需每次都前缀。这行代码表示我们将在整个程序中使用。从标准输入读取一个字符并将其存储到。读取这两个数字并将它们存储到。函数,它是程序的入口点。这是主函数的结束部分,
2024-08-09 17:31:39 264
原创 【小超嵌入式】基于C++的学生管理系统详细分析
此外,当数组接近满时,频繁的删除操作可能会导致效率降低,因为每次删除都需要重新排列数组中的元素。这是非常重要的,因为关闭文件可以释放操作系统持有的文件资源,同时确保所有缓冲区中的数据都被写入磁盘。今天,我们探讨一个简单的C++控制台应用程序,它能够实现对学生信息的基本管理功能,包括添加、删除、修改和显示学生数据。如果找到了并删除了学生,那么。数组中的有效学生记录数量会减少1,同时数组的内容会被适当调整以移除指定的学生记录。如果找到了名字匹配的学生,程序会输出一个提示消息,要求用户输入新的成绩,然后使用。
2024-08-09 17:30:31 580
原创 【Linux系统移植】网络环境搭建
在Linux系统移植过程中我们的最终目的是让Linux在产品或者开发板上可以正常的运行工作,为了让Linux能够正常的工作运行,需要我们讲配置好的Linux镜像文件、跟文件系统等下载到开发板内运行,这个下载过程如果使用串口烧录不但不方便还很慢,使用网络的方式烧录既方便又快捷,所以需要搭建一个网络环境保障ubuntu(服务器用于存放Linux镜像等待烧录的文件)和产品或者开发板能够正常网络通信。● 找到自己的网络端口(连接开发板的,这里留一下我画横线处的名字,之后会用到),右键属性,选择IPV4双击。
2024-08-08 22:14:11 906
原创 U-boot相关基础知识
U-Boot是Bootloader的一种实现,它专门用于嵌入式系统,特别是那些基于ARM、MIPS等处理器的系统。U-Boot提供了丰富的硬件支持和功能,使得开发者能够轻松地初始化硬件、加载操作系统内核,并进行一些基本的系统配置。简单来说就是Uboot属于Bootloader中的一种,bootloader就相当于类,uboot就相当于对象。嵌入式领域常用的bootloader就是uboot。
2024-08-08 22:12:18 888
原创 一文详细了解Bootloader
bootloader是一个引导加载程序,它的主要作用是初始化硬件设备、设置硬件参数,并加载操作系统内核。在嵌入式系统中,bootloader是硬件启动后第一个被执行的程序,它位于操作系统和硬件之间,起到桥梁的作用。
2024-08-07 15:20:32 456
原创 一文搞懂脉冲宽度调试(PWM)
PWM,即脉冲宽度调制(Pulse Width Modulation),是一种利用数字信号来控制模拟电路的有效技术。其基本原理是通过改变一系列固定频率脉冲的宽度,从而调节这些脉冲的占空比(高电平时间与整个周期时间的比例),以此来模拟连续的模拟信号。在PWM中,尽管脉冲本身是矩形波,但通过调整占空比,接收PWM信号的负载(如电机、LED等)所感受到的有效电压或功率,可以被模拟成期望的连续变化值。
2024-08-05 12:21:38 2020
原创 FreeRTOS中的动态内存管理(heap_1、heap_2、heap_3、heap_4)
FreeRTOS 提供了多种动态内存分配方案,这些方案通过不同的内存管理器(heap managers)实现,主要位于目录下。
2024-08-05 12:20:52 746
原创 STM32CubeMX软件使用(超详细)
目录1、Cube启动页介绍2、芯片选择页面介绍3、输入自己的芯片型号,这里以STM32U575RIT6举例4、芯片配置页码介绍5、芯片外设配置栏详细说明6、点击ClockConfiguration进行时钟树的配置,选择时钟树后可以选择自己想使用的时钟源,也可以直接输入时钟频率进行配置7、点击Priject Manager,进入工程配置页面(工程配置页面详解)
2024-08-05 12:19:46 356
原创 什么是ICACHE?
icache是。在计算机系统中,icache(指令缓存)是处理器核心内部的一个关键组件,它专门用来存储最近使用过的指令。当CPU需要执行一个指令时,会首先检查i-cache中是否已经缓存了该指令。如果所需的指令已在i-cache中(这种情况称为缓存命中),CPU可以直接从i-cache中快速读取指令,无需等待从主内存中获取,这显著提高了指令的访问速度并提升了程序的执行效率。此外,由于指令通常不会被修改,iCache在硬件设计上可以设为只读的,这样也降低了硬件设计成本。
2024-08-05 12:18:25 492
原创 基于单片机的智能车设计
LM2940 系列是输出电压固定的低压差三端端稳压器;输出电压有5V、8V、10V 多种;最大输出电流1A;输出电流1A 时,最小输入输出电压差小于0.8V;最大输入电压26V;工作温度-40~+125℃;内含静态电流降低电路、电流限制、过热保护、电池反接和反插入保护电路。同时LM2940 价格适中而且较容易购买,非常适合在本设计中使用。LM2940-5.0 封装和实物如图3.4所示。如图3.5所示,采用两路供电,这样可以使用其中一路单独为STM32F4discovery电路板供电,指示灯等供电。
2024-08-05 12:16:29 626
原创 链家JAVA笔试题
样例说明:小明出售这些食物(初始价值1,3,1,5,2)的顺序为:第一天卖掉1个,第二天卖掉5个,第三天卖掉2个,第四天卖掉3个,第五天卖掉4个,获得最大的价值1x1+2x3+3x3+4x1+5x5=43。给定每一个食物的初始价值V(i),请求出小明卖掉它们后可以获得的最大价值,第一天出售的食物年龄为1,此后每增加一天食物的年龄就加1。
2024-07-30 22:46:05 298
原创 美团点评秋招前端测评分享
小Q是一个专业的射击运动员,有一天他像往常一样进行n次射击训练,每次射击他都会取最高的四次得分作为最终得分来衡量他的射击状态,但是今天他制定了一个奇怪的规则:在n次射击得分中取出四次得分a,b,c,d,并且满足a*b*c=d作为最终得分来衡量他的射击状态。40. 甲乙丙均为工人,其中一个是车工,一个是钳工,一个是焊工,并且车工比甲的工资高,乙的工资比焊工低,焊工的工资比丙低。1. 甲乙二人各自加工一批同样数量的零件,甲完成一半时,乙完成150个,甲全部完成时,乙完成全部的5/6,求这批零件一共有(C)个。
2024-07-30 22:45:34 377
原创 海康威视校园招聘笔试题
p指向的是一个字符型的数组空间,原来的代码只是简单的释放了指向申请空间的指针,并没有释放申请的空间,容易造成内存崩溃。GetMem函数中的p是一个在栈上的局部变量,当函数运行结束的时候,栈上的内容会自动释放的,此处返回的值有可能会成为一个野指针,会出现一个意想不到的结果。回收用 new 分配的单个对象的内存空间的时候用 delete,回收用 new[] 分配的一组对象的内存空间的时候用 delete[]。即strcpy只用于字符串复制,并且它不仅复制字符串内容之外,还会复制字符串的结束符。
2024-07-30 22:45:03 418
原创 阿里巴巴秋招前端笔试题
E的高度为90%,颜色为#234,每个条形之间的距离可以任意设置(可以考虑使用CSS3新属性来实现)。A.在Blink和WebKit的浏览器中,某个元素具有3D或透视变换(perspective transform)的CSS属性,会让浏览器创建单独的图层。B.我们平常会使用left和top属性来修改元素的位置,但left和top会触发重布局,取而代之的更好方法是使用translate,这个不会触发重布局。E.景点内一些玩射箭的场所经营状况会比在居民区附近设置的类似场所好,原因是景点内的游人玩起来更在状态。
2024-07-30 22:44:17 376
原创 秋招阿里巴巴java笔试试题-精
2、在快递公司干线运输的车辆使用中,存在着单边车和双边车的两种使用场景,例如北京中心-杭州中心,两个分拨中心到彼此的单量对等,则可以开双边车(即同一辆车可以往返对开),而当两个中心的对发单量不对等时,则会采用单边车,并且双边车的成本是低于单边车的,即将两辆对开的单边车合并为一辆往返的双边车是能够节省运力成本的。13、设有一个二维数组A[m][n],假设A[0][1]存放位置在1601(10),A[3][3]存放位置在1648(10),每个元素占一个空间,问A[2][2](10)存放在什么位置?
2024-07-30 22:43:35 310
原创 单工通信、半双工通信、全双工通信分别是什么?
单工通信是一种单向传输数据的通信方式,只允许信息在一个方向上流动。在单工通信中,通信的两个节点中的一个节点只能作为发送方,而另一个节点只能作为接收方。发送方只负责发送数据,而接收方只负责接收数据,两者之间没有回应或反馈机制。这意味着通信的发送方无法获得接收方的确认或响应。举个例子来说明单工通信,类似于广播电台或电视台向大众发送信号。广播电台只能发送信号给听众,而无法接收来自听众的信息。在单工通信中,数据的流动是单向的,只能从发送方到接收方。由于缺乏双向通信的能力,单工通信不适合需要交互和实时响应的应用场景。
2024-07-30 22:41:54 851
原创 什么是同步通信?什么是异步通信?两者的优缺点是什么?
双方在同一个时钟信号的控制下,进行数据的接收和发送,来一个时钟,发送端发送,接收端接收,他们彼此之间的工作状态是一致的。同步通信的数据帧组成一般是:同步信号+若干数据。在最前面是个同步信号,接收端接收数据分析出同步信号之后,就认为后边的数据都是实际传输的数据了。理论上来说同步通信一个数据帧里面的若干数据的位数是不受限制的。同步通信中,数据之间是不能有间隔的,因为双方在同一个时钟下工作,这边接收的,必然是另一边发送的。
2024-07-12 23:36:58 402
原创 [教程]一文搞懂STM32使用DHT11采集温湿度
DATA 用于微处理器与 DHT11之间的通讯和同步,采用单总线数据格式,一次通讯时间4ms左右,数据分小数部分和整数部分,具体格式在下面说明,当前小数 部分用于以后扩展,现读出为零.操作流程如下: 一次完整的数据传输为40bit,高位先出。数据格式:8bit湿度整数数据+8bit湿度小数数据 +8bi温度整数数据+8bit温度小数数据 +8bit校验和 数据传送正确时校验和数据等于“8bit湿度整数数据+8bit湿度小数数据+8bi温度整数数据+8bit温度小数数据。
2024-07-12 23:35:42 724
原创 【教程】一文搞懂STM32启动文件
本文启动文件位STM32G030的启动文件(.s为结尾的文件),其他型号单片机大同小异,可以直接参考。我们先来看下启动文件的,开头说明。
2024-07-12 23:34:32 1908
原创 【STM32教程】一文搞懂ARM内核是如何控制外设寄存器的
Cortex‐M3 处理器拥有 R0‐R15 的寄存器组。其中 R13 作为堆栈指针 SP。SP 有两个,但在同一 时刻只能有一个可以看到,这也就是所谓的“banked”寄存器。R0-R12:通用寄存器通用寄存器,用于数据操作。比如我们常用的加减乘除。MOV R0,#1(给R0寄存器赋值1)R13(SP): 两个堆栈指针:主堆栈指针(MSP):复位后缺省使用的堆栈指针,用于操作系统内核以及异常处理例程(包 括中断服务例程)进程堆栈指针(PSP):由用户的应用程序代码使用。
2024-07-05 14:34:16 913
原创 【STM32教程】学习STM32必须要知道的知识点-什么是ARM
首先我们必须要知道一点,ARM是一家半导体知识产权公司,这里需要注意的重点是半导体知识产权公司,这是对单片机架构梳理的重要基本概念。而我们常说的ST(意法半导体)、STC(宏晶半导体),都是半导体厂商。这里我们可以看出两者的区别,半导体厂商是做半导体生产设计的、而半导体知识产权公司是做知识产权授权的。我们学习的STM32是ST半导体公司生产设计的芯片产品,而STM32里也有ARM公司的身影。举个例子我们买一台电脑主机,里面的CPU是用的因特尔的,内存条用的三星的,硬盘用的西部大数据的。
2024-07-02 09:27:34 374
原创 [教程]Gitee保姆级图文使用教程
我们在日常的工作过程中经常会遇到,家里和公司资料文件同步的问题,以及项目开发过程中的协作问题。Git就完美的解决了这些问题,但是由于 Git国外服务器的原因平时网络太慢了,不过还好有国内的托管平台Gitee(码云)可以供我们使用及学习。废话不多说,我们开始进入教程的正题。搜索码云,或者直接输入官网进入注册。(注册时最好用邮箱注册,不是邮箱注册的要在设置里添加自己的邮箱)2、安装Git,可以直接进入官网下载,如果感觉下载的太慢可以进入下图所示网址搜索下载。下载好之后直接安装就行。
2024-07-02 09:26:15 5799
X-shell 官网最新版 7 免下载 直接使用
2022-05-27
RS485接口使用Modbus协议通讯 的实例工程
2022-04-13
XmanagerPowerSuite7四款软件下载
2022-04-01
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人