Android系统移植(三)
来源:互联网 发布:以史为鉴 可以知兴替 编辑:程序博客网 时间:2024/05/17 09:29
上节当中只是简单的介绍了下系统镜像的制作过程,但是在这之前还需要更重要的两步:源码编译和内核编译。这两步的正确与否关乎Android能否正常运行。因此,下面来介绍源码编译和内核编译需要注意的问题.
1. 源码编译
a) . setenv 中间有空隔,且必须执行这条
b) make
在源码编译过程中,a步骤必须执行,这是友善之臂提供的配置信息,若不执行会导致生成的文件缺失,而造成Android4.2.2不能正常在TINY4412上正常运行。
在源码编译过程中可能会出现一个严重错误:
1.1 make: *** 没有规则可以创建“out/target/product/generic/obj/SHARED_LIBRARIES/gralloc.generic_intermediates/import_includes”需要的目标“out/target/product/generic/obj/SHARED_LIBRARIES/libMali_intermediates/export_includes”。 停止。
解决办法:
cp vendor/friendly-arm/exynos4412/mali_dmabuf/*out/target/product/generic/obj/lib/
在SHARED_LIBRARIES目录下mkdir libMali_intermediates
然后在libMali_intermediates目录下touch export_includes
1.2 external/bluetooth/bluedroid/Android.mk:8:NO BOARD_BLUETOOTH_BDROID_BUILDCFG_INCLUDE_DIR, using only genericconfiguration
Exception in thread "main" java.lang.UnsatisfiedLinkError:Cannot load 32-bit SWT libraries on 64-bit JVM
该错误是由于<android_home>/out/host/linux-x86/framework/目录下的swt.jar是32位引起的,下载个64位的复制到该目录下
其他错误的解决方法请自行百度,这里不再赘述。
2. 内核编译
(1).未测试
1.启动android模拟器,然后通过adb转到模拟器中提供的内核配置文件:
emulator &
adb pull /proc/config.gz .
此时adb工具会连接到模拟器,并从它里面下载一个叫做config.gz的文件到你的当前目录下,将它拷贝到<kernel_home> 目录下
2.gunzip config.zip
mv config .config
3.打开<kernel_home>目录下的Makefile文件,修改CROSS_COMPILE=arm-none-linux-gnueabi-
在Makefile中注释掉LDFLAGS_BUILD_ID这个变量。
因为android不支持这个选项 --build-id
4.make
(2).正确
1.cp tiny4412_android_config .config
2.make
最后用成功SD卡成功引导Android系统-----shell
但是屏幕不能正常显示?
猜想:是驱动的问题么?
此方式是自己编译linux内核,但是注意:由于该linux内核默认采用高清屏幕HD700,所以需要改linux内核源码,修改<linux_home>/arch/arm/mach-exynos目录下的tiny4412-lcds.c文件,该文件中tiny4412_lcd_config[lcd_idx].ctp,默认的lcd_idx定义为static int lcd_idx = 0;但是tiny4412_lcd_config结构体中第0个是高清屏HD700,而不是我用的S70,所以改变该变量为1,即标清屏S70。
总结:既然屏幕能显示,应该不是驱动的问题,若是驱动的问题应该就不能显示或显示错误。显示桌面是乱的说明是驱动的配置问题。对驱动工作原理还没理解透。
又出现新问题:触摸屏不能正常工作
猜想:是不是由于linux内核的触摸屏驱动没有配置好?
但是看到device drivers---->
input devicesupport--->
Touchscreens下的
<*> Tiny4412 1-Wire host and Touch Screen Driver
<*> FocalTech ft5x0x TouchScreen driver
Graphicssupport---->
[*] Enable firmware EDID //要选中这个触摸屏才能正常,原因?
重启电源,触摸屏能正常工作了。
另外一个需要注意的问题是:如果用的是uboot则配置linux内核禁止Trustzone
system type--->
-------[]Support TrustZone-enabledTrusted Execution Environment
如果用的是 superboot,则必须加载该模块。
未完待续!
- Android系统移植(三)
- Android系统移植(三)-按键字符表
- Android系统移植(三)-按键字符表
- BeagleBoard上android系统移植(三)
- Android系统移植(三)-按键字符表
- Android系统移植(三)-按键字符表
- android系统移植要点之三--以6410为例
- Android系统移植-按键移植
- Android系统移植准备
- Android系统Wifi移植
- Android系统移植全过程
- Android系统移植全过程
- Android系统移植全过程
- Android系统移植全过程
- Android系统Wifi移植
- Android系统Wifi移植
- Android系统Wifi移植
- android系统移植
- ios程序员6级考试(答案和解释)
- Android 事件分发机制源码和实例解析
- 【NOI(P)2013模拟】秘密任务
- 工作中用到的FFmpeg命令
- C语言之linux内核实现位数高低位互换
- Android系统移植(三)
- 数据库-------Statement和preparedStatement的区别
- android-错误:refused to install the app by The ADB command !
- CodeForces 117C Cycle 搜索
- CentOS虚拟机环境下安装JDK环境
- Visual Studio 2008试用版的评估期已经结束
- Android系统移植(四)
- 【转】AS技巧合集
- wamp相关问题