原创 linux I2C驅動框架之I2C核心(三)

I2C 核心(drivers/i2c/i2c-core.c)中提供了一組不依賴於硬件平臺的接口函數,這個文件一般不需要被 工程師修改,但是理解其中的主要函數非常關鍵,因爲I2C 總線驅動和設備驅動之間依賴於I2C 核心作爲 紐帶。I2C

原创 構造和運行模塊

目錄 當前進程 浮點計算 編譯模塊 版本宏 符號表 初始化錯誤處理 驅動參數 當前進程 內核模塊不像應用程序那樣順序的執行,但是內核執行的大多數操作還是和某個進程相關。內核代碼可以通過訪問全局項current來獲得當前進程的信息,curr

原创 負數右移學習筆記

       右移位和左移位不同,一共有兩種方案:一種是邏輯移位,左邊移入的位用0填充;另一種是算術移位,左邊移入的位由原先該值的符號位決定,符號位爲1則移入的位均爲1,符號位爲0則移入的位均爲0,這樣能夠保證原數的正負形式不變。如果值1

原创 Linux SPI總線和設備驅動架構之三:SPI控制器驅動

        通過第一篇文章,我們已經知道,整個SPI驅動架構可以分爲協議驅動、通用接口層和控制器驅動三大部分。其中,控制器驅動負責最底層的數據收發工作,爲了完成數據的收發工作,控制器驅動需要完成以下這些功能: 申請必要的硬件資源,例如

原创 點陣字庫HZK32的使用方法和顯示

       漢字庫種類非常多,但是都是按照順序排列的。前一個字節爲該漢字的區號,後一個字節爲該字的位號。每一個區記錄94個漢字,位號則爲該字在該區中的位置。因此,漢字在漢字庫中的具體位置計算公式爲:(94*(區號-1)+位號-1)*字節

原创 memset效率分析

      glibc庫的memset和自寫的memset效率對比       glibc下的memset的實現方式是以以下思路進行 #define OPSIZ (sizeof(unsigned long int)) 1、長度len小

原创 Linux SPI總線和設備驅動架構之二:SPI通用接口層

        通過上一篇文章的介紹,我們知道,SPI通用接口層用於把具體SPI設備的協議驅動和SPI控制器驅動聯接在一起,通用接口層除了爲協議驅動和控制器驅動提供一系列的標準接口API,同時還爲這些接口API定義了相應的數據結構,這些數

原创 linux編譯錯誤整理

 Ambiguous operators need parentheses — 不明確的運算需要用括號括起 Ambiguous symbol xxx — 不明確的符號  Argument list syntax error — 參數表語法

原创 庫函數argz_add、argz_add_sep使用方法

一、argz_add函數 函數原型:error_t argz_add(char ** argz ,size_t * argz_len ,const char * str); 頭文件:#include <argz.h> 返回值:0:成功  

原创 __attribute_unused__和__attribute_used__的作用

在Linux上這樣的定義如下:   #define __attribute_used__ __attribute__((__used__)) #define __attribute_unused__ __attribute__((__

原创 error: lvalue required as unary ‘&’ operand錯誤解決

#include <stdio.h> #include <stdlib.h> #include <string.h> #include <fcntl.h> #include <sys/time.h> #include <argz.h>

原创 Linux SPI總線和設備驅動架構之四:SPI數據傳輸的隊列化

        我們知道,SPI數據傳輸可以有兩種方式:同步方式和異步方式。所謂同步方式是指數據傳輸的發起者必須等待本次傳輸的結束,期間不能做其它事情,用代碼來解釋就是,調用傳輸的函數後,直到數據傳輸完成,函數纔會返回。而異步方式則正好相

原创 linux相關代碼下載鏈接

1、linux源碼下載地址 https://mirrors.edge.kernel.org/pub/linux/kernel/ 2、uboot源碼下載 http://ftp.denx.de/pub/u-boot/ 3、busybox下

原创 Linux SPI總線和設備驅動架構之一:系統概述

SPI是"Serial Peripheral Interface" 的縮寫,是一種四線制的同步串行通信接口,用來連接微控制器、傳感器、存儲設備,SPI設備分爲主設備和從設備兩種,用於通信和控制的四根線分別是: CS    片選信

原创 命令行處理函數getopt的使用方法

        日常開發中,會經常對命令行參數進行處理,當參數比較少的時候,可以手動處理,但是當參數過多的時候就要使用getopt來處理了。 int getopt(int argc, char * const argv[],