嵌入式面试高频(实战场景4)

此部分不只包含面经内容,均是实战类型不必全文背诵,有思路即可

后续收录于专栏:嵌入式/C++面试八股文

实战场景4

1 请问uboot启动过程都做了些什么⭐⭐⭐⭐

U-Boot(Universal Boot Loader)的启动过程主要包括以下阶段及工作:

硬件初始化

  • 进行 CPU 初始化,如设置时钟频率、初始化寄存器等。
  • 初始化内存控制器,确保内存正常工作,为后续加载和运行程序提供空间。
  • 初始化串口等基本输入输出设备,用于输出调试信息和与用户交互。

加载阶段

  • 从存储设备(如 Flash、SD 卡等)读取 U-Boot 的第二阶段代码到内存中。
  • 对读取到的代码进行校验和验证,确保代码的完整性和正确性。

系统配置与准备

  • 检测硬件设备,如网卡、硬盘等,获取设备信息。
  • 初始化环境变量,设置启动参数、网络参数等。
  • 为内核启动做准备,如设置内核启动参数,将控制权交给内核。

2 为什么uboot要关掉cache?⭐⭐⭐⭐

U-Boot 在启动过程中有时需要关掉 Cache,主要有以下原因:

保证数据一致性

  • 在早期的初始化阶段,硬件状态不稳定且内存中的数据可能还未正确初始化。如果 Cache 开启,可能会导致 CPU 从 Cache 中读取到旧的或无效的数据,关闭 Cache 可确保 CPU 直接从内存中读取最新、最准确的数据,保证数据一致性。

避免访问异常

  • 在对内存进行底层操作,如初始化内存控制器、设置内存映射等时,若 Cache 处于开启状态,可能会使对内存的访问操作变得复杂,甚至出现访问异常。关闭 Cache 可使这些操作更直接、更可控,降低出现错误的风险。

方便调试

  • 关闭 Cache 可以使程序执行流程和数据访问更加直观,便于开发人员在调试 U-Boot 时,准确判断硬件和软件的运行状态,更容易发现和解决问题。

3 nandflash和norflash的区别,对norlash的操作方式的理解?⭐⭐⭐⭐

NAND Flash 和 NOR Flash 是两种常见的闪存存储器,它们的区别及 NOR Flash 的操作方式如下:

主要区别

  • 存储结构:NAND Flash 以页为单位进行读写,页大小通常为 2KB 或 4KB 等,擦除则以块为单位,块大小一般为 64KB 或 128KB 等。NOR Flash 以字节为单位随机访问,存储单元类似传统的内存芯片,可直接对每个字节进行读写操作。
  • 读写速度:NAND Flash 的写入和擦除速度较快,适合大量数据的连续读写。NOR Flash 的读取速度快,可快速执行代码,但写入和擦除速度相对较慢。
  • 应用场景:NAND Flash 常用于大容量数据存储,如固态硬盘、存储卡等。NOR Flash 适合存储代码和少量关键数据,可直接在芯片内运行代码,如 BIOS 存储。

NOR Flash 操作方式

  • 读取操作:通过地址总线发送地址信号,指定要读取的存储单元地址,数据总线即可将对应地址的数据读出,类似内存的读取操作,能快速获取指令和数据。
  • 写入操作:先发送指令和地址,指定要写入的位置,再将数据通过数据总线写入相应地址单元,但写入前需先擦除目标区域,因为写入只能将 1 变为 0,不能将 0 变为 1。
  • 擦除操作:一般以块为单位,发送擦除指令和要擦除的块地址,将块内所有存储单元恢复为初始状态,即全为 1。

4 嵌入式系统中代码的执行方式⭐⭐⭐

顺序执行

  • 按照代码编写的先后顺序,一条指令接着一条指令依次执行,这是最基本的执行方式,适用于简单的、具有明确先后逻辑的任务,如初始化程序、简单的控制流程等。

函数调用执行

  • 当程序执行到函数调用语句时,会暂停当前的执行流程,转而去执行被调用的函数,函数执行完毕后再返回到调用点继续执行后续代码。这种方式有助于将复杂的任务分解为多个功能相对独立的函数,提高代码的可读性和可维护性,常用于实现各种特定功能模块。

中断驱动执行

  • 当特定的中断事件发生时,如外部设备的输入输出请求、定时器溢出等,会打断当前正在执行的代码,转而去执行相应的中断服务程序。中断服务程序执行完毕后,再根据情况返回原来被打断的地方继续执行。这种方式使得嵌入式系统能够及时响应外部事件,提高系统的实时性和灵活性,常用于处理实时性要求较高的任务,如实时数据采集、实时控制等。

