首页 > 其他分享 >小米嵌入式面试题目RTOS面试题目 嵌入式面试题目

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

时间:2024-09-13 18:51:25浏览次数:3  
标签:RAM 题目 如何 中断 FLASH 嵌入式 面试 内存 data

第一章-非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协议内容、

标签:RAM,题目,如何,中断,FLASH,嵌入式,面试,内存,data
From: https://blog.csdn.net/qq_46187594/article/details/142065489

相关文章

  • 面试重点!!!必背
    redisson底层实现加锁的原理内部通过lua脚本,借助hash类型实现锁的操作hash的key值是分布式锁的keyhash的filed值是uuid+当前线程idhash的value值是加锁的次数判断key是否存在,0表示不存在,key是锁的名称例如keys[1]是taskLockKeyargv[1]过期时间,比如10秒argv[2]是uu......
  • Java笔试面试题AI答之单元测试JUnit(4)
    文章目录19.简述JUnitorg.junit.TestSuite类的作用?1.组织测试类2.简化测试执行3.灵活配置测试环境4.嵌套测试套件注意事项20.在JUnit中@Test注释的作用和用法?作用用法21.简述Junit基础注解(@BeforeClass、@Before、@Test、@After、@AfterClass)?22.编写代......
  • c++面试八股文(大公司通用)
    在C++面试中,常见的问题通常会围绕C++的基础知识、数据结构与算法、系统设计、编程技巧、以及实际应用中的场景。以下是华为C++面试中常见的“八股文”问题及其简要回答思路。1.C++语言基础C++中const的用法有哪些?回答:常量变量:constinta=10;指针常量:constint*p;(指向......
  • 吊打面试官!从多维度理解架构
    大家好,我是汤师爷~在工作当中,我们经常会听到以下说法:产品负责人说,现在的业务架构太复杂,需要仔细梳理下。技术领导说,这个项目很复杂,需要做下系统架构方案评审。研发经理说,这次秒杀活动访问量非常大,需要用到高并发架构方案。一线研发说,互联网大厂都会用到微服务架构,我要学学微......
  • 面试-运行环境-网页渲染
    网页加载过程网页是如何加载并渲染出来的从输入url到渲染出页面的整个过程(经典题来了)资源有哪些形式加载的大致过程请求啥就是返回啥,图片、音频都有可能。请求的是页面则返回HTML代码。渲染过程-①RenderTree:渲染树,每个节点挂了很多CSS属性,这样就能渲染......
  • 随机生成加减法题目函数
    importrandomfromdocximportDocument#创建一个新文档doc=Document()doc.add_heading('100以内连续加减法训练题',level=1)#随机生成加减法题目函数defgenerate_question():num1=random.randint(1,100)num2=random.randint(1,100)num3=r......
  • Java面试随手记3
    一、面试题总结31、mysql中char和varchar的区别?特性charvarchar存储方式定长,长度不足时填充空格可变长,按实际长度存储存储效率固定空间,浪费内存根据实际长度动态分配性能较高,适合固定长度数据稍低,适合不定长度数据适用场景固定长度的字符串不定长度的字符串空格处理自动去......
  • 面试-JS Web API - 存储
    cookieHTML5存储(localStorage和sessionStorage)cookiecookie本身用于浏览器和server通讯的,被借用到本地存储来。可以用document.cookie来修改。同一个变量会覆盖,不同变量会追加。localStorage和sessionStorage//保存数据到localStoragelocalStorage.getItem('a......
  • 面试004
    1、自动化测试框架具体如何实现介绍整体技术名词:框架使用到了pytest、allure、jsonpath等技术实现框架搭建框架底层执行逻辑:根据执行选项读取测试用例信息Pytest插件用于读取测试用例信息并根据需要动态生成测试用例。最终按照编写的测试用例流程模板,执行用例具体执行......
  • 面试-JS Web API-Linux命令
    关键Linux命令虽然前端开发者不需要掌握Linux的所有命令,但以下基本的命令对日常工作是非常有用的:文件和目录管理ls:列出当前目录下的文件和文件夹。lsls-l#显示详细信息ls-a#显示隐藏文件cd:切换目录。cd/path/to/directorycd..#返回上一级目录pwd:显......