看你会多少 记一次嵌入式底层面试

本文记录了一次嵌入式底层面试经历,涉及uboot启动过程、cache关闭原因、NAND/NOR Flash区别、内核参数传递、Linux内存管理和进程线程概念等内容,深入探讨了嵌入式系统的知识点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

面试某公司嵌入式底层,由于还在上班,所以是电话面试。原本以为会考很难的题目,但是问的都很基础。有些自己明明懂的也蒙圈了,所以有必要做个记录。

1、自我介绍。
答:-------------------

2、请问uboot启动过程都做了些什么?
答:
1、cpu刚开始初始化的时候,还未设置栈,所以先使用汇编代码,构建异常项链表,然后设置cpu为svc(特权)模式,同时关闭FIQ和IRQ(防止突发中断程序跑飞了)

注:在跳转到内核之前,要满足CPU出在SVC模式下。

2、对cp15协处理器进行设置,这里主要是关闭MMU和cache

3、进入到板级初始化阶段,这里会进行时钟、内存、串口的初始化。最后还要关闭看门狗。

4、接下来就是设置栈,为c语言准备运行环境,调用board_init_f,填充gd结构体。

5、对代码重定位,搬运到内存中去,搬运之后,跳转到内存中去执行board_init_r,这里就可以开启cache了,当然也可以不开启。然后初始化其他设备。比如flash、网卡、emmc等。初始化完之后,在执行main_loop

3、为什么uboot要关掉cache?
答: 根据cache的定位可以看出来,它是用来加快cpu从内存中取出指令的速度,但我们都知道,在设备上电之初,我们的内存初始化比较慢一拍,当cpu初始化了,但内存还没准备好之后,就对内存进行数据读,那么势必会造成了指令取址异常,系统就会挂了。所以,在u-boot的上电之初,就得关闭掉数据cac

嵌入式Linux底层驱动是一种在嵌入式系统中实现硬件设备与操作系统之间的沟通的技术。在嵌入式Linux底层驱动面试中,一般会涉及以下几个方面的问题。 首先,面试官可能会询问驱动程序员对于设备驱动的理解和经验。在回答这个问题时,应该提到驱动程序的作用是实现设备与操作系统的交互,通过向操作系统提供接口调用来控制设备的各种功能。同时,可以举例说明自己在嵌入式Linux底层驱动开发方面的经验和所擅长的领域。 其次,面试官可能会问到在驱动开发中常用的工具和技术。在回答这个问题时,可以提到常用的工具有交叉编译工具链、调试工具等,常用技术有中断处理、内存映射、设备树等。同时,还可以说到在驱动开发中的一些注意事项,例如对于设备控制寄存器的读写操作的时序要求和安全性的考虑等。 此外,面试官可能会询问关于中断处理、设备树、驱动调试等方面的问题。对于中断处理,应该了解中断的基本概念和中断处理程序的编写方法。对于设备树,应该了解设备树的作用和使用方法,并能够编写设备树描述文件。对于驱动调试,应该了解常用的调试方法和工具,例如使用 printk 输出调试信息、使用 gdb 调试内核代码等。 最后,面试官可能会要求解答一些与嵌入式Linux底层驱动开发相关的问题。这需要候选人对于嵌入式系统和Linux内核有一定的了解,包括内核的启动过程、文件系统的挂载、进程调度等。 综上所述,嵌入式Linux底层驱动面试涉及的问题范围较广,包括对于驱动开发的理解和经验、常用工具和技术的掌握、中断处理、设备树、驱动调试等方面的知识。通过准备这些内容,候选人可以在面试中有更好的表现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值