2014.8.24

k860i的cm11的移植在中断了近两三个月之后又开始继续了,进度记录的日志上一篇已经没什么写的了,就完结掉它吧,重新开一篇日志做下篇好了。最近的战况是,在scue同学的努力之下,device部分已经可以通过编译,而且也拿到了官方给的一些源码(目前有没有用还不知道,不过可以编译通过),不过呢,坏消息是scue同学由于工作比较忙,已经全面放弃对k860i的努力。

现在遇到了一些问题,使用官方的源码,编译上cm11,刷入之后会出现开机第二屏黑屏的问题,抓了logcat,发现应该是surfaceflinger和hwcomposer部分没起来,surfaceflinger一直崩溃如此循环,部分logcat如下:

--------- beginning of /dev/log/system
I/auditd ( 1372): Starting up
--------- beginning of /dev/log/main
I/cm ( 1367): ____ _ _ ____ _ _ ____ ____ ____ _ _ _ _ ____
___
I/cm ( 1383): | \_/ |__| |\ | | | | __ |___ |\ | |\/| | | | \
I/cm ( 1384): |___ | | | | \| |__| |__] |___ | \| | | |__|
|__/
I/cm ( 1387): Welcome to Android
4.4.4 / CyanogenMod-11-20140822-UNOFFICIAL-stuttgart  
I/DEBUG ( 1374): debuggerd: Aug 22 2014
21:12:40
I/installd( 1380): installd firing up
I/audit_log( 1372): Previous audit logfile detected, rotating
I/Vold ( 1370): Vold 2.1 (the revenge) firing up
... ...
I/SurfaceFlinger( 1376): SurfaceFlinger is starting
I/SurfaceFlinger( 1376): SurfaceFlinger's main thread ready to run.
Initializing graphics H/W...
D/libEGL ( 1376): loaded /system/lib/egl/libEGL_mali.so
D/libEGL ( 1376): loaded /system/lib/egl/libGLESv1_CM_mali.so
D/libEGL ( 1376): loaded /system/lib/egl/libGLESv2_mali.so
E/ ( 1376): Device driver API match
E/ ( 1376): Device driver API version: 20
E/ ( 1376): User space API version: 20
E/ ( 1376): mali: REVISION=Linux-r3p2-01rel2 BUILD_DATE=Thu Aug 29
15:22:27 CST 2013
I/gralloc ( 1376): using (fd=16)
I/gralloc ( 1376): id = s3cfb
I/gralloc ( 1376): xres = 720 px
I/gralloc ( 1376): yres = 1280 px
I/gralloc ( 1376): xres_virtual = 720 px
I/gralloc ( 1376): yres_virtual = 2560
px
I/gralloc ( 1376): bpp = 32
I/gralloc ( 1376): r = 16:8
I/gralloc ( 1376): g = 8:8
I/gralloc ( 1376): b = 0:8
I/gralloc ( 1376): width = 114 mm (160.421051 dpi)
I/gralloc ( 1376): height = 203 mm (160.157639 dpi)
I/gralloc ( 1376): refresh rate = 60.38 Hz
I/SurfaceFlinger( 1376): Using composer version
1.0
W/SurfaceFlinger( 1376): getting VSYNC period from fb HAL:
16561775
W/SurfaceFlinger( 1376): no suitable EGLConfig found, trying a
simpler query
I/SurfaceFlinger( 1376): EGL informations:
I/SurfaceFlinger( 1376): vendor : Android
I/SurfaceFlinger( 1376): version : 1.4 Android META-EGL
I/SurfaceFlinger( 1376): extensions: EGL_KHR_get_all_proc_addresses
EGL_ANDROID_presentation_time EGL_KHR_image EGL_KHR_image_base
EGL_KHR_image_pixmap EGL_KHR_gl_texture_2D_image
EGL_KHR_gl_texture_cubemap_image EGL_KHR_gl_renderbuffer_image
EGL_KHR_reusable_sync EGL_KHR_fence_sync
EGL_EXT_create_context_robustness EGL_ANDROID_image_native_buffer
EGL_ANDROID_recordable
I/SurfaceFlinger( 1376): Client API: OpenGL_ES
I/SurfaceFlinger( 1376): EGLSurface: 8-8-8-0,
config=0x60000012
I/SurfaceFlinger( 1376): OpenGL ES informations:
I/SurfaceFlinger( 1376): vendor : ARM
I/SurfaceFlinger( 1376): renderer : Mali-400 MP
I/SurfaceFlinger( 1376): version : OpenGL ES 2.0
I/SurfaceFlinger( 1376): extensions: GL_EXT_debug_marker
GL_OES_texture_npot GL_OES_compressed_ETC1_RGB8_texture
GL_OES_standard_derivatives GL_OES_EGL_image GL_OES_depth24
GL_ARM_rgba8 GL_ARM_mali_shader_binary GL_OES_depth_texture
GL_OES_packed_depth_stencil GL_EXT_texture_format_BGRA8888
GL_EXT_blend_minmax GL_OES_EGL_image_external GL_OES_EGL_sync
GL_OES_rgb8_rgba8 GL_EXT_multisampled_render_to_texture
GL_EXT_discard_framebuffer GL_OES_get_program_binary
GL_ARM_mali_program_binary GL_EXT_shader_texture_lod
GL_EXT_robustness GL_OES_depth_texture_cube_map
I/SurfaceFlinger( 1376): GL_MAX_TEXTURE_SIZE = 4096
I/SurfaceFlinger( 1376): GL_MAX_VIEWPORT_DIMS = 4096
E/cutils-trace( 1376): Error opening trace file: No such file or
directory (2)
E/[EGL-ERROR]( 1376): mali_surface*
__egl_platform_create_surface_from_native_buffer(android_native_buffer_t*,
egl_surface*, mali_base_ctx_handle):614: invalid buffer handle
given (0x411008f0)
E/[EGL-ERROR]( 1376): void
__egl_platform_dequeue_buffer(egl_surface*):1629: Failed to create
a surface from native buffer (0x41100860)
E/libEGL ( 1376): eglMakeCurrent:784 error 3003
(EGL_BAD_ALLOC)
E/libEGL ( 1376): call to OpenGL ES API with no current context
(logged once per thread)
D/SurfaceFlinger( 1376): Screen acquired, type=0
flinger=0x414c7450
F/libc ( 1376): Fatal signal 11 (SIGSEGV) at 0x00000000 (code=1),
thread 1376 (surfaceflinger)
D/libEGL ( 1459): loaded /system/lib/egl/libEGL_mali.so
D/libEGL ( 1459): loaded /system/lib/egl/libGLESv1_CM_mali.so
D/libEGL ( 1459): loaded /system/lib/egl/libGLESv2_mali.so
E/ ( 1459): Device driver API match
E/ ( 1459): Device driver API version: 20
E/ ( 1459): User space API version: 20
E/ ( 1459): mali: REVISION=Linux-r3p2-01rel2 BUILD_DATE=Thu Aug 29
15:22:27 CST 2013
E/cutils-trace( 1459): Error opening trace file: No such file or
directory (2)
E/[EGL-ERROR]( 1459): mali_surface*
__egl_platform_create_surface_from_native_buffer(android_native_buffer_t*,
egl_surface*, mali_base_ctx_handle):614: invalid buffer handle
given (0x40092360)
E/[EGL-ERROR]( 1459): void
__egl_platform_dequeue_buffer(egl_surface*):1629: Failed to create
a surface from native buffer (0x40092230)
E/libEGL ( 1459): eglMakeCurrent:784
error 3003 (EGL_BAD_ALLOC)
I/DEBUG ( 1374): *** *** *** *** *** *** *** *** *** *** *** ***
*** *** *** ***
I/DEBUG ( 1374): Build fingerprint:
'Lenovo/cm_stuttgart/stuttgart:4.4.4/KTU84Q/149b325933:userdebug/test-keys'
I/DEBUG ( 1374): Revision: '0'
I/DEBUG ( 1374): pid: 1376, tid: 1376, name: surfaceflinger
>>> /system/bin/surfaceflinger <<<</div>

