当前位置: 首页 > news >正文

小米嵌入式面试题目RTOS面试题目 嵌入式面试题目

第一章-非RTOS

  • bootloader工作流程

  • MCU启动流程

  • 通信协议,SPI IIC

  • MCU怎么选型,STM32F1和F4有什么区别

  • 外部RAM和内部RAM区别,怎么分配

  • 外部总线和内部总线区别

  • MCU上的固件,数据是怎么分配的

  • MCU启动流程

  • IAP是怎么升级的,突然断电怎么办

  • 挑了麦轮项目(因为大疆RM也是麦轮,面试官看样子比较感兴趣)

  • 为什么用的CAN总线

  • 你说一下spi和 i2c和 UART的 各自的工作方式优缺点?

  • 你知道怎么判断栈溢出吗?

  • 能简单说一些你用过的stm32的一些芯片的配置吗?CPU主频,flash和RAM分别都是多大的?

  • 你在stm32上都做过哪些开发?

  • 你开发过哪些驱动吗?

  • 你了解整个SPI的通信过程吗?SPI有几根线,分别是什么?你使用SPI的时候速率配置的是多少?

  • 有使用过DMA吗?解释一下什么是DMA?

  • SPI有4种模式你知道是那4种模式吗?

  • 你在开发调试过程中有遇到过哪些难以解决的问题可以分享一下吗?

  • .你有做过一些比较大型的软件开发吗?就是一些比较大的功能需要做一些设计、分层的东西。
    我说了其中一个项目分层驱动层、中间层和应用层。

  • 中间层的设计你考虑了哪些因素?

  • 堆和栈有什么区别?

  • 先问点iic,spi基础知识,速率,工作模式。

  • ARM体系结构。然后被逮住问:7种异常是什么(没答全),中断触发到返回的具体行为(CM3权威指南里有),中断嵌套如何实现(NVIC相关),中断机制的具体实现(还在答中断具体行为,他问的应该是两级向量表如何查找),中断部分结束。

  • c知识指针与引用的区别

  • 答了点单指令多数据流,感觉不感兴趣,又说了流水线冲突与解决,反问cache-miss什么情况,分支预测什么原理(高级计算机结构课上内容)。看来芯片方向看重体系结构的知识,课上学的终于有用了。

  • 之后我就把自己的优势定位在ARM体系结构和CPU原理/OS任务切换与调度原理/静态链接知识(这里推荐《程序员的自我修养》)。

  • 笔试考了DMA与中断传输的比较

  • 画项目框图、我开始把所有项目叙述和重点问题全部写纸上,每天背一遍。

  • 什么叫软硬实时、m4内核双堆栈机制、顺便答了arm模式切换和上下文切换,bootloader,链接原理,

  • 在职学姐告诉我,应该答不喜欢华为的文化。

  • 大华股份、算法工程化岗。提前准备了一些ucos移植,arm指令集流水线和静态链接的知识,事实证明,准备的方向很对,他很感兴趣。

  • 问了ucos移植的细节,提到了一种并发的指令集

  • 最后问我的优势劣势分别是什么,答优势是对底层原理的理解和对编译器的了解,劣势是不懂Linux。

  • 中断机制,大概有多少中断,可修改向量表吗(通常不可,有例外),又问m4内核的双堆栈机制。BL指令的跳转范围(32MB)。

  • 静态链接,深挖强弱符号的东西,最后说我对底层还是比较了解。

  • IIC与SPI的不同(片选方式,异步同步),IIC读写方向如何区分(地址位最后一位的高或低)

  • 9轴数据的意义,答了姿态解算中队数据的融合。

  • 手撕代码环节,特意找了个最简单的给我,牛客原题链表表示的两数相加

  • 问信号量,进入临界区的操作,为什么关中断可以保护临界区,cpsr如何保存。

  • 问静态链接,预处理是什么编译选项,-g是什么意思,如何使用ar生成库文件,这块不熟,会不会gdb(不会)。那就说说makefile一条指令的格式,.c生成.o什么选项,.o生成.elf什么选项,.o与.elf的区别联系,举个区别的例子。

  • 项目,直接画个框图给他,说的熟的不能再熟了。然后提问中断机制,这就进入了我的“模板”,然后重点问了流水线效率问题,为什么中断返回PC要减4,拿出试卷让我答没写完的题。然后让结合项目代码分析如何避免流水线冲突(调整指令执行顺序,分支预测,增加部件)

  • 静态链接,也是熟的不能再熟的东西,是我亮点之一。

  • 老生常谈,叙述中断机制,bootloader,模板开启引出流水线

  • 如果使用C++导致MCU资源不够如何解决(答:直接操作寄存器)

  • 相关的通信协议I2C;SPI;串口有没有用过

  • 讲一下串口通信协议,串口通信如何校验,原理

  • 有没有遇到过IO口输出电压稳定的问题,如何解决的

  • 项目中有没有用到I2C,主要用在哪方面,讲一下选择I2C的原因

  • 静态局部变量与局部变量的区别(很基础)

  • 为什么局部变量未定义时,每次初始化的结果是不确定的?是个真随机数还是个伪随机数?(我答:与栈的工作过程有关)

  • 那么嵌入式中栈的工作机制是什么?(不会)

  • 我连续调用同一个函数两次,他的局部变量初始化结果是否会一致?

  • 远程网络升级嵌入式,他就问我你有考虑过你的固件安全性问题吗?如果有其他人通过网络途径下载一个非官方的固件包,你怎么去判断?

    C语言问题

    • 函数指针了解么,在哪里有用到?

    • struct字节对齐了解么?

    • 什么是大端小端?

    • 内存分配函数了解么?如果系统中只有10K内存,而我要分配12K,能分配成功吗?如果能,那么将分配到的区域用memset进行初始化,会成功吗?

    • 除了堆区,程序运行的内存中还有哪些区域?

    C++问题

    1. 智能指针有了解吗?
    2. 容器了解吗?vector实现的机制是怎么样的?
    3. 迭代器有了解吗?讲解一下你的理解、

