版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 10嵌入式系统工程报告工程名称:基于DM3730 的Android 系统Logo 移植工程开发目的本次工程争辩和开发的主要目的如下:DM3730Android系统的启动过程及其主要流程;Androidinit进程深入理解。移植 Android 系统启动过程中的 Logo 和相关动画;Android发的应用程序。工程开发内容本次工程需要完成的主要内容有如下几点:AndroidAndroid系统的软件开发环境的搭建;EVM37xAndroid系统的硬件开发环境;Androidinitinit.rc文件简洁解析;Android 系统启动的动画和 Logo 的修改;Android 系统桌面源码的修改
2、,实现直接调入自己的应用程序。工程开发软硬件设备EVM板操作系统:Android ICS4.0.3PC 端的开发平台:Ubuntu11.04IDE :TICCS5.1工程开发流程工程开发前期预备Android源码下载和编译AndroidAndroid 开发所需的插件,编译时所需的minicom终端等。sudo add-apt-repository “deb sudo add-apt-repository “deb HYPERLINK “ :/archive.canonical /“ :/archive.canonical / lucid partner“ sudo add-apt-reposi
3、tory “deb-src HYPERLINK “ :/archive.canonical /ubuntu“ :/archive.canonical /ubuntu lucidpartner“sudo apt-get updatesudo apt-get install git-core gnupg sun-java6-jdk flex bison gperf libsdl-devlibesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-devzlib1g-dev minicom tftpd uboot-mkimage e
4、xpectsudo update-java-alternatives -s java-6-sunrepo init -u git:/rowboat/manifest.git -m initrepo init -u git:/rowboat/manifest.git -m init -u git:/rowboat/manifest.git -m TI-Android-ICS-4.0.3-DevKit-3.0.0.xmlrepo sync./.repo/repo/repo synclocal-onlyAndroidx-loadeu-booLinux KernelexportPATH=source/
5、prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin:$PATHexportPATH=source/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin:$PATHx-loader编译:make CROSS_COMPILE=arm-eabi- distcleanmake CROSS_COMPILE=arm-eabi- distcleanmake CROSS_COMPILE=arm-eabi- omap3evm_configmake CROSS_COMPILE=arm-eabi-make CROSS_COMPIL
6、E=arm-eabi- distcleanmake CROSS_COMPILE=arm-eabi- omap3_evm_configmake CROSS_COMPILE=arm-eabi-make CROSS_COMPILE=arm-eabi- distcleanmake CROSS_COMPILE=arm-eabi- omap3_evm_configmake CROSS_COMPILE=arm-eabi-make ARCH=arm CROSS_COMPILE=arm-eabi- distcleanmake ARCH=armCROSS_COMPILE=arm-eabi-omap3_evm_an
7、droid_defconfigmake ARCH=arm CROSS_COMPILE=arm-eabi- distcleanmake ARCH=armCROSS_COMPILE=arm-eabi-omap3_evm_android_defconfigmake TARGET_PRODUCT=omap3evm OMAPES=5.x -j8Android文件系统编译:make TARGET_PRODUCT=omap3evm OMAPES=5.x -j8 PC 机的要求较高。cd /home/gzz/DM3730/source/out/target/product/omap3evmcp -r root
8、/* android_rootfs/cp -r system android_rootfscd /home/gzz/DM3730/source/out/target/product/omap3evmcp -r root/* android_rootfs/cp -r system android_rootfs././././build/tools/mktarball.shandroid_rootfs . rootfs rootfs.tar.bz2到此为止,整个 Android 系统的各个局部都编译和制作完成。EVM板硬件环境的搭建Android 系统xloader、u-boot、Linux ke
9、rnel tftp 协议下载到LinuxNandFlash 上去。使用如下命令进展镜像文件的烧录:OMAP3_EVMOMAP3_EVM# tftp 0 x80000000 MLOOMAP3_EVM # nand erase 0 x0 0 x50000OMAP3_EVM #nandecc hw 2OMAP3_EVM# nand write 0 x80000000 0 x0 0 x50000为后续工程的顺当进展打下了良好的根底。Androidinitinit.rc文件的解析Android 中的内核启动后,kernel init,已经被载入内存,开头之后,就通过启动一个用户级别的进程,完成系统的引导
10、。init 始终是第一个进程,位于/sbin/initinit.rc是 initAndroidAndroid 应用程序最初始化的配置。由于它与 Android 有必要先对其进展理解和生疏。分析 init 进程需要结合 init.rc 进展,在这里主要通过分析局部代码,做合理的解释。Init Android system/core/init/init.c 下面,由于代码过于浩大这里不在粘贴。1. uevent 进程if (!strcmp(basename(argv0), “ueventd“)return ueventd_main(argc, argv);argv 中的第一个参数,比方/sbin/
11、ueventd,则basename 为ueventd。android 系统第一次启动的进程名init,所以该函数ueventd_main 不执行,该init 启动service ueventd /sbin/ueventd 后,fork 出一个子进程, execve 启动/sbin/ueventd 后,实际上该函数是对init 的符合链接,也就是ueventd 进程执行起来后执行的代码还是init.c中的maimain函数。ueventd_main Linuxuevent 机制来治理设备的 热插拔大事,给用户空间权利来完成一些设备文件节点的创立。这种机制是建立socket 的通信机制上,用户空间
12、和内核驱动进展交互,具体的机制没有去了解过。linux2.6 device_create 等时,会向用户空间报uevent 大事,用户空间由uevent 进程解析后去创立设备节点。2.init.rc 的解析INFO(“reading config filen“); init_parse_config_file(“/init.rc“);init.rc init_parse_config_file中进展解析。调用流程如下 init_parse_config_fileread_fileparse_config.parse_config源代码略。通过对这个文件的解析,会启动 Android 的应用程序
13、,使得 Android 进Java的世界。AndroidLogo 和动画移植3 Linux 内核在启 Linux Logo 图标的Android init 用户进程启动会调用函数完成一个图片的显示。三是 Android 系统中 Java bootanimation。Android启动第一个 Logo 图标移植Android 系统是基于 Linux 内核设计而成的, Linux Framebuffer)的概念来表示一个显示接口,通俗理解就表示一块 LCD。帧fbmem_init,在该函数中主要完成使用register_chrdev来注册了一个名称为fbclass_create在/sys/clas
14、sgraphics名目等。同样的驱动加载中会调用硬LCDomapfb_init。这个函数会针对对个 fb,完成相关节点的创立在 /dev/graphics/fb0,fb1. fb_notifier_call_chain,函数通知fbconsoe理解为把握台fbconsole来把握。而 Logo 的显示启动,就是在 fbcon_init 和 fbcon_switch 中来完成的。在fbcon_init fbcon_prepare_logo Logo 数据源,在Logo。本工程中需要将一张Jpg的图片作为Logo样式的图标显示在LCD上面。实现的步骤如下:为了能让这局部的 Logo 图标能够正常显
15、示,需要在编译时对.config文件添加肯定的配置:CONFIG_FRAMEBUFFER_CONSOLECONFIG_FRAMEBUFFER_CONSOLE CONFIG_LOGOCONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARYLogo图标的函数不会执行相关的操作。2.jpg图标的格式转换。Linux 启动图标格式不直接支持 jpg 格式,主要支持 ppmpbm 格式的图像文件,因此需要先将图像进展适当的转换: 2使用终端命令完成 convert xxx.jpg xxx.png png 格式# pngtopnm xxx.png xxx.pnm# pnmquan
16、t 224 xxx.pnm xxx224.pnm最终生成一张 xxxx224.pnm 格式的图像文件。Linux内核的源码,具体的操作如下进展:添加如下内容:obj-$(CONFIG_LOGO_ICS_CLUT224)+=logo_ics_clut224.添加如下内容:#ifdef CONFIG_LOGO_ICS_CLUT224logo = &logo_ics_clut224;/gzz printk(“depth=%d,logo=logo_ics_clut224n“,depth);/by gzz#endif修改局部代码让图片显示在 LCD 在正中间Logo 图标的完全显示。image.dx =
17、 0;image.dy=y;image.dx = (info-var.xres/2) -(logo-width/2); image.dy = (info-var.yres/2) -(logo-height/2); /by gzzimage.width = logo-width;/140image.height = logo-height;/153imageLogo这个坐标上。这里可以通过修改这间。a,b.cLogo图像显示在自己的 LCD 上,给出一个良好的用户效果。Android启动其次个图标移植其次个图标的显示主要和init进程有关系。在init进程中会有一个析如下:static int
18、console_init_action(int nargs, char *args)int fd;char tmpPROP_VALUE_MAX;if (console0) snprintf(tmp, sizeof(tmp), “/dev/%s“, console);console_name = strdup(tmp);fd = open(console_name, O_RDWR);if (fd = 0)have_console = 1;close(fd);if( load_565rle_image(INIT_IMAGE_FILE) ) fd = open(“/dev/tty0“, O_WRON
19、LY);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);return 0;在文件/proc/cmdline 中。假设觉察内核的启动参数中包含有了一个名称为“androidboot.console”console 中。这样我们就可以通过设备文件/dev/来访问系统的把握台。假设内核的启动参数没有包含名称为“androidboot.console”的属性
20、,那么默认就通过设备文件/dev/console或者/dev/console,那么就说明系统支持访问把握台,have_console1。显示其次个开机画面。显示其次个开机画面是通过调用函数 system/core/init/init.h文件中,如下所示:#define INIT_IMAGE_FILE “/initlogo.rle“565rle 的。rle 4 个字节来描述一个连续的具有一样颜色值的序列。在rle565格式,前面 2 个字节用来描述一个具体的颜色,RGB5 位、6 5 位。initlogo.rle文件。预备一张png 格式的文件,使用Ubuntu 自带的图片转换工具执行如下命令:
21、convert -depth 8 android_logo.png rgb:android_logo.rawrgb2565android/out/host/linux-x86/bin 名目下(android为当前源码所在名目),转换命令如下:rgb2565-rleandroid_logo.rawinitlogo.rle。通过以上步骤就完成了代码的移植和图片的制作,最终只需要将Android的文件系统下面,重启动就可以看到图片的正常显示。Android启动第三个动画移植考虑到第三个启动的动画位于Android的Java因此只写如何替换启动动画来实现我们预期的效果。第三个开机画面是由应用程序 bo
22、otanimation 来负责显示的。应用程序bootanimationinit.rc中被配置成了一个效劳,如下所示:.service bootanim /system/bin/bootanimationuser graphicsgroup graphicsdisabledoneshotgraphics。注disableinit进程在启bootanimation SurfaceFlingerctl.startinit进程启动应ActivityManagerService ctl.stop init进程停顿Android bootanimation.zip 文件。内容包括 png 格式文件,desc.txt里面是播放信息设置,其内容和格式如下:480 720 15p 1 0 part1p 0 0 part2 800 是指显示的区分率宽和高,15 是图像播放的帧数。p 后面的数字分别指播放次数 0 和播放时间。Android系统启动时会文件系统如下名目查找: #defineUSER_BOOTANIMATION_FILE
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小学体育工作年度报告
- 计算机网络试题及答案
- 发展经济与改善生活课件图文
- 二零二五年企业兼职项目管理师合同3篇
- 2024年浙江艺术职业学院高职单招职业适应性测试历年参考题库含答案解析
- 2024年浙江纺织服装职业技术学院高职单招职业适应性测试历年参考题库含答案解析
- 中国石拱桥二章节时教材课程
- 2024年陕西省公路局职工医院高层次卫技人才招聘笔试历年参考题库频考点附带答案
- 人教版二年级下册寓言两则
- 语言文字运用之图文转换
- 广东省广州越秀区2023-2024学年八年级上学期期末数学试卷(含答案)
- 临床经鼻高流量湿化氧疗患者护理查房
- 2024年贵州省中考数学真题含解析
- 2020年度全国煤矿安全事故统计
- DB2308T 220-2024陆基圆池(桶)+池塘循环水养殖技术规程
- 《中医内科学关格》课件
- 2024年中国PCB板清洗剂市场调查研究报告
- 《纸管》规范要求
- 【数学】2021-2024年新高考数学真题考点分布汇
- 2024年育婴师合同协议书
- 2024年湖南省公务员录用考试《行测》真题及答案解析
评论
0/150
提交评论