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            = 1android

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
相關文章
相關標籤/搜索