多任务并发执行

  • 在具有多任务操作系统的嵌入式系统中,多个任务可以并发执行。操作系统通过任务调度算法,在不同的时间片内分配 CPU 资源给各个任务,使得多个任务看似在同时运行。每个任务都有自己的代码逻辑和执行上下文,这种方式可以充分利用系统资源,同时处理多个不同的任务,如同时进行数据处理、网络通信和人机交互等任务。

5 语句for(;1;)有什么问题?它是什么意思?⭐⭐⭐⭐

for(;1;) 是一个无限循环语句。其含义是循环条件始终为真(常量 1 代表真),程序会不断执行循环体中的代码,不会自行跳出循环。

问题在于若使用不当,可能导致 CPU 资源被持续占用,影响系统性能,甚至使程序失去响应。若要使用,需在循

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

嵌入式/C++面试八股文 文章被收录于专栏

该专栏面向嵌入式开发工程师、C++开发工程师,包括C语言、C++,操作系统,ARM架构、RTOS、Linux基础、Linux驱动、Linux系统移植、计算机网络、数据结构与算法、数电基础、模电基础、5篇面试题目、HR面试常见问题汇总和嵌入式面试简历模板等文章。超全的嵌入式软件工程师面试题目和高频知识点总结! 另外,专栏分为两个部分,大家可以各取所好,为了有更好的阅读体验,后面会持续更新!!!

全部评论

相关推荐

1.ARM处理器与中断(15道) 1.1 CPU的内部结构?CPU的内部结构大致可以分为: (1)控制单元(指令寄存器、指令译码器、操作控制器)。 (2)运算单元(算术逻辑单元)。 (3)存储单元(专用寄存器和通用寄存器) (4)时钟。 1.2 CPU跟内存、虚拟内存、硬盘的关系?(1)CPU要调用的程序和数据来自硬盘,但是CPU又不能直接读写硬盘上的系统、程序和数据,所以必须先将硬盘的内容存储在内存中,才能被CPU读写。 (2)因此内存是一个中转站,对计算机的运行速度有较大影响。 (3)当系统需要的内存空间大于实际的物理内存空间时,就需要用到虚拟内存了。虚拟内存可以将部分硬盘空间模拟成内存空间,将暂时不运行的程序和不使用的数据存储在硬盘上,需要时再将其存储到内存。 1.3 ARM结构处理器可分为哪几类?嵌入式微处理器 由通用计算机的CPU演变而来,位数在32位以上,具有较高的性能。 嵌入式微控制器 又称单片机,一般以某一种微处理器内核为核心,芯片内部集成ROM、RAM、总线、定时/ 计数器、I/O、A/D等各种必要功能和外设。 嵌入式DSP 硬件结构和指令进行过特殊设计,非常擅长高速实现各种数字信号处理运算(如数字滤波、频谱分析等)。 1.4嵌入式微处理器和DSP 有什么区别?(1)嵌入式微处理器和DSP一个偏重控制、一个偏重运算。 (2)嵌入式微处理器外围接口丰富,标准化、通用性、功耗控制等做得很好,适用于消费电子、家用电器等控制领域。 (3)DSP对系统结构和指令做了优化,能进行大量数据的快速计算,适用于音视频处理等领域。 1.5 ARM处理器有哪些工作状态?ARM 指令和Thumb 指令有什么区别?答案:(1)ARM处理器共有ARM、Thumb/Thumb-2、调试三种状态。 (2)ARM指令是32位的,较全面;Thumb指令是16位的,较精简。 解读:ARM状态 工作于32位指令状态,所有指令均为32位。 Thumb状态 工作于16位指令状态,所有指令均为16位。 Thumb-2状态 ARM状态和Thumb状态是早期版本,近期推出的Thumb-2状态兼有 16和32位指令,具有更高的性能、更低的功耗以及更少的内存占用。具有Thumb-2技术的 ARM处理器无需在ARM和Thumb-2状态之间切换了。 调试状态 处理器停机调试。 以上内容摘自专刊《嵌入式岗位笔试面试真题讲解》,该专刊不仅有真题讲解,还有经验分享,不清楚嵌入式该学什么的同学,想找嵌入式实习/正式工作的同学,都可以来看看:              https://blog.nowcoder.net/zhuanlan/v0ELPM嵌入式公司推荐:华为、小米、OPPO、VIVO、荣耀、一加、CVTE、大疆、insta360影石、美的 、TCL、海信、创维、烽火、比亚迪、吉利、长安、大众、经纬恒润 、小鹏、图森未来、百度、滴滴、蔚来、理想、 联发科、 紫光展锐 、全志、寒武纪 、晶晨半导体 、汇顶、华为、中兴、浪潮 、TP-LINK、讯飞、商汤、海康威视 、浙江大华、360、小马智行、元戎启行、深信服、移动、联通、电信、旷视、四维图新、中芯国际、复旦微电子、极氪。#牛客AI配图神器#
点赞 评论 收藏
分享
评论
点赞
10
分享

创作者周榜

更多
牛客网
牛客企业服务