I/DEBUG ( 1374): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault
addr 00000000


我感觉如果把这个问题给解决了的话,离cm11进桌面应该就不远了。

当然最近也有一些好消息。

偶然间从cm的github的smdk4412内核的commit记录里面找到了不少的好东西,比如内核开启selinux(对于4.3、4.4很重要),又比如解决使用arm-linux-gcc
4.7版编译这个内核出现的一堆inline函数定义的编译错误的解决方法等等,开源的力量就是强大啊,这个内核的commit次数居然高达25万多次。。。。地址是https://github.com/CyanogenMod/android_kernel_samsung_smdk4412/tree/stable/cm-11.0

之前由于使用arm-linux-gcc
4.7编译内核会出现inline函数定义的错误,所以导致编译cm11的时候只能使用预编译的内核,因为cm11编译过程中会使用4.7版的arm-linux-gcc,而联想给的内核源码之前只有使用4.6版的arm-linux-gcc才不会有问题。cm官方是推荐使用内核源码跟cm11的源码树一起编译,官方的解释是在这里 http://wiki.cyanogenmod.org/w/Doc:_integrated_kernel_building。解决了4.7版的toolchain编译内核的错误之后,就可以让内核源码跟cm11一起编译了。相关的commit在这里https://github.com/CyanogenMod/android_kernel_samsung_smdk4412/commit/49c33dab8b7a57780affea28db976ccab8dc345b
需要注意的是文件名不完全一致,drivers/media/video/exynos/fimc-lite/fimc-lite-core.c和fimc-lite.core.h是对的,删掉inline定义的地方也是一样的,但是在这个commit里面提到的另外两个文件,drivers/video/samsung_extdisp/s3cfb_extdsp.h
和s3cfb_extdsp_main.c,文件名有差异,在联想的内核源码里面,应该是drivers/video/samsung/s3cfb.h和s3cfb_main.c,修改的行数略有差异,但实际上也都是去掉inline的定义。


