单个开发人员是否可以为Android手机编写简单的移动操作系统?

wan*_*now 13 mobile operating-system mobile-phones

作为一个单独的开发人员,我是否可以为Android手机编写一个操作系统,可以打开一个徽标并有一个简单的屏幕键盘用于文本输入,接收文本命令并可以自拍并保存它们?我该如何构建它以及需要多长时间?

Hen*_*rik 26

如果你的意思是从头开始:它肯定是可能的.但它需要大量的人力资源:-).移动电话的制造商通常有数百名程序员,但SW常常充斥着错误:-).

简化一些事情,你可以说手机中经常有两个SW模块:

  • 处理显示,声音和用户输入的"UI OS".
  • 处理向移动网络通信的"基带OS".

UI OS可以是例如Linux或更简单的东西.一个vanilla Linux内核几乎可以在任何现代手机上运行.

第二部分是基带OS.该部分通常需要实时属性以能够处理与移动网络的通信,因为在特定"时隙"中发送数据时定时需要精确.

只有一个问题:你需要找到一个"开放式硬件手机",将操作系统放在哪里.电信运营商通常需要在当今的手机上采取严格的安全措施,因此很难在市场上的手机上编写自己的操作系统.您还需要访问电路板原理图,芯片详细信息等,这是不会发生的:-).

一个想法可能是OpenMoko,这是一个"开放电话项目":http://wiki.openmoko.org/wiki/Main_Page或谷歌Android项目.

此外,当今手机中使用的CPU(如TI OMAP)通常可通过开发板获得,例如http://www.igep-platform.com/index.php?option=com_content&view=article&id=46&Itemid=55

这里的问题是电路板不包含基带芯片来处理与移动网络的通信.

编辑:关于为手机构建和运行SW.移动电话启动时发生的事情显然取决于硬件平台,但这种情况可能会发生(大多数嵌入式系统也是如此):

  1. ASIC(包含CPU)启动,重置自身并开始执行所谓的引导带(硬编码到ASIC中).
  2. 引导带试图设置连接到ASIC的闪存芯片.
  3. 引导带将来自闪存的SW加载到芯片的SRAM中(ASIC芯片上的集成RAM).
  4. SRAM中的SW设置SDRAM(时序等)并从闪存中将"OS"(或您想要的任何SW)加载到SDRAM中.
  5. SRAM中的SW将CPU中的内部指令指针设置为SDRAM,因此ASIC的CPU内核开始在SDRAM中执行.
  6. SDRAM中的SW("OS")设置定时器,中断,内存管理或任何需要的东西.
  7. SW可以是任何东西,一个无限循环,一个完整的操作系统,或只是一个SW拉一些LED的高或低.

如果ASIC具有NOR闪存,则可以直接执行而无需先将SW上载到SDRAM中.

SDRAM中的操作系统可能是一个普通的Linux内核.Linux内核唯一需要的是一些信息块,例如内存大小,内存的物理位置等等(一种方式是使用ATAG列表).当然,它还需要了解ASIC的一些内部结构,这将被添加到Linux内核中.但是目前市场上的大多数芯片已经存在于Linux内核中.例如,诺基亚为TI OMAP3430适配提供了大量代码,这可以在内核源代码本身(arch /目录或类似代码)中看到.我不确定诺基亚哪款手机使用这款芯片,但它可能是高端的Linux和Symbian手机.

给出比上面更详细的答案需要几页,所以你最好的选择是使用你得到的答案,并尝试使用它来从其他地方获取更多信息.

祝好运 :-)