原创 Linux驅動分析之Uart驅動

喜歡就關注我們吧!前言    之前對Uart驅動的整體架構做了介紹,現在來分析具體的驅動程序。我們以NXP 的 IMX6來進行分析。Uart驅動分析內核:4.20芯片:NXP IMX6下面的代碼分析主要都在註釋中,會按照驅動中函數的執

原创 Linux驅動分析之Uart驅動架構

Uart體系結構     UART設備驅動可以使用tty驅動的框架來實現,但是因爲串口之間有共性,所以Linux在tty接口上封裝了一層(serial core)。後面我們再拿一篇文章來解釋tty驅動,tty其實就是各種終端設備,串口其

原创 Linux驅動之I2C控制器驅動

平臺: 三星2440 內核版本:4.20 分析將會按照驅動中函數的執行順序。 一、裝載和卸載函數 static const struct platform_device_id s3c24xx_driver_ids[] = { {

原创 socket返回值爲0的問題

一、問題描述 socket_id爲0,1,2的是給標準輸入輸出用的。當調用socket()來創建套接字時,返回值確實0,這時候如果進行讀寫,就是直接打印到控制檯了。 二、什麼情況下socket返回值爲0 1. 如果我們調用clos

原创 深入理解Socket的讀寫

前言 對於Linux網絡編程,有很多坑需要我們去踩。在這個時候,我們纔會知道理論知識的重要性。無論是哪種語言,網絡編程都可以寫成厚厚的一本書。舉個例子,比如“當網絡斷掉,我們調用write去往socket中寫入數據,爲什麼返回正常

原创 RK3288搭配以太網PHY芯片使用,這些你需要了解

(1)以太網PHY芯片驅動及接口     瑞芯微在設計RK 系列主控芯片時,有內置以太網MAC 控制器,通常只需要搭配一顆以太網PHY芯片,即可實現以太網卡功能。 根據規範,不同廠家的PHY芯片,一般有一部分寄存器的定義是通用的,只需配置

原创 Linux驅動分析之SPI設備

前言 前面我們對SPI控制器驅動進行了分析,接下來來分析SPI設備驅動。我們以DS1302驅動作爲分析對象。DS1302是一款RTC芯片,估計很多人在學單片機時用到過。RTC芯片算是比較簡單的,也方便分析理解。 SPI設備驅動分析 內核

原创 Linux信號及工作原理

什麼是信號     信號可以理解爲軟件中斷,是在軟件層次上對中斷機制的一種模擬,在原理上,一個進程收到一個信號與處理器收到一箇中斷請求可以說是差不多的。信號是異步的,一個進程不必通過任何操作來等待信號的到達。信號可以直接進行用戶空間進程

原创 Linux驅動分析之SPI驅動架構

SPI體系結構 主要由三部分組成: (1) SPI核心 (2) SPI控制器驅動 (3) SPI設備驅動 基本和I2C的架構差不多 重要結構體 內核版本:3.7.6 spi_master //SPI控制器 struct spi_m

原创 Linux驅動分析之SPI控制器

前言     之前對SPI驅動的整體架構做了介紹,現在來分析具體的驅動程序。之前說過,SPI驅動分爲設備驅動和控制器驅動。先來分析控制器驅動。我們以RockChip的控制器來作爲分析。 SPI控制器分析 下面的代碼分析主要都在註釋中,會

原创 如何提高C編程能力

    點擊上方「藍字」關注我們前言    目前C語言被應用得最多的估計就是嵌入式了,在學校學習完C語言,考完等級考試之後,可能就會覺得自己的C語言掌握的還可以了。但這其實只能算入門,像結構體,指針等內容還有很多東西需要去深究,還有GN

原创 Linux常用開源庫

前言     做應用開發的人,經常需要去封裝一些接口,或者去實現一些複雜的功能。但是這些功能接口實現不僅費時,而且還不一定能保證穩定性。這也是導致很多人喜歡使用開源庫的原因之一。如果滿足需求,確實沒必要"重複造輪子"。接下來我們推薦一些

原创 Linux下實現sleep

sleep: 一、 普通版本 1、基本設計思路: 註冊SIGALRM信號的處理函數; 調用alarm(nsecs)設定鬧鐘; 調⽤pause等待,內核切換到別的進程運行; nsecs秒之後,鬧鐘超時,內核發SIGALRM給這個進

原创 Linux驅動之I2C設備驅動

內核:4.20 芯片:HYM8563 RTC 下面的代碼分析主要都在註釋中,會按照驅動中函數的執行順序分析。 一、加載和卸載函數 static const struct i2c_device_id hym8563_id[] = {

原创 Ubuntu切換默認sh爲bash或者dash

一、bash與dash 從Ubuntu 6.10開始,默認使用dash(theDebian Almquist Shell)而不是bash(the GNU Bourne-Again Shell). 但Login Shell還是bas