原创 Linux信號量+共享內存(有名,非匿名)使用示例

信號量+(有名,非匿名)共享內存使用示例: #include<stdio.h> #include<stdlib.h> #include<string.h> #include<errno.h> #include<unistd.h> #in

原创 linux 應用程序的毫秒級延時函數實現

已驗證。供參考: 頭文件: #include <sys/select.h> 函數: static void sleep_ms(unsigned int secs) { struct timeval tval; tval.tv_

原创 uinput使用示例

uinput示例,編譯好後運行,10秒內打開空白文本文件,10秒後會在文本文件裏輸入“l”字符。 示例源碼: #include <stdio.h> #include <stdlib.h> #include <unistd.h> #inc

原创 全面瞭解 ARM CP15協處理器 (深度好文)

轉載自:http://blog.chinaunix.net/uid-14114479-id-3110951.html ARM926EJ-S/ARM920T 協處理器 CP14, CP15 詳解         ARM 微

原创 彙編和c函數交叉混合調用

有轉載的話希望能尊重原創,謝謝各位! 以下運行在Ubuntu環境下,需要安裝qemu-user,使用arm-linux-gcc編譯。 ////////////////////////////////////////////////////

原创 arm編程,關於函數調用形參實參在通用寄存器和棧幀裏的對應關係。用匯編透視c語法操作

下面來看個例子,很簡單的一個例子,但子函數有大量的形參(10個),以此來看看函數調用過程是如何做形參和實參的複製。 //main.c #include <stdio.h> int fun(int n0,int n1,int n2,int

原创 一個優秀的debug函數(宏)

調試用的宏debug函數(宏),可以顯示你debug所在的文件名,函數名,行號。例子裏使用的是基於printf函數來做。純c代碼,不多說了,直接上源碼: //t.c #include <stdio.h> #define debug(ar

原创 下面放一段可以啓動的,位置無關的arm bootloader簡易啓動:

非常好,可借鑑。 下面放一段可以啓動的,位置無關的bootloader啓動: //Makefile FILE_NAME = zkj-loader S

原创 關於volatile關鍵字的用法,從彙編透視C語法操作

看一個簡單的c程序,p是沒加關鍵字volatile的int型指針,r是加關鍵字volatile的int型指針。 //main.c #include <stdio.h> void main(void) {int n;int *p;volat

原创 一個移植十分方便的類似printf函數

一個十分便於移植的類似printf函數,已測試通過。只需要實現SendChar()函數,把你要外發的字符(比如:發送到串口,顯示屏等)寫在這裏即可。

原创 一個簡要的示例說明Linux內核的container_of 的用法

一個簡要的示例說明Linux內核的container_of 的用法,很簡潔,不多說了,直接附上代碼,自己gcc container_of.c -o container_of.out   ;    ./container_of.out  

原创 一個移植十分方便的類似printf函數,升級版

升級版,不包含任何頭文件,“獨立生存\(^o^)/~”。一個十分便於移植的類似printf函數,就當做printf使用就可以了(注:不支持浮點型數),已測試通過。只需要實現SendChar()函數,把你要外發的字符(比如:發送到串口,顯示

原创 linux內核學習的屠龍刀、倚天劍(需要搭配硬件調試環境)

    好久沒來這裏寫博客了。看到瀏覽量有所增加,十分開心。希望自己的點滴付出對他人能有所幫助。要是有不對的地方,也希望博友能給予點出糾正。 要是能獲得博友的轉發,也希望能註明下原出處。打字不易,在此謝過啦!     下面介紹下2個學習內

原创 arm編程,關於C函數中嵌入彙編和寄存器變量的混合使用方法。用匯編透視c語法操作

arm編程,關於C函數中嵌入彙編和寄存器變量的混合使用方法,例子簡單,但是十分有啓迪作用,自己看就明白了,編譯工具:arm-linux-gcc,方式:arm-linux-gcc -S main.c -o main.s。源碼如下。編寫不易,

原创 利用宏定義在源程序中轉化已定義函數增加調試信息的方法

有段時間沒寫博客了,寫個調試方法留作紀念。下面這個方法,特別是內核驅動代碼,在去查某個源文件中,所有調用讀寫寄存器,readl、writel等,挺有用。方法類似,在printk加入一個 count++的靜態寄存器,可在log顯示讀寫的過程