威视锐ZYNQ开发板-ZingSK移植Android系统及电容屏应用

2020-02-28 18:34发布

一、概述

此文档介绍了基于ZingSK运行Android的必要的步骤。此文档所有命令均是在Ubuntu12.04 x86_32操作系统下完成。

ZingSK支持Linux和Android,Android GUI支持LCD(800*600)和触摸屏接口。



硬件平台:ZingSK开发套件

开发环境:Windows7-32位、VMware 9.0 + Ubuntu 12.04、arm- xilinx- linux-gnueabi交叉编译环境

嵌入式Linux: iVeia公司提供的ZC702的Android+Kernel(基于ZingSK修改)



Android操作系统运行需要一系列二进制文件如下表所示:



文件名
描述



BOOT.BIN
由EDK bootgen工具创建,包含 FSBL (First Stage Boot Loader), FPGA bit-stream, U-Boot(基于zynq_base_trd_14.1构建)

zImage
Linux kernel

devicetree.dtb
Device Tree Blob

ramdisk8M.image.gz
Linux ramdisk, 基于 Xilinx's ZC702 版本修改,可以运行 startup.sh

startup.sh
用于启动 Android的脚本

root.img
Android 根文件系统

ft5x06_ts.ko
触摸屏驱动


表1-1




二、软件设计
1、Linux
获取Linux kernel源码
Linux kernel源码存放在iVeia的Git服务器的代码仓库,使用以下命令克隆Linux Git仓库:

user@local-machine $ git clone git://git.iveia.com/scm/xilinx/android/kernel/zynq.git

建立kernel image
Linux源码可以通过arm-xilinx-linux-gnueabi交叉编译工具链编译。



设置环境变量、编译内核

user@local-machine $ export PATH=/opt/CodeSourcery/Sourcery_G++_Lite/bin:$PATH

user@local-machine $ export ARCH=arm

user@local-machine $ export CROSS_COMPILE=arm-xilinx-linux-gnueabi

user@local-machine $ make xilinx_android_defconfig



修改串口设置:



















因为ZingSK开发板使用的是UART0,所以要取消掉默认的UART1选项,设置完毕后退出保存



编译内核

user@local-machine $ make zImage



编译生成的内核镜像位于arch/arm/boot/zImage。



为Linux 内核编译Device Tree Blob (DTB):



修改zynq-zc702-xylon-fmc.dts中串口定义,内存大小(512M),xylon显示参数(支持Android)。

user@local-machine $ scripts/dtc/dtc

-I dts -O dtb

-o devicetree.dtb

arch/arm/boot/dts/zynq-zc702-xylon-fmc.dts



kernel、u-boot、Device Tree的修改参考产品光盘中的《基于ZingSK的Linux系统构建参考手册》





2、Android
   Android文件系统可以使用预编译好的位于ZingSK产品光盘中的root.img。



三、快速开始
1、准备
启动用的TF卡应包含所有以上所述Android运行镜像。 TF卡必须包含第一个使用FAT文件系统格式的分区,以及一个可选的第二个FAT格式的分区(Android作为“外部存储”,一些媒体应用需要外部存储加载/保存数据文件)。



在TF卡上的分区结构应如下:



1、 FAT格式的分区,足以包含所有启动文件。

2、(可选)FAT格式的分区,Android作为外部存储使用。



注:如有第一分区非FAT格式,ZingSK将无法启动。



以下是使用“fdisk”工具对TF卡进行分区并格式化,使用“mkdosfs创建文件系统”(假设TF卡在Ubuntu下的设备节点为/ dev / sde)的必要步骤:



$sudo fdisk /dev/sde



WARNING: DOS-compatible mode is deprecated. It's strongly recommended to

         switch off the mode (command 'c') and change display units to

         sectors (command 'u').



Command (m for help): p



Disk /dev/sde: 3965 MB, 3965190144 bytes

49 heads, 48 sectors/track, 3292 cylinders

Units = cylinders of 2352 * 512 = 1204224 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0x00000000



   Device Boot      Start         End      Blocks   Id  System

/dev/sde1               4        3293     3868160    b  W95 FAT32



Command (m for help): d

Selected partition 1



Command (m for help): p



Disk /dev/sde: 3965 MB, 3965190144 bytes

49 heads, 48 sectors/track, 3292 cylinders

Units = cylinders of 2352 * 512 = 1204224 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0x00000000



   Device Boot      Start         End      Blocks   Id  System



Command (m for help): n

Command action

   e   extended

   p   primary partition (1-4)

p

Partition number (1-4): 1

First cylinder (1-3292, default 1): 1

Last cylinder, +cylinders or +size{K,M,G} (1-3292, default 3292): 500



Command (m for help): t

Selected partition 1

Hex code (type L to list codes): L



0  Empty           24  NEC DOS         81  Minix / old Lin bf  Solaris        

1  FAT12           39  Plan 9          82  Linux swap / So c1  DRDOS/sec (FAT-

2  XENIX root       3c  PartitionMagic  83  Linux           c4  DRDOS/sec (FAT-

3  XENIX usr       40  Venix 80286     84  OS/2 hidden C:  c6  DRDOS/sec (FAT-

4  FAT16 <32M      41  PPC PReP Boot   85  Linux extended  c7  Syrinx         

5  Extended        42  SFS             86  NTFS volume set da  Non-FS data   

6  FAT16           4d  QNX4.x          87  NTFS volume set db  CP/M / CTOS / .

7  HPFS/NTFS       4e  QNX4.x 2nd part 88  Linux plaintext de  Dell Utility   

8  AIX             4f  QNX4.x 3rd part 8e  Linux LVM       df  BootIt         

9  AIX bootable    50  OnTrack DM      93  Amoeba          e1  DOS access     

a  OS/2 Boot Manag 51  OnTrack DM6 Aux 94  Amoeba BBT      e3  DOS R/O        

b  W95 FAT32       52  CP/M            9f  BSD/OS          e4  SpeedStor      

c  W95 FAT32 (LBA) 53  OnTrack DM6 Aux a0  IBM Thinkpad hi eb  BeOS fs        

e  W95 FAT16 (LBA) 54  OnTrackDM6      a5  FreeBSD         ee  GPT            

f  W95 Ext'd (LBA) 55  EZ-Drive        a6  OpenBSD         ef  EFI (FAT-12/16/

10  OPUS            56  Golden Bow      a7  NeXTSTEP        f0  Linux/PA-RISC b

11  Hidden FAT12    5c  Priam Edisk     a8  Darwin UFS      f1  SpeedStor      

12  Compaq diagnost 61  SpeedStor       a9  NetBSD          f4  SpeedStor      

14  Hidden FAT16 <3 63  GNU HURD or Sys ab  Darwin boot     f2  DOS secondary  

16  Hidden FAT16    64  Novell Netware  af  HFS / HFS+      fb  VMware VMFS   

17  Hidden HPFS/NTF 65  Novell Netware  b7  BSDI fs         fc  VMware VMKCORE

18  AST SmartSleep  70  DiskSecure Mult b8  BSDI swap       fd  Linux raid auto

1b  Hidden W95 FAT3 75  PC/IX           bb  Boot Wizard hid fe  LANstep        

1c  Hidden W95 FAT3 80  Old Minix       be  Solaris boot    ff  BBT            

1e  Hidden W95 FAT1

Hex code (type L to list codes): b

Changed system type of partition 1 to b (W95 FAT32)



Command (m for help): p



Disk /dev/sde: 3965 MB, 3965190144 bytes

49 heads, 48 sectors/track, 3292 cylinders

Units = cylinders of 2352 * 512 = 1204224 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0x00000000



   Device Boot      Start         End      Blocks   Id  System

/dev/sde1               1         500      587976    b  W95 FAT32



Command (m for help): n

Command action

   e   extended

   p   primary partition (1-4)

p

Partition number (1-4): 2

First cylinder (501-3292, default 501):

Using default value 501

Last cylinder, +cylinders or +size{K,M,G} (501-3292, default 3292):

Using default value 3292



Command (m for help): t

Partition number (1-4): 2

Hex code (type L to list codes): b

Changed system type of partition 2 to b (W95 FAT32)



Command (m for help): p



Disk /dev/sde: 3965 MB, 3965190144 bytes

49 heads, 48 sectors/track, 3292 cylinders

Units = cylinders of 2352 * 512 = 1204224 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0x00000000



   Device Boot      Start         End      Blocks   Id  System

/dev/sde1               1         500      587976    b  W95 FAT32

/dev/sde2             501        3292     3283392    b  W95 FAT32



Command (m for help): w

The partition table has been altered!



Calling ioctl() to re-read partition table.



WARNING: If you have created or modified any DOS 6.x

partitions, please see the fdisk manual page for additional

information.

Syncing disks.

$ sudo partprobe /dev/sde

$ sudo /sbin/mkdosfs -F 32 -n "ANDROID" /dev/sde1

mkdosfs 3.0.9 (31 Jan 2010)

$ sudo /sbin/mkdosfs -F 32 -n "EXTERNAL" /dev/sde2

mkdosfs 3.0.9 (31 Jan 2010)

TF格式化完毕后将表1-1中所有文件拷贝到第一分区中。



2、运行
在ZingSK上启动Android需要一下几步:

·  格式化TF并将表1-1中所有文件拷贝到其中。

·  将TF卡插入ZingSK的TF卡插槽中。

·  确保ZingSK板卡跳线正确设置为TF启动模式。

连接好LCD显示屏、触摸屏、6V电源、USB-UART连接线

以下分步介绍:

1. 开发板连接6 V电源(JP1)并安装8寸触摸屏和LCD液晶屏,不要打开电源。



图 1-1



2. 将包含了Android二进制文件的TF闪存卡,插入到ZING SK开发板的TF卡插槽内。



图 1-2



3. 用USB Type-A -USB Mini-B 电缆连接开发板UART与电脑.



图 1-3



4. 使用“设备管理器”,以确定COM端口。 打开一个串口调试程序,配置为115200/8/n/1/n。



图 1-4





图 1-5



5. 打开电源开关(SP1) ,开发板上电运行。



图 1-6



6. 在串口调试工具的窗口将会显示Android的引导过程。





图 1-7



7. 约半分钟左右,LCD显示屏屏上将会出现“Android”字样,稍后Android界面将会运行,可以通过点击界面上的按钮来操作程序。





图 1-8





效果图
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。