原创 linux 內核及KO的編繹

對於linux 內核及KO的編繹可以用如下命令: make defconfig make menuconfig make -j48 Image make modules M=./drivers/scsi/hisi_sas/ (5.3內核)

原创 linux 5.2中如何將修改PAGE_SIZE大小

在linux系統中默認PAGE_SIZE大小爲4K,但在redhat或centOS中PAGE_SIZE爲64K,因此開發驅動時除了在默認4K PAGE_SIZE時工作正常外,一般也需要測試64K頁時工作情況。下面介紹如何修改PAGE_SI

原创 NOR FLASH (mx25u12835f) lock/unlock功能及linux對其支持

  修改記錄:v1.0,完成於2020-2-9 1 NOR FLASH (mx25u12835f) lock/unlock功能介紹         Lock/unlock功能表示對FLASH某些區域或全部進行數據保護,即在數據保護區域不允

原创 NOR FLASH (mx25u12835f)命令描述

WREN(Write Enable) 作用:設置WEL位;對於命令PP/4PP/SE/BE32K/BE/CE/WRSR,這些需要修改FLASH內容的命令,WEL位需要設置; 時序圖(SPI mode): WRDI(Write Disab

原创 mtd-utils 工具安裝及使用

mtd-utils 工具安裝 1. 下載mtd_utils http://www.linux-mtd.infradead.org/ 2. 安裝GCC yum install gcc 3. 安裝編繹依賴: zlib-devel, lzo-d

原创 NOR FLASH (mx25u12835f)寄存器介紹

不同類型的FLASH一般都有Status Register和Configuration Register。在此將mx25u12835f相關的寄存器作記錄,當前寄存器有: - Status Register - Configuration

原创 linux DIF/DIX格式化命令

對於DIF/DIX的支持,可使用sg_utils工具sg_format對不同類型的DIF硬盤進行格式化。 檢查是否支持DIF sg_vpd --page=ei --long /dev/sda |grep SPT 格式化命令: DIF TY

原创 linux啓動系統前進行部分設置

在linux系統中希望在啓動系統前可以作一些設置,比如有些調試時希望系統能夠重複重啓,即系統啓動後立即執行reboot -f,此時可以在/etc/rc.d/rc.local中添加reboot -f即可

原创 Linux KUnit 單元測試框架

當前Linux社區正在推KUnit單元測試框架,相關的文檔在如下地址: https://google.github.io/kunit-docs/third_party/kernel/docs/  

原创 如何訂閱linux郵件列表

作爲linux開發者,訂閱linux郵件列表是開發者學習的基礎。訂閱linux郵件列表分兩種: 1. 在vger-list中可以查閱到的模塊 (1) 查尋需要訂閱的郵件列表是否在vger-list中(http://vger.kernel.

原创 性能優化的小結

從去年就開始優化SAS驅動性能,將其性能從IOPS 400k(bs=4k)優化到如今的1700k,總結一下性能優化的少許心得: 藉助火焰圖等工具查看可能優化點 儘量用靜態申請內存代替動態申請內存 中斷綁定要考慮數據訪問跨片和跨NODE 鎖

原创 git bisect二分法找問題的PATCH

        最近在kernel 5.3-rc1上啓動時一直失敗,但在kernel 5.2-rc4上工作正常,於是決定用git bisect 二分法找出出問題的PATCH。雖然跑了很久,但用法還是比較簡單。        由於是啓動過程

原创 DMA POOL簡單分析

        對於DMA分配,除了提供dma_alloc_coherent()這類可以提供大的內存分配和映射函數外,DMA POOL同樣可以申請內存並進行映射。DMA POOL最終還是調用dma_alloc_coherent(),但其對

原创 linux GIT報“fatal: previous rebase directory .git/rebase-apply still exists but mbox given.”解決方法

在git am 某個PATCH時報如下 錯誤: "fatal: previous rebase directory .git/rebase-apply still exists but mbox given." 一般來說之前執行git a

原创 synchronize_irq()分析

       大家知道,中斷處理目前一般會爲上半部和下半部,上半部爲硬中斷處理,下半部一般爲軟中斷、tasklet或workqueue來處理。同時內核中爲了提高實時性,推出中斷線程化,即下半部用中斷線程處理(每個中斷一箇中斷線程)。syn