原创 linux kernel中struct timer_list使用

linux kernel中struct timer_list使用 內核中最終的計時資源是定時器。定時器用於定時器超時處理程序在未來某個特定時間點執行,或者週期性的輪詢硬件的狀態。Linux提供了內核定時器完成這類工作。 一般來說,定時

原创 枚舉在單片機編程的應用

什麼時候需要用到enum呢?當變量的數值在幾個範圍之間,如一個week變量取值只有Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday。這樣用enum比較好.當然也可以用

原创 一個RC電路的驗證

一直困惑這種電路在濾波器類型中屬於哪一類。   1、Multisim中仿真波特圖如下   其中-3dB頻率爲21.9KHz。 2、公式推導 3、感性認識 從阻抗角度理解,理解爲Z1//Z2再與Z3串聯。從Z3取出電壓。Z2隨着頻率升

原创 IAR程序中獲取堆指針與棧指針

代碼如下 #pragma section = "CSTACK" char *pbeginstk = __section_begin("CSTACK"); #pragma section = "HEAP" char *pbe

原创 IAR中C內嵌彙編格式

/*示例*/ extern volatile char UART1_SR; #pragma required=UART1_SR char sFlag; void Foo(void) { while (!sFlag) { a

原创 iar創建工程模板

每次用IAR新建一個工程時候,都要創建一個工程文件夾,工程文件夾下創建各種分類文件夾,還要Add groups,add fiels, 還要設置。簡直麻煩死了。有沒有一種方法,直接創建一個工程時,只要新建一個工程文件夾,其餘的事IAR都能幫

原创 linux I/O內存驅動設備--學習筆記

I/O內存與端口訪問硬件--led ARM只支持內存空間 對I/O端口的操作步驟 1、I/O端口函數操作I/O 申請I/O端口 內核提供了一套函數來允許驅動申請它需要的I/O端口,其中核心的函數是: Struct resource *

原创 linux中的container of

container of解釋 /**   * container_of - cast a member of a structure out to the containing structure   * @ptr:    the poi

原创 ARM體系架構下的同步操作

處理器在訪問共享資源時,必須對臨界區進行同步,即保證同一時間內,只有一個對臨界區的訪問者。當共享資源爲一內存地址時,原子操作是對該類型共享資源同步訪問的最佳方式。隨着應用的日益複雜和SMP的廣泛使用,處理器都開始提供硬件同步原語以支持原

原创 Linux驅動程序調試方法

驅動程序開發的一個重大難點就是不易調試。本文目的就是介紹驅動開發中常用的幾種直接和間接的調試手段,它們是: 利用printk查看OOP消息利用strace利用內核內置的hacking選項利用ioctl方法利用/proc 文件系統使用kgd

原创 Linux的軟中斷實現機制

本文轉自:http://bbs.chinaunix.net/thread-2333484-1-1.html 1、軟中斷軟中斷的原理就略過了,講內核的書上都有,此處省略1500字。。。。。。1.1 註冊還是以我最熟悉的兩個老朋友做爲開篇:

原创 Linux異步IO機制

Linux® 中最常用的輸入/輸出(I/O)模型是同步 I/O。在這個模型中,當請求發出之後,應用程序就會阻塞,直到請求滿足爲止。這是很好的一種解決方案,因爲調用應用程序在等待 I/O 請求完成時不需要使用任何中央處理單元(CPU)。但是

原创 linux的misc設備led--6410---學習筆記

文章使用misc設備實現led驅動,其中驅動函數包括ioctl驅動方式,故文章分爲兩部分。 第一部分:misc設備驅動實現框架 第二部分:ioctl函數實現。 </pre><p></p><p><span style="font-size:

原创 C在嵌入式中高效編程

本文是《ARM嵌入式系統開發:軟件設計與優化》一書部分學習筆記,實驗均在IAR上完成。目標板芯片爲M3內核。 一、 基本的C數據類型 局部變量類型 ARM處理器內部是32位寄存器和32位的數據處理操作。其結構體系是RISC lo

原创 linux之等待隊列--阻塞型驅動學習---學習筆記

阻塞型IO字符設備驅動 程序進行讀寫操作時,有時目標設備無法立刻滿足用戶的讀寫需求,例如,調用read時沒有數據可以交換,但以後可能會有,或者一個進程試圖向設備寫數據時,但設備暫時沒有準備好接收數據。應用程序只是調用read或write並