嵌入式单片机一面

1和32架构的区别

\3. Stm32处理中断的过程

\4. 保护现场保护什么东西(寄存器和堆栈)

\5. 要保护那些寄存器?

\6. Stm32是要中断嵌套的吗,什么时候需要什么时候不需要

\7. Cortex-m系列使用浮点会对stm32中断效率产生什么影响(不清楚)

\8. 对嵌入式哪方面比较深刻,研究比较深入的

\9. Uart是怎么样的接口

\10. Uart异步,不需要时钟,那为什么还要设定波特率

\11. Spi跟uart在使用上有什么区别

\12. Spi和uart需不需要区分主从

\13. Spi的从是否可以主动读写主的数据,怎么做到的

\14. 写iic、spi、uart驱动需要哪些注意的地方

\15. Iic、spi、uart接收方式有三种,轮询,中断和DMA,如果是中断收到的数据要谁去申请谁去释放

\16. 中断里数据往一个buffer去放,这个buffer要谁去申请

\17. 如何保证buffer读和写的互斥

static用法,变量存储位置

C语言编译后的内存分布

volatile变量作用?修饰哪些变量,为什么这些变量要用volatile修饰

SPI四种模式

串口发送一个字节多少位

?在做硬件驱动的时候,碰到的比较困难的问题? 项目中有制定通讯协议,就问有出现过什么通讯错误,出现错误了怎么办?通讯丢失怎么办?

  • STM32启动过程?

  • C++为什么有指针还要引用?

    一些总结摘抄‘

    作者:DJI小迷弟
    链接:https://www.nowcoder.com/discuss/794763?channel=-1&source_id=profile_follow_post_nctrack
    来源:牛客网

    C/C++

    • static作用,变量加入static以后在内存中存储位置的变化。
    • volatile作用
    • C++为什么有指针还要引用,为什么不和JAVA一样抛弃指针
    • delete和delete[]的区别
    • 虚函数是用来干嘛的?虚函数机制怎么实现的?虚表指针在内存中的存放位置?
    • C++多态怎么理解?C++有哪些多态的典型例子?
    • 叙述程序编译都包含哪些阶段,每个阶段干了什么?
    • CMake是如何包含文件目录的
    • 全局变量和局部变量在什么地方?堆栈如何申请资源?
    • C语言编译后的内存分布
    • 我连续调用同一个函数两次,他的局部变量初始化结果是否会一致?(函数调用的过程)
    • 你说静态局部变量存储在静态区,那么静态区的创建和消失是在什么时候?
    • 我在windows里面运行了多个进程,其中一个进程执行完了,他的静态区会如何处理?(多进程的内存管理问题)
    • 静态局部变量与局部变量的区别?为什么局部变量未定义时,每次初始化的结果是不确定的?是个真随机数还是个伪随机数?
    • 嵌入式中栈的工作机制是什么?
    • struct字节对齐了解么?
    • 容器了解吗?vector实现的机制是怎么样的?
    • 迭代器有了解吗?讲解一下你的理解
    • 内存分配函数了解么?如果系统中只有10K内存,而我要分配12K,能分配成功吗?如果能,那么将分配到的区域用memset进行初始化,会成功吗?
  • 处理器架构

    作者:DJI小迷弟
    链接:https://www.nowcoder.com/discuss/794763?channel=-1&source_id=profile_follow_post_nctrack
    来源:牛客网

    处理器架构

    • 51和32架构的区别
    • MCU可以运行Liunux吗,为什么
    • STM32启动过程(上电开始->main执行的过程)
    • 中断响应执行流程,中断上下文指的什么,保存中断上下文是完成的什么操作,以STM32为例,都有哪些寄存器被保存
    • STM32 F1和F4的区别
    • Cotex-M系列使用浮点运算对STM32中断效率会产生什么影响
    • STM32常见寄存器:R13(SP,堆栈指针),R14(LR,连接寄存器),R15(PC程序计数器)作用
    • 什么是大小端模式

