创客联盟网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

开思网在线3D打印服务
查看: 19895|回复: 1
打印 上一主题 下一主题

[技术交流] 智能手机自顶向下系统结构分析---- 从软件到硬件

[复制链接]
跳转到指定楼层
楼主
发表于 2014-3-21 22:00:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册(开思网用户可以直接登录),结交更多创客好友,享用更多功能,让你轻松玩转创客社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
我们非常热衷于新兴的智能硬件,每当有新产品问世时,都想尝尝鲜,也想要设计自己的产品。今天我们以智能手机为例,对整个系统的结构做一下简单的分析。


我们来想像一下,当你点开一个你爱玩的游戏,或者打开微信准备找妹子聊天的时候,最顶层的应用程序开始运行,它运行于andriod或者ios系统之上,操作系统调用驱动控制底层硬件,完成软件对硬件资源的控制,从而使游戏画面出现(LCD屏)、声音播放(扩音器),以及你编辑好的信息发送出去(SIM卡)。这个过程大家基本都能想到,接下来我们一起探讨具体流程,由于本人水平有限,故如有不准确之处请大家多多指教。在此感谢cjc做我的技术顾问。


应用程序说起,以最流行的安卓系统为例来进行分析吧。安卓应用的开发语言是JavaJava运行于虚拟机之上,Java的源程序通过Java编译器,编译成与平台无关的“字节码程序”,字节码再由JVMJava虚拟机)解释执行。由于Java的执行特性,决定了它的执行效率比不上c/c++,但是在做应用层开发上有优势。


操作系统,也可以看成是一个超级应用程序,它与普通应用程序之间的区别在于它是联系普通应用程序与底层硬件的桥梁,同时管理应用程序之间的沟通和各硬件资源的调用。操作系统是应用程序运行的环境。操作系统从软件上可主要分为两大类:类UnixWindows操作系统。iosandriod都属于前者。操作系统通常是用c语言写出来的,因为它有着最高的执行效率。


玩过单片机的朋友们应该知道,对于没有操作系统的单片机的开发(慕斯和小伙伴cjc称它为“裸开发”),实际做的就是应用程序和驱动程序的混合体,即将驱动揉合于应用程序之中。正是由于上面提到的操作系统才将两者分离开来,实现模块和分层化编程。驱动程序是最贴近底层硬件的程序,它直接操控硬件。驱动程序屏蔽了底层硬件细节,提供了上层应用操控底层硬件的接口,简化了上层应用开发。比如让显卡显示图像,它会先发送指令到显卡驱动程序,驱动程序收到指令后,将其翻译成显卡能明白的电子信号,这样显卡就可以显示图像了。


终于到达最后一站----底层硬件了。像智能手机这样成熟的产品,其采用的芯片都是工艺成熟性能稳定的,慕斯最近在做FPGA的开发,对此也略有感悟:for example,如果说FPGA是陶泥,那么芯片就犹如一款精美的手工陶艺作品。FPGA可以实现几乎任何功能的芯片原型,用FPGA实现一款功能简单的CPU是我近期感兴趣的方向。相比于软件编程,FPGA编程最大的特点在于生成功能模块,此过程为“无中生有”;而软件编程即在CPU上的编程,是一个合理利用CPU已有资源如寄存器、ALU,进行精确控制来实现相应功能的过程。CPU的这些资源恰恰可以通过硬件编程创造出来,我们可以自己实现一个CPU,自己定义它的指令集,自己编写一个编译器,然后就可以用通用的C语言在上面做开发。所以硬件编程是一个创造性的过程,其设计可以由verilog/VHDL这样的硬件编程语言来完成,你根据所需功能写出相应模块,程序经过综合、翻译和实现三个步骤最终生成对应FPGA最小颗粒的网表映射文件,就像高级编程语言经过编译链接最终生成机器码,这两个过程有异曲同工之妙。通过硬件编程可以创造出一款芯片的原型,进行功能测试,符合要求则可以制成流片或选择相应功能芯片实现最终产品。


至此,慕斯对于整个智能手机结构的理解就陈述完了,请各位尽情拍砖。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 支持支持
2
发表于 2014-3-30 13:55:08 | 只看该作者

马上注册(开思网用户可以直接登录),结交更多创客好友,享用更多功能,让你轻松玩转创客社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

QQ|手机版|创客联盟网  

GMT+8, 2024-11-21 19:51 , Processed in 0.016246 second(s), 12 queries , Gzip On, Redis On.

Powered by Discuz! X3.3

© 2002-2024 www.iCAx.org

快速回复 返回顶部 返回列表