原创 Linux內存管理 —— DMA和一致性緩存cache

一. 出現內存不一致的原因 CPU寫內存的時候有兩種方式: 1. write through: CPU直接寫內存,不經過cache。 2. write back: CPU只寫到cache中。cache的硬件使用LRU算法將cache裏面的

原创 那些年你誤會的Linux DMA(關於Linux DMA ZONE和API最透徹的一篇)

本文轉載https://blog.csdn.net/juS3Ve/article/details/79135998 創作目的 互聯網、Linux內核書籍上充滿了各種關於Linux DMA ZONE和dma_alloc_coherent、d

原创 Linux內核模塊自動加載機制 .

思考 如果想讓內核啓動過程中自動加載某個模塊該怎麼做呢?最容易想到的方法就是到/etc/init.d/中添加一個啓動腳本,然後在/etc/rcN.d/目錄下創建一個符號鏈接,這個鏈接的名字以S開頭,這內核啓動時,就會自動運行這個腳本了,這

原创 將打印(printk/printf)及時寫入文件的方法

問題是這樣的,在測試一個gps的app的時候,我使用腳本  “ gps_test_app  > /tmp/gps_log.txt &" 但是但是,去查看gps_log.txt的時候並沒有看到正常的打印結果。原因是系統爲了效率,不會每時每

原创 Linux 進程間通信系列之 信號

轉自:https://www.cnblogs.com/mingfeng002/p/6927893.html 信號(Signal) 信號是比較複雜的通信方式,用於通知接受進程有某種事件發生,除了用於進程間通信外,進程還可以發送信號給進程本身

原创 arm-linux ntfs移植

內核支持fuse File systems  --->  <*> FUSE (Filesystem in Userspace) support  <*>   Character device in Userspace support 庫和

原创 USB通信協議包格式

0. 基本概念         一個【傳輸】(控制、批量、中斷、等時):由多個【事務】組成;        一個【事務】(IN、OUT、SETUP):由一多個【Packet】組成。        USB數據在【主機軟件】與【USB設備特定

原创 Linux中的USB XHCI HOST TRANSFER RING的相關數據結構

xHCI的工作流程 xHC有三條類型的操作隊列,一條是整個HOST的命令隊列(command ring),一條是每一個EP對應的傳輸隊列(transfer ring),還有一條是整個HOST的事件隊列(event ring). 與這個問題

原创 ioremap和memremap

  原文:https://lwn.net/Articles/653585/ 下面翻譯自google: 像用戶空間一樣,內核通過頁表訪問內存。因此,當內核代碼需要訪問內存映射的I / O設備時,必須首先設置適當的內核頁面表映射。長期以來,用

原创 linux virtual page pfn physical的關係

基於linux4.14.79, TI AM5728 SDK。 phys:physical物理地址 pfn:物理頁幀號(也有叫頁框號的?) page:描述物理頁的結構體 virt:virtual虛擬地址 #define PAGE_SHIF

原创 進程的掛起狀態詳細分析

通常我們所認爲的進程有五大狀態,新建態,就緒態,阻塞態,運行態,退出態。   下面是示意圖:                                                       事實上還存在被掛起的進程。     

原创 Linux中進程的阻塞和掛起的區別

理解一:掛起是一種主動行爲,因此恢復也應該要主動完成,而阻塞則是一種被動行爲,是在等待事件或資源時任務的表現,你不知道他什麼時候被阻塞(pend),也就不能確切的知道他什麼時候恢復阻塞。而且掛起隊列在操作系統裏可以看成一個,而阻塞隊列則是

原创 關於linux下時間延遲函數精度問題

Linux內核時鐘中斷設施 linux的時鐘中斷需要兩個全局變量,分別是xtime與jiffies。 1、xtime 一個timeval結構類型變量,是從cmos電路中取得的時間,一般是從某一歷史時刻開始到現在的時間,也就是爲了取得我們操

原创 /dev/mem可沒那麼簡單

這幾天研究了下/dev/mem。發現功能非常奇妙,通過mmap能夠將物理地址映射到用戶空間的虛擬地址上。在用戶空間完畢對設備寄存器的操作,於是上網搜了一些/dev/mem的資料。 網上的說法也非常統一,/dev/mem是物理內存的全映像,