Android培训班(19)

在init初始化进程里,设备初始化是怎么进行的呢?如果要了解这方面,就需要仔细分析下面的代码,如下:#001  int device_init(void)#002  {#003      suseconds_t t0, t1;#004      int fd;#005  #006      fd = open_uevent_socket();#007      if(fd < 0)#008...
阅读(2585) 评论(0)

Android培训班(18)

通上面的函数就可以把服务和事件触发的命令添加队列里。其实是在文件parser.c头部,就声明了下面三个链表,如下: static list_declare(service_list);static list_declare(action_list);static list_declare(action_queue); service_list是定义添加分析所有资源文件里的服务,action_list是定义添...
阅读(3689) 评论(1)

Android培训班(17)

在上面函数主要识别的关键字有:copy capability chdir chroot class class_start class_stop console chown chmod critical disabled domainname device exec export group hostname ifup insmod import keycodes loglevel mkdir mount on oneshot onrestart res...
阅读(2646) 评论(0)

Android培训班(16)

parse_config_file函数是分析*.rc配置文件,并且把里面的参数组成链表的方式。下面来仔细地分析代码,如下:#001  int parse_config_file(const char *fn)#002  {输入来的参数是文件名称的路径。 #003      char *data;#004      data = read_file(fn, 0);#005      if (!data)...
阅读(2545) 评论(0)

Android培训班(15)

在主函数main里调用这个函数来做什么呢?而这个函数是怎么样实现的呢?下面就来了解这个函数的功能与产现,具代码如下:#001  void open_devnull_stdio(void)#002  {#003      int fd;#004      static const char *name = "/dev/__null__";这段代码是指明创建设备节点的名称,这是空设备。 #005    ...
阅读(2734) 评论(0)

Android培训班(14)

#200  #201      for(;;) {#202          int nr, i, timeout = -1;这段代码是进入死循环处理,以便这个init进程变成一个服务。 #203  #204          for (i = 0; i < fd_count; i++)#205              ufds[i].revents = 0;这段代码是清空每个socke...
阅读(2718) 评论(0)

Android培训班(13)

#111  #112      if (qemu[0])#113          import_kernel_cmdline(1);这段代码是用来判断是否使用模拟器运行,如果时,就加载内核命令行参数。 #114  #115      if (!strcmp(bootmode,"factory"))#116          property_set("ro.factorytest", "1");...
阅读(3204) 评论(0)

Android培训班(12)

#059  #060      get_hardware_name();这段代码是获取当前android系统运行的硬件信息,比如硬件的CPU名称。主要从/proc/cpuinfo里读到相关的信息。  #061      snprintf(tmp, sizeof(tmp), "/init.%s.rc", hardware);#062      parse_config_file(tmp);这段代码是从...
阅读(2818) 评论(0)

Android培训班(11)

#033  #034      mount("tmpfs", "/dev", "tmpfs", 0, "mode=0755");#035      mkdir("/dev/pts", 0755);#036      mkdir("/dev/socket", 0755);#037      mount("devpts", "/dev/pts", "devpts", 0, NULL);#038      mount("pro...
阅读(2872) 评论(0)

Android培训班(10)

#022  #023      /* clear the umask */#024      umask(0);在上面这段代码里,调用函数umask来设置屏蔽位为0值。这样的意思是什么呢?是告诉系统做了那些工作呢?要了解这个,就得深入查看一下linux函数大全了,因为它的作用就一目了然了,它的解释如下:linux中的 umask 函数主要用于:在创建新文件或目录时屏蔽掉新文件或目录不应有的访问允许权限。文件的访问允许权限共有9种,分别是...
阅读(2670) 评论(0)

Android培训班(9)

android系统的初始化过程是从那里开始呢?它在加载linux基本内核后,就开始运行一个初始化进程,叫做init进程,那么怎么样知道它是加载init进程的呢?难道上天就注定的吗?呵呵,不是的,原来是从android加载linux内核时,就设置了下面的参数:Kernel command line: noinitrd root=/dev/nfs console=ttySAC0 init=/init nfsroot=192.168.1.103:/nfsboot ip=192.168.1.20:192.16...
阅读(3265) 评论(0)

Android培训班(8)

Android的代码是比较庞大的,如果要全部编译一遍,是花费比较多时间,这样导致开发效率非常低,那么有没有办法只编译修改那一部份代码呢?答案是肯定有的,因为面对这么多代码,如果没有好的方法是开发不成功的。下面就来学习怎么样单个目录编译的方法。 在android的顶层目录里,运行下面的命令:.  build/envsetup.sh 运行命令后,就添加了很多命令到sh解释器,具体命令如下:- croot:   C...
阅读(3316) 评论(0)

Android培训班(7)

在嵌入式linux开发过程中经常需要从电脑下载引导程序uboot,如果每次都使用烧写到flash或者SD卡的方式,那是比较低效率的开发方式,导致公司没有竞争力,开发出来的产品也没有竞争力,在市场上就会落后挨打了。 这里就来介绍tftp方式从linux主机下载文件到开发板里运行,因此需要在主机linux系统里安装tftp服务器。 在Ubuntu中安装tftp服务器的方法如下:1)下载并安装程序通过软件管理可以安装相...
阅读(2642) 评论(0)

Android培训班(6)

网络文件系统(NFS,Network File System)是一种将远程主机上的分区(目录)经网络挂载到本地系统的一种机制,通过对网络文件系统的支持,用户可以在本地系统上像操作本地分区一样来对远程主机的共享分区(目录)进行操作。     在嵌入式Linux 的开发过程中,开发者需要在Linux 服务器上进行所有的软件开发,交叉编译后,通用FTP方式将可执行文件下载到嵌入式系统运行,但这种方式不但效率低下,且无法实现在线的调试。因此,可以通过建立NFS,把L...
阅读(3746) 评论(0)

Android培训班(5)

 在一块开发板里,当加电时,它是直接从CPU缺省的地址开始加载指令,然后进行运行。目前设计的嵌入式芯片,都带有一段小小的引导代码,但这段代码功能都是比较有限,只支持加载几百字节然后跳到相应内存运行,比如不带网络加载,不带RAM初始化,不带USB驱动等等,不过现在S3C6410引导功能也比较强大,可以从SD卡里直接加载512字节代码运行。因此,在嵌入式系统再引导了二级引导系统,在本书里的二级引导系统,就是UBoot系统,它具非常强大的功能,支持网络加载,支持保存参数到FLASH,支持更强更大的操作...
阅读(2960) 评论(0)
    个人资料
    • 访问:5606856次
    • 积分:73290
    • 等级:
    • 排名:第25名
    • 原创:1589篇
    • 转载:61篇
    • 译文:11篇
    • 评论:2088条
    文章存档
    最新评论