2017年5月30日 星期二
Linux kernel 學習心得
大約半年前從Non-OS的世界跨到embedded linux世界,
這巨大轉變可以對我來說可以說是非常艱辛阿,
雖然以前在學校有學過linux系統,但早就忘光光啦!
學Linux kernel一開始翻網路上的資料以及身邊朋友的推薦就先看了傳說中的Linux聖經書"Linux Device Drive, 3e" (作者是 Jonathan Corbet, Alessandro Rubini, and Greg Kroah-Hartman)。在看LDD之前我對linux kernel的認識可以說是零,也就是完全不認識!在這情況下去看LDD可以說是非常痛苦... 雖然書中有提供例子參考,但是我連第一個例子都不知道要怎麼下make去build出kernel的ko檔,硬是死讀了幾章之後發現這樣下去不行,書中的介紹很多(字超級多!! 作者怎麼這麼會啦賽...),但是我一點都看不懂在說什麼,於是找另一本書來看。
第2本書"Linux Device Driver Programming驅動程式設計" (作者是平田豐) 。這一本才真正開啟我對Linux kernel的大門,為什麼哩?因為書中有明確的例子可以參考!!!Oh my god! 有範例才是王道阿!!而且還是可以執行的範例,不是那種辛苦打了範例程式碼之後,結果make一直過不了,e04! 有了實際例子可以編譯並執行,我才真正可以體會每一段程式碼在幹什麼且會達到怎樣的效果。所以這本非常適合沒有任何底子的初學者來看,非常快就上手! 當初要是早點看這本書的話,工作上就不會被電得不要不要的... (但這又牽扯到新人訓練跟公司環境問題,唉~ 無奈啊~,有實力的人不一定懂得如何教人...)。
還好只是想了解linux kernel的基礎知識,修改kernel code的機會不大,至少對於kernel code的寫法以及架構有比較清楚的認識了。接下來還有user space的東東要學,感覺這也是一個蠻龐大的東西啊...
2016年9月28日 星期三
vim error E212: Can't open file for writing
以前在Linux環境下用root習慣了,要做任何事情都沒有問題,
現在用一般帳號登入就開始遇到一些之前沒遇到過的問題。
這次在用vim要存檔案時出現錯誤訊息 E212: Can't open file for writing
由辜狗大神發現如果是在vim要存檔時出現E212錯誤訊息是要透過以下的指令存檔
:w !sudo tee %
然後選L,就可以存檔了~~~
最保險的方式就是每次要用vim時在下命令時都要用sudo,如下
sudo vim FILE_NAME
現在用一般帳號登入就開始遇到一些之前沒遇到過的問題。
這次在用vim要存檔案時出現錯誤訊息 E212: Can't open file for writing
由辜狗大神發現如果是在vim要存檔時出現E212錯誤訊息是要透過以下的指令存檔
:w !sudo tee %
然後選L,就可以存檔了~~~
最保險的方式就是每次要用vim時在下命令時都要用sudo,如下
sudo vim FILE_NAME
2016年7月22日 星期五
#define 簡單心得記錄
用過C語言的人都知道 #define 是用來定義巨集(macro),基本用法如下
#define PI 3.14159這樣在程式碼中如果有出現 "PI"這個字的話compiler都會自動轉成3.14159。
#define也可用來定義函式,範例如下
#define getmax(a,b) a>b?a:b 如果在#define裡面#及##有特殊的用法,#會將接在後面的參數轉成string。
##則是會將2個參數串接在一起,用以下範例說明。
Example 1:
#define str(x) #x
cout << str(test);cout << str(test); 會被轉成 cout << "test";
Example 2:
#define glue(a,b) a ## b
glue(c,out) << "test";glue(c,out) << "test";會被轉成 cout << "test"
2016年7月21日 星期四
Linux掛載及卸載USB隨身碟
簡單記錄一下如何掛載USB隨身碟
1.先執行fdisk,檢查USB隨身碟是被系統辨識成那個裝置
sda 基本上都是硬碟,我們可以藉由容量來確認隨身碟的編號
假設為sdb2.建立USB隨身碟的掛載點:
3.掛載USB隨身碟
-v 顯示資訊
-t auto 讓系統自動分辯檔案系統
4.到 /mnt/usb_storage 可看到usb的內容
卸載USB隨身碟
1.先執行fdisk,檢查USB隨身碟是被系統辨識成那個裝置
fdisk -l sda 基本上都是硬碟,我們可以藉由容量來確認隨身碟的編號
假設為sdb2.建立USB隨身碟的掛載點:
mkdir /mnt/usb3.掛載USB隨身碟
mount -v -t auto /dev/sdb /mnt/usb_storage-v 顯示資訊
-t auto 讓系統自動分辯檔案系統
4.到 /mnt/usb_storage 可看到usb的內容
卸載USB隨身碟
umount /mnt/usb_storage
Ubuntu unknown filesystem type 'exfat'
在mount USB隨身碟時出現"mount: unknown filesystem type 'exfat'"這個錯誤訊息,
解法如下
Ubuntu版本是14.04之後的執行以下的指令去安裝套件
sudo apt-get install exfat-fuse exfat-utils
Linux 檔案顏色意義
這裡簡單紀錄一下 Linux各個檔案顏色所代表的意思
白色:一般檔案
藍色:目錄
綠色:可執行的一般檔案
黃色:設備檔,一般而言在 /dev
淺藍色:連結檔
綠底黑字:public可讀寫的目錄,例如 /tmp
粉紅色:一個socket
金色:一個行程process
白色:一般檔案
藍色:目錄
綠色:可執行的一般檔案
黃色:設備檔,一般而言在 /dev
淺藍色:連結檔
綠底黑字:public可讀寫的目錄,例如 /tmp
粉紅色:一個socket
金色:一個行程process
2016年4月21日 星期四
信用卡交易專有名詞紀錄
這一篇記錄信用卡交易的一些專有名詞以及解釋,不過有些名詞解釋只查的到英文... 所以我只能盡量用我的破英文轉成中文。
Acquiring bank (信用卡收單銀行):負責收帳單的銀行。消費者在商店使用信用卡付帳時,商店會將交易相關資料送到收單銀行,常見的收單銀行如下,
Visa, MasterCard, Discover, American Express, Diners Club, Japan Credit Bureau and China UnionPay.
Issuing bank (信用卡發卡銀行):發行信用卡的銀行。
EMV: Europay, MasterCard and Visa的縮寫,國際金融業界對於智能支付卡與可使用晶片卡的POS終端機以ATM機等所制定的標準。
訂閱:
文章 (Atom)