放在devkit8500這塊板子上,主要參考
http://processors.wiki.ti.com/index.php/TI-Android-GingerBread-2.3-DevKit-1.0_ReleaseNotes
去git rowboat的TI-Android-GingerBread-2.3-DevKit-1.0.xml分支
載下來後,編譯android
$make TARGET_PRODUCT=omap3evm OMAPES=5.x
然後用光碟附的kernel用NFS去掛android filesystem, 順利進入畫面!
一進去發現觸控有反應但位置好像偏掉了
谷哥大俠說這是跟tscalibration有關的議題
於是把0xdroid的TScalibration2.apk拿來跑,結果雖然開機有出現五點校正
但校正完情況還是沒變......
在想apk是不是0xdroid基於tslib所設計的
所以因為這filesystem沒有ts_calibrate才無法校正
之後參考這個網站
http://hi.baidu.com/sanitywolf/blog/item/32071fbf3146211218d81f24.html/cmtid/32071fbfefe5fb0519d81fb0
1.修改kernel_src/arch/arm/mach-omap2/board-omap3devkit8500.c
struct ads7846_platform_data ads7846_config = { #ifdef CONFIG_ADS_SCALED_EV .x_max = 800, .y_max = 480, #else .x_max = 0x0fff, .y_max = 0x0fff, #endif // .x_plate_ohms = 180, // .pressure_max = 255, .debounce_max = 10, .debounce_tol = 5, .debounce_rep = 1, .get_pendown_state = ads7846_get_pendown_state, .keep_vref_on = 1, .settle_delay_usecs = 150, .wakeup = true, // .swap_xy = 1, }; //把.swap_xy mark掉
2.到kernel_src/drivers/input/touchscreen/
修改ads7846.c這個觸控板controller
主要修改如下
//diousk calibrate static void ads7846_rx(void *ads) { ... ... #define OMAP3EVM_XMIN 0x06d #define OMAP3EVM_XMAX 0x7b4 #define OMAP3EVM_YMIN 0x0a6 #define OMAP3EVM_YMAX 0x760 //diousk calibrate printk("before x=%4d y=%4d\n",x,y); x = pdata->x_max-((pdata->x_max * (x - OMAP3EVM_XMIN)) / (OMAP3EVM_XMAX-OMAP3EVM_XMIN)); y = pdata->y_max-((pdata->y_max * (y - OMAP3EVM_YMIN)) / (OMAP3EVM_YMAX-OMAP3EVM_YMIN)); printk("after x=%4d y=%4d\n",x,y); // ... ... }
至於XMIN XMAX YMIN YMAX是在沒改之前先在這function埋printk
觸摸面板看座標變化的情況得到觸控板回傳的的X,Y最小值和最大值
之後重編kernel再boot一次就OK了~~
總算開啟了順暢的Gingerbread大門了!ㄎㄎ
p.s. 這裡用的是480x272的LCD,所以要修改bootargs 參數:omapfb.mode=lcd:480x272
有必要話也可以改omapfb.rotate=1, 這樣android才能正常大小的顯示
1 則留言:
可否詢問你升級2.3的步驟細節?!
張貼留言