2011年9月30日 星期五

imx51 bbg板上做出calibration的retry機制

20110929 20110930:
redmine 516
tag = // add calibration retry function

說明:
整個流程:
debug function
check conf file
get framebuff from video info + access framebuff
get ts device as input device form "/dev/input/event" ("/dev/input/event3: is mxc_ts")
do calibration

1.
該程式是nit.rc裡面"exec /sbin/ts_calibrator"執行的.
\sbin\ts_calibrator
\\192.168.144.239\tony-liao\myandroid\device\fsl\imx5x\init.rc

2.
利用檔案來存放calibration的校正值.
如果程式一開始找不到該檔案,就會進入校正畫面,並把新的校正值寫入,可以讓下次開機的時候使用.
\data\system\calibration

3.
利用video的IOcontrol來獲得display相關的資訊
FBIOGET_VSCREENINFO
FBIOGET_FSCREENINFO
這是video driver的位置
\\192.168.144.239\tony-liao\myandroid\kernel_imx\drivers\video\fbmem.c

動作:

修改:
commit 5907ccdf1c2ace52ee66949688dbe3e8ae5bea56
source code:
\\192.168.144.239\tony-liao\myandroid\system\core\ts_calibrator\ts_calibrator.c
int sx[3], sy[3]; // 這是三組預設的點
#define CALIBRATION_OFFSET 40 // 這是預設的誤差範圍
座標系統 : X軸往左是正 Y軸往下是正

calibration bin file:
\\192.168.144.239\tony-liao\myandroid\out\target\product\CV-7000\root\sbin\ts_calibrator

Device calibration info:
\data\system\calibration
\sbin\ts_calibrator

參考:

ts_calibrator.c這個檔案可以學到很多其他的linux技巧,雖然跟calibration沒有直接關係.

mmap 如何利用memory map的方式來達到快速的file access及PCI share memory的方法
http://lazyflai.blogspot.com/2008/06/linuxmmap.html
http://www.lslnet.com/linux/docs/linux-5064.htm
http://fanqiang.chinaunix.net/a4/b8/20010526/110000243_b.html

stat 查詢檔案的狀態
http://new-acos.blogspot.com/2010/02/linuxprocstatcpu.html
http://blog.csdn.net/xuemiao1234/article/details/5544226

EVIOCGNAME 一個巨集來得到裝置的名稱
http://blog.csdn.net/wzz_momo/article/details/6534175
http://hi.baidu.com/zhouhanqing/blog/item/9d18a3cc16020a580eb3451c.html

va_list va_start va_end va_arg 多重且不定的參數如何處理
http://blog.chinaunix.net/space.php?uid=20696246&do=blog&cuid=1892642
http://hi.baidu.com/grdd/blog/item/f21c05b37ef548a0d8335a41.html
http://blog.chinaunix.net/space.php?uid=20691105&do=blog&cuid=1185545

vsnprintf 使用一個固定size的buffer來接收不定參數的方法
http://topic.csdn.net/u/20090710/16/ae72ae61-3dc9-49eb-bbe8-ce2e1823415e.html
http://www.wretch.cc/blog/shinningball/33081867

附註:

2011年9月23日 星期五

BlueTooth要怎麼進測試模式要怎麼搞-3

  • 6. FAE是這麼說滴

以下是FAE所提供的兩個HCI command

實際上操作的結果:
# hcitool cmd 0x03 0x1a 0x03
hcitool cmd 0x03 0x1a 0x03
< HCI Command: ogf 0x03, ocf 0x001a, plen 1
  03
> HCI Event: 0x0e plen 4
  01 1A 0C 00

# hcitool cmd 0x06 0x03
hcitool cmd 0x06 0x03
< HCI Command: ogf 0x06, ocf 0x0003, plen 0
> HCI Event: 0x0e plen 4
  01 03 18 00
 
說明:
1.0
HCI OGF  OCF  para1
hcitool cmd 0x03 0x1a 0x03
引述FAE的描述
"進入測試模式前, 需要下 Page 694 的 7.3.18 Write Scan Enable Command (參數 0x03) 讓模組可以被測試機找到"

1.1
"hcitool cmd 0x03 0x1a 0x03"
OGF=0x03 OCF=0x1a > 這各是參考到 7.3.18 Write Scan Enable Command
"0x03" 參數"0x03"是指 Inquiry Scan enabled + Page Scan enabled.

1.2
"HCI Event: 0x0e plen 4"
"0x0e" 根據7.7.14 Command Complete Event, 是指host端的command已經完成了
"plen 4" 是HCI event的長度
"01 1A 0C 00" 根據7.7.14 Command Complete Event,
"01"表示HCI command的packet的數目(的確只有一個packet)
"1A 0C" 其實是由host HCI command的OGF(MSB-6bit)+OCF(LSB-10bit)組成的 000011 + 0000011010 = 0000 1100 0001 1010 = 0x0C1A
"0" 根據7.3.18 Write Scan Enable Command "0"表示 Write_Scan_Enable command succeeded.

2.0
HCI OGF  OCF
hcitool cmd 0x06 0x03
引述FAE的描述
"Page 774 的 7.6.3 Enable Device Under Test Mode Command 則有進入 DUT 模式的 HCI command, 請參考."

2.1
"hcitool cmd 0x06 0x03"
OGF=0x06 OCF=0x3 > 這各是參考到 7.6.3 Enable Device Under Test Mode Command

2.2
"HCI Event: 0x0e plen 4"
"0x0e" 根據7.7.14 Command Complete Event, 是指host端的command已經完成了
"plen 4" 是HCI event的長度
"01 1A 0C 00" 根據7.7.14 Command Complete Event,
"01"表示HCI command的packet的數目(的確只有一個packet)
"03 18" 其實是由host HCI command的OGF(MSB-6bit)+OCF(LSB-10bit)組成的 000110 + 0000000011 = 0001 1000 0000 0011 = 0x1803
"0" 根據7.6.3 Enable Device Under Test Mode Command, "0"表示 Write_Scan_Enable command succeeded.


  • 7.結論




1.
測試模式的進入似乎是由BT spec所規範了.
所以只要是用HCI command的話應該是一體適用的.
這意味著只要是通過BT spec 2.1的藍芽裝置通通可以使用這一個方法進入測試模式.

2.
整個測試的流程
待測物進入測試模式 -> BT測試治具規畫好測試項目(公司用的是安捷倫N4010A PC端程式remote control)
-> 測試治具會自動完成與待測物的溝通並且收集test plan的相關數據 -> 透過PC端的程式把治具上的數據log下來.

3.
實際上前面1~5點都是BT學習過程的自high內容,真的solution是在第6點的時候才真的可以解決.