Advertisement

小米 2021 春招面试总结

阅读量:

该职位为嵌入式软件工程师-BSP方向,在2021年3月29日发布。主要职责包括基于Linux系统移植到开发板及bringup开发板,并解决驱动程序问题。任职资格要求具备计算机相关专业学历及以上、熟练使用C语言及Linux系统操作等技能。
面试环节中回答了关于UBOOT启动流程及驱动开发相关内容的问题,并详细阐述了BSP与驱动的区别:BSP由芯片原厂提供,用于初始化硬件并引导操作系统启动;而驱动由开发者编写,在内核中运行并完成硬件初始化及设备管理功能。此外还提到BSP的功能特点及其在不同阶段的应用情况。

岗位: 嵌入式软件工程师-BSP方向

时间: 2021.03.29

岗位描述:

将基于 linux 系统移植到开发板、bringup 开发板,解决驱动程序问题。

任职资格:

  1. 具备本科及以上学历,并且学习背景属于计算机相关专业:
  2. 掌握C语言的基本应用技能:
  3. 在数据结构和计算机系统的核心理论上有扎实的掌握:
  4. 对Linux操作系统有较为熟练的操作能力:
  5. 具备一定的硬件背景知识:

一面(30分钟)

主要问你简历自己写的东西。

1、做一个英文自我介绍。

2、uboot 启动流程?

回答:uboot 如何通过引导机制实现内核启动?在 kernel 启动过程中如何实现根文件系统的加载?

3、面试官说通过了,进入下一轮。

二面(25分钟)

1、驱动下半部分需要做些什么?

2、C 语言和 C++ 有什么区别?比如 static,malloc 和 new。

3、C++ 的三大特征说一下。

4、你 C++ 学的怎么样?

回答:主要用 C 语言,不太了解 C++。

5、问简历中项目实现框架和细节。

补充

关于嵌入式方向驱动工程师BSP 工程师的区别,做了一点总结。

BSP 简称 Board Support Package(板级支持包),它是基于嵌入式系统中与硬件无关的设计理念而产生的。将操作系统抽象为运行于虚拟化的硬件架构之上,并将所有依赖于 hardware 的实现细节整合至 BSP 内部。通过接口向虚拟化的 hardware 环境提供支持功能,在系统层的操作器通过预先定义的标准接口实现功能交互。BSP 实际包含了所有直接依赖于 hardware 的代码模块。

BSP 和驱动的区别在于:一个是 bootloader(即包含启动引导逻辑),另一个则涵盖了更底层的硬件支持功能。

1、BSP是一般是芯片原厂提供的,驱动是自己写的。

BSP是操作系统启动前必需执行的重要步骤。它涵盖了初始化任务以及引导操作系统的上位机功能,并包含了一些用户的配置信息。一旦OS完成启动过程,则认为BSP的作用已经结束。此时系统会通过相应的驱动重新进行初始设置。这些驱动实际上构成了OS内核的关键组成部分。

BSP充当嵌入式系统与硬件平台及操作系统的接口层[软件]。其主要功能体现在以下几个方面:首先旨在消除底层 hardware组件间的差异性;其次能够直接按照 operating system需求对 hardware进行操作;此外还负责向 operating system传递底层 hardware相关信息,并最终实现操作系统的启动。BSP凭借其在 hardware与 operating system之间建立的桥梁作用,在很多嵌入式设备开发中发挥着关键角色。具体而言它通过提供高度抽象化的接口实现了不同 hardware架构与 standard operating system的有效交互机制从而简化了 hardware与 software之间的开发复杂度

完成底层硬件的初始化操作,并以特定方式配置底层硬件信息供操作系统使用;
完成相关硬件设备的初始化工作,在其中包含存储设备和通信设备两大部分;
对系统硬件进行全面的状态检测,并确保所有关键组件均处于正常工作状态;
完成操作系统加载后启动系统运行流程,并在启动过程中进行实时监控。

4、BSP 也称为硬件抽象层HAL或者中间层。

该系统通过模块化设计实现了上层软件与底层硬件的分离。该设计使得系统上层的[软件开发]人员无需深入了解或关注底层硬件的具体细节,并且所有[软件开发]工作均可基于BSP提供的标准接口展开。

基于操作系统的考虑,每个操作系统的BSP可能采用不同的定义方式;相应地,不同操作系统的BSP需达成的功能目标也会有所差异。

为了启动嵌入式Linux系统,在底层硬件上进行初始化并引导操作系统。与此同时,在BSP框架下处理与硬件相关的任务时也需要进行相应的初始化操作。这些任务主要集中在正确配置CPU、内存、中断以及相关联的寄存器和协处理器上。

在各个开发阶段中,由于系统核心与存储层次结构所处的位置不同,BSP需要承担的任务也随之变化。具体任务各有不同的是,在开发调试阶段上,BSP必须实现与主机的通信功能,并具备从主机下载核心文件的能力;而在最终的目标产品构建中,则要求BSP必须具备从非易失性存储设备上加载核心文件的能力。

全部评论 (0)

还没有任何评论哟~