• 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

     

     

  • 相关阅读:
    转:windows通过VNC访问远程ubuntu14.04 【 server】服务器
    【转】研究了代码质量后,开发速度提高了2倍,bug减少了15倍
    【转】PuTTY的ppk密钥与OpenSSH密钥之间的相互转换
    【转】outlook配置腾讯企业邮箱(腾讯企业邮箱imap服务器地址)
    【转】YApi结合swag管理和生成go项目restful API文档
    [转] 超高效!SwaggerYapi的秘密
    【转】SSH 远程登录很慢的解决方法
    [转]go语言io reader_如何从io.Reader 中读数据
    eslint 支持多个三目表达式
    33
  • 原文地址:https://www.cnblogs.com/titer1/p/2138606.html
Copyright © 2020-2023  润新知