面试知识点总结篇三

news/2024/9/24 16:25:49/

一、arm中断流程和函数

  1. ARM 中断流程
  • 中断触发
  • 保存上下文
  • 中断向量表
  • 执行ISR
    - 清除中断标志
  • 恢复上下文
  • 返回中断

二、STM32任务间通信有哪些方式

消息队列、 信号量、共享内存、任务通知

三、uboot内存没驱动之前是怎么操作的

  1. 硬件初始化
  2. 内存检测
  3. 设置内存映射
  4. 控制台初始化
  5. 启动加载器

四、用户态调用内核态怎么调用

  1. 用户态调用内核态主要通过系统调用(syscall)实现
  2. 具体步骤
1. 系统调用接口(例如文件操作)
2. 设置系统调用参数(参数通常包括:系统调用号(识别要调用的内核服务)
相关的输入参数(如文件描述符、缓冲区地址等))
3. 触发上下文切换
4. 内核态处理
5. 返回用户态

五、设备树的作用

  1. 设备树是一种数据结构,主要用于在系统启动时向操作系统描述硬件设备的信息。这种机制特别适合在那些不能自动探测硬件设备的系统。
  2. 主要作用
  • 硬件描述 :包括处理器、总线、存储设备、外设等。这包括设备的类型、配置参数、内存映射、中断号和其他必要的硬件信息。
  • 系统启动和配置:在系统引导时,操作系统内核会解析设备树文件(通常为 .dtb,即 Device Tree Blob),以获取硬件配置和结构信息。这样做允许操作系统理解如何与已安装的硬件进行交互,尤其是在系统中包含多个不同的硬件组件时。
  • 操作系统的移植性:使用设备树可以提高操作系统的可移植性。开发者可以为不同的硬件平台使用相同的内核代码,通过更改设备树文件来适配不同的硬件。这样,操作系统内核无需为每个硬件平台编写特定的硬件抽象层代码。
  • 动态配置:设备树使得动态配置成为可能,允许系统根据设备树中描述的信息在运行时调整硬件配置。这对于可以热插拔的设备特别有用。
  • 简化驱动开发:通过使用设备树,驱动开发人员可以更容易地编写与硬件无关的驱动代码。驱动程序可以读取设备树中的信息,而不是硬编码设备的参数,这使得同一驱动能够支持多种略有不同的硬件设备。

六、sizeof用法

  1. sizeof是一个编译时运算符,用于计算变量或类型所占的字节数。

七、int a=5, b=7; int c = a+++b;

  1. 这里c = a+++b;被解析为c = a++ + b;。首先a的值增加1,然后将增加前的a(5)与b(7)相加,所以c为12,a变为6。

八、printf, strcpy, memcpy用法和区别

  1. printf用于格式化输出。
  2. strcpy用于复制字符串。
  3. memcpy用于内存复制。
  • 区别:strcpy只适用于字符串,结束于第一个空字符;memcpy可以复制任意数据,包括含有空字符的数据,需要指定复制的字节数。

九、extern "C"用法

  • 用于C++代码中,用以告诉编译器按照C的链接方式处理所标记的代码,主要用于使得C++代码能够链接到C编写的库

十、全局变量和局部变量可以重名吗

  • 可以重名,局部变量在其作用域内会隐藏同名的全局变量。

十一、const的用法

  1. 用于声明常量,即不可变的值。这有助于提高程序安全性和可读性

十二、C++中STL之间的关系

  1. STL(标准模板库)提供了一系列模板化的数据结构和算法,包括容器(如vector, map)、迭代器、函数对象、算法等,它们之间高度集成,支持高效的数据存储和操作。

十三、信号与槽要注意些什么

  1. 在Qt中,信号和槽用于对象间的通信。注意信号不能被阻塞,槽可以是任意的成员函数,不必声明为slot。
  2. 保证连接正确且不产生无限递归或循环调用。

十四、Qt中多线程需要注意些什么

  1. 使用QThread时,尽量不要直接继承QThread,而是继承QObject并将其移动到QThread。
  2. 避免跨线程直接操作GUI元素。

十五、在主线程中初始化函数,怎么在子线程中调用

  1. 在主线程创建和初始化对象,通过信号和槽安全地在子线程中调用。

十六、Qt中UDP/TCP流程

  1. TCP:使用QTcpSocket,建立连接,进行读写操作。
  2. UDP:使用QUdpSocket,进行绑定后可以直接发送和接收数据报。

十七、 U-Boot是什么

  1. U-Boot(Universal Boot Loader)是一个开源的启动加载程序,广泛用于嵌入式设备。
  2. 它负责在设备启动时初始化硬件(如内存控制器、时钟、网络等),并加载并执行操作系统。
  3. U-Boot 支持多种操作系统,如 Linux、Android 等,并且提供了灵活的命令行界面用于开发和调试。

