zoukankan      html  css  js  c++  java
  • android 移植笔记有感

    type:文字博文

    topic:Android 应用程序开发经验

    contest logo:第二届 Google 暑期大学生博客分享大赛 - 2011 Android 成长篇

      2011-08-15_001517

    一.android 基础篇:

          1.配置Android编译环境

          Version:android froyo (2.2)   

          i.安装编译工具

               sudo apt-get install git-core gnupg sun-java5-jdk flex bison gperf libsdl-dev libesd0-dev              libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev

          ii.~/.bashrc添加以下环境变量,然后使用source ~/.bashrc生效

               #java 程序开发/运行的一些环境变量

               JAVA_HOME=/usr/lib/jvm/java-6-sun

               JRE_HOME=${JAVA_HOME}/jre

               export ANDROID_JAVA_HOME=$JAVA_HOME

               export CLASSPATH=.:JRE_HOME/lib:$CLASSPATH

               export JAVA_PATH={JRE_HOME}/bin

               export JAVA_HOME;

               export JRE_HOME;

               export CLASSPATH;

               HOME_BIN=~/bin/

               export PATH={JAVA_PATH}:${HOME_BIN};

          iii.执行./build/envsetup.sh,安装环境变量

          iv.编译.根据场景不同,具体有以下命令.

          make ;//双核电脑加入-j2可以加快速度

          mm     ;//仅编译模块.

               :成功编译标志,如下

               Install system fs image: out/target/product/generic/system.img

               Target ram disk: out/target/product/generic/ramdisk.img

               Target userdata fs image: out/target/product/generic/userdata.img

               Installed file list: out/target/product/generic/installed-files.txt

         

        2.配置Uboot烧写环境

          i.配置minicom串口:

          分别设置端口为ttyS0,波特率115200,无硬件数据流控制;

          PS:串口的检测:

               shell echo " ">/dev/ttyS0 ;//如果正常会显,说明串口0工作正常。

     

          ii.设置网络参数并检验.

          进入minicom后,为保证nfs畅通,设置以下参数ip,serverip

          检验方法:

          ping serverip ;//返回alive就成功配置

        

          iii.设置bootargs,此乃传递给内核的参数

          样例:

          set bootargs console=ttyAS0,115200 nwhwconf=device:eth0,hwaddr:${ethaddr} stmmaceth=msglvl:0,watchdog:5000 ide0=noprobe nfsroot=${serverip}:/opt/STM/STLinux-2.4/devkit/sh4/target/root ,nfsvers=2,rsize=4096,wsize=8192,tcp root=/dev/nfs ip=${ipaddr}:${serverip}:192.168.1.1:255.255.255.0::eth0:off bigphysarea=2000\; &&saveenv

          扩展:

               为了支持android fs,要修改ntfroot

               为了自启动init,要添加init=/init

                为了让framebuffer工作,添加 video=vfb: 

         

          iv.烧写uboot

          run uboot;//

         

          v.烧写kernel

          run kernel;//成功的烧写可以引导进入fs,否则就是kernel panic等错误

     

        3.搭建网络文件系统

          首先在pc端要启动服务,

          i./etc/export添加nfs目录:

          如:/opt/STM/STLinux-2.4/devkit/sh4/target *(rw,sync,no_root_squash)

          ii.在超级用户下,重启以下服务:

          service portmap restart

          service nfs-kernel-server restart

          iii.检验:输入以下命令showmount -e

              检验效果:

                     Export list for root:

                             /opt/STM/STLinux-2.4/devkit/sh4/target                 

          二.android 移植(持续中)

    Android-tools

          1.关于 android init程序的调试

          其实这个可以归结为android native c的调试。

          Androidinit进程调试为例,

          i.拷贝可执行文件:修改后的init放到root下面

          ii.拷贝代码 :文件夹system/core/init

          iii.开启机器,进入android shell

          键入gdb init;

          PS:调试过程中请关注2个数据结构,

               service_list,action_list;init过程中最先执行的是sevice console.

     

          附注:直接将代码放到nfsroot下面,省去假设gdbserver

               由于gcc对代码进行优化,所以会乱序执行,所以设置断点后请键入"step",小心调试。

               如果要让gcc不对代码进行优化,请找到build/core/combo/target-linux-sh.mk

               修改编译标志为o0

     

     

  • 相关阅读:
    Android——继续深造——从安装Android Studio 2.0开始(详)
    PHP——安装wampserver丢失MSVCR110.dll
    Marza Gift for GDC 2016
    Retrieve OpenGL Context from Qt 5.5 on OSX
    Space Time Varying Color Palette
    Screen Space Depth Varying Glow based on Heat Diffusion
    Visualization of Detail Point Set by Local Algebraic Sphere Fitting
    Glass Dragon
    Jump Flood Algorithms for Centroidal Voronoi Tessellation
    京都之行
  • 原文地址:https://www.cnblogs.com/titer1/p/2138606.html
Copyright © 2011-2022 走看看