我是靠谱客的博主 粗暴寒风,最近开发中收集的这篇文章主要介绍全志A20一些具体工作,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述


(2013-11-25 20:38:56)
转载
标签:

全志

a20

分类: Android
作者: Sam (甄峰)  
sam_code@hotmail.com

最近需要在A20上作一些工作。记录之。

任务1.A20上替换不同CSI接口Camera模组:
本来A20开发板上自带CSI接口模组gt2005. 但需要将其替换成ov2643.
1.修改: android/device/softwinner/sugar-xbh_bst/init.sun7i.rc
使其在初始化时insmod ov2643 的driver.


#sam modify it for ov2643
#insmod /system/vendor/modules/gt2005.ko
insmod /system/vendor/modules/ov2643.ko

2. 修改
licheetoolspackchipssun7iconfigsandroidsugar-xbh_bstsys_config.fex

[csi0_para]
csi_used           = 1

csi_dev_qty        = 1
csi_stby_mode      = 0
csi_mname               = "ov2643"
csi_if             = 0
csi_iovdd          = ""
csi_avdd           = ""
csi_dvdd           = ""
csi_vol_iovdd      =
csi_vol_dvdd       =
csi_vol_avdd       =
csi_vflip          = 0
csi_hflip          = 1
csi_flash_pol      = 0
csi_facing         = 0

csi_twi_id         = 1
csi_twi_addr       = 0x60
csi_pck            = port:PE00<3>
csi_ck             = port:PE01<3>
csi_hsync          = port:PE02<3>
csi_vsync          = port:PE03<3>
csi_d0             = port:PE04<3>
csi_d1             = port:PE05<3>
csi_d2             = port:PE06<3>
csi_d3             = port:PE07<3>
csi_d4             = port:PE08<3>
csi_d5             = port:PE09<3>
csi_d6             = port:PE10<3>
csi_d7             = port:PE11<3>
csi_reset          =port:PH13<1><0>
csi_power_en            =port:PH16<1><1>
csi_stby                =port:PH18<1><0>



任务2:使MAC地址不重复:
修改:licheetoolspackchipssun7iconfigsandroiddefaultenv.cfg





任务3: 修改开机画面:
请注意:通常意义上的开机画面其实分以下三种:
1. Linux系统启动时的小企鹅。(Android早期版本和当前一些开发板还有用)
2. Android平台初始化时显示的rle图像。
3.Android平台图形系统启动时,显示的一个动画,如果没有特别设定,就是那个不断变化光线位置的ANDROID的动画。


我们着重学习2和3。

3.2: 添加和修改Android平台初始化时显示的rle图像:
A20-Homlet-V1.0_ss/android/system/core/init/init.c
的main()函数中有:
queue_builtin_action(console_init_action,"console_init");
它向init 进程中添加了一个执行Action。名字为:"console_init"。 执行的是: console_init_action()
这里,就是显示开机画面的代码。
#define INIT_IMAGE_FILE "/initlogo.rle"
  if( load_argb8888_image(INIT_IMAGE_FILE) ) {
        fd = open("/dev/tty0", O_WRONLY);
        if (fd >= 0) {
            const char*msg;
                msg = "n"
            "n"
            "n"
            "n"
            "n"
            "n"
            "n"  // console is 40 cols x 30 lines
            "n"
            "n"
            "n"
            "n"
            "n"
            "n"
            "n"
                      A N D R OI D ";
            write(fd,msg, strlen(msg));
            close(fd);
       
这里,如果有/initlogo.rle,则利用framebuffer把图片显示在屏幕中。否则,打开串口,打印ANDROID.

如何将24bpp或者32bpp bmp图像转化成rle文件格式呢?
A20提供了一个软件:
A20-Homlet-V1.0_sslicheetoolstools_winLogoGenLogoGenBmpConvert.exe
在Windows下,使用它将BMP图像转化为rle文件。
之后把它放到:A20-Homlet-V1.0_ss/android/device/softwinner/sugar-xbh_bst/目录下。
请注意:此原始图像应与屏幕分辨率相同。当使用720P时,则应该使用1280x720的图片。



3.3:修改Android平台图形系统启动时的动画:
首先分析代码:
A20-Homlet-V1.0_ss/android/frameworks/base/cmds/bootanimation/BootAnimation.cpp



#define USER_BOOTANIMATION_FILE"/data/local/bootanimation.zip"
#define SYSTEM_BOOTANIMATION_FILE"/system/media/bootanimation.zip"
#define SYSTEM_ENCRYPTED_BOOTANIMATION_FILE"/system/media/bootanimation-encrypted.zip"
if ((encryptedAnimation&&
                    (access(SYSTEM_ENCRYPTED_BOOTANIMATION_FILE,R_OK) == 0) &&
                    (mZip.open(SYSTEM_ENCRYPTED_BOOTANIMATION_FILE)== NO_ERROR)) ||

                    ((access(USER_BOOTANIMATION_FILE, R_OK) == 0)&&
                    (mZip.open(USER_BOOTANIMATION_FILE) ==NO_ERROR)) ||

                    ((access(SYSTEM_BOOTANIMATION_FILE, R_OK) == 0)&&
                    (mZip.open(SYSTEM_BOOTANIMATION_FILE) ==NO_ERROR))) {
                mAndroidAnimation =false;
            }

这一段明确说明了:如果/data/local/bootanimation.zip,/system/media/bootanimation.zip,/system/media/bootanimation-encrypted.zip这三个文件有任何一个存在且能够正常解压,则mAndroidAnimation=false.

另一处:
if (mAndroidAnimation) {
                r = android();
            } else{
                r = movie();
            }
结合上面的代码,说明如果没有以上三个文件,则执行android();
加载:A20-Homlet-V1.0_ss/android/frameworks/base/core/res/assets/images/中的:android-logo-mask.png  android-logo-shine.png
这两个文件,一个是镂空的ANDROID字体默认的前景图片,文字部分镂空,大小256×64,一个是斜闪光,是动感效果。
源码里默认是没有那些个.zip动画的,所以总会跳到android字体闪动的画面。

我们通常下载一个别人制作好的文件,放在:
A20-Homlet-V1.0_ssandroidouttargetproductsugar-xbh_bstsystemmedia下。

desc.txt文件很简单:

例1:
480 854 20
p 1 3 part0
p 0 3 part1

480854 20:  图像像素长宽为:480x854. 显示帧数:20帧。
p 13 part0:part0里面的图片(可以是多幅) 每个显示一次,间隔3。
p 03 part1:part1里面的图片显示无数次,间隔为3。

例2:
480 800 7
p 0 0 part0

480 800 7:  图像像素长宽为:480x800. 显示帧数:7帧。
p 0 0 part0:part0里面的图像显示无数次。间隔为0。



4. 预装APK:
预装APK的方式有两种不同方式,一种是作为系统软件安装,用户无法在卸载界面看到它(所以无法卸载)。另一种作为正常软件安装。
4.1:按照正常软件安装:
把APK放到:A20-Homlet-V1.0_ss/android/device/softwinner/wing-common/preinstallapk
编译烧入后。启动后会静默安装。

4.2:按系统软件安装:
把APK放到:A20-Homlet-V1.0_ss/android/device/softwinner/wing-common/apk
如果此APK有library.则需要把它放到:A20-Homlet-V1.0_ss/android/device/softwinner/wing-common/apklib
最终,在Android Rootfs中,这个库会放到 /system/lib/中。



5. 指定缺省Launcher

最后

以上就是粗暴寒风为你收集整理的全志A20一些具体工作的全部内容,希望文章能够帮你解决全志A20一些具体工作所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部