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 <<<
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. CSS3 过滤

    CSS3 过滤 通过CSS3,我们可以在不适用flash动画或JavaScript的情况下,当元素从一种样式变换为另一种样式时为元素添加效果. 浏览器支持 属性 浏览器支持 transition   ...

  2. 【※索引】mysql索引常用命令

    索引分单列索引和组合索引.单列索引,即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索引.组合索引,即一个索包含多个列. MySQL索引类型包括: (1)普通索引 这是最基本的索引,它没 ...

  3. Design Pattern —— Prototype /Template Method/Iterator/Composite/Bridge

    Prototype /Template Method/Iterator/Composite/Bridge 为什么把这五种设计模式放一起呢,没什么太高大上的原因,就是因为这五种模式JAVA开发最基本的特 ...

  4. Windows Server 2003 SP2 R2 企业版/标准版/32与64位 CD-KEY

    微软发布Windows Server 2003 R2版的目的是希望透过它填补Windows Server 2003 SP1和Longhorn Server之间的产品发布时间间隔.所以Windows S ...

  5. 控制弹出div显示在鼠标附近的位置

    前一个页面: $("#txt_ocname").click(function () { art.dialog.open("/SelPosAll.aspx", { ...

  6. hdu 1829 基础并查集,查同性恋

    A Bug's Life Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) To ...

  7. jquery实现定时调度(倒计时)

    工作需要实现了倒计时的脚本,代码如下: /** * 倒计时 * @param infoId :信息显示的id 最好是用span包裹 * @param callback:倒计时结算后的回调 */ fun ...

  8. ios 实时刷新屏幕

    index=; // timer = [NSTimer scheduledTimerWithTimeInterval:0.1 target:layer selector:@selector(setNe ...

  9. DeDe缩略图路径的修改

    今天在使用dedecms的时候,遇到的一点小问题,移站的时候缩略图不显示.然后就去百度搜了一下,出来的都是千篇一律. 因为一个网站里面缩略图太多,手动比较慢而已费时间,  俗话说的好“时间就是生命” ...

  10. PHP的抽象类和接口

    抽象类与接口相似,都是一种比较特殊的类.抽象类是一种特殊的类,而接口也是一种特殊的抽象类.它们通常配合面向对象的多态性一起使用.虽然声明和使用都比较容易,但它们的作用在理解上会困难一点. ①抽象类 在 ...