2010年4月14日 星期三

cscope

0 意見
find . -name "*.h" -o -name "*.c" -o -name "*.cpp" > cscope.files
cscope -bqkR

然後可以至 vim 去載入 cscope.out,
R 表示會搜尋子目錄

如果專案很大,或是涉及到 linux kernel 時,
我不曉得 cscope 處理的時間會不會很久;
同事是建議可以用 eclipse,
而且 IDE 的操作據說也很方便,
我不曉得 eclipse 遇到相同的情況是怎麼去建立索引的,
不過 trace code 時必須快速在 function 間跳來跳去,
所以一個好的工具的確是很重要。

青菜蘿蔔每個人各有喜好,
目前我的專案都還不是很大,
所以 vim + cscope + taglist 已足夠應付我大部份需求了。

8051 Timer

0 意見
8051的計時計數器應用我只使用過計量暫存器,
主要的控制流程為:
1. 初始化 Timer 的相關設定,設定 counter 初始值;
我使用的是 Mode 2 的工作模式,所以 counter 的最大值為256,
當我把 TH0, TL0 都設為 255 時,
表示每個 CPU Cycle 都會產生 Interrupt;
當知道每個 CPU Cycle 的時間後,
其實就可以推算到底 TH0, TL0 要設為多少(取決於你要多久後發生中斷)

2. 在 timer0 中斷副程式中,
還可以維護另一個 counter 變數(軟體控制),
上述1.是硬體的timer,
兩層 counter 的機制,
可以用來使一些應用,
ex. 馬達控制、GPIO模擬波形、...等

2010年4月12日 星期一

GPIO Setting

0 意見
最近在寫 Micron firmware,
在產品上很常看到 GPIO 的一些應用,
以及與 Main chip 的 i2c 溝通。

在設定 GPIO 的 Pin define 時,
我們必須指定這支 pin 的用途(bi-directional, push-pull, input only, open-drain);
雖然是念資工的,
但是電路圖其實我也只看得懂大概,
示波器也只會量測波形的 high / low 而已,
以前學校的老師應該會覺得很難過吧 ^^"

目前我也只用到 input only, bi-directional 的設定;
但是一直不了解 push-pull, open-drain 的差別,
google 找到的說明感覺比較偏硬體的解釋,
寫軟體的人好像很難懂(我是說我自己...XD),
所以如果有哪位網友有簡潔的方式可以教會我的,
還煩請分享一下。
0 意見
列出自己較常用的 vim plugin:

autocomplpop.vim
cscope_maps.vim
minubufexpl.vim
NERD_tree.vim
taglist.vim

2010.11.1 補充
在Ubuntu,先安裝 exuberant-ctags,搭配 taglist 使用

Ubuntu 與 Debian 環境下的 eclipse 有些按鍵無法動作

0 意見
平常用 Vim 習慣了,
但是因為最近同事在推廣 eclipse 的好用之處,
所以我就裝起來試試看,
結果在創建專案時,
遇到 Next / Cancel / Finish 的按鍵沒有作用的現象;
上網 google 後,
參考 http://softsmith.blogspot.com/2010/02/eclipse-button-ubuntu.html (軟體工匠) 的教學,
在 Ubuntu 上面已經 ok 了,
但是我在公司的 Debian 居然還是一樣不正常 ="=,
(後來發現把Debian重開後,就正常了!)
所以在公司還是繼續用 Vim ^_^

筆記一下(解法):
#!/bin/sh
export GDK_NATIVE_WINDOWS=true
./eclipse