1.problem:
更改:===>>>在tp的驱动文件中:
cinfo->x[i]=(int)(cinfo->x[i]*1.33);
查看log:===>>>
mediatek/custom/out/kernel/built-in.o: In function `tpd_touchinfo':
/home/tonylau/tony-workspace/xxxx/my-ap/kernel/mediatek/custom/out/kernel/touchpanel/ft5206_driver.c:1237: undefined reference to `__aeabi_i2d'
/home/tonylau/tony-workspace/xxxx/my-ap/kernel/mediatek/custom/out/kernel/touchpanel/ft5206_driver.c:1237: undefined reference to `__aeabi_dmul'
/home/tonylau/tony-workspace/xxxx/my-ap/kernel/mediatek/custom/out/kernel/touchpanel/ft5206_driver.c:1237: undefined reference to `__aeabi_d2iz'
make[3]: *** [.tmp_vmlinux1] Error 1
make[2]: *** [sub-make] Error 2
2.analysis:
内核没有提供浮点运算支持,linux内核不会链接libc,所以有很多用户态的写法都不适用于内核。
因此,不应该在内核里使用浮点数。
3.solution:
方法1:cinfo->x[i]=(int)(cinfo->x[i]*1.33);===》》》cinfo->x[i]=(int)(cinfo->x[i]*1.33);
方法2:codeblocks 环境,配置android NDK 编译器
GCC_3.5 { # BPABI symbols __aeabi_cdcmpeq __aeabi_cdcmple __aeabi_cdrcmple __aeabi_cfcmpeq __aeabi_cfcmple __aeabi_cfrcmple __aeabi_d2f __aeabi_d2iz __aeabi_d2lz __aeabi_d2uiz __aeabi_d2ulz __aeabi_dadd __aeabi_dcmpeq __aeabi_dcmpge __aeabi_dcmpgt __aeabi_dcmple __aeabi_dcmplt __aeabi_dcmpun __aeabi_ddiv __aeabi_dmul __aeabi_dneg __aeabi_drsub __aeabi_dsub __aeabi_f2d __aeabi_f2iz __aeabi_f2lz __aeabi_f2uiz __aeabi_f2ulz __aeabi_fadd __aeabi_fcmpeq __aeabi_fcmpge __aeabi_fcmpgt __aeabi_fcmple __aeabi_fcmplt __aeabi_fcmpun __aeabi_fdiv __aeabi_fmul __aeabi_fneg __aeabi_frsub __aeabi_fsub __aeabi_i2d __aeabi_i2f __aeabi_idiv __aeabi_idiv0 __aeabi_idivmod __aeabi_l2d __aeabi_l2f __aeabi_lasr __aeabi_lcmp __aeabi_ldiv0 __aeabi_ldivmod __aeabi_llsl __aeabi_llsr __aeabi_lmul __aeabi_ui2d __aeabi_ui2f __aeabi_uidiv __aeabi_uidivmod __aeabi_uldivmod __aeabi_ulcmp __aeabi_ul2d __aeabi_ul2f __aeabi_uread4 __aeabi_uread8 __aeabi_uwrite4 __aeabi_uwrite8 # Exception-Handling # \S 7.5 _Unwind_Complete _Unwind_VRS_Get _Unwind_VRS_Set _Unwind_VRS_Pop # \S 9.2 __aeabi_unwind_cpp_pr0 __aeabi_unwind_cpp_pr1 __aeabi_unwind_cpp_pr2 # The libstdc++ exception-handling personality routine uses this # GNU-specific entry point. __gnu_unwind_frame }