环境介绍:

    1. Ubuntu 10.10,作为Android编译环境同时作为NFS让6410开发板挂载作为根文件系统。

    2. Android使用的是友善给的源码,使用./build-android命令编译出来,使用./genrootfs.sh命令在主源码主目录下生成rootfs,删除掉data/app下的安装包(不删除也可以)

   3. 将rootfs里的文件系统拷贝到NFS挂载目录下,我的NFS目录是/work/nfs_root,安装并开启NFS,通过exportfs命令测试是否将NFS共享。

   4. 修改uboot中的kernel启动参数为:

setenv bootargs noinitrd  init=/linuxrc root=/dev/nfs nfsroot=192.168.11.11:/work/nfs_root ip=192.168.11.13:192.168.11.11:192.168.11.1:255.255.255.0:www.android.com:eth0:off console=ttySAC0,115200

   开发板使用192.168.11.13地址,NFS主机使用192.168.11.11地址。注意:每次开发板重启都要重新设置下IP,因为ubuntu会自动更新IP地址。

 1. 在进行ril移植之前建议先了解下RIL的框架,推荐下面的文章:http://www.linuxidc.com/Linux/2011-09/42024.htm

2. 主要修改的是hardware/ril/reference-ril/reference-ril.c文件其它文件基本上不用修改,因为gooooogle已经将框架封装好了。

   将mainLoop函数中的2043行进行修改:

if ( fd >= 0 && !memcmp( s_device_path, "/dev/ttyS", 9 ) ) {
                    /* disable echo on serial ports */
                    struct termios  ios;
                    tcgetattr( fd, &ios );
                    ios.c_lflag = 0;  /* disable ECHO, ICANON, etc... */
                    tcsetattr( fd, TCSANOW, &ios );
 }

修改之后:

if ( fd >= 0 && !memcmp( s_device_path, "/dev/s3c2410_serial1", 20 ) ) {
                    /* disable echo on serial ports */
                    struct termios  ios;

                    bzero(&ios, sizeof(ios));
                    tcgetattr( fd, &ios );

                    ios.c_iflag |=

                    ios.c_cflag |= CLOCAL | CREAD | CS8;   // 用于本地连接和接收使能数据位长度

                    ios.c_iflag |= IGNPAR;

                    cfsetispeed(&ios, B115200);           //设置波特率

                    cfsetospeed(&ios, B115200);

                    ios.c_lflag = 0;  /* disable ECHO, ICANON, etc... */

                    tcflush(fd, TCIFLUSH);
                    tcsetattr( fd, TCSANOW, &ios );
 }

3.  修改initializeCallback函数中AT命令(建议参照google提供的命令和SIM300模块给的AT命令参考文档)

修改完之后,重新编译Android源码,将新生成的libreference-ril.so拷贝到NFS根目录下,重启开发板即可打电话,接电话。 

扩展:如果使用的FriendlyArm提供的源码,那你看不到状态栏的电话信号图标和电池图标,这是因为FriendlyArm已经将其注释掉了,请将frameworks/base/packages/systemui/src/com/android/systemui/statusbar/StatusBarPolicy.java文件里的注释支持即可。

更多相关文章

  1. Android(安卓)使用Settings 数据库demo(源码)以及adb 读写settings
  2. 如何去写Android(安卓)init.rc
  3. Android(安卓)Eclipse导入源码时对自己新增的class文件提示"XXX
  4. android 瀑布流的实现详解,附源码
  5. Android(安卓)数据库操作 以及命令行上操作sqlite
  6. Android的消息处理机制(从源码分析)
  7. 探究 Android(安卓)View 绘制流程,Activity 的 View 如何展示到屏
  8. Android(安卓)2.2 源码结构分析
  9. 源码分析Android(安卓)应用进程的启动过程

随机推荐

  1. spring feign
  2. Android(安卓)MVVM的沉思
  3. android使用adhoc共享上网
  4. android 关于资源找不到的问题
  5. Android中用Handle做定时器,显示实时时间
  6. Android(安卓)获取View高度的4种方法
  7. Firefox mobile (android) and orientati
  8. android 利用pull解析xml数据
  9. TabLayout 遇到那些坑
  10. (Android) ContentProvider 实例