2013年11月30日 星期六

Linux kernel 開發基礎 (一)- Driver 基本概念

開發Linux kernel driver時

經常使用make menuconfig來進行kernel的設定

簡單來說,

這個指令會掃描每個目錄中的Kconfig,

收集其中的訊息與相關設定並將其秀在視窗上供開發者方便設定kernel,

開發者設定完畢後儲存會將這些設定統一存在Linux kernel 根目錄底下

一個隱藏檔: .config

定義的資料有可能長這樣:

config Hello
bool "Hello title"
depends Module
help
Hello detail message




一般而言,

如果沒有設定driver載入的預設值,

系統會出現Y/N/M 三種選項讓你選擇每個driver的載入方式.

在Android的Linux kernel中

通常會把預設值放在kernel/arch/arm/configs目錄裡面

在每個目錄裡面除了Kconfig之外還有一個檔案Makefile,

定義有哪些source code需要complier.

舉例來說

obj-y += hello.o

意思是目錄中有一個hello.c需要complier

綜合以上所說,

簡單來說一個最精簡的Linux kernel driver需要三個檔案

driver本身.c ,Kconfig , makefile

2013年11月9日 星期六

[Linux]Git 基本指令

Git 在Linux中用於版本控制相當常見
在windows下也能夠使用
(windows下載點)

一些常用的基本指令:

A.第一次下載
git clone ssh://USER@ip位址/git目錄


B.單一檔案新增或者有變更 要上傳到server
1. git add 檔案名稱
2. git commit -m "這裡寫註解(簡單描述下)"
3. git push


C.檔案放棄變更 並還原到上次commit的狀態
情況0:當執行完 B-1 git add 檔案名稱 ,這個步驟時候想取消檔案的add,不保留修改的單一檔案
1.git reset HEAD 檔案名稱

情況1:當執行完 B-2 git commit -m "這裡寫註解" ,這個步驟時候想取消單一檔案的commit,不保留修改的單一檔案
1. git checkout -- 檔案名稱

情況2:當執行完 B-2 git commit -m "這裡寫註解" ,這個步驟時候想取消多個檔案的commit,不保留修改的多個檔案
1.git reset --hard HEAD^

情況3:當執行完 B-2 git commit -m "這裡寫註解" ,這個步驟時候想取消多個檔案的commit,保留修改的多個檔案
1.git reset --soft HEAD^


D.從遠端更新
1.git pull


E.新增TAG
1.git tag -a Tag名稱 -m "message.."
2.git push origin Tag名稱


F.刪除TAG
1.先刪除遠端tag:
git push origin :refs/tags/Tag名稱
2.刪除local端
git tag -d Tag名稱


G.初始設定(第一次上傳code)
1.mkdir 目錄名稱
2.cd 目錄名稱
3.git init --bare --shared
4.git remote add origin ssh://USER@ip位址/git目錄

2013年11月5日 星期二

台中新社花海

2013年


台中新社花海


節到了

每年新社都會舉辦賞花活動

官方網址:http://flowersea.asia.edu.tw/files/40-1057-483-1.php

本次活動將於11/9開幕

當然了

搶先偷跑去看的結果就是有些地方還沒布置好

還沒好也就只能遠遠的拍了

有部分區域還是綠油油的

晚一點是不是會開花就不清楚了