相对通用的操作系统:嵌入式Linux,ucOS/II,VxWorks等等
TODO:http://www.windriver.com/evaluations/gpp-ve/可以下载试用包,有空去试试。
此处需要专门解释一下,被很多人归类为嵌入式操作系统的Android,实际上不是传统意义上的嵌入式操作系统。
典型的Android系统中,根据开发所用语言不同和开发环境不同,可以划分为:
- 上层应用:用java语言在Eclipse+ADT或者Android Studio的IDE中开发Android的app应用程序
- 嵌入式底层:用C,C++等语言实现底层的,以Linux为基础的,在Android框架下的,设备的驱动相关的开发,其中更多的是涉及到Linux驱动开发,Java的JNI,Android的驱动框架模型等等内容。
此时,对于传统意义上的,嵌入式软件开发,尤其是嵌入式Linux驱动开发,基本上是和,上述的Android开发中的,嵌入式底层开发中的Linux驱动开发,是基本上一样的。
而Android系统中的其他内容,包括嵌入式底层的Java的JNI,Android驱动模型,以及上层应用的Java的Android的app开发,都是和传统的Linux的驱动开发,没什么关系,也是差别很大的,包括所使用的语言,以及所使用的开发环境。
即,Android的开发,基本上都是基于app那层去开发app的,都是用Java语言去写代码的。且底层有Android的运行时作为支持
而Linux的开发,对于Linux驱动开发,都是基于底层的内核去开发的,用的都是C语言,甚至偶尔还会涉及到汇编代码;对于Linux的应用层面的开发,都是Application Framework级别的,应用程序的开发,往往都是去写C语言代码的。
对应的传统Linux嵌入式驱动开发,以及Android中的app开发,以及Android中的驱动移植,所处于不同层次的关系,可以用下图表示:
而对于Android的中间的Libraris,Android Runtime,以及Application Framework,很多时候,是各种(C,C++,Java等)不同的语言的混合体,包括中间的Android Runtime是利用到了Java的JNI,为Java和C或C++语言之间,提供一个接口,可以互相通讯。
而对于Android这套框架来说:
- 如果是你做Application,即做Android的应用,现在流行称其为app,的话
则是去开发上层的应用->比如基于Android做一个收音机,做一个音乐播放器等等的应用
->都是在Android的框架之下(用Android相关的工具,比如Eclipse+ADT) 去写Java代码去实现对应的功能
- 如果你是做Android底层嵌入式开发的话
->那就是在Linux内核框架下,去实现各种功能和模块
->典型的工作要属,你是一个做硬件的公司,做了块开发板,为了使得其支持Android系统,需要在开发板这个硬件的基础上,去为开发板中的各个硬件模块,比如Nand Flash存储芯片,SD卡芯片,网卡芯片等等,去写对应的模块的驱动
->此时主要就是在Linux框架下写C(或C++)代码去实现模块驱动
->当然有时候为了支持Android,还需要了解Android本身的框架,可能还需要加上一些JNI的代码支持