常见硬件接口协议/总线

SPI
  • SPI有哪四种工作模式
(2)IIC
(3)UART
  • Uart异步,不需要时钟,那为什么还要设定波特率
(4)FSMC
(5)AXI

四旋翼中的姿态解算算法是如何运行的?两个部分:一个是数据滤波,一个是姿态解算Mahony。

PID算法的实现是库还是自己写?自己写的,算法不难,难的是参数调试

讲一下PID算法的实现过程?

简单说一下spi协议,spi协议最大传输速度。什么是平衡二叉树,为什么要这样设计平衡二叉树?

链表和数组的区别,优劣?

IIC协议的最大通信速率、你觉得什么因素限制了IIC速度

问:stm32使用了哪些外设协议?
答:串口、iIC、spi、pwm

问:stm32使用了哪些外设协议?
答:串口、iIC、spi、pwm

问:做项目时,stm32芯片的选型?
答:外设数量、内存大小。

问:stm32程序出问题如何解决?
答:通过keil里的debug功能,端点、单步调试。

问:一些传感器的数据采集如何保证实时性?
答:通过在通用定时器的中断中释放信号量同步任务、ucos系统的延时函数实现。

问:如何调试PID参数,仿真还是实测?
答:配合上位机软件,在室内场地实际调试参数。

问:在飞行器遥控中,蓝牙通讯的距离对数据传输有无影响?
答:调试时飞行器与上位机的距离较近,没遇到这个问题。

下面大华单片机的题目

  • 如何使用软件实现iic

  • spi有哪些信号线

  • 从大一到大三写的代码多少行?手写内存复制函数,提问:s与d重叠时如何处理?

  • 说一说c标准库的一些函数名,给我整懵了

深圳小米

  • 操作系统的中断上半部和下半部

  • 中断中不能执行什么函数

  • (手写笔试题)求斐波那契数列

  • 看程序,回答输出。指针相关的题

南京地平线

  • 询问飞行器项目,询问 飞行器项目的姿态解算算法,使用解算算法的优点,相比于卡尔曼算法的优点。实时操作系统的实时性是如何实现的。主要是考察对项目的掌握程度。

星宸科技

首先是一个技术官针对笔试提问、一步步引导我做出笔试题。然后提问了一些C语言的知识,内存管理等,RTOS的信号量、竞争等。

随后是主管面试,画图解释C语言实现动态内存分配。

ARM相关的

  • ARM是32位,地址空间是

ARM是32位,地址空间是2的32次幂,4G地址空间。所有的外设(FLASH,RAM,SD卡等等)都映射到这4G的空间上。比如大部分ARM7都把RAM映射到0x40000000,所以对RAM的操作就在0X40000000开始的地址上。FLASH从0X0开始。使用FLASH还要考虑地址重映射,就是选择片内FLASH或片外FLASH。
FLASH一般是8位或16位,当它接到32位的ARM上时,地址位就会错位。对于16位FLASH,FLASH的A0要接ARM的A1。对于8位FLASH,FLASH的A0要接ARM的A0。ARM的A0对应8位,ARM的A1对应16位,ARM的A2对应32位,如果FLASH是32位,那么FLASH的A0接ARM的A2.

  • STM32启动方式和程序存储

    https://blog.csdn.net/weixin_42279760/article/details/121063006

    此文档主要介绍在stm32程序下载与运行时,FLASH和RAM的使用情况

    1.背景介绍
    因为stm32内部有两个存储空间,一个是片上的FLASH,一个是片上的RAM,其中FLASH相当于硬盘,其空间一般较大; RAM相当内存,其空间一般较小。不过使用者可以通过 BOOT1/BOOT0 引脚选择程序是在FLASH或RAM中运行(RAM运行执行效率较高)。

    2.存储概况
    以stm32f103zet6为例,此芯片的FLASH的起始地址为0x08000000,SIZE = 0x80000共512K字节RAM的起始地址为0x20000000,SIZE = 0x10000共64K字节(因为不同的SRAM芯片的型号不同,但是在stm32中的起始地址都是0x20000000+SIZE)。除此之外,还有一块为系统存储器起始地址为0x1FFFF000,SIZE = 0x7FF共2K字节,其中内置了ST提供的Boot Loader,可以通过该Boot Loader下载程序到FLASH,详细部分在此不做讨论。

    3.编译生成信息分析

    Keil5 编译生成
    compiling stm32f10x_tim.c…
    linking…
    Program Size: Code=7632 RO-data=336 RW-data=72 ZI-data=55640
    FromELF: creating hex file…
    After Build - User command #1: CopyHex_Flash.bat

    1
    2
    3
    4
    5
    6
    上图为Keil5工程编译生成信息,这些信息都代表着程序占用的空间。

    Code:表示程序代码部分所占空间
    Ro-data:表示程序定义的常量所占空间(eg:const定义数据类型)
    RW-data:表示已初始化的全部变量所占空间
    ZI-data:表示未初始化的静态和非静态全局变量以及堆栈所占空间
    在以下三种情况中FALSH和RAM的占用情况:

    运行时程序占用FLASH的大小 SIZE = Code + RO-data+ RW_data
    运行时程序占用RAM的大小 SIZE = RW-data + ZI-data
    烧录时程序占用FLASH的大小 SIZE = Code + RO-data + RW-data
    4.疑问解析

    程序运行时RW为什么既在FALSH中出现又在RAM中出现呢?
    这是因为FALSH部分属性为只读的,而RAM的属性虽然是读写但是里面的数据不能掉电保存,因此在烧录STM32程序的时候,只能先将RW-data保存到flash中,在上电之后系统再将flash中的RW-data拷贝到RAM中进行读写操作,因此在FLASH和RAM中都要留出RW-data的占用空间。
    为什么烧录时没有ZI-data放在flash中呢?
    这是因为ZI-data中的数据都是0,没必要包含,只有程序运行之前,将ZI-data所在的区域(这一区域在RAM中)一律清零即可。包含进去反而浪费FLASH的存储空间。

  • STM32F103的RAM和FLASH大小

