威视锐ZYNQ开发板-ZingSK移植Android系统及电容屏应用
[复制链接]
一、概述 此文档介绍了基于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 imageLinux源码可以通过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 效果图
|