另外一个是selinux的问题了,相关的commit在这里 https://github.com/CyanogenMod/android_kernel_samsung_smdk4412/commit/84c11baf1cd2873665c9bd51f720ee3d83faefa2 ,这个commit里面包含了多个机器的内核defconfig,实际上只需要对照它修改ki的官方内核源码的kernel/arch/arm/configs/stuttgart_android_defconfig这个文件,对照着上面的commit里面的某个内核的defconfig依样画葫芦添加修改就可以了。其实还可以在内核根目录用make
menuconfig或make
nconfig自己手工开启selinux的支持,不过既然有现成的可以直接用,那也大可不必自己再修改了。


还是得学习一下git的使用啊,要把这些东西都上传到github上面去,不然管理这些东西实在是太麻烦了。






Lenovo k860i 移植Android 4.4 cm11进度记录【下篇--实时更新中】的更多相关文章

  1. Lenovo k860i 移植Android 4.4 cm11进度记录【上篇已完结】

    2014.5.16 为了验证一下下载的CM11的源码有没有问题,决定编译一下cm官方支持的机器,手上正好有台nexus7 2012,就拿它为例测试一下在mac os x平台的整个编译过程. 1. 最开 ...

  2. Lenovo k860i 移植Android 4.4 cm11进度记录【下篇--实时更新中】

    2014.8.24 k860i的cm11的移植在中断了近两三个月之后又開始继续了,进度记录的日志上一篇已经没什么写的了,就完结掉它吧,又一次开一篇日志做下篇好了.近期的战况是,在scue同学的努力之下 ...

  3. Android开发——利用Cursor+CursorAdapter实现界面实时更新

    好久没有更新博客了.不是没时间写,而是太懒.而且感觉有些东西没有时间总结,之之后再想写,就想不起来了.晚上新发现一点东西,所以就及时写下来. 最近利用业余时间在看Android的Download模块, ...

  4. android开发文档工具集(持续更新中...)

     http://www.androiddevtools.cn/ android 产品->交互->视觉->开发->测试各种工具地址下载, 各种文档下载应有尽有,强烈推荐.  ht ...

  5. [转]Android开发要看的网站(不断更新中)

    Android网址或Blog Android官网 身为Android开发者不知道这个网站就太说不过去了,上面有你任何你需要的东西 Android Developers Blog Android官网博客 ...

  6. Cocos2dx-3.0版本 从开发环境搭建(Win32)到项目移植Android平台过程详解

    作为重量级的跨平台开发的游戏引擎,Cocos2d-x在现今的手游开发领域占有重要地位.那么问题来了,作为Cocos2dx的学习者,它的可移植特性我们就需要掌握,要不然总觉得少一门技能.然而这个时候各种 ...

  7. 关于文章“cocos2dx移植android平台-我的血泪史”需要注意事项

    关于文章"cocos2dx移植android平台-我的血泪史"需要注意事项 在上次转载的这篇文章中,按照配置一步一步的下去.发现工程中在Android.mk中有一处错误.直接bui ...

  8. cocos2dx使用了第三方库照样移植android平台-解决iconv库的移植问题

    当我写这篇文章的时候我是怀着激动的心情的,因为我又解决了一个技术问题.你可能对题目还一知半解,这是什么意思,我之所以要写这篇文章就是要解决当我们在cocos2dx中使用了第三方库的时候,移植到andr ...

  9. Android学习笔记- ProgressBar(进度条)

    本节引言: 本节给大家带来的是Android基本UI控件中的ProgressBar(进度条),ProgressBar的应用场景很多,比如 用户登录时,后台在发请求,以及等待服务器返回信息,这个时候会用 ...