image-20220908083525893

小米嵌入式面经

1.变量声明和定义的区别

2.const和指针组合有几种情况,分别介绍一下。

3.项目中用到了spi,spi有几种工作模式,简单介绍一下。

4.static关键字

5.volatile关键字,举几个什么时候需要用到volatile关键字的例子。

6.进程与线程区别,通信方式

7.C语言内存分区,未定义的全局变存放在哪个区。

剩下问的问题很基础,就c语言加操作系统基础,太基础了反而记不清了。八股都答出来了,所以印象不是很深。

两面总共手撕三个代码:

1.删除链表重复节点。(剑指offer原题,难度中等)

2.将字符串里的数字提取出来然后转成数字打印。(难度简单,应该是leetcode的题,掌握数组基础即可,记得数字范围很大,用long接收)

3.一个循环输入,满足某某条件跳出结束即可。(难度在于用 scanf(****!=EOF);即可,牛客有输入练习,做多了就会了)

百度 北京 嵌入式linux(提前批

static,vailate,const关键字。

3.栈和队列。

4.数组和链表。

代码:

1.合并两个链表,按顺序。

2.去除字符串里面的空格。

马上面,1.5h

1.还问项目,问里面的难点,还问了一下本科的毕设,因为写在简历上。

2.也问了static关键字,函数里用static定义的变量,存在哪个区?

3.malloc,在函数里定义一个很大的数组,应该直接定义还是用malloc?

代码:

1.复制链表。

2.判断计算机是大端还是小端。

3.两数之和,leetcode第一题。

4.Linux使用多线程,实现软件定时功能。

华为 上海无线 嵌入式软件工程师

9.11 笔试

1.有向无环带权图,找关键路径。

2.内存分配算法。

3.两个数组,给定规则,求最长有连续关联数据的子数组。

9.24 一面,45min

1.介绍项目,问软件部分的结构框架

\2. static关键字

3.大小端,字节对齐,问网络通信一般是什么字节序?

4.存储结构,堆和栈的区别,还有哪些存储区?

5.宏函数和内联函数的区别。#define在编译的那个环节使用?

6.问指针问题,给出四行代码,问含义

int *p[10]

int (*p)[10]

int* (*p)[10]

int (*p)10

7.手撕一个代码,给定数组和一个整数k,问有多少长度至少为2且元素和为k的倍数的子数组。开始写的方法暴力,后面和面试官讨论说出来思路。

当天过了一小时二面,45min

1.介绍项目

2.大小端

3.字节对齐问题,给一个结构体

struct{

char a;

char b;

int c;

}

问在32位机器上,使用sizeof()多大,我说8字节,面试官说还可能是12字节,如果是这种情况:

struct{

char a;

int c;

char b;

}

4.数据结构,问满二叉树,完全二叉树,BST二叉搜索树,说自己的理解和区别。

5.快排,冒泡排序的时间复杂度,什么情况下快排时间复杂度比冒泡高?

6.手撕一个代码,二叉树路径总和位sum的路径有多少,不一定从根节点开始,但一定从上向下。用两层递归写出来。

7.问对无线通信有什么了解。

malloc分配的内存在哪里。

单片机启动程序,在执行main之前的是什么。

keil怎么使用库。

问了堆和栈的区别,static关键字。问到malloc()后不释放会怎样。

第二章-RTOS相关

  • 操作系统基础,任务调度,同步,多线程

  • RTOS

  • 你知道怎么判断栈溢出吗?

  • 进程通信有使用过一些锁和同步的东西吗?

  • 多个进程在获取不到锁的时候会进入什么状态?

  • A:阻塞。

  • 假设一个低优先的进程A获取先到锁,高优先级的进程B获取不到锁,那高优先级进程B的进行也会阻塞吗?

  • A:还是会阻塞。

  • 那如果还有一个任务C,优先级介于A和B之间,那么C任务会去抢占CPU资源吗?

    会的.

  • 那这样导致B等待资源的时候会越来越长,这样的问题有方法可以解决吗?因为B的优先级才最高。

    A:先把A优先级提高,等A释放后再给B。

  • 用什么方式提高A的优先级?

    RTOS有函数可以提高。

  • 那么A的优先级需要提高到多少?

    面试过后才突然想起来,从问题15-20,其实面试官想考的是“优先级反转问题”。但是我当时回答的磕磕绊绊,甚至有一些错误。

  • 又问我信号量组织方式

  • 问单片机与嵌入式系统的最大区别在哪里,答嵌入式系统可以跑多任务,然后逮住OS开始问。任务在内存中的组织方式(TCB-用户栈-用户代码),上下文切换时任务在内存中是如何变动,任务调度点,优先级反转如何解决,任务抢占如何发生,通信机制。

  • 信号量实现的底层原理,可不可以用一个全局变量代替信号量的计数值,答不可以信号量是临界资源要进临界区,问怎么进临界区,答关中断保存cpsr,他比较满意。

  • 大疆一面:问项目,反复问上系统的必要性,估计是个搞os的根本不懂四轴,以前栽过,这次答圆了,又主动答了中断机制,看他不是很感兴趣。最后问我懂不懂os的内存管理,答不懂,之后就是笔试编程为啥不做,答嵌入式对算法只是了解,项目里没用到。

  • 二面,把四轴的控制流程说了一遍,他对四轴还是懂一点,但飞控算法没问,难道大疆不该很看重这一块吗,把所有项目大概都问了一遍,无异常。然后问,你的劣势在哪,答不会Linux,又问我图像处理的算法,靠本科上课学的还没忘干净的知识答一点,中位数滤波,边缘滤波,想深问,我说我只是了解。感觉他不很满意

  • 二面挂了,挂的很不甘心,我的cpu原理知识还没吐出来呢,静态链接也没问,arm这块就问了个中断机制。回来反思为什么引不出自己的优势,感觉自己所答还是很零散,中断就中断,os就os,指令集就指令集,串不起来。后来我**找到一种组织的方式,**能从中断入手把arm架构,上下文模切换,指令流水和程序优化串起来讲,形成一个模板,只要问到其中某一个知识我就能把全部一串说出来,他感兴趣自然再深问。涨了一波经验,挂的不亏。

  • 双堆栈机制与模式切换,任务调度点与任务在内存中的组织方式(TCB-用户栈-用户代码),优先级反转与解决,死锁的原因,然后makefile语法一个。

  • 问CPU知识,“模板”用上了。先问m4 的双堆栈与上下文切换,17个寄存器的功能,LR的作用。顺势答为何中断返回要LR中的值减4,然后指令流水、CPU知识就跟着出来了。又问分支预测发生在指令处理的哪个阶段,cache的作用,回写与写透的区别,为什么设计三级缓存。

  • 线程切换是怎么设计的?

  • 信号量、互斥量底层是怎么设计的?

  • 内存管理是如何设计的?

  • 中断管理是如何设计的?

  • 你自己设计的OS相比于别人的,有哪些创新之处?

  • 实时操作系统的调度器设计细节?包括调度算法设计和上下文保存中的细节

  • 一个操作系统中哪些地方会调用调度器?

  • 一个信号量释放之后,在调度下一个线程的时候是如何选择的?

  • 如何去评估一个操作系统的实时性是否满足要求?如何去测算中断响应时间?

  • MCU上如何设计用户态和内核态?如何保障操作系统的安全性?

  • 平时做驱动外设的时候,有没有遇到过一些棘手的问题?如何解决的?

    这是一个人的

  1. 我的项目中freertos创建了几个任务,都是干嘛的,任务之间如何设计数据交互,反正基本上属于让你把项目给他完完整整的介绍清楚

  2. 静态局部变量与局部变量的区别(很基础)

  3. 为什么局部变量未定义时,每次初始化的结果是不确定的?是个真随机数还是个伪随机数?(我答:与栈的工作过程有关)

  4. 那么嵌入式中栈的工作机制是什么?(不会)

  5. 我连续调用同一个函数两次,他的局部变量初始化结果是否会一致?

  6. 最后面试官说,其实我想问一下你函数调用的过程。

  7. 然后你说静态局部变量存储在静态区,那么静态区的创建和消失是在什么时候?(答:创建时根据程序需求在主函数执行之前执行一个准备函数,其中进行内存申请,消失是随着程序的退出而消失)

  8. 那么我在windows里面运行了多个进程,其中一个进程执行完了,他的静态区会如何处理?

  9. 最后面试官说,可能你所接触的都是单进程,很少甚至忽略进程这个概念,其实我想问的是多进程的内存管理问题。

  • 你任务的优先级是怎么安排的,高优先级的的线程RTOS会怎么样处理?

  • 相同优先级的几个线程是怎么运行的?

  1. 对于临界区数据的处理,使用互斥锁和自己通过条件来判断,哪样更好,为什么?
  2. 上下文切换的时候系统做了些什么?

Linux问了多线程的处理,我只是用树莓派做过小项目,就回答了一下在树莓派中我是怎样处理的,然后面试官问,如果你用的是四核心处理器,那么分配300个线程合理吗?怎样分配才算合理?

面试官还问了多进程,但我没用过,直接就说没有了解过了。

  • RTOS中哪里会进行线程调度

  • 线程切换为什么用PendSVC,有什么优势

  • 线程优先级反转,如何解决?

  • 用了rtos,所以详细问了几个线程间的通信和同步,并问为什么用这种方式并设置场景让我换别的方案

  • RTOS采取哪些手段保证他的实时性

操作系统

  • Freertos支持的任务调度方式,详细说下每种方式
  • 任务(线程)间通信方法
  • 进程和线程的区别
  • 互斥量和信号量的区别
  • 优先级翻转,如何避免优先级翻转
  • STM32任务切换为什么用PendSV
  • FreeRTOS的内存管理怎么实现的?为什么这么做?
  • 对于临界区数据的处理,使用互斥锁和自己通过条件来判断,哪样更好,为什么?

在你的项目中有无接触过信号量、资源争抢的情况(无、但我举了一个信号量同步的问题)

RTOS的实时性如何保证、RTOS中如何测量任务的运行时间、RTOS的中断如何管理、RTOS的并发竞争、IIC协议内容、

相关文章:

小米嵌入式面试题目RTOS面试题目 嵌入式面试题目

第一章-非RTOS bootloader工作流程 MCU启动流程 通信协议,SPI IIC MCU怎么选型,STM32F1和F4有什么区别 外部RAM和内部RAM区别,怎么分配 外部总线和内部总线区别 MCU上的固件,数据是怎么分配的 MCU启动流程 IAP是怎么升级的…...

Iceberg与SparkSQL写操作整合

前言 spark操作iceberg之前先要配置spark catalogs,详情参考Iceberg与Spark整合环境配置。 有些操作需要在spark3中开启iceberg sql扩展。 Iceberg使用Apache Spark的DataSourceV2 API来实现数据源和catalog。Spark DSv2是一个不断发展的API,在Spark版…...

MYSQL1

一、为什么学习数据库 1、岗位技能需求 2、现在的世界,得数据者得天下 3、存储数据的方法 4、程序,网站中,大量数据如何长久保存? 5、数据库是几乎软件体系中最核心的一个存在。 二、数据库相关概念 (一)数据库DB 数据库是将大量数据保存起来,通过计算机加…...

一文解答Swin Transformer + 代码【详解】

文章目录 1、Swin Transformer的介绍1.1 Swin Transformer解决图像问题的挑战1.2 Swin Transformer解决图像问题的方法 2、Swin Transformer的具体过程2.1 Patch Partition 和 Linear Embedding2.2 W-MSA、SW-MSA2.3 Swin Transformer代码解析2.3.1 代码解释 2.4 W-MSA和SW-MSA…...

Vue3:<Teleport>传送门组件的使用和注意事项

你好&#xff0c;我是沐爸&#xff0c;欢迎点赞、收藏、评论和关注。 Vue3 引入了一个新的内置组件 <Teleport>&#xff0c;它允许你将子组件树渲染到 DOM 中的另一个位置&#xff0c;而不是在父组件的模板中直接渲染。这对于需要跳出当前组件的 DOM 层级结构进行渲染的…...

项目之家:又一家项目信息发布合作对接及一手接单平台

这几天“小三劝退师时薪700”的消息甚嚣尘上&#xff0c;只能说从某一侧面来看心理咨询师这个职业的前景还是可以的&#xff0c;有兴趣的朋友可以关注下。话说上一篇文章给大家介绍了U客直谈&#xff0c;今天趁热打铁再给大家分享一个地推拉新项目合作平台~项目之家&#xff1a…...

02-java实习工作一个多月-经历分享

一、描述一下最近不写博客的原因 离我发java实习的工作的第一天的博客已经过去了一个多月了&#xff0c;本来还没入职的情况是打算每天工作都要写一份博客来记录一下的&#xff08;最坏的情况也是每周至少总结一下的&#xff09;&#xff0c;其实这个第一天的博客都是在公司快…...

JVM 调优篇2 jvm的内存结构以及堆栈参数设置与查看

一 jvm的内存模型 2.1 jvm内存模型概览 二 实操案例 2.1 设置和查看栈大小 1.代码 /*** 演示栈中的异常:StackOverflowError** author shkstart* create 2020 下午 9:08** 设置栈的大小&#xff1a; -Xss (-XX:ThreadStackSize)** -XX:PrintFlagsFinal*/ public class S…...

微信可以设置自动回复吗?

在日常的微信聊天中&#xff0c;我们或许会频繁地遭遇客户提出的相同问题&#xff0c;尤其是对于从事销售工作的朋友们来说&#xff0c;客户在添加好友后的第一句话往往是“在吗”或者“你好”。当我们的好友数量众多时&#xff0c;手动逐个回复可能会耗费大量的时间。因此&…...

同样数据源走RTMP播放延迟低还是RTSP低?

背景 在比较同一个数据源&#xff0c;是RTMP播放延迟低还是RTSP延迟低之前&#xff0c;我们先看看RTMP和RTSP的区别&#xff0c;我们知道&#xff0c;RTMP&#xff08;Real-Time Messaging Protocol&#xff09;和RTSP&#xff08;Real Time Streaming Protocol&#xff09;是…...

@开发者极客们,网易2024低代码大赛来啦

极客们&#xff0c;网易云信拍了拍你 9月6日起&#xff0c;2024网易低代码大赛正式开启啦&#xff01; 低代码大赛是由网易主办的权威赛事&#xff0c;鼓励开发者们用低代码开发的方式快速搭建应用&#xff0c;并最终以作品决出优胜。 从2022年11月起&#xff0c;网易低代码大赛…...

数据分析-16-时间序列分析的常用模型

1 什么是时间序列 时间序列是一组按时间顺序排列的数据点的集合,通常以固定的时间间隔进行观测。这些数据点可以是按小时、天、月甚至年进行采样的。时间序列在许多领域中都有广泛应用,例如金融、经济学、气象学和工程等。 时间序列的分析可以帮助我们理解和预测未来的趋势和…...

SpringMVC使用:类型转换数据格式化数据验证

01-类型转换器 先在pom.xml里面导入依赖&#xff0c;一个是mvc框架的依赖&#xff0c;一个是junit依赖 然后在web.xml里面导入以下配置&#xff08;配置的详细说明和用法我在前面文章中有写到&#xff09; 创建此测试类的方法用于测试springmvc是具备自动类型转换功能的 user属…...

多语言ASO – 本地化的10个技巧

ASO优化是一个复杂的领域&#xff0c;即使你只关注讲英语的用户。如果您想面向国际受众并在全球范围内发展您的应用程序业务&#xff0c;您必须在App Store和Google Play Store上本地化应用程序的产品页面。不过&#xff0c;应用程序商店本地化的过程也有很多陷阱。 应用商店本…...

C程序设计——函数0

函数定义 前面说过C语言是结构化的程序设计语言&#xff0c;他把所有问题抽象为数据和对数据的操作&#xff0c;前面讲的变量、常量&#xff0c;都是数据。现在开始讲对数据操作——函数。 C语言的函数&#xff0c;定义方式如下&#xff1a; 返回值类型 函数名(参数列表) {…...

第二十一章 rust与动静态库的结合使用

注意 本系列文章已升级、转移至我的自建站点中,本章原文为:rust与动静态库的结合使用 目录 注意一、前言二、库生成三、库使用四、总结一、前言 rust中多了很多类型的库,比如前面章节中我们提到基本的bin与lib这两种crate类型库。 如果你在命令行执行下列语句: rustc -…...

修改服务器DNS解析及修改自动对时时区

修改服务器DNS解析&#xff1a; 1、搜索一下当地的DNS服务器的地址 2、登录服务器&#xff0c;执行 vim /etc/resolv.conf文件&#xff0c;在nameserver字段后填写DNS服务的地址 3、chattr i /etc/resolv.conf 加上不可修改权限&#xff0c;防止重启DNS被修改 修改自动对时…...

中科院TOP“灌水神刊”合集!盘点那些“又牛又水”的国人友好SCI

【SciencePub学术】本期&#xff0c;小编给大家推荐几本“又牛又水”的期刊&#xff0c;并且都是清一色的国人友好刊&#xff0c;涵盖各领域&#xff0c;以供各位学者参考&#xff01; NO.1 Nature Communications IF&#xff1a;14.7 分区&#xff1a;JCR1区中科院1区TOP 年…...

Python列表浅拷贝的陷阱与破解之道

引言 在Python编程世界中&#xff0c;列表的拷贝操作看似简单&#xff0c;却常常隐藏着一些令人意想不到的陷阱&#xff0c;尤其是当涉及到浅拷贝时。今天&#xff0c;我们将深入探讨Python列表浅拷贝现象及产生原因&#xff0c;并提供有效的解决方案&#xff0c;帮助你写出更…...

开放式系统互连(OSI)模型的实际意义

0 前言 开放式系统互连&#xff08;OSI&#xff0c;Open Systems Interconnection&#xff09;模型&#xff0c;由国际标准化组织&#xff08;ISO&#xff09;在1984年提出&#xff0c;目的是为了促进不同厂商生产的网络设备之间的互操作性。 定义了一种在层之间进行协议实现…...

回溯——10.全排列 II

力扣题目链接 给定一个可包含重复数字的序列 nums &#xff0c;按任意顺序 返回所有不重复的全排列。 示例 1&#xff1a; 输入&#xff1a;nums [1,1,2]输出&#xff1a; [[1,1,2], [1,2,1], [2,1,1]] 解题思路&#xff1a; 排序&#xff1a;首先对数组进行排序&#xf…...

基于百度AIStudio飞桨paddleRS-develop版道路模型开发训练

基于百度AIStudio飞桨paddleRS-develop版道路模型开发训练 参考地址&#xff1a;https://aistudio.baidu.com/projectdetail/8271882 基于python35paddle120env环境 预测可视化结果&#xff1a; &#xff08;一&#xff09;安装环境&#xff1a; 先上传本地下载的源代码Pad…...

【 C++ 】C/C++内存管理

前言&#xff1a; &#x1f618;我的主页&#xff1a;OMGmyhair-CSDN博客 目录 一、C/C内存分布 二、C语言中动态内存管理方式&#xff1a;malloc/calloc/realloc/free malloc&#xff1a; calloc&#xff1a; realloc&#xff1a; free&#xff1a; 三、C内存管理方式…...

智能客服的演变:从传统到向量数据库的新时代

国产数据库的发展在21世纪初取得了显著的进展。根据不完全统计&#xff0c;目前在国内已有超过300种不同的数据库在案。这一现象在40年前几乎是不可想象的&#xff0c;标志着中国在数据库领域取得了巨大的突破和多样化选择。对于对老一辈的故事或数据库发展史充满兴趣的朋友们&…...

python使用超级鹰识别验证码

1.超级鹰注册 超级鹰: https://www.chaojiying.com/ 注册后购买题分 2.获取要识别的图片 我们以这个附件下载的网页为例: https://gh.lnut.edu.cn/system/_content/download.jsp?urltypenews.DownloadAttachUrl&owner1224556702&wbfileid1504223 点开f12然后刷新几…...

基于YOLO目标检测实现表情识别(结合计算机视觉与深度学习的创新应用)

基于YOLO&#xff08;You Only Look Once&#xff09;的目标检测技术实现的表情识别项目是一个结合了计算机视觉与深度学习的创新应用。该项目旨在通过分析人脸图像或视频流中的面部特征来识别七种基本人类情感表达&#xff1a;愤怒&#xff08;Angry&#xff09;、厌恶&#x…...

Keil导入包出错

1.菜单栏找不到GD系列&#xff1f; 随便新建一个工程&#xff0c;将project用记事本打开后如图2所示。再将别人给的代码工程用记事本打开&#xff0c;发现别人给的工程少了这两行&#xff0c;所以复制粘贴到别人给的工程记事本中&#xff0c;保存刷新后重新打开&#xff0c;就…...

超声波自动气象站

超声波自动气象站的功能优势可以包括以下几个方面&#xff1a; 高精度测量&#xff1a;超声波自动气象站采用超声波技术进行测量&#xff0c;可以实现高精度的测量结果&#xff0c;能够准确地测量气温、湿度、风速、风向等气象参数。 高可靠性&#xff1a;超声波自动气象站采用…...

Mysql事件操作

查看是否开启事件 SELECT event_scheduler; SHOW VARIABLES LIKE %event_scheduler%; 开启或关闭事件 SET GLOBAL event_scheduler 1; SET GLOBAL event_scheduler on; SET GLOBAL event_scheduler 0; SET GLOBAL event_scheduler off; 创建事件sql CREATE EVENT IF…...

Python必知必会:程序员必须知道的22个Python单行代码!

今天给大家分享24个每个Python程序员都必须知道的单行代码&#xff0c;帮你写出更简洁、更优雅、更高效的代码。 1. 列表推导式 列表推导式&#xff08;List Comprehensions&#xff09;可以提供一种简洁的方式创建列表。相较于传统的循环&#xff0c;列表推导式更高效、可读…...