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\tools\pack\chips\sun7i\configs\android\sugar-xbh_bst\sys_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\tools\pack\chips\sun7i\configs\android\default\env.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 O I D ";

write(fd, msg, strlen(msg));

close(fd);

}

这里,如果有/initlogo.rle, 则利用framebuffer把图片显示在屏幕中。否则,打开串口,打印ANDROID.

如何将24bpp或者32bpp bmp图像转化成rle文件格式呢?

A20提供了一个软件:

A20-Homlet-V1.0_ss\lichee\tools\tools_win\LogoGen\LogoGen\BmpConvert.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_ss\android\out\target\product\sugar-xbh_bst\system\media下。

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

时间: 2024-08-23 23:13:36

A20一些具体工作的相关文章

实模式_0

实模式是一种简单的16位模式,存在于所有x86处理器上. Real Mode是第一个x86模式设计,在保护模式诞生之前被许多早期的操作系统使用. 出于兼容性目的,所有x86处理器都以实模式开始执行. 所有现代操作系统(Windows,Linux,...)都运行在保护模式,由于Real模式提供的许多限制和问题(请参见下面的实模式操作系统警告页面).较旧的操作系统(如DOS)和程序以实模式运行,因为它是当时唯一可用的模式.有关如何从实模式切换到保护模式的信息,请参阅相应的文章. 注意:有一种称为虚拟

转:A10/A20 Bootloader加载过程分析

来自:http://blog.csdn.net/allen6268198/article/details/12905425 A10/A20 Bootloader加载过程分析 注:由于全志A10和A20在加载Bootloader过程方面基本一致,下面仅以A20叙述,但同时也适用于A10.另外在不需要区分Cubieboard1和Cubieboard2的情况下,统称为Cubieboard:另现在市面上一般所说的SD卡即为Micro SD Card,也就是TF卡,为区别于一般传统的SD卡,本文一般使用T

转 A10/A20 Bootloader加载过程分析

A10/A20 Bootloader加载过程分析 注:由于全志A10和A20在加载Bootloader过程方面基本一致,下面仅以A20叙述,但同时也适用于A10.另外在不需要区分Cubieboard1和Cubieboard2的情况下,统称为Cubieboard:另现在市面上一般所说的SD卡即为Micro SD Card,也就是TF卡,为区别于一般传统的SD卡,本文一般使用TF卡描述,但同于平时所说的SD卡. A20的启动过程大概可分为5步:Boot ROM,SPL,Uboot,Kernel,Ro

操作系统开发之——打开A20

我们在上一篇文章提到,如何制作Bootsect,当然,人总是贪婪的,制作完Bootsect又想着做Setup了,Setup主要工作是打开A20,进入保护模式,等等. 一.介绍A20 这是一个历史性问题,在intel处理器8086中,"段:偏移"最大能表示的内存地址是FFFF:FFFF,即10FFEFh,可是8086只有20位寻址地址总线,只能寻址到1MB,如果试图访问1MB以上的内存地址,并不会发生错误,而是回卷,即又回到0000:0000地址,又从零开始寻址,可是到了80286时,真

蜂鸟A20开发板刷 cubietruck 的 SD 卡固件

美睿视讯 为蜂鸟A20准备的 MerriiLinux 功能非常简陋.所以能用上主流的 debian 或者 LUbuntu 就可以说是非常迫切的需求了.蜂鸟A20(Merrii Hummingbird A20)从硬件配置上来说非常接近 cubietruck ,相同的全志A20,相同的千兆PHY 芯片 RT8211E ,相同的wifi Bluetooth芯片 AP6210.但内存和闪存比 cubietruck 要小. 准备工作: 1.编译蜂鸟专用 uboot (主要是为了激活网卡) git clon

关于工作中微信分享接口的bug

调用config 接口1的时候传入参数 debug: true 可以开启debug模式,页面会alert出错误信息.以下为常见错误及解决方法: invalid url domain当前页面所在域名与使用的corpid没有绑定(可在该企业号的应用可信域名中配置域名). invalid signature签名错误.建议按如下顺序检查: 确认签名算法正确,可用 http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign 页面工具进行校验. 确认c

20170919关于工作以及崇洋媚外

上个周六考pet3,应该过了,高手还是很多的,旁边的小姑娘答题嗖嗖的. 因为当天还是大爷温锅的时间,所以11:00考完直接就网上约了个车回家了,开车的小伙子是我们那一村的,才95年,打算去澳洲投奔姐姐去,所以因此小伙子在新航路英语报名学习雅思可能,5万元100个小时的课程,不包过,早上从错埠岭自己租的1300的房子就去了(小伙应该是和女友一起住这个价,公寓,女友青大的,女友的同学去万达那边公司实习一个月2000),10点一直到晚上8点,上午背单词,他说他70个就到极限了,然后复习之后靠文章句子中

Java 详解 JVM 工作原理和流程

作为一名Java使用者,掌握JVM的体系结构也是必须的.说起Java,人们首先想到的是Java编程语言,然而事实上,Java是一种技术,它由四方面组成:Java编程语言.Java类文件格式.Java虚拟机和Java应用程序接口(JavaAPI).它们的关系如下图所示: 运行期环境代表着Java平台,开发人员编写Java代码(.java文件),然后将之编译成字节码(.class文件),再然后字节码被装入内存,一旦字节码进入虚拟机,它就会被解释器解释执行,或者是被即时代码发生器有选择的转换成机器码执

关于重构工作的一点思考

最近两周一直忙着和重构相关的事情,本文将简要概述从开始制定重构方案,到具体执行的过程中遇到的问题,以及对重构的一点理性思考. 起因: 本系统是2015年11月开始建设,当时为了快速投入使用,大量的烂代码,后期一直保持快速前进,没有进行过实质性的重构. 具体表现: ● 分层不清,sql哪都有,dao有.service也有,就差controller没写了.同样dao也包含业务逻辑. ● sql用的是spring jdbc,并没有使用mybatis,导致sql写起来有些复杂,封装不够基本都是原始sql