原创 per_cpu的用法

作用 在Linux操作系統中,特別是針對SMP或者NUMA架構的多CPU系統的時候,描述每個CPU的私有數據的時候,Linux操作系統提供了per_cpu機制。per_cpu機制就是讓每個CPU都有自己的私有數據段,便於保護與訪問。 聲明

原创 Ubuntu系統上編譯和安裝perl和cpan模塊

前言 最近在Ubuntu系統的服務器上編譯代碼的時候,突然報錯了,百度了好幾天都沒有頭緒,後面自己想到了一個方法,希望能幫到後面也遇到相關問題的人。   正文 先看一下編譯錯誤的打印: Your Perl installation is

原创 Linux驅動中併發問題的相關函數

前言 目前我們接觸到的複雜點的系統都是SMP(對稱多處理器)和preempt(搶佔式)的。這篇文章我們會講解好幾種情況下,處理驅動併發問題的函數應該怎麼使用,避免大材小用或者用得不巧當造成沒有效果。 正文 1、進程和中斷上下文,單CPU,

原创 那些情況該使用它們spin_lock到spin_lock_irqsave

原文鏈接:https://blog.csdn.net/wesleyluo/article/details/8807919 直接到原文去看: 那些情況該使用它們spin_lock到spin_loc

原创 compat_ioctl和unlocked_ioctl的使用場景

背景 接上一篇《藍牙遙控器連接流程分析》,我們這次正式開始藍牙遙控器的調試。按理來說,有了上一篇文章的理論支撐,要調試一款藍牙遙控器應該就不難了,實際也是這樣。但是調試過程中,還是遇到了一些問題,在此記錄一下。 正文 在上一篇文章我們可以

原创 Linux設備模型之——註冊接口的使用

前言 平時寫驅動或者看一份驅動代碼的時候,經常被各種註冊接口函數搞暈,到底什麼時候用哪一個呢?這個問題必須要在理解了Linux的設備模型後纔能有個清晰的概念,本文只是在閱讀了網上一些大神的博客後的一些小小的總結。不過本文暫時不會對Linu

原创 藍牙遙控器連接流程分析

背景 最近在一個Linux系統的ARM板子上移植一款藍牙芯片,因爲我們做的是機頂盒,所以首要功能就是能連接上藍牙遙控器,並且能正常的接收按鍵。之前在安卓平臺,連接上藍牙遙控器後,會自動創建/dev/input/eventX和/dev/hi

原创 手把手教你bluez 5.47藍牙協議棧的移植

目錄 背景 編譯bluez 1、glib的編譯 1.1、編譯zlib 1.2、編譯libffi 1.3、編譯glib 2、DBUS編譯 2.1、編譯expat 2.2、編譯DBUS 3、readline的編譯 3.1、編譯ncurses

原创 free命令

free命令是Linux使用者最常用的查看系統內存的命令,它可以顯示當前系統已使用和空閒的內存情況,包括物理內存、交換內存和內核緩存區內存等信息。 free命令的選項也比較簡單,常用的參數命令如下。 -b 以Byte爲單位顯示內存

原创 內核中的模塊參數

前言 最近在看kernel源碼的時候看到了下面這個宏定義 module_param_named(name, name, type, perm) 記得之前在買的書《奔跑吧 Linux內核——入門篇》中看過這方面的內容,現在就將它摘抄出來,

原创 IIS協議和UDA1341TS音頻編解碼芯片簡述

前言        今天學習韋老師的驅動視頻,寫到了IIS協議相關的內容,雖然目前工作中沒有直接用到,但是也做個記錄吧,萬一以後用到,也方便快速回憶。下面的章節內容大概分爲: (1)IIS協議介紹(參考鏈接:https://blog.cs

原创 字符設備的新寫法

前言 之前我寫的字符設備中,用到的分配主設備號的函數是 int register_chrdev(unsigned int major, const char *name, const struct file_operatio

原创 I2C驅動程序

I2C驅動程序框架        I2C的協議流程在I2C協議原理簡述一文中寫過,這裏就不再講解。爲了更好的書寫I2C客戶驅動程序,我們先理一理I2C驅動程序的框架,才能更好的寫出屬於我們自己的驅動程序。        上圖中的I2C總

原创 文件系統學習筆記

目錄項dentry   dentry結構體的定義:  struct dentry { ... struct inode *d_inode; /* Where the name belongs to - NULL is

原创 位置無關碼的含義

       今天學習的過程中又遇到了“位置無關碼”這個概念,竟然一時間想不起來什麼意思了,所以證明之前並沒有完全搞懂啊!!!再次百度了一下別人的文章,總算又加深了一遍印象。         這篇文章講的通俗易懂,可以借鑑一下:代碼重定位