原创 遠端倉庫初始化成裸倉庫 git init --bare

1 git init  和 git init –bare的區別  用"git init"初始化的版本庫用戶也可以在該目錄下執行所有git方面的操作。但別的用戶在將更新push上來的時候容易出現衝突。 比如有用戶在該目錄(就稱爲遠端倉庫)下

原创 nand 分析(轉帖)詳細

直接轉的貼,未整理,不方便的話請看原帖 NAND Flash的驅動程序設計 http://www.usr.cc/html/99/n-599.html 1.     硬件特性: 【Flash的硬件實現機制】 Flash全名叫做Flash M

原创 Linux 內核的隊列實現--kfifo

今天研讀了2.6.26內核的kfifo代碼,感覺實現得巧妙,隊列的隊頭隊尾下標不受隊列長度的限制,就算隊頭下標大於隊列長度,也一樣可以使用,原理就在於,數據不是全部放在隊頭(fifo->out)和隊尾(fifo->in)之間的內存空間,而

原创 寫了一個內核模塊 實現簡單的類似ps命令

內核模塊創建在proc文件系統上建立_ps文件.遍例進程內核鏈表task_struct.將遍例結果存入緩衝區.影射到/proc/_ps文件中.用戶態的程序去讀取 這個文件.打印顯示 當前進程的的pid,ppid 和進程名. [CODE]

原创 Linux驅動中,probe函數何時被調用

最近看到linux的設備驅動模型,關於Kobject、Kset等還不是很清淅。看到了struct device_driver這個結構時,想到一個問題:它的初始化函數到底在哪裏調用呢?以前搞PCI驅動時用pci驅動註冊函數就可以調用它,搞s

原创 中斷處理函數中不用disable_irq而用disable_irq_nosync原因

今天在寫觸摸屏驅動時在中斷處理函數中使用disable_irq關中斷髮現在進入中斷處理後內核就掛掉了,於是研究了一下才發現disable_irq關閉中斷並等待中斷處理完後返回, 而disable_irq_nosync立即返回. 在中斷處理

原创 input 子系統架構總結

Linux輸入子系統(Input Subsystem)         Linux 的輸入子系統不僅支持鼠標、鍵盤等常規輸入設備,而且還支持蜂鳴器、觸摸屏等設備。本章將對 Linux 輸 入子系統進行詳細的分析。 一    前言    

原创 linux編程下signal()函數

當服務器close一個連接時,若client端接着發數據。根據TCP協議的規定,會收到一個RST響應,client再往這個服務器發送數據時,系統會發出一個SIGPIPE信號給進程,告訴進程這個連接已經斷開了,不要再寫了。根據信號的默認處理

原创 如何從零開始開發一款嵌入式產品(20年的嵌入式經驗)

首先,如果你有幸看到這篇文章,千萬不要試圖在2個小時內閱讀完,就算你2個小時閱讀完,我相信你也不會理解裏面講解的精華之處,我相信,你應該將此文章,慢慢品嚐,這絕對是一篇需要品嚐2~3天,再結合自己過往的經驗,加上自己的思考,我相信會對你不

原创 hrtimer的簡單使用 + 原理和實現

1.hrtimers - 爲高分辨率kernel定時器,可作爲超時或週期性定時器使用 1). hrtimer_init初始化定時器工作模式。 hrt

原创 內核數據結構之隊列-kfifo

在操作系統內核中,一個常見的編程模式就是生產者和消費者。實現這種模式的最容易的方式就是隊列。生產者將數據插入隊列,消費者將數據移出隊列。消費者以數據進隊的順序消費數據。 內核中通用隊列的實現稱爲kfifo,其實現文件位於kernel/kf

原创 Nand 的幾個名詞:oob,bbt,ecc

例如Samsung K9F1208U0B,數據存儲容量爲64MB,採用塊頁式存儲管理。8個I/O 引腳充當數據、地址、命令的複用端口。     芯片內部存儲佈局及存儲操作特點:     一片Nand flash爲一個設備(device),

原创 十說電容經典

話說電容之一:電容的作用 作爲無源元件之一的電容,其作用不外乎以下幾種: 1、應用於電源電路,實現旁路、去藕、濾波和儲能的作用。下面分類詳述之: 1)旁路 旁路電容是爲本地器件提供能量的儲能器件,它能使穩壓器的輸出均勻化,

原创 linux中字符串轉換函數 simple_strtoul

Linux內核中提供的一些字符串轉換函數: lib/vsprintf.c [html] view plaincopyprint? 1. unsigned long long simple_strtoull(const char

原创 set_fs get_fs

其實內核裏面也可以用系統調用的,直接用read/write是可以的。但要注意幾個問題: 一個是要記得編譯的時候加上-D__KERNEL_SYSCALLS__ 另外源文件裏面要#include    <linux/unistd.h>