原创 linux網卡驅動dm9000_poll_work函數分析

static void dm9000_poll_work(struct work_struct *w) { struct delayed_work *dw = container_of(w, struct delayed_work

原创 Linux中EtherCAT主站執行過程

在上層申請主站,完成各種主從站的配置項之後,通過ecrt_master_activate函數調用激活整個EtherCAT總線,ecrt_master_activate函數最主要的工作還是完成狀態機的啓動。 ecrt_master_acti

原创 linux中斷線程化分析

最近在爲3.8版本的Linux內核打RT_PREEMPT補丁,並且優化系統實時性,這篇文章主要對RTlinux中中斷線程化部分進行分析。我們知道在RT_PREEMPT補丁中之所以要將中斷線程化就是因爲硬中斷的實時性太高,會影響實時進程的實

原创 從PC總線到ARM內部總線

總線的演變 首先應該講講總線的演變歷史,這方面《PC架構系列:CPU/RAM/IO總線的發展歷史!》 這篇文章寫得很好!感謝文章的作者! 以下內容大量來自這篇文章,可以說是這篇文章的縮減轉載。 公共總線 早期PC中,CPU/RA

原创 4412uboot啓動過程分析之二

load_uboot: ldr r0, =INF_REG_BASE ldr r1, [r0, #INF_REG3_OFFSET] //read_om將判斷結果放在寄存器INF_REG3_OFFSET cmp r1, #BOOT

原创 深入淺出進程與線程的基本概念

深入淺出進程與線程的基本概念 進程(process)和線程(thread)是操作系統的基本概念,但是它們比較抽象,不容易掌握.最近,我讀到一篇材料,發現有一個很好的類比,可以把它們解釋地清晰易懂.   1.   計算機的核心是

原创 Linux啓動參數及實現 __setup與early_param

#define __setup_param(str, unique_id, fn, early)            /    static char __setup_str_##unique_id[] __initdata = str

原创 arm彙編語言調用C函數

於ARM體系來說,不同語言撰寫的函數之間相互調用(mix calls)遵循的是 ATPCS(ARM-Thumb Procedure Call Standard),ATPCS主要是定義了函數呼叫時參數的傳遞規則以及如何從函數返回,關於A

原创 LAN9221網卡驅動之三 接收/發送完成中斷

網卡中斷主要是在接收新數據和數據發送完成時被調用,提醒網絡驅動設備接收新數據和喚醒發送隊列。 static irqreturn_t smsc911x_irqhandler(int irq, void *dev_id) { struct

原创 LAN9221網卡驅動分析之一 發送數據

轉載請註明出處:http://blog.csdn.net/qq405180763/article/details/8794887 在LAN9221網卡驅動中,以字對齊往網卡緩存發數據,所以發送數據之前要考慮字對齊,並將發送字的次數計算出來

原创 邏輯運算的結果與邏輯運算中判斷變量是否爲真的區別

C語言編譯系統在表示 邏輯運算 的 結果 時,以數值 1 表示 “真” , 以數值 0 表示 “假”。 但在 判斷 一個量是否爲“真”時,以 0 代表 “假”,以非0代表“真”。 例程: #include <stdio.h> void

原创 LAN9221網卡驅動之二 NAPI接收

轉載請註明出處:http://blog.csdn.net/qq405180763/article/details/8800391 LAN9221採用NAPI方式讀取網卡緩存內數據。當接主機收大量網絡數據時,網卡中斷觸發驅動程序接收數據,驅

原创 C語言-關鍵字static

static靜態變量類型 static定義靜態變量類型,首先要區分靜態變量和靜態存儲方式,static定義的靜態變量一定使用靜態存儲方式,但使用靜態存儲方式的不一定是靜態變量。例如外部全局變量使用靜態存儲方式但不是靜態變量,用關鍵字sta

原创 pthread_barrier_init,pthread_barrier_wait簡介

pthread_barrier 系列函數在<pthread.h>中定義,用於多線程的同步,它包含三個函數:       --pthread_barrier_init()       --pthread_barrier_wait()

原创 linux優先級淺析

最近在優化RTlinux的實時APP,在各種資料之間查找關於linux優先級的相關資料,終於對linux進程優先級有一些瞭解。 首先在linux中優先級級別只有0-139這140個級別,這是固定的,數字越小優先級別越高,所以優先級爲0的進