24届双非机械硕士,实在不喜欢做机械相关的,非常向往嵌入式开发领域,纠结之下还是选择了学习嵌入式相关的知识。
学什么都是半桶水,学什么都没法记住,所以开个帖子记录下我的学习过程。
6.24一面综合面复盘
一面大概面了40min,但当场就被hr告知无二面了。应该满人了吧,或者在项目描述哪里说得不是很好。
自我介绍完就开始疯狂轰炸。只记得几个关键的地方,下次去面试是不是要做个项目介绍的ppt了?
1.你的项目是基于什么样的一个背景去做立项, 那在整个这个项目成立以后, 有哪些人参加, 大家的定位和角色是怎样的, 咱们的话是在哪个岗位上去做相应的安排, 那具体整个过程中又出现了哪些问题, 对于您个人来讲, 有哪些技术壁垒是当时而你没有办法解决, 后面又通过什么样的方式去解决的?
2.你做这个项目是自己有需求,还是上层领导有需求?
技术问题:
1.嵌入式系统软件架构分层?作用?
硬件层:提供基础的硬件资源,是整个系统的基础。
硬件抽象层(HAL):屏蔽硬件差异,为上层软件提供统一的硬件接口,提高代码的可移植性。
设备驱动层:实现与具体硬件设备的通信和控制,提供对硬件资源的访问接口。
操作系统层:提供基础的系统管理功能,为应用程序提供标准的运行环境。
中间件层:提供通用服务和库,简化应用程序开发,提高开发效率。
应用层:实现具体的应用功能,与用户直接交互,完成最终的任务。
2.芯片本身编写的驱动程序和针对外设(外部设备)编写的驱动程序之间的最大差异
1.硬件依赖性:
芯片本身驱动:这类驱动程序主要针对芯片内部的硬件模块,如处理器内核、内存控制器、GPIO 控制器等。这些驱动程序通 常与芯片厂商提供的硬件文档紧密相关,且需要详细了解芯片的内部结构和寄存器配置。
外设驱动:这类驱动程序针对的是连接到芯片的外部设备,如传感器、显示屏、通信模块等。这些驱动程序需要了解外设的通信协议(如 I2C、SPI、UART)和具体的功能要求。
2.开发复杂度:
芯片本身驱动:由于需要与芯片内部的多个模块打交道,这些驱动程序可能涉及到复杂的硬件初始化和状态管理。例如,内存控制器的初始化需要配置多种寄存器和时序参数。
外设驱动:外设驱动通常关注的是如何通过特定的总线(如 I2C、SPI)与外设进行通信,读取或写入数据。这些驱动程序可能需要处理通信协议的实现和数据格式转换。
3.应用场景:
芯片本身驱动:这些驱动程序是操作系统或固件的基础模块,必须在系统启动时正确加载和初始化,以保证系统的正常运行。
外设驱动:这些驱动程序通常用于实现具体的功能,如传感器数据采集、显示控制等,应用场景较为多样化。
4.接口和标准:
芯片本身驱动:这些驱动程序通常遵循芯片厂商提供的接口和标准,可能包括特定的寄存器配置和硬件抽象层(HAL)。
外设驱动:这些驱动程序可能需要遵循通用的通信协议和标准(如 I2C、SPI、UART),以及外设厂商提供的接口文档。
总结
- 先想好该做哪个行业,其次多刷刷求职软件,看看这个行业最需要的什么项目?去思考怎么把自己的项目描述写得与别人的要求相吻合。有什么难点?你是如何解决的