十八、Linux驱动中字符设备驱动模型

  1. Linux内核支持三种主要类型的设备驱动:字符、块和网络。字符设备驱动允许用户对设备进行字节流式访问
  2. 字符设备驱动:管理那些按字符进行数据传输的设备,例如串口、打印机等。它们通常实现了一组标准操作:open、close、read、write 和 ioctl。

十九、 主设备号和次设备号

  1. 主设备号:用来标识驱动程序的。
  2. 次设备号:用来标识由相同驱动程序控制的不同设备。
  • 它们共同构成设备号,用于区分系统中的设备。

二十、 总线设备

  1. 总线用于连接各种硬件组件,允许数据在这些组件间传输。常见的总线设备包括 PCI、USB、I2C、SPI 等。

二十一、驱动加载到内核的方法

  1. 静态链接:在编译内核时将驱动编译进内核镜像。
  2. 模块加载:在系统运行时动态加载驱动模块。

二十二、字符型驱动设备怎么创建

  1. 通过编写字符设备驱动并在内核中注册设备号和设备操作集合。
  2. 使用register_chrdev()或alloc_chrdev_region()注册设备号,然后使用cdev_add()添加字符设备结构。

二十三、联合体介绍

  1. 联合体(union)允许在相同的内存位置存储不同的数据类型,成员共享内存。

二十四、DMA和中断的应用和区别

  1. 在需要高速数据传输且CPU负载较重的项目中使用,如音视频处理或网络通信。
  2. 区别
    • DMA:直接内存访问,用于高速数据传输,无需CPU介入。
    • 中断:响应外部或内部事件的机制,中断当前CPU操作。

http://www.ppmy.cn/news/1529882.html

相关文章

idea 恢复 pom 文件呈现灰色并带删除线

今天在 idea 中导入别人的项目时发现有几个 pom 文件是灰色的并带删除线。 可以用以下方式解决: 打开file - settings - build,execution,deployment - Build Tools - Maven - Ignored Files 把 pom.xml 前面的复选框去掉,去掉之后,点击 appl…

iOS界面布局:屏幕尺寸与安全区域全面指南

引言 随着iPhone和iPad的更新迭代,iOS设备的屏幕尺寸和设计也在不断变化。无论是iPhone X系列的刘海屏,还是最新的iPhone 14,开发者都需要面对适配不同设备布局的问题。在项目开发中,导航栏、状态栏、TabBar的高度以及安全区域的…

js发送邮件至指定邮箱功能实现方式和技巧?

js发送邮件至指定邮箱的教程?怎么使用Node.js发信? 无论是用户反馈、订单确认还是密码重置,js发送邮件至指定邮箱的需求无处不在。AokSend将深入探讨js发送邮件至指定邮箱的实现方式和技巧,帮助开发者更好地理解和应用这一功能。…

RabbitMQ Spring客户端使用

注解声明式队列和交换机 java自带序列化工具类,将java对象序列化为字节数组,用于网络传输。 jdk序列号存在缺陷,(不安全,占用空间大等) 推荐使用JSON的序列化: springboot扫描包使配置生效&…

python学习-09【文件和目录操作】

1、文件的基本操作 打开文件 通过 open() 来实现创建或打开文件并创建文件对象 open(file, moder, buffering-1, encodingNone, errorsNone, newlineNone, closedTrue, openerNone) file:要创建或打开的文件名,需要引号包裹(必选&#xff0c…

图解VMware通过NAT模式实现互联互通案例

一、概述 在VMware中安装虚拟主机,其中一项重要的任务就是实现互联连互通,达成以下目标: 虚拟主机实现能够随时上互联网。虚拟主机与宿主机之间互联访问。虚拟主机之间互联访问。 其实VMware不仅具有虚拟主机功能,还具有虚拟网络…

开源 AI 智能名片链动 2+1 模式 S2B2C 商城小程序与社交电商的崛起

摘要:本文深入探讨了社交电商迅速发展壮大的原因,并分析了开源 AI 智能名片链动 21 模式 S2B2C 商城小程序在社交电商中的重要作用。通过对传统电商与社交电商的对比,以及对各发展因素的剖析,阐述了该小程序如何为社交电商提供新的…

Halcon OCR检测 免训练版

一.前言: 目前新版的Halcon已经具备了DeepOcr的功能可以涵盖大部分的识别场景,缺点是有些特殊的应用场景依然需要大量的图片训练,而且Halcon22之前的版本DeepOCR是不支持训练的,我们都知道传统的OCR项目是通过Blob分析&#xff0…