随机推荐

  1. javax.validation注解使用

    @Pattern(regexp = "^[0-9]*$",message = "完成比例(进度)必须是数字")

  2. 如何显示bootstrap fileinput缩略图上面的删除按钮

    bootstrap上传文件控件初始化js: //bootstrap上传文件控件 $(".fileupload").fileinput({ language: "zh&qu ...

  3. Win7 如何禁用“切换用户”功能

    1.按win+r,输入gpedit.msc,点击确定: 2.依次点击计算机配置--管理模块--系统--登录,右侧列表中找到“隐藏“快速用户切换”的入口点”: 3.双击隐藏“快速用户切换”的入口点,点击 ...

  4. python 3.x 学习笔记12 (反射 and 异常)

    1.反射通过字符串映射或修改程序运行时的状态.属性.方法 getattr(obj,name_str):  根据字符串name_str去获取obj对象里的对应的方法的内存地址 hasttr(obj,na ...

  5. 爬取xml数据之R

    生物信息很多时候要爬数据.最近也看了一些这些方面的. url<-"要爬取的网址" url.html<-htmlParse(url,encoding="UTF- ...

  6. 乌班图 之 Ubuntu 16.04 LTS连接无线上网炒鸡慢问题!!!

    用VMware装了Ubuntu 16.04 LTS后连接无线上网,发现出奇的慢. 果断感觉有问题,立马找度娘,果然有问题!!! 网上查找亲测有效的方法为: 在终端运行:sudo gedit /etc/ ...

  7. jquery定时器

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...

  8. html5学习之第一步:认识标签,了解布局

    图1. Acme United的网页的规划 Header区的例子包含了页面标题和副标题,< header>标签被用来创建页面的Header区的内容.除了网页本身之外,< header ...

  9. [国家集训队]最长双回文串 (PAM)回文自动机

    Code: // luogu-judger-enable-o2 #include <cstdio> #include <algorithm> #include <cstr ...

  10. makefile--回顾基础篇

    前阵子让写makefile,纠结了下,基本忘记差不多了. 1.gcc的编译选项 -c 只是编译不链接,生成目标文件“.o” -S 只是编译不汇编,生成汇编代码 -E 只进行预编译,不做其他处理 -g ...