Linux-BSP-驅動-面試題大全


1. 了解Linux的那個驅動?舉例講講。

a.驅動注冊過程:通過platform bus, platform_device_register和platform_driver_register時都會在總線查詢是否有匹配的設備或驅動,如果有就會調用driver的probe函數。
<延伸問題:device和driver通過什么匹配的?name或id_table(dtsi里面compatable字段)>
b.驅動類型:字符設備(fb顯示設備)、塊兒設備、網絡設備
c.字符設備為例,驅動需要實現的函數fops:(open,read,write,release,store,show實現暴露給usr space的設備節點,suspend, resume並不是都實現這些)

2. 中斷上半部下半部

top half: spinlock_irqsave做很少的工作,需要快速處理完,一般是關中斷,清中斷標志位,保存數據,調用中斷下半部,開中斷。
botomm half: tasklet, workque(可以睡眠可以調度)。
中斷里用spin lock,不能用semphore(可以調度可以睡眠)

3. spinlock semphore mutex 區別

4. 內核空間和用戶空間通信方式

5. boot傳給kernel的參數

6. linux 進程調度方法

7. linux softirq

8. MMU作用

9. 訪問外部寄存器的方法 *(volatile unsigned int*)ADDR ioremap

10. 實現container_of: https://www.cnblogs.com/linux-37ge/p/10219359.html

#define member_offset(type, member) ((int)&(((type*)0)->member))
#define container_of(ptr, type, member) ({\
       const typeof(((type*)0)->member) *_mptr = ptr; \ (type*)( (char*)_mptr - member_offset(type, member))})

11. 32位bit位反轉

unsigned reversebit(uint32 val){
    uint32  ret = 0, loop = 32;
    while(loop--){
        ret <<=1;
        ret |= val&0x1;
        val >>= 1;
    }
}

12. 進程上下文,中斷上下文


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM