android · android 系统可以稳定的运行。5 结语...

4
ISSN1672-4305 CN12-1352 / N LABORATORY SCIENCE 22 2019 12 Vol 22 No 6 Dec 2019 计算机应用 基于 Zynq 平台的 Android 操作系统移植 大连理工大学 软件学院辽宁 大连 116620为了解决 Zynq-7000 在无操作系统情况下 Processing System 部分开发困难的问题研究并给出了 An⁃ droid 操作系统在 Zynq-7000 All Programmable SoC 平台上移植的具体方法通过安装交叉编译器移植 Boot⁃ Loader 引导程序配置和编译 Linux 内核编译 Android 源码生成 Android 文件系统和镜像文件等步骤成了 Android 系统的移植工作Android 系统在 Zynq-7000 平台启动所需要的文件拷贝到 SD 卡中并进行系 统启动实验结果表明 Android 系统移植成功这可以使得 Zynq-7000 平台的开发与使用更加广泛关键词Zynq 平台操作系统移植; Android; 全可编程 SoC 中图分类号TP316 文献标识码doi10.3969 / j.issn.1672-4305.2019.06.011 Transplantation of Android operating system based on Zynq platform WANG Jie, LENG Wei, HOU Gang ( School of Software Technology, Dalian University of Technology, Dalian 116620, China) Abstract: In order to solve the problem that the Zynq-7000 is difficult to develop in the Processing System without operating system, the specific method of porting the Android operating system on the Zynq-7000 All Programmable SoC platform is studied. The migration of the Android system is comple⁃ ted by installing the cross compiler, porting the BootLoader, configuring and compiling the Linux ker⁃ nel, compiling the Android source code, generating the Android file system and image files. The files needed to start the Android system on the Zynq-7000 platform are copied to the SD card and the sys⁃ tem is started. The experimental results show that the Android system is successfully transplanted, which makes the development and use of the Zynq-7000 platform more extensive. Key words: Zynq; operating system transplant; Android; All Programmable SoC 基金项目国家自然科学基金项目编号:61472100); 央高校基本科研业务费资助 项目编号DUT17JC26) 。 通讯作者候刚(1982-),辽宁沈阳人博士讲师要研究方向为模型检测形式化方法随着科技的进步和各个领域应用需求的多样 嵌入式设计技术和芯片技术经历了一次又一次 的革新。 Xilinx 公司推出的全球第一个可扩展处理 平台 Zynq 系列打破了传统嵌入式处理器的性能瓶 [1- 2] 。 Zynq 将处理器与 FPGA 整合在一起实现 了全可编程 SoC, 其在机器学习图像处理汽车电 子等领域都有广泛应用 [3] 本文致力于研究 Android 嵌入式操作系统在 Zynq -7000 开发平台上的实现通过在 Zynq-7000 开发平 台上移植操作系统来屏蔽底层的硬件提供一个统一 的编程接口使得高级语言程序员不需要学习 Zynq - 7000 开发平台以及 Xilinx 开发工具也能够很好地开发 可以在 Zynq-7000 开发平台上正确运行的软件这使 Zynq-7000 平台的应用与开发更加广泛硬件平台环境 Zynq AP SoC 平台是由 ARM+FPGA 组成的体系结构如图 所示其中 ARM 部分在 Zynq 中被 称为 Processing System ( PS), 处理器为双核的 Cor⁃ texTM-A9,FPGA 部分在 Zynq 中被称为 Program⁃

Upload: others

Post on 27-Sep-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Android · Android 系统可以稳定的运行。5 结语 本文在Zynq-7000平台上移植了Android操作 系统,结果表明所移植的Android系统功能完善 。通过在Zynq上移植操作系统,可降低PS部分的开

 ISSN1672-4305CN12-1352 N

实    验    室    科    学

LABORATORY  SCIENCE第 22 卷  第 6 期  2019 年 12 月

Vol1049008 22  No1049008 6   Dec1049008 2019

计算机应用

基于 Zynq 平台的 Android 操作系统移植

王  洁 冷  威 侯  刚

(大连理工大学 软件学院 辽宁 大连  116620)

摘  要 为了解决 Zynq-7000 在无操作系统情况下 Processing System 部分开发困难的问题 研究并给出了 Android 操作系统在 Zynq-7000 All Programmable SoC 平台上移植的具体方法 通过安装交叉编译器 移植 BootLoader 引导程序 配置和编译 Linux 内核 编译 Android 源码 生成 Android 文件系统和镜像文件等步骤 完

成了 Android 系统的移植工作 将 Android 系统在 Zynq-7000 平台启动所需要的文件拷贝到 SD 卡中并进行系

统启动 实验结果表明 Android 系统移植成功 这可以使得 Zynq-7000 平台的开发与使用更加广泛关键词 Zynq 平台 操作系统移植 Android 全可编程 SoC中图分类号TP316    文献标识码A    doi103969 jissn1672-4305201906011

Transplantation of Android operating system based on Zynq platform

WANG Jie LENG Wei HOU Gang(School of Software Technology Dalian University of Technology Dalian 116620 China)

Abstract In order to solve the problem that the Zynq-7000 is difficult to develop in the ProcessingSystem without operating system the specific method of porting the Android operating system on theZynq-7000 All Programmable SoC platform is studied The migration of the Android system is completed by installing the cross compiler porting the BootLoader configuring and compiling the Linux kernel compiling the Android source code generating the Android file system and image files The filesneeded to start the Android system on the Zynq-7000 platform are copied to the SD card and the system is started The experimental results show that the Android system is successfully transplantedwhich makes the development and use of the Zynq-7000 platform more extensiveKey words Zynq operating system transplant Android All Programmable SoC

                                               

  

  

                          

  

  

  

基金项目国家自然科学基金(项目编号61472100)中央高校基本科研业务费资助 (项目编号DUT17JC26)

通讯作者候刚(1982-)男辽宁沈阳人博士讲师主要研究方向为模型检测形式化方法

    随着科技的进步和各个领域应用需求的多样

化嵌入式设计技术和芯片技术经历了一次又一次

的革新 Xilinx 公司推出的全球第一个可扩展处理

平台 Zynq 系列打破了传统嵌入式处理器的性能瓶

颈[1- 2] Zynq 将处理器与 FPGA 整合在一起实现

了全可编程 SoC其在机器学习图像处理汽车电

子等领域都有广泛应用[3]

本文致力于研究 Android 嵌入式操作系统在 Zynq-7000 开发平台上的实现 通过在 Zynq-7000 开发平

台上移植操作系统来屏蔽底层的硬件提供一个统一

的编程接口使得高级语言程序员不需要学习 Zynq-7000开发平台以及 Xilinx 开发工具也能够很好地开发

可以在 Zynq-7000 开发平台上正确运行的软件这使

得 Zynq-7000 平台的应用与开发更加广泛

1  硬件平台环境

Zynq AP SoC 平台是由 ARM+FPGA 组成的其体系结构如图 1 所示 其中 ARM 部分在 Zynq 中被

称为 Processing System (PS)处理器为双核的 CortexTM-A9而 FPGA 部分在 Zynq 中被称为 Program

王洁等基于 Zynq 平台的 Android 操作系统移植

mable Logic (PL)其资源和结构与 Xilinx 的 7 系列 FPGA 一样

图 1  Zynq-7000 体系结构图

2  Android 简介

Android 是 Google 公司和 Open Handset Alliance(开放手机联盟)为移动设备开发的一个操作系统Android 是基于 Linux 内核的开源的操作系统其包括了操作系统用户界面和应用程序三大部分Android 系统除了被应用于智能手机平板电脑外也可应用于数字电视[4 ]数码相机[5 ]探测器[6 ]医疗设备[7 ]等电子设备中 Android 是开源的意味着

降低了手机软件的开发成本和手机的价位因此

Android 操作系统受到了各大手机厂商和消费者的

青睐 同时由于第三方恶意软件的出现Android 系

统的安全问题也成为了研究的热点[8 - 10 ]

3  Android 操作系统移植

在这一节中将介绍如何在 Zynq-7000 平台上

搭建 Android 操作系统 本节分为七个部分来详细

叙述 Android 在 Zynq-7000 平台上的移植过程Android 移植环境搭建BootLoader 移植Linux 内核配

置和编译编译设备树构建 Android 用户空间ramdisk 修改和制作 startupsh 文件31  Android 系统移植环境搭建

Android 操作系统移植环境搭建是在 Linux 系

统下进行的本文使用的是 Ubuntu144 需要安装

交叉编译器在 Xilinx 官网上下载并安装 xilinx -201109-50-arm-xilinx-linux-gnueabi bin并通过

export CROSS_COMPILE=arm-xilin1x-linux- gnueabi 和 export PATH = < myPath > CodeSourcery Sourcery_CodeBench _Lite _ for _Xilinx _GNU_Linux

bin $ PATH 两条语句导入环境变量 由于 Android上层代码是用 JAVA 编写的所以在移植 Android 时

还需要 JAVA 的开发环境本文安装的是 JDK6 这

样 Android 移植需要的环境就搭建完成了

32  BootLoader 移植

u-boot 是当前比较流行并被广泛采用的一款

Bootloader 可以从 https github com Xilinx u -boot-xlnx 下载最新版本的 u-boot 源码 在使用交

叉编译器编译 u-boot 之前首先要通过执行 makeZynq_zed_config 命令对源码进行配置使之能够生

成支持 Xilinx BSP 的可执行文件 然后编译 u -boot将会在该路径的目录下生成一个名为 u-bootelf 的文件该文件用于生成 BOOTBIN 启动文件

33  Linux 内核配置和编译

本文使用的是 33 版本的 Linux 内核由 digilent 维护 源码可以从 https github com Digilent linux- 3 3 - digilent git 下载 通过执行 makeARCH=arm digilent_zed_defconfig 命令对 Linux 内核

源码进行配置使其能够支持 Xilinx 的 BSP 与驱

动 通过执行 make menuconfig 命令启动图形配置

界面来启用 Linux 内核中关于 Android 系统的功能图形界面如图 2 所示选择 Device Drivers 项回车进入设备驱动配置界面选择 Staging drivers 项按ldquoYrdquo使该功能可用然后回车进入平台驱动配置

界面 在平台驱动配置界面中选择 Android 项回车进入 Android 操作系统驱动配置界面通过按

ldquoYrdquo允许 Android 下的所有功能然后保存退出 至

14

此内核配置完成通过 make 命令编译内核生成 的内核镜像文件 zImage 在 arch arm boot 目录下

图 2  Linux 内核配置界面

34  编译设备树

可以在内核目录的 scripts dtc 路径下找到设备

树编译器 需要注意的是内核在编译时需要配置为

打开设备树编译器Zynq 的默认设备树源文件 digilent -zed dts 在

arch arm boot dts 目录下 在编译设备树源文件之

前要对 Zynq 的设备树进行如下修改bootargs = console = ttyPS0115200 root = dev ram rw

initrd= 0x8000008M earlyprintk rootfstype = ext4 rootwait devtmpfsmount = 0

然后利用设备树编译器生成 devicetreedtb 文件35  构建 Android 用户空间

首先借助 repo 工具下载得到 Android 系统源

码然后切换到 Android 系统源码目录下对 Android源码进行编译 在编译后的 Android 系统源码目录

下新建一个名为 Makefile Zynq 的文件将如下内

容写入到文件中OUT_DIR=out target product genericROOT_IMG= rootimgROOTFS= rootfsROOT_DIRS= lib modules tmp mediaPHONY dummy$ (ROOT_IMG) dummyrm -rf $ sudo rm -rf $ (ROOTFS)cp -r $ (OUT_DIR) root $ (ROOTFS)cp -r $ (OUT_DIR) system $ (ROOTFS)cd $ (ROOTFS) mkdir -p $ (ROOT_DIRS)sudo chown -R rootroot $ (ROOTFS)

sudo genext2fs -d $ (ROOTFS) -b $ $ ((80lowast1024))-m 0 -N $ $ ((64lowast1024)) $ (ROOT_IMG)

sudo chown $ (shell id -u) $ (shell id -g) $ (ROOT_IMG)

Phony target forces the rootfs image file to be rebuilt oneach make dummy

使用 make - f Makefile Zynq 命令生成 Android 文件系

统 生成的文件名为 rootimg文件大小为 80M 左右

36  ramdisk 修改

首先通过编译 BusyBox编译 Dropbear工具链

动态库与应用的设置目录的创建与配置和制作

ramdisk 镜像文件 ramdisk8Mimagegz 五步完成根文

件系统的制作 为使 Zynq-7000 平台在启动时能

加载 Android 系统文件还需修改 ramdisk 文件 将

文件解压并挂载到 ramdisk 目录下然后修改 ramdisk 目录下的 etc init d rcS 文件将如下内容添加

到 rcS 文件末尾echo Mounting SD card to mnt sdmkdir -p mnt sdmount dev mmcblk0p1 mnt sdecho ++ Starting startupsh script on SD cardif [ -f mnt sd startupsh ] then mnt sd startupshfi

分析上面的内容可以看出rcS 是 Linux 启动后

运行的一个脚本在 rcS 文件的最后去执行 startupsh 文件来加载 Android 系统的相关内容37  制作 startupsh 文件

startupsh 文件是用来挂载并配置 Android 系统

24                    

王洁等基于 Zynq 平台的 Android 操作系统移植

相关内容的脚本文件在 Linux 内核启动后开始执

行 新建 startupsh 文件将如下内容写入到 startupsh 文件

echo ++ Preparing for Androidmkdir mnt rootmount -o loop mnt sd rootimg mnt root mount -t proc proc mnt root procmount -t sysfs sys mnt root sysmount -t tmpfs tmp mnt root datamkdir -p mnt root tmp sdmount mnt sd mnt root tmp sdecho ++ Starting Androidchroot mnt root init

至此完成了 Android 系统在 Zynq-7000 平台

上的移植工作

4  Android 操作系统的板级实现

Android 系统启动需要 BOOT BIN devicetreedtbzImageroot imgramdisk8m image gz 和 startupsh 六个文件将这些文件拷贝到 Zynq-7000 平台自

带的 SD 卡中41  Zynq-7000 平台的配置

Android 系统在 Zynq-7000 平台上启动是从 SD卡启动并引导的 首先将 ZedBoard 板卡断电然后

将 SD 卡从电脑 SD 卡槽中取出并将其插入到 ZedBoard 的 SD 卡槽中 修改跳线设置通过 USB 电缆

将 ZedBoard 板的 J14 Mini USB 接口和用于当前设

计的计算机的一个 USB 接口连接 通过 HDMI 转

VGA 线连接 ZedBoard 上的 HDMI 接口和显示器上

的 VGA 接口 接着打开串口调试工具设置参数如

下波特率 115200数据位 8停止位 1无奇偶校验

位无硬件控制流 最后打开 ZedBoard 开发板电

源大约 15 秒后可以看到串口调试工具界面上显

示操作系统的启动过程42  Android 系统启动结果展示

通过 HDMI 连接显示器可以看到 Android 系

统启动过程 最后在显示器上会显示 Android 系统

启动后的界面如图 3 所示 测试结果表明移植的

Android 系统可以稳定的运行

5  结语

本文在 Zynq-7000 平台上移植了 Android 操作

系统结果表明所移植的 Android 系统功能完善通过在 Zynq 上移植操作系统可降低 PS 部分的开

发难度为高级语言程序员在 Zynq 上的应用开发提

图 3  Android 启动界面

供便利使得 Zynq-7000 开发平台的应用与开发更

加广泛

参考文献(References)

[1]   王莹 李健 万翀 引领 28nm FPGAldquo智rdquo造时代[ J] 电子产

品世界 2011 18(12)10-11

[2]   王莹 Xilinx 可扩展处理平台ZYNQ 嵌入式处理器与 FPGA

集成的独特创举[J] 电子产品世界 2012 19(2)27-32

[3]   陆佳华 江舟 马岷 嵌入式系统软硬件协同设计实战指南

[M]北京机械工业出版社 2013

[4]   赵爽怡 安卓在新一代数字电视芯片上的移植技术研究[D]

武汉华中科技大学 2013

[5]   苏锋 智能相机任重道远mdashmdashmdash两款安卓系统数码相机使用感

受[J] 微电脑世界 2013 29(1)126-127

[6]   魏爽 基于 Android 的嵌入式非线性结探测装置研究[D] 长

春吉林大学 2015

[7]   李晨 基于定制 Android 平台的呼吸机软件研究与实现[D]

南京东南大学 2016

[8]   Li D Bissyande T F Klein J et alUnderstanding Android AppPiggybacking A Systematic Study of Malicious Code Grafting[J]

IEEE Transactions on Information Forensics Security 2017 12

(6)1269-1284

[9]   Faruki P Bharmal A Laxmi V et al Android Security A Sur

vey of Issues Malware Penetration and Defenses[J] IEEE Com

munications Surveys Tutorials 2017 17(2)998-1022

[10]   Fang Z Han W Li Y Permission based Android security Is

sues and countermeasures[J] Computers Security 2014 43

(6)205-218

收稿日期2018-07-11修改日期2018-07-25作者简介王洁(1979-)男辽宁大连人博士副教授主

要研究方向为并行体系结构容错计算

34

Page 2: Android · Android 系统可以稳定的运行。5 结语 本文在Zynq-7000平台上移植了Android操作 系统,结果表明所移植的Android系统功能完善 。通过在Zynq上移植操作系统,可降低PS部分的开

王洁等基于 Zynq 平台的 Android 操作系统移植

mable Logic (PL)其资源和结构与 Xilinx 的 7 系列 FPGA 一样

图 1  Zynq-7000 体系结构图

2  Android 简介

Android 是 Google 公司和 Open Handset Alliance(开放手机联盟)为移动设备开发的一个操作系统Android 是基于 Linux 内核的开源的操作系统其包括了操作系统用户界面和应用程序三大部分Android 系统除了被应用于智能手机平板电脑外也可应用于数字电视[4 ]数码相机[5 ]探测器[6 ]医疗设备[7 ]等电子设备中 Android 是开源的意味着

降低了手机软件的开发成本和手机的价位因此

Android 操作系统受到了各大手机厂商和消费者的

青睐 同时由于第三方恶意软件的出现Android 系

统的安全问题也成为了研究的热点[8 - 10 ]

3  Android 操作系统移植

在这一节中将介绍如何在 Zynq-7000 平台上

搭建 Android 操作系统 本节分为七个部分来详细

叙述 Android 在 Zynq-7000 平台上的移植过程Android 移植环境搭建BootLoader 移植Linux 内核配

置和编译编译设备树构建 Android 用户空间ramdisk 修改和制作 startupsh 文件31  Android 系统移植环境搭建

Android 操作系统移植环境搭建是在 Linux 系

统下进行的本文使用的是 Ubuntu144 需要安装

交叉编译器在 Xilinx 官网上下载并安装 xilinx -201109-50-arm-xilinx-linux-gnueabi bin并通过

export CROSS_COMPILE=arm-xilin1x-linux- gnueabi 和 export PATH = < myPath > CodeSourcery Sourcery_CodeBench _Lite _ for _Xilinx _GNU_Linux

bin $ PATH 两条语句导入环境变量 由于 Android上层代码是用 JAVA 编写的所以在移植 Android 时

还需要 JAVA 的开发环境本文安装的是 JDK6 这

样 Android 移植需要的环境就搭建完成了

32  BootLoader 移植

u-boot 是当前比较流行并被广泛采用的一款

Bootloader 可以从 https github com Xilinx u -boot-xlnx 下载最新版本的 u-boot 源码 在使用交

叉编译器编译 u-boot 之前首先要通过执行 makeZynq_zed_config 命令对源码进行配置使之能够生

成支持 Xilinx BSP 的可执行文件 然后编译 u -boot将会在该路径的目录下生成一个名为 u-bootelf 的文件该文件用于生成 BOOTBIN 启动文件

33  Linux 内核配置和编译

本文使用的是 33 版本的 Linux 内核由 digilent 维护 源码可以从 https github com Digilent linux- 3 3 - digilent git 下载 通过执行 makeARCH=arm digilent_zed_defconfig 命令对 Linux 内核

源码进行配置使其能够支持 Xilinx 的 BSP 与驱

动 通过执行 make menuconfig 命令启动图形配置

界面来启用 Linux 内核中关于 Android 系统的功能图形界面如图 2 所示选择 Device Drivers 项回车进入设备驱动配置界面选择 Staging drivers 项按ldquoYrdquo使该功能可用然后回车进入平台驱动配置

界面 在平台驱动配置界面中选择 Android 项回车进入 Android 操作系统驱动配置界面通过按

ldquoYrdquo允许 Android 下的所有功能然后保存退出 至

14

此内核配置完成通过 make 命令编译内核生成 的内核镜像文件 zImage 在 arch arm boot 目录下

图 2  Linux 内核配置界面

34  编译设备树

可以在内核目录的 scripts dtc 路径下找到设备

树编译器 需要注意的是内核在编译时需要配置为

打开设备树编译器Zynq 的默认设备树源文件 digilent -zed dts 在

arch arm boot dts 目录下 在编译设备树源文件之

前要对 Zynq 的设备树进行如下修改bootargs = console = ttyPS0115200 root = dev ram rw

initrd= 0x8000008M earlyprintk rootfstype = ext4 rootwait devtmpfsmount = 0

然后利用设备树编译器生成 devicetreedtb 文件35  构建 Android 用户空间

首先借助 repo 工具下载得到 Android 系统源

码然后切换到 Android 系统源码目录下对 Android源码进行编译 在编译后的 Android 系统源码目录

下新建一个名为 Makefile Zynq 的文件将如下内

容写入到文件中OUT_DIR=out target product genericROOT_IMG= rootimgROOTFS= rootfsROOT_DIRS= lib modules tmp mediaPHONY dummy$ (ROOT_IMG) dummyrm -rf $ sudo rm -rf $ (ROOTFS)cp -r $ (OUT_DIR) root $ (ROOTFS)cp -r $ (OUT_DIR) system $ (ROOTFS)cd $ (ROOTFS) mkdir -p $ (ROOT_DIRS)sudo chown -R rootroot $ (ROOTFS)

sudo genext2fs -d $ (ROOTFS) -b $ $ ((80lowast1024))-m 0 -N $ $ ((64lowast1024)) $ (ROOT_IMG)

sudo chown $ (shell id -u) $ (shell id -g) $ (ROOT_IMG)

Phony target forces the rootfs image file to be rebuilt oneach make dummy

使用 make - f Makefile Zynq 命令生成 Android 文件系

统 生成的文件名为 rootimg文件大小为 80M 左右

36  ramdisk 修改

首先通过编译 BusyBox编译 Dropbear工具链

动态库与应用的设置目录的创建与配置和制作

ramdisk 镜像文件 ramdisk8Mimagegz 五步完成根文

件系统的制作 为使 Zynq-7000 平台在启动时能

加载 Android 系统文件还需修改 ramdisk 文件 将

文件解压并挂载到 ramdisk 目录下然后修改 ramdisk 目录下的 etc init d rcS 文件将如下内容添加

到 rcS 文件末尾echo Mounting SD card to mnt sdmkdir -p mnt sdmount dev mmcblk0p1 mnt sdecho ++ Starting startupsh script on SD cardif [ -f mnt sd startupsh ] then mnt sd startupshfi

分析上面的内容可以看出rcS 是 Linux 启动后

运行的一个脚本在 rcS 文件的最后去执行 startupsh 文件来加载 Android 系统的相关内容37  制作 startupsh 文件

startupsh 文件是用来挂载并配置 Android 系统

24                    

王洁等基于 Zynq 平台的 Android 操作系统移植

相关内容的脚本文件在 Linux 内核启动后开始执

行 新建 startupsh 文件将如下内容写入到 startupsh 文件

echo ++ Preparing for Androidmkdir mnt rootmount -o loop mnt sd rootimg mnt root mount -t proc proc mnt root procmount -t sysfs sys mnt root sysmount -t tmpfs tmp mnt root datamkdir -p mnt root tmp sdmount mnt sd mnt root tmp sdecho ++ Starting Androidchroot mnt root init

至此完成了 Android 系统在 Zynq-7000 平台

上的移植工作

4  Android 操作系统的板级实现

Android 系统启动需要 BOOT BIN devicetreedtbzImageroot imgramdisk8m image gz 和 startupsh 六个文件将这些文件拷贝到 Zynq-7000 平台自

带的 SD 卡中41  Zynq-7000 平台的配置

Android 系统在 Zynq-7000 平台上启动是从 SD卡启动并引导的 首先将 ZedBoard 板卡断电然后

将 SD 卡从电脑 SD 卡槽中取出并将其插入到 ZedBoard 的 SD 卡槽中 修改跳线设置通过 USB 电缆

将 ZedBoard 板的 J14 Mini USB 接口和用于当前设

计的计算机的一个 USB 接口连接 通过 HDMI 转

VGA 线连接 ZedBoard 上的 HDMI 接口和显示器上

的 VGA 接口 接着打开串口调试工具设置参数如

下波特率 115200数据位 8停止位 1无奇偶校验

位无硬件控制流 最后打开 ZedBoard 开发板电

源大约 15 秒后可以看到串口调试工具界面上显

示操作系统的启动过程42  Android 系统启动结果展示

通过 HDMI 连接显示器可以看到 Android 系

统启动过程 最后在显示器上会显示 Android 系统

启动后的界面如图 3 所示 测试结果表明移植的

Android 系统可以稳定的运行

5  结语

本文在 Zynq-7000 平台上移植了 Android 操作

系统结果表明所移植的 Android 系统功能完善通过在 Zynq 上移植操作系统可降低 PS 部分的开

发难度为高级语言程序员在 Zynq 上的应用开发提

图 3  Android 启动界面

供便利使得 Zynq-7000 开发平台的应用与开发更

加广泛

参考文献(References)

[1]   王莹 李健 万翀 引领 28nm FPGAldquo智rdquo造时代[ J] 电子产

品世界 2011 18(12)10-11

[2]   王莹 Xilinx 可扩展处理平台ZYNQ 嵌入式处理器与 FPGA

集成的独特创举[J] 电子产品世界 2012 19(2)27-32

[3]   陆佳华 江舟 马岷 嵌入式系统软硬件协同设计实战指南

[M]北京机械工业出版社 2013

[4]   赵爽怡 安卓在新一代数字电视芯片上的移植技术研究[D]

武汉华中科技大学 2013

[5]   苏锋 智能相机任重道远mdashmdashmdash两款安卓系统数码相机使用感

受[J] 微电脑世界 2013 29(1)126-127

[6]   魏爽 基于 Android 的嵌入式非线性结探测装置研究[D] 长

春吉林大学 2015

[7]   李晨 基于定制 Android 平台的呼吸机软件研究与实现[D]

南京东南大学 2016

[8]   Li D Bissyande T F Klein J et alUnderstanding Android AppPiggybacking A Systematic Study of Malicious Code Grafting[J]

IEEE Transactions on Information Forensics Security 2017 12

(6)1269-1284

[9]   Faruki P Bharmal A Laxmi V et al Android Security A Sur

vey of Issues Malware Penetration and Defenses[J] IEEE Com

munications Surveys Tutorials 2017 17(2)998-1022

[10]   Fang Z Han W Li Y Permission based Android security Is

sues and countermeasures[J] Computers Security 2014 43

(6)205-218

收稿日期2018-07-11修改日期2018-07-25作者简介王洁(1979-)男辽宁大连人博士副教授主

要研究方向为并行体系结构容错计算

34

Page 3: Android · Android 系统可以稳定的运行。5 结语 本文在Zynq-7000平台上移植了Android操作 系统,结果表明所移植的Android系统功能完善 。通过在Zynq上移植操作系统,可降低PS部分的开

此内核配置完成通过 make 命令编译内核生成 的内核镜像文件 zImage 在 arch arm boot 目录下

图 2  Linux 内核配置界面

34  编译设备树

可以在内核目录的 scripts dtc 路径下找到设备

树编译器 需要注意的是内核在编译时需要配置为

打开设备树编译器Zynq 的默认设备树源文件 digilent -zed dts 在

arch arm boot dts 目录下 在编译设备树源文件之

前要对 Zynq 的设备树进行如下修改bootargs = console = ttyPS0115200 root = dev ram rw

initrd= 0x8000008M earlyprintk rootfstype = ext4 rootwait devtmpfsmount = 0

然后利用设备树编译器生成 devicetreedtb 文件35  构建 Android 用户空间

首先借助 repo 工具下载得到 Android 系统源

码然后切换到 Android 系统源码目录下对 Android源码进行编译 在编译后的 Android 系统源码目录

下新建一个名为 Makefile Zynq 的文件将如下内

容写入到文件中OUT_DIR=out target product genericROOT_IMG= rootimgROOTFS= rootfsROOT_DIRS= lib modules tmp mediaPHONY dummy$ (ROOT_IMG) dummyrm -rf $ sudo rm -rf $ (ROOTFS)cp -r $ (OUT_DIR) root $ (ROOTFS)cp -r $ (OUT_DIR) system $ (ROOTFS)cd $ (ROOTFS) mkdir -p $ (ROOT_DIRS)sudo chown -R rootroot $ (ROOTFS)

sudo genext2fs -d $ (ROOTFS) -b $ $ ((80lowast1024))-m 0 -N $ $ ((64lowast1024)) $ (ROOT_IMG)

sudo chown $ (shell id -u) $ (shell id -g) $ (ROOT_IMG)

Phony target forces the rootfs image file to be rebuilt oneach make dummy

使用 make - f Makefile Zynq 命令生成 Android 文件系

统 生成的文件名为 rootimg文件大小为 80M 左右

36  ramdisk 修改

首先通过编译 BusyBox编译 Dropbear工具链

动态库与应用的设置目录的创建与配置和制作

ramdisk 镜像文件 ramdisk8Mimagegz 五步完成根文

件系统的制作 为使 Zynq-7000 平台在启动时能

加载 Android 系统文件还需修改 ramdisk 文件 将

文件解压并挂载到 ramdisk 目录下然后修改 ramdisk 目录下的 etc init d rcS 文件将如下内容添加

到 rcS 文件末尾echo Mounting SD card to mnt sdmkdir -p mnt sdmount dev mmcblk0p1 mnt sdecho ++ Starting startupsh script on SD cardif [ -f mnt sd startupsh ] then mnt sd startupshfi

分析上面的内容可以看出rcS 是 Linux 启动后

运行的一个脚本在 rcS 文件的最后去执行 startupsh 文件来加载 Android 系统的相关内容37  制作 startupsh 文件

startupsh 文件是用来挂载并配置 Android 系统

24                    

王洁等基于 Zynq 平台的 Android 操作系统移植

相关内容的脚本文件在 Linux 内核启动后开始执

行 新建 startupsh 文件将如下内容写入到 startupsh 文件

echo ++ Preparing for Androidmkdir mnt rootmount -o loop mnt sd rootimg mnt root mount -t proc proc mnt root procmount -t sysfs sys mnt root sysmount -t tmpfs tmp mnt root datamkdir -p mnt root tmp sdmount mnt sd mnt root tmp sdecho ++ Starting Androidchroot mnt root init

至此完成了 Android 系统在 Zynq-7000 平台

上的移植工作

4  Android 操作系统的板级实现

Android 系统启动需要 BOOT BIN devicetreedtbzImageroot imgramdisk8m image gz 和 startupsh 六个文件将这些文件拷贝到 Zynq-7000 平台自

带的 SD 卡中41  Zynq-7000 平台的配置

Android 系统在 Zynq-7000 平台上启动是从 SD卡启动并引导的 首先将 ZedBoard 板卡断电然后

将 SD 卡从电脑 SD 卡槽中取出并将其插入到 ZedBoard 的 SD 卡槽中 修改跳线设置通过 USB 电缆

将 ZedBoard 板的 J14 Mini USB 接口和用于当前设

计的计算机的一个 USB 接口连接 通过 HDMI 转

VGA 线连接 ZedBoard 上的 HDMI 接口和显示器上

的 VGA 接口 接着打开串口调试工具设置参数如

下波特率 115200数据位 8停止位 1无奇偶校验

位无硬件控制流 最后打开 ZedBoard 开发板电

源大约 15 秒后可以看到串口调试工具界面上显

示操作系统的启动过程42  Android 系统启动结果展示

通过 HDMI 连接显示器可以看到 Android 系

统启动过程 最后在显示器上会显示 Android 系统

启动后的界面如图 3 所示 测试结果表明移植的

Android 系统可以稳定的运行

5  结语

本文在 Zynq-7000 平台上移植了 Android 操作

系统结果表明所移植的 Android 系统功能完善通过在 Zynq 上移植操作系统可降低 PS 部分的开

发难度为高级语言程序员在 Zynq 上的应用开发提

图 3  Android 启动界面

供便利使得 Zynq-7000 开发平台的应用与开发更

加广泛

参考文献(References)

[1]   王莹 李健 万翀 引领 28nm FPGAldquo智rdquo造时代[ J] 电子产

品世界 2011 18(12)10-11

[2]   王莹 Xilinx 可扩展处理平台ZYNQ 嵌入式处理器与 FPGA

集成的独特创举[J] 电子产品世界 2012 19(2)27-32

[3]   陆佳华 江舟 马岷 嵌入式系统软硬件协同设计实战指南

[M]北京机械工业出版社 2013

[4]   赵爽怡 安卓在新一代数字电视芯片上的移植技术研究[D]

武汉华中科技大学 2013

[5]   苏锋 智能相机任重道远mdashmdashmdash两款安卓系统数码相机使用感

受[J] 微电脑世界 2013 29(1)126-127

[6]   魏爽 基于 Android 的嵌入式非线性结探测装置研究[D] 长

春吉林大学 2015

[7]   李晨 基于定制 Android 平台的呼吸机软件研究与实现[D]

南京东南大学 2016

[8]   Li D Bissyande T F Klein J et alUnderstanding Android AppPiggybacking A Systematic Study of Malicious Code Grafting[J]

IEEE Transactions on Information Forensics Security 2017 12

(6)1269-1284

[9]   Faruki P Bharmal A Laxmi V et al Android Security A Sur

vey of Issues Malware Penetration and Defenses[J] IEEE Com

munications Surveys Tutorials 2017 17(2)998-1022

[10]   Fang Z Han W Li Y Permission based Android security Is

sues and countermeasures[J] Computers Security 2014 43

(6)205-218

收稿日期2018-07-11修改日期2018-07-25作者简介王洁(1979-)男辽宁大连人博士副教授主

要研究方向为并行体系结构容错计算

34

Page 4: Android · Android 系统可以稳定的运行。5 结语 本文在Zynq-7000平台上移植了Android操作 系统,结果表明所移植的Android系统功能完善 。通过在Zynq上移植操作系统,可降低PS部分的开

王洁等基于 Zynq 平台的 Android 操作系统移植

相关内容的脚本文件在 Linux 内核启动后开始执

行 新建 startupsh 文件将如下内容写入到 startupsh 文件

echo ++ Preparing for Androidmkdir mnt rootmount -o loop mnt sd rootimg mnt root mount -t proc proc mnt root procmount -t sysfs sys mnt root sysmount -t tmpfs tmp mnt root datamkdir -p mnt root tmp sdmount mnt sd mnt root tmp sdecho ++ Starting Androidchroot mnt root init

至此完成了 Android 系统在 Zynq-7000 平台

上的移植工作

4  Android 操作系统的板级实现

Android 系统启动需要 BOOT BIN devicetreedtbzImageroot imgramdisk8m image gz 和 startupsh 六个文件将这些文件拷贝到 Zynq-7000 平台自

带的 SD 卡中41  Zynq-7000 平台的配置

Android 系统在 Zynq-7000 平台上启动是从 SD卡启动并引导的 首先将 ZedBoard 板卡断电然后

将 SD 卡从电脑 SD 卡槽中取出并将其插入到 ZedBoard 的 SD 卡槽中 修改跳线设置通过 USB 电缆

将 ZedBoard 板的 J14 Mini USB 接口和用于当前设

计的计算机的一个 USB 接口连接 通过 HDMI 转

VGA 线连接 ZedBoard 上的 HDMI 接口和显示器上

的 VGA 接口 接着打开串口调试工具设置参数如

下波特率 115200数据位 8停止位 1无奇偶校验

位无硬件控制流 最后打开 ZedBoard 开发板电

源大约 15 秒后可以看到串口调试工具界面上显

示操作系统的启动过程42  Android 系统启动结果展示

通过 HDMI 连接显示器可以看到 Android 系

统启动过程 最后在显示器上会显示 Android 系统

启动后的界面如图 3 所示 测试结果表明移植的

Android 系统可以稳定的运行

5  结语

本文在 Zynq-7000 平台上移植了 Android 操作

系统结果表明所移植的 Android 系统功能完善通过在 Zynq 上移植操作系统可降低 PS 部分的开

发难度为高级语言程序员在 Zynq 上的应用开发提

图 3  Android 启动界面

供便利使得 Zynq-7000 开发平台的应用与开发更

加广泛

参考文献(References)

[1]   王莹 李健 万翀 引领 28nm FPGAldquo智rdquo造时代[ J] 电子产

品世界 2011 18(12)10-11

[2]   王莹 Xilinx 可扩展处理平台ZYNQ 嵌入式处理器与 FPGA

集成的独特创举[J] 电子产品世界 2012 19(2)27-32

[3]   陆佳华 江舟 马岷 嵌入式系统软硬件协同设计实战指南

[M]北京机械工业出版社 2013

[4]   赵爽怡 安卓在新一代数字电视芯片上的移植技术研究[D]

武汉华中科技大学 2013

[5]   苏锋 智能相机任重道远mdashmdashmdash两款安卓系统数码相机使用感

受[J] 微电脑世界 2013 29(1)126-127

[6]   魏爽 基于 Android 的嵌入式非线性结探测装置研究[D] 长

春吉林大学 2015

[7]   李晨 基于定制 Android 平台的呼吸机软件研究与实现[D]

南京东南大学 2016

[8]   Li D Bissyande T F Klein J et alUnderstanding Android AppPiggybacking A Systematic Study of Malicious Code Grafting[J]

IEEE Transactions on Information Forensics Security 2017 12

(6)1269-1284

[9]   Faruki P Bharmal A Laxmi V et al Android Security A Sur

vey of Issues Malware Penetration and Defenses[J] IEEE Com

munications Surveys Tutorials 2017 17(2)998-1022

[10]   Fang Z Han W Li Y Permission based Android security Is

sues and countermeasures[J] Computers Security 2014 43

(6)205-218

收稿日期2018-07-11修改日期2018-07-25作者简介王洁(1979-)男辽宁大连人博士副教授主

要研究方向为并行体系结构容错计算

34