面试知识点总结篇三
一、arm中断流程和函数
- ARM 中断流程
- 中断触发
- 保存上下文
- 中断向量表
- 执行ISR
- 清除中断标志 - 恢复上下文
- 返回中断
二、STM32任务间通信有哪些方式
消息队列、 信号量、共享内存、任务通知
三、uboot内存没驱动之前是怎么操作的
- 硬件初始化
- 内存检测
- 设置内存映射
- 控制台初始化
- 启动加载器
四、用户态调用内核态怎么调用
- 用户态调用内核态主要通过系统调用(syscall)实现
- 具体步骤
1. 系统调用接口(例如文件操作)
2. 设置系统调用参数(参数通常包括:系统调用号(识别要调用的内核服务)
相关的输入参数(如文件描述符、缓冲区地址等))
3. 触发上下文切换
4. 内核态处理
5. 返回用户态
五、设备树的作用
- 设备树是一种数据结构,主要用于在系统启动时向操作系统描述硬件设备的信息。这种机制特别适合在那些不能自动探测硬件设备的系统。
- 主要作用
- 硬件描述 :包括处理器、总线、存储设备、外设等。这包括设备的类型、配置参数、内存映射、中断号和其他必要的硬件信息。
- 系统启动和配置:在系统引导时,操作系统内核会解析设备树文件(通常为 .dtb,即 Device Tree Blob),以获取硬件配置和结构信息。这样做允许操作系统理解如何与已安装的硬件进行交互,尤其是在系统中包含多个不同的硬件组件时。
- 操作系统的移植性:使用设备树可以提高操作系统的可移植性。开发者可以为不同的硬件平台使用相同的内核代码,通过更改设备树文件来适配不同的硬件。这样,操作系统内核无需为每个硬件平台编写特定的硬件抽象层代码。
- 动态配置:设备树使得动态配置成为可能,允许系统根据设备树中描述的信息在运行时调整硬件配置。这对于可以热插拔的设备特别有用。
- 简化驱动开发:通过使用设备树,驱动开发人员可以更容易地编写与硬件无关的驱动代码。驱动程序可以读取设备树中的信息,而不是硬编码设备的参数,这使得同一驱动能够支持多种略有不同的硬件设备。
六、sizeof用法
- sizeof是一个编译时运算符,用于计算变量或类型所占的字节数。
七、int a=5, b=7; int c = a+++b;
- 这里c = a+++b;被解析为c = a++ + b;。首先a的值增加1,然后将增加前的a(5)与b(7)相加,所以c为12,a变为6。
八、printf, strcpy, memcpy用法和区别
- printf用于格式化输出。
- strcpy用于复制字符串。
- memcpy用于内存复制。
- 区别:strcpy只适用于字符串,结束于第一个空字符;memcpy可以复制任意数据,包括含有空字符的数据,需要指定复制的字节数。
九、extern "C"用法
- 用于C++代码中,用以告诉编译器按照C的链接方式处理所标记的代码,主要用于使得C++代码能够链接到C编写的库
十、全局变量和局部变量可以重名吗
- 可以重名,局部变量在其作用域内会隐藏同名的全局变量。
十一、const的用法
- 用于声明常量,即不可变的值。这有助于提高程序安全性和可读性
十二、C++中STL之间的关系
- STL(标准模板库)提供了一系列模板化的数据结构和算法,包括容器(如vector, map)、迭代器、函数对象、算法等,它们之间高度集成,支持高效的数据存储和操作。
十三、信号与槽要注意些什么
- 在Qt中,信号和槽用于对象间的通信。注意信号不能被阻塞,槽可以是任意的成员函数,不必声明为slot。
- 保证连接正确且不产生无限递归或循环调用。
十四、Qt中多线程需要注意些什么
- 使用QThread时,尽量不要直接继承QThread,而是继承QObject并将其移动到QThread。
- 避免跨线程直接操作GUI元素。
十五、在主线程中初始化函数,怎么在子线程中调用
- 在主线程创建和初始化对象,通过信号和槽安全地在子线程中调用。
十六、Qt中UDP/TCP流程
- TCP:使用QTcpSocket,建立连接,进行读写操作。
- UDP:使用QUdpSocket,进行绑定后可以直接发送和接收数据报。
十七、 U-Boot是什么
- U-Boot(Universal Boot Loader)是一个开源的启动加载程序,广泛用于嵌入式设备。
- 它负责在设备启动时初始化硬件(如内存控制器、时钟、网络等),并加载并执行操作系统。
- U-Boot 支持多种操作系统,如 Linux、Android 等,并且提供了灵活的命令行界面用于开发和调试。
十八、Linux驱动中字符设备驱动模型
- Linux内核支持三种主要类型的设备驱动:字符、块和网络。字符设备驱动允许用户对设备进行字节流式访问
- 字符设备驱动:管理那些按字符进行数据传输的设备,例如串口、打印机等。它们通常实现了一组标准操作:open、close、read、write 和 ioctl。
十九、 主设备号和次设备号
- 主设备号:用来标识驱动程序的。
- 次设备号:用来标识由相同驱动程序控制的不同设备。
- 它们共同构成设备号,用于区分系统中的设备。
二十、 总线设备
- 总线用于连接各种硬件组件,允许数据在这些组件间传输。常见的总线设备包括 PCI、USB、I2C、SPI 等。
二十一、驱动加载到内核的方法
- 静态链接:在编译内核时将驱动编译进内核镜像。
- 模块加载:在系统运行时动态加载驱动模块。
二十二、字符型驱动设备怎么创建
- 通过编写字符设备驱动并在内核中注册设备号和设备操作集合。
- 使用register_chrdev()或alloc_chrdev_region()注册设备号,然后使用cdev_add()添加字符设备结构。
二十三、联合体介绍
- 联合体(union)允许在相同的内存位置存储不同的数据类型,成员共享内存。
二十四、DMA和中断的应用和区别
- 在需要高速数据传输且CPU负载较重的项目中使用,如音视频处理或网络通信。
- 区别
- DMA:直接内存访问,用于高速数据传输,无需CPU介入。
- 中断:响应外部或内部事件的机制,中断当前CPU操作。
相关文章:
面试知识点总结篇三
一、arm中断流程和函数 ARM 中断流程 中断触发保存上下文中断向量表执行ISR - 清除中断标志恢复上下文返回中断 二、STM32任务间通信有哪些方式 消息队列、 信号量、共享内存、任务通知 三、uboot内存没驱动之前是怎么操作的 硬件初始化内存检测设置内存映射控制台初始化…...
数据加密标准(DES)详解:原理、步骤及Python实现
💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「storm…...
每日OJ_牛客_OR59字符串中找出连续最长的数字串_双指针_C++_Java
目录 牛客_OR59字符串中找出连续最长的数字串 题目解析 C代码1 C代码2 C代码3 Java代码 牛客_OR59字符串中找出连续最长的数字串 字符串中找出连续最长的数字串_牛客题霸_牛客网 题目解析 双指针: 遍历整个字符串,遇到数字的时候,用双…...
虚幻引擎UE5如何云渲染,教程来了
步骤一:获取云渲染权限 访问渲染101官网,使用云渲码6666进行注册。 下载并安装渲染客户端。 步骤二:设置渲染环境 确保云渲染环境与您的本地环境一致,避免出错。 步骤三:任务提交 完成环境配置后,解析…...
使用Python实现图形学光照和着色的光线追踪算法
目录 使用Python实现图形学光照和着色的光线追踪算法引言1. 光线追踪算法概述2. Python实现光线追踪算法2.1 向量类2.2 光源类2.3 材质类2.4 物体类2.5 光线追踪器类2.6 使用示例 3. 实例分析4. 光线追踪算法的优缺点4.1 优点4.2 缺点 5. 改进方向6. 应用场景结论 使用Python实…...
通过openAI的Chat Completions API实现一个支持追问的ChatGPT功能集成
文章目录 前言准备工作代码实现思路完整代码实现备注前言 本文介绍如何通过openAI的Chat Completions API实现一个支持追问的后台功能,追问打个比方,就是当你问了一句”窗前明月光的下一句是什么?“之后,想再往下问就可以直接问”再下一句呢?“,模型也能基于上下文理解你…...
8,STM32CubeMX配置SPI工程(读取norflash的ID)
1,前言 单片机型号:STM32F407 编程环境 :STM32CubeMX Keil v5 硬件连接 :SPI1,CS/SS--->PB14 注:本工程在1,STM32CubeMX工程基础(配置Debug、时钟树)基础上完…...
【MATLAB源码-第178期】基于matlab的8PSK调制解调系统频偏估计及补偿算法仿真,对比补偿前后的星座图误码率。
操作环境: MATLAB 2022a 1、算法描述 在通信系统中,频率偏移是一种常见的问题,它会导致接收到的信号频率与发送信号的频率不完全匹配,进而影响通信质量。在调制技术中,QPSK(Quadrature Phase Shift Keyi…...
AIGC学习笔记—minimind详解+训练+推理
前言 这个开源项目是带我的一个导师,推荐我看的,记录一下整个过程,总结一下收获。这个项目的slogan是“大道至简”,确实很简。作者说是这个项目为了帮助初学者快速入门大语言模型(LLM),通过从零…...
计算机毕业设计 在线项目管理与任务分配系统的设计与实现 Java实战项目 附源码+文档+视频讲解
博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ 🍅文末获取源码联系🍅 👇🏻 精…...
小程序用户截屏事件
原生小程序: wx.setScreenBrightness({value: 0.5 }); 参数值: value屏幕亮度值,范围 0~1,0 最暗,1 最亮 uniapp: uni.setScreenBrightness({value: 0.5 }); 参数值: value屏幕亮度值&a…...
HashMap为什么线程不安全?如何实现线程安全
HashMap线程不安全的原因主要可以从以下几个方面解释: 1. 数据覆盖 假设两个线程同时执行put操作,并且它们操作的键产生相同的哈希码,导致它们应该被插入到同一个桶中。以下是可能发生的情况: 线程A读取桶位置为空,准…...
Python爬虫之requests模块(一)
Python爬虫之requests模块(一) 学完urllib之后对爬虫应该有一定的了解了,随后就来学习鼎鼎有名的requests模块吧。 一、requests简介。 1、什么是request模块? requests其实就是py原生的一个基于网络请求的模块,模拟…...
当微服务中调度返回大数据量时如何处理
FeignClient 和 Dubbo 可能不是最佳选择。以下是一些适合处理大数据量的技术和方法: 消息队列 简介:消息队列是一种异步通信方式,用于在不同系统之间传递消息。常见的消息队列包括 RabbitMQ、Kafka、ActiveMQ 等。 优点:消息队列…...
【项目经验分享】深度学习点云算法毕业设计项目案例定制
以下是深度学习与点云算法相关的毕业设计项目案例,涵盖了点云数据的分类、分割、重建、配准、目标检测等多个领域,适用于智能驾驶、机器人导航、3D建模等多个应用场景: 案例截图: 基于PointNet的3D点云分类与分割PointNet在大规…...
【Redis 源码】2项目结构说明
1 文件目录结构 deps 这个目录主要包含 Redis 所依赖的第三方代码库。 Jemalloc,内存分配器,默认情况下选择该内存分配器来代替 Linux 系统的 libc-malloc,libc-malloc 性能不高,且碎片化严重。hiredis,这是官方 C 语…...
RP2040 C SDK GPIO和IRQ 唤醒功能使用
RP2040 C SDK GPIO和中断功能使用 SIO介绍 手册27页: The Single-cycle IO block (SIO) contains several peripherals that require low-latency, deterministic access from the processors. It is accessed via each processor’s IOPORT: this is an auxiliary…...
@Transactional导致数据库连接数不够
在Spring中进行事务管理非常简单,只需要在方法上加上注解Transactional,Spring就可以自动帮我们进行事务的开启、提交、回滚操作。甚至很多人心里已经将Spring事务Transactional划上了等号,只要有数据库相关操作就直接给方法加上Transactiona…...
python3中的string 和bytes有什么区别
在Python中,string(字符串)和bytes(字节序列)是两种不同的数据类型,分别用于表示文本和二进制数据。它们的主要区别在于存储的数据类型、编码方式以及使用场景。 1. 存储数据类型 string (字符串,str):用来表示文本数据。string是一个Unicode字符串,其中的每个字符是…...
C~排序算法
在C/C中,有多种排序算法可供选择,每种算法都有其特定的应用场景和特点。下面介绍几种常用的排序算法,包括冒泡排序、选择排序、插入排序、快速排序、归并排序和堆排序,并给出相应的示例代码和解释。 冒泡排序(Bubble …...
React Native 开发环境搭建(全平台详解)
React Native 开发环境搭建(全平台详解) 在开始使用 React Native 开发移动应用之前,正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南,涵盖 macOS 和 Windows 平台的配置步骤,如何在 Android 和 iOS…...
阿里云ACP云计算备考笔记 (5)——弹性伸缩
目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...
P3 QT项目----记事本(3.8)
3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...
python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)
更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...
Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)
目录 一、👋🏻前言 二、😈sinx波动的基本原理 三、😈波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、🌊波动优化…...
学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”
2025年#高考 将在近日拉开帷幕,#AI 监考一度冲上热搜。当AI深度融入高考,#时间同步 不再是辅助功能,而是决定AI监考系统成败的“生命线”。 AI亮相2025高考,40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕,江西、…...
Java线上CPU飙高问题排查全指南
一、引言 在Java应用的线上运行环境中,CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时,通常会导致应用响应缓慢,甚至服务不可用,严重影响用户体验和业务运行。因此,掌握一套科学有效的CPU飙高问题排查方法&…...
Java毕业设计:WML信息查询与后端信息发布系统开发
JAVAWML信息查询与后端信息发布系统实现 一、系统概述 本系统基于Java和WML(无线标记语言)技术开发,实现了移动设备上的信息查询与后端信息发布功能。系统采用B/S架构,服务器端使用Java Servlet处理请求,数据库采用MySQL存储信息࿰…...
在 Visual Studio Code 中使用驭码 CodeRider 提升开发效率:以冒泡排序为例
目录 前言1 插件安装与配置1.1 安装驭码 CodeRider1.2 初始配置建议 2 示例代码:冒泡排序3 驭码 CodeRider 功能详解3.1 功能概览3.2 代码解释功能3.3 自动注释生成3.4 逻辑修改功能3.5 单元测试自动生成3.6 代码优化建议 4 驭码的实际应用建议5 常见问题与解决建议…...
二维数组 行列混淆区分 js
二维数组定义 行 row:是“横着的一整行” 列 column:是“竖着的一整列” 在 JavaScript 里访问二维数组 grid[i][j] 表示 第i行第j列的元素 let grid [[1, 2, 3], // 第0行[4, 5, 6], // 第1行[7, 8, 9] // 第2行 ];// grid[i][j] 表示 第i行第j列的…...
