我在ubuntu15.04上按照宅猫的教程一步步做的,前面都没问题,安装oracle jdk1.6,建立交叉编译环境等,整个编译过程也都没有报错(有部分警告,绝大部分是变量未初始化、未使用等警告),最终成功生成sun6i_android_mars-a31s.img
但是烧录后,却无法启动板子,具体表现是屏幕黑屏。
下面我把我主要的过程描述下:
0)编译环境准备,略
1)M2 android源码从这里下载的:ftp://dev.banana-pi.org.cn/Source_Code/bpi2/BPI-M2-Android4.4.tar.gz
2)解压后进入目录,单步执行build_hdmi.sh中的每一步:
2.1)首先进入lichee目录,编译linux内核,其中执行make menuconfig后在lichee/linux3.3目录下生成的.config内核配置文件是基于x86平台的,要修改成基于arm的,按照justin的指导从https://github.com/BPI-SINOVOIP/BPI-M2-bsp/blob/master/linux-sunxi/arch/arm/configs/sun6i_bpi_defconfig下载后覆盖.config文件,整个linux内核编译大概20多分钟。
2.2)进入android目录,编译android img,编译过程中会报找不到gpio-sunxi.ko找不到的错误,我从sunxi官网下了一个gpio-sunxi.ko文件,拷贝到./android/device/softwinner/mars-a31s/modules/modules目录下。大约4个小时,编译成功完成。
3)生成的sun6i_android_mars-a31s.img大概600多M,比官方提供的要大一些,用phoenixcard烧录到sd卡上,插电BPI M2,屏幕不亮。
求指导,万分感谢!
明细步骤:
1)su root
2)解压BPI-M2-Android4.4.tar.gz到BPI-M2-Android4.4目录
3)cd BPI-M2-Android4.4,make_clean.sh
4)添加驱动:
4.1)修改hid-core.c,添加新usb设备的vendorID和productID到hid_ignore_list]结构中
4.2)将新的驱动程序usbtouch.c添加到路径kernel/drivers/input/touchscreen/下,并修改makfile:增加一句代码:obj-$(CONFIG_USBTOUCH) += usbtouch.o
4.3)修改kernel/drivers/input/touchscreen/Kconfig文件,endif前增加:
config USBTOUCH
tristate "usbtouch touchscreen"
default n
help
this is the USBTOUCH driver.
4.4)进入lichee/linux3.3/目录,make menuconfig,设置usbtouch的选择状态为*,保存退出。但这种情况下生成的.config编译时要报错,之前Justin让我根据https://github.com/BPI-SINOVOIP/ … sun6i_bpi_defconfig替换了make menuconfig生成的.config文件,usbtouch我是手工添加进去的,就添加了一行CONFIG_USBTOUCH=y
5)然后,按照build_hdmi.sh步骤执行:
rm ./lichee/tools/pack/chips/sun6i/configs/android/mars-a31s/sys_config.fex
cp ./lichee/tools/pack/chips/sun6i/configs/android/mars-a31s/sys_config_hdmi.fex ./lichee/tools/pack/chips/sun6i/configs/android/mars-a31s/sys_config.fex
rm ./android/device/softwinner/fiber-common/egl/hwcomposer.sun6i.so
cp ./android/device/softwinner/fiber-common/egl/hwcomposer.sun6i.hdmi.so ./android/device/softwinner/fiber-common/egl/hwcomposer.sun6i.so
cd ./lichee
./build.sh -p sun6i_fiber_a31s
cd …/android
source build/envsetup.sh
lunch mars_a31s-eng
extract-bsp
make -j8 ----编译时会报gpio-sunxi.ko不存在,官网上下载下来拷贝到mars-a31s/modules/modules目录下,就过了
pack
cd …/lichee/tools/pack
ls -l
感谢Justin,昨天按原始的重新又来了一遍,解决啦!
原因在于./lichee/linux3.3/.config不能使用https://github.com/BPI-SINOVOIP/ … sun6i_bpi_defconfig覆盖,是这步造成的问题。之前也是我给Justin报的一个错误,导致Justin给出了覆盖.config的建议。但昨天他让我按原始的重来一遍,就成了,再次感谢Justin。
其他加驱动之类的操作都是没问题的。现在大触屏已经OK了。