• A20一些具体工作


    最近需要在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. 修改
    lichee oolspackchipssun7iconfigsandroidsugar-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地址不重复:
    修改:lichee oolspackchipssun7iconfigsandroiddefaultenv.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 = " "
                " "
                " "
                " "
                " "
                " "
                " "  // console is 40 cols x 30 lines
                " "
                " "
                " "
                " "
                " "
                " "
                " "
                "             A N D R O I D ";
                write(fd, msg, strlen(msg));
                close(fd);
            } 
    这里,如果有/initlogo.rle, 则利用framebuffer把图片显示在屏幕中。否则,打开串口,打印ANDROID.
     
    如何将24bpp或者32bpp bmp图像转化成rle文件格式呢?
    A20提供了一个软件:
    A20-Homlet-V1.0_sslichee ools ools_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_ssandroidout argetproductsugar-xbh_bstsystemmedia下。
     
    desc.txt文件很简单:
     
    例1:
    480 854 20
    p 1 3 part0
    p 0 3 part1
     
    480 854 20: 图像像素长宽为:480x854. 显示帧数:20帧。
    p 1 3 part0:part0里面的图片(可以是多幅) 每个显示一次,间隔3。
    p 0 3 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
  • 相关阅读:
    [LeetCode] Merge Interval系列,题:Insert Interval,Merge Intervals
    [LeetCode] Simplify Path,文件路径简化,用栈来做
    [LeetCode] Sort Colors 对于元素取值有限的数组,只遍历一遍的排序方法
    [LeetCode] Largest Rectangle in Histogram O(n) 解法详析, Maximal Rectangle
    实现一个协程版mysql连接池
    Linux搭建kafka
    PHP信号管理
    virtual memory exhausted: Cannot allocate memory
    RSA 非对称加密,私钥转码为pkcs8 错误总结
    Git Flow 工作模型与使用
  • 原文地址:https://www.cnblogs.com/cliuwei/p/5946204.html
Copyright © 2020-2023  润新知