原创 【Linux驅動編程】併發與競態實例

  在上一篇文章中主要描述了併發與競態的含義、引發條件以以及競態資源的保護機制。競態(共享)資源保護機制主要包括屏蔽中斷、原子操作、自旋鎖、互斥體,屏蔽中斷一般不推薦使用,其他幾種是我們在編寫驅動程序時常用到的。下面我將上述機制應

原创 【Linux驅動編程】併發與競態(如何選擇合適的保護機制)

文章目錄1 場景2 併發與競態2.1 併發帶來的影響2.2 引起併發的場景2.3 競態3 併發與競態處理機制3.1 屏蔽中斷3.2 原子操作原子操作特點整型原子操作位原子操作3.3 自旋鎖自旋鎖特點自旋鎖描述自旋鎖使用自旋鎖死鎖問

原创 GitHub項目中的.editorconfig文件是作什麼用的?

文章目錄前言什麼是editorconfig爲什麼要用editorconfigeditorconfig使用editorconfig屬性editorconfig通配符editorconfig文件匹配例子常用例子支持的編輯器注意事項參考

原创 【Linux驅動編程】mmap方法

  mmap常規的應用是將普通文件映射到用戶進程空間,提高文件讀寫效率。linux的思想是“一切皆文件”,對於設備文件而言,同樣可以實現mmap映射。一個設備,一般涉及到幀緩存會考慮實現映射接口,常見的LCD framebuffe

原创 【Linux應用編程】mmap內存映射

  linux操作系統採用虛擬內存管理技術,把內存空間分爲用戶空間和內核空間,用戶空間由用戶進程使用,用戶進程無法直接訪問內核空間,只能通過系統調用(軟中斷)或者硬中斷間接訪問。對於32位linux系統來說,系統物理內存最大尋址範

原创 基於RT-Thread sensor框架的BMP180氣壓傳感器應用

1 RT-Thread sensor框架   隨着物聯網應用越來越廣泛,涌現各種各樣的傳感器,如溫度、氣壓、重力、陀螺儀、光照傳感器等等,這類傳感器接口形式、控制方式、數據精度,因爲不同廠商而存在一定差異。另一方面,用戶在實時調整

原创 RT-Thread DS3231驅動軟件包

DS3231 驅動軟件包 1 介紹 ds3231軟件包是針對RT-Thread驅動框架實現的實時時鐘驅動,遵循RT-Thread RTC框架,可以從芯片內置RTC無縫切換使用外置高精度ds3231 RTC。軟件包支持實時時鐘和鬧

原创 Linux字符驅動之sysfs接口實現

1. sysfs 1.1 前言   在linux系統中,用戶空間訪問驅動程序一般是以“設備文件”的方式通過“read/write/ioctl”訪問,但這種方式有幾個明顯的缺點。 read/write接口功能單一 ioctl雖然

原创 RK3399—驅動訪問設備樹API

  設備樹是爲驅動服務的,驅動如何匹根據設備樹的描述信息匹配驅動源碼,及C語言如何獲取設備樹的描述屬性,是驅動工程師關心的。編寫驅動時,通常情況下都需要獲取驅動對應的設備樹描述屬性,如GPIO屬性、內存地址範圍、中斷地址等。lin

原创 RK3399—內核態訪問EEPROM

  上一篇文章中,描述了在用戶態下通過“ioctl”接口訪問24系列i2c接口的EEPROM,本文描述調用EEPROM驅動接口實現訪問。linux內核提供了完整的24系列EEPROM驅動,位於“kernel/drivers/mis

原创 RK3399—設備樹

1. 什麼是設備樹 1.1 背景   嵌入式底層,一般是用匯編或者C語言進行編程,如內存訪問、寄存器訪問、外設控制等。在linux 3.x之前,linux內核與硬件抽象層相關採用的是C語言的方式描述板級設備信息,一般位於“kern