嵌入式面试问题

目录

1.linux中断分层概念

2.linux系统的驱动-设备-总线模型

3.如何在Python中创建一个线程

4.操作系统的最小调度单位:线程

5.原子操作:开始执行到结束期间都不会打断的操作单元。

6.信号量、互斥体、自旋锁的概念

7.IIc协议和SPI总线协议

8.串口通讯协议

9.socket

10.字符设备驱动程序框架

11.块设备驱动程序框架

12.TCP的三次握手与四次挥手

13.TCP报文

14.TCP与UDP的区别

15.进程间的通信

16.myuvc框架(很重要)

17.网络协议的层次

18.位置无关码,位置相关码的概念

19.static变量的作用

20.const的作用

 


1.linux中断分层概念

 中断会打断内核中进程的正常调度和运行,当中断到来时,要完成的工作往往并不会是短小的,它可能要进行较大量的耗时处理。所以中断处理程序中所有不要求立即完成的,在开中断的环境下,由中断后半段完成。

中断前半段主要完成尽可能少的比较紧急的功能,例如简单地读取寄存器中的中断状态并清除中断标志后就进行“登记中断”的工作。这样,顶半部执行的速度就会很快,可以服务更多的中断请求。上半部处理硬件相关和非常紧急的操作(如读硬件数据),而下半部处理没有那么紧急的操作(将硬件数据放到队列等)。低优先级中断的上半部可以抢占高优先级中断的下半部。

Linux 系统实现底半部的机制主要有:三种:tasklet,工作队列和软中断。  

软中断不同于软件中断,软中断发生的时机是从中断、调用或者异常返回用户空间之前,按照软中断在结构数组中定义的顺序依次执行。同一个软中断可以在不同CPU上并发执行。软中断执行过程中也不允许睡眠和进程切换。 

tasklet基于软中断实现,在软中断结构数组中占用两项。当软中断执行到这两项时就会跳转到tasklet函数入口处,依次执行队列中的tasklet函数。同一个tasklet不能在不同CPU上并发执行,但是不同tasklet可以在不同CPU上执行。tasklet始终运行在被初始提交的同一处理器上。 

工作队列是一种将任务推后执行的形式,他把推后的任务交由一个内核线程去执行。这样如果在中断函数中使用中断分层(工作队列方式),中断函数的第二部分会在进程上下文执行,它允许重新调度甚至睡眠。每个被推后的任务叫做“工作”,由这些工作组成的队列称为工作队列。工作队列的本质就是将工作交给内核线程处理,因此其可以用内核线程替换。但是内核线程的创建和销毁对编程者的要求较高,而工作队列实现了内核线程的封装,不易出错,所以推荐使用工作队列。

 

2.linux系统的驱动-设备-总线模型

从Linux2.6开始Linux加入了一套驱动管理和注册机制—platform平台总线驱动模型。

platform平台总线是一条虚拟总线,platform_device为相应的设备,platform_driver为相应的驱动。与传统的bus/device/driver机制相比,platform由内核统一进行管理,提高了代码的可移植性和安全性。所谓的platform_device并不是与字符设备、块设备和网络设备并列的概念,而是Linux系统提供的一种附加手段。Linux总线设备驱动模型的框架如下图所示:

  • 13
    点赞
  • 118
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
嵌入式开发中的静态关键字主要有两个用途: 1. 静态变量(static variable):嵌入式系统中,通常需要使用全局变量来共享数据。但是,全局变量会导致不同的模块之间的变量命名冲突,或者由于全局变量频繁的读写操作而降低系统的性能。静态变量在函数内部使用,具有全局变量的作用域,但只在函数执行时存在。静态变量的内存空间只分配一次,在程序运行期间保持常驻内存,可以减少全局变量的冲突和内存占用。 2. 静态函数(static function):静态函数也称为内部函数或局部函数,只能在声明的文件中使用,无法被其他文件调用。在嵌入式系统开发中,静态函数更加安全和高效,能够避免其他文件意外调用和占用系统资源。此外,静态函数的调用也比普通函数更快,节省了函数调用时产生的压栈、出栈和参数传递的开销。 当然,在使用静态关键字时还需要注意以下几点: 1. 静态变量的生命周期:静态变量的生命周期与程序的运行周期相同,应谨慎使用避免内存泄漏问题。 2. 静态函数的可见性:静态函数只能在声明的文件内使用,如果在其他文件中需要使用静态函数,则可以通过在文件中声明函数的方法进行调用。 3. 静态变量与静态函数的使用场景:在设计嵌入式系统时,根据需求和性能要求,选择合适的静态变量和静态函数使用方式,可以提高代码质量和性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值