2010年10月25日 星期一

Driver: passing Command Line Argument to a Module

#include
#include
#include
#include
#include



#define DRIVER_AUTHOR "winnie@quanta"
#define DRIVER_DESC "hello"
static int myinit = 3;

module_param(myinit, int, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH);
MODULE_PARM_DESC(myinit, "An integer");

static int __init hello_init(void)
{
printk(KERN_INFO "hello init myinit= %d \n", myinit);
if(myinit==0)
printk(KERN_INFO "@@myinit is zero = %d \n", myinit);
else
printk(KERN_INFO "@@myinit other = %d \n", myinit);
return 0;
}

static void __exit hello_exit(void)
{
printk(KERN_INFO "hellp exit \n");
}

module_init(hello_init);
module_exit(hello_exit);
MODULE_LICENSE("GPL");
MODULE_AUTHOR(DRIVER_AUTHOR);
MODULE_DESCRIPTION(DRIVER_DESC);

insmod proc.ko myinit=10

S_IRUSR/S_IWUSR/S_IRGRP/S_IWGRP

S_IRUSR
Permits the file's owner to read it.

S_IWUSR
Permits the file's owner to write to it.

S_IRGRP
Permits the file's group to read it.

S_IWGRP
Permits the file's group to write to it.

Can't rmmod driver on Android

mkdir -p /lib/modules
cd /lib/modules
ln -s /system/lib/modules `uname -r`

2010年10月20日 星期三

linux driver

http://www.tldp.org/LDP/lkmpg/2.6/html/

http://www.captain.at/howto-linux-kernel-parallel-port-interrupt.php

http://tw.myblog.yahoo.com/chimei-015/archive?l=f&id=20

2010年10月18日 星期一

cscope & ctags

find . -name '*.h' -o -name '*.c' | cscope -i - -b &

-----------------------------------------------------
@@cscope setting on ubuntu
1./usr/share/vim/vim72/plugin/cscope_map.vim

@@Step 1 : Create cscope.out file on project.
#find . -name '*.h' -o -name '*.c' | cscope -i - -b &
or
#find . -name '*.[hc]' | cscope -i - -b -R &

Step 2 : At cscope.out directory and trace code by cscope

Search "Ctrl+[" in my PC.

General using "Ctrl+\" in general PC.

Step 3 :


@@ctags: "ctags -R ."

Start trace code "Ctrl+]"


----------------------------------------------------
ctaglist:
vi /etc/vim/vimrc


"Taglist edit"
let Tlist_Show_One_File=1
let Tlist_Exit_OnlyWindow=1
nnoremap :TlistToggle


----------------------------------------------------
reference:
http://www.cmlab.csie.ntu.edu.tw/~daniel/linux/vim_source_navigation.html

2010年10月17日 星期日

Using screen to paste

Enter CTRL+A+[
Then, Using " " to select region
Finally, Using " " to return select region.

Go to another screen, Using CTRL+A+]

2010年10月14日 星期四

objdump

objdump -t u-boot
objdump -d u-boot

-i objdump –i 顯示支援的檔案格式與機器架構
-f objdump -f a.o 顯示檔頭資訊 (-file-headers)
-h objdump -h a.o 顯示區段表頭 (-[section-]header)
-x objdump -x a.o 顯示所有表頭 (-all-headers)
-d objdump -d a.o 反組譯程式段 (-disassemble)
-D objdump -D a.o 反組譯全部區段 (-disassemble-all)
-t objdump -t a.o 顯示符號表 (-syms)
-r objdump -r a.o 顯示重定位記錄 (-reloc)

2010年10月11日 星期一

minicom

minicom -c on

Study vi edit

1. Using Vi to see Hex file
:!xxd

2.http://edt1023.sayya.org/vim/node1.html

3. [count] CMD [addr]
count : 次數
CMD : command
addr : ex: %,},{.......

4 normal mode :
"G" --> 最後一頁
"gg" --> 首頁
"%" --> 搜尋括號
">" --> 縮排

5. Turn off vim 自動縮排
":set paste"

6.對目前編輯檔案分割視窗:
分割垂直視窗: v
分割水平視窗: s
關閉視窗: q
留下目前視窗並且關閉其他視窗: o

於分割視窗開新檔案: n

切換:
切換到下方視窗: j
切換到上方視窗: k
切換到左方視窗: h
切換到右方視窗: l
切換到下一個視窗:

調整大小


調整視窗垂直大小: [+|-]
調整視窗水平大小: [<|>]

將目前視窗垂直打開到最到: _
將目前視窗水平打開到最大: |

其他資訊可參見 Vim Documentation: windows


7. 取代xxx為ooo用法
:%s/xxx/ooo/g

取代^M為空格 ,^M Ctrl+V+M
:%s/^M//g


8 http://homepage.ttu.edu.tw/u9106240/page_main/vim_menu.html
:set all
顯示所有參數
可透過此指令查詢 VIM 支援的所有參數。
若在執行 VIM 程式期間,透過「:set 參數」的方式來設定參數,在每次開啟 VIM 程式時都必須再重新設定一次,若想要讓 VIM 在每次啟動時,都能夠自動載入使用者的設定,則可以在使用者的家目錄下,建立一個名為 「.vimrc」的檔案來存放個人 VIM 的設定。
如:建立一個檔案「vi /home/kevin/.vimrc」,檔案內容為:
set background=dark set autoindent set number
此設定中,第一行代表設定字體顏色為適用黑色背景之顏色,第二行表示開啟自動縮排功能,第三行表示開啟顯示行號功能

:set nu
顯示行數
若想知道文件的行數,可下達這項指令。

:set nonu
隱藏行數
若想隱藏文件的行數,可下達這項指令。

:set autoindent
自動縮排功能
開啟此功能之後,按下 enter 鍵所產生的新行,會複製前一行最前方的 tab 和 space 數量,以達到對齊的目的。此功能可透過「:set noautoindent」關閉

:set tabstop=數字
設定 tab 對齊的字元數
一般 VIM 設定中,tabstop 的預設值為 8,但在 windows 下,許多文字編輯軟體的預設 tabstop 數為 4,若想要把 VIM 的 tab 對齊字元數變更為 4,可以在 VIM 的命令模式下,下達 「:set tabstop=4」指令

:set background=模式
設定 keyword 字體顏色模式
使用「:set background=dark」指令可以讓 VIM 中的 keyword 以較亮眼的顏色表現出來,適用於暗色系的背景。使用「:set background=light」指令可以讓 VIM 中的 keyword 以較暗沉的顏色表現出來,適用於亮色系的背景。

:split [檔案名稱]
水平分割文字編輯視窗
若有指定「檔案名稱」,則新視窗會開啟該檔案; 若沒有指定,則新視窗仍會開啟原檔案。
另外,在編輯視窗中可以利用 +w 配合方向鍵跳躍選取所要編輯的視窗,
若想要關閉視窗,則在欲關閉視窗裡的命令模式下,
打入離開指令,如: :wq 即可關閉該視窗。


分割視窗
:split
分割視窗(可加檔名順便開啟另一檔案)
:diffsplit xxx
以分割視窗和檔案xxx做比較(diff)
Ctrl-W p
跳到前一個分割視窗(在兩個分割窗來回切換)
Ctrl-W j
跳到下面的分割窗
Ctrl-W h
跳到左邊的分割窗
Ctrl-W k
跳到上面的分割窗
Ctrl-W l
跳到右邊的分割窗

;-----------------------
" 按 F7 可以切換是否顯示行號
" (有行號較易閱讀,要複制時需要將行號拿掉,用快速鍵可以節省時間)
map :set nu!set nu?
" 按 F8 可以切換是否高亮度顯示搜尋字串
" (有時搜尋某個 patten 後,在下一個文件還是會高亮顯示,很煩 = =)
map :set hls!set hls?

3G information

GSM(2G)→GPRS(2.5G)→EDGE(2.75G)->WCDMA(3G)→HSDPA(3.5G)


1. HSPDA(High Speed Downlink Packet Access, HSDPA):高速下行封包接收
在5MHz載波下面傳輸速度可達8-10Mbit/s

2. HSUPA:高速上行接收

Study 3G using AT command

1.Port: Diagnostic, appliction, control and modem

2.Android log :
#logcat -b radio

3.Get 3G information
#cat /sys/class/tty/ttyHSx/hsotype

4.#echo -e "at\r\n" > /dev/ttyHS2 -->#cat /dev/ttyHS2
#echo -e "at+creg?\r\n" > /dev/ttyHS2 --> #cat /dev/ttyHS2
#echo -e "at+creg?\r\n" > /dev/ttyHS2
#echo -e "at+cfun?\r\n" > /dev/ttyHS2
#echo -e "at+csq\r\n" > /dev/ttyHS2

5. Get IP
#echo -e "at_owancall=1,1\r\n" > /dev/ttyHS2
#echo -e "at_owandata?\r\n" > /dev/ttyHS2
#ifconfig hso0 netmask 255.255.255.255 up
#route add default dev hso0


6.
echo -e "ati\r\n" > /dev/ttyHS2
cat /dev/ttyHS2
echo -e "at+cpin?\r\n" > /dev/ttyHS2
cat /dev/ttyHS2
echo -e "at+cfun?\r\n" > /dev/ttyHS2
cat /dev/ttyHS2
echo -e "at+cops?\r\n" > /dev/ttyHS2
cat /dev/ttyHS2
echo -e "at+cops=?\r\n" > /dev/ttyHS2
cat /dev/ttyHS2
echo -e "at+creg?\r\n" > /dev/ttyHS2
cat /dev/ttyHS2
echo -e "at+cgreg?\r\n" > /dev/ttyHS2
cat /dev/ttyHS2
echo -e "at+csq\r\n" > /dev/ttyHS2
cat /dev/ttyHS2
echo -e "at_opsys?\r\n" > /dev/ttyHS2
cat /dev/ttyHS2
echo -e "at_osec?\r\n" > /dev/ttyHS2
cat /dev/ttyHS2
echo -e "at_opbm?\r\n" > /dev/ttyHS2
cat /dev/ttyHS2
echo -e "at_oiface?\r\n" > /dev/ttyHS2
cat /dev/ttyHS2
echo -e "at+cgsn?\r\n" > /dev/ttyHS2
cat /dev/ttyHS2