面试知识点总结篇三
一、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 …...
OpenSpire:开源贡献者协作平台的设计理念与实战指南
1. 项目概述:一个面向开源贡献者的协作平台最近在和一些刚接触开源的朋友交流时,发现一个挺普遍的现象:很多人对参与开源项目充满热情,但第一步“如何找到合适的项目并上手”就卡住了。GitHub上项目浩如烟海,一个新手面…...
如何3步获取百度网盘真实下载地址实现满速下载
如何3步获取百度网盘真实下载地址实现满速下载 【免费下载链接】baidu-wangpan-parse 获取百度网盘分享文件的下载地址 项目地址: https://gitcode.com/gh_mirrors/ba/baidu-wangpan-parse 你是否曾被百度网盘的非会员下载速度困扰?当下载重要的工作文件、学…...
期权交易基础框架:模块化设计与Python实现指南
1. 项目概述:一个为期权交易者打造的“乐高积木”底座如果你在量化交易或者期权策略开发领域摸爬滚打过一段时间,大概率会遇到一个共同的痛点:策略想法很多,但把它们变成可回测、可实盘、可管理的代码,却要耗费大量的“…...
基于CLUE与加速度计的鸡蛋坠落实验:从传感器数据到缓冲设计优化
1. 项目概述:用传感器数据为物理实验“上保险” 鸡蛋坠落实验,一个听起来就充满童年乐趣和“悲剧”风险的经典物理项目。它的核心挑战在于,如何设计一个缓冲装置,让一枚脆弱的生鸡蛋从高处坠落而不破裂。传统上,我们依…...
基于容器技术的在线代码沙盒:架构设计与安全实践
1. 项目概述:一个开箱即用的在线代码运行沙盒最近在折腾一些需要快速验证代码片段、或者给团队做技术分享的场景,我发现一个痛点:环境配置太麻烦了。你想让新人跑个Python脚本,他可能得先装Python、配环境变量、装依赖库ÿ…...
基于Python/Flask的洗车店业务管理系统设计与实现
1. 项目概述:从“洗车”到“洗车服务”的数字化重构最近在GitHub上看到一个挺有意思的项目,叫“washing-cars”。光看名字,你可能会觉得这只是一个关于洗车的小工具或者记录表。但当我深入进去,才发现它远不止于此。这个项目本质上…...
LoRA模型合并实战:多技能大模型融合指南与vLLM+Copaw工具链解析
1. 项目概述:LoRA模型合并的“瑞士军刀” 在AIGC(人工智能生成内容)领域,模型微调是让大语言模型(LLM)或扩散模型适配特定任务、风格或知识库的核心手段。而LoRA(Low-Rank Adaptation࿰…...
告别玄学调试:用英飞凌TC37X/TC38X的DSADC做旋变软解码,这些配置坑你别再踩了
英飞凌TC37X/TC38X DSADC旋变解码实战避坑指南 从实验室到产线:那些DSADC配置中容易忽视的细节 在新能源汽车电机控制领域,旋转变压器(Resolver)作为位置传感器的主力军,其解码稳定性直接决定了矢量控制的精度。英飞凌…...
从Awesome List到个人知识库:开发者如何高效筛选与组织技术资源
1. 项目概述:一份面向开发者的“Awesome List”清单 如果你在GitHub上混迹过一段时间,尤其是热衷于探索前沿技术、寻找优质学习资源或开源项目,那么你大概率见过或者使用过一种特殊的仓库—— Awesome List 。简单来说,这是一个…...
3D打印LED发光史莱姆:零焊接电子制作与创意材料科学实践
1. 项目概述:当电子制作遇上创意手工几年前,我在一个社区创客空间带孩子们做活动,发现一个挺有意思的现象:一讲到电路、LED、电阻,不少孩子眼神就开始飘忽;但一旦拿出会发光的、可以随意揉捏的“史莱姆”泥…...
