最近想学习一下安卓了,于是在网上买了一块安卓开发板,我买的是芯灵思的开发板,核心板是全志的
A31S
,感觉性能挺好,而且老板还给了很多的资料,而且还带学习的视频,下面是我在学习完第一期之后的一个经验,希望能跟大家分享一下,也希望各位大神能多多的帮助小弟,小弟在此谢过了。大家可以去芯灵思官方网站看一下
安卓开发我们要学习的包括四个部分:
[size=10.5000pt]1.安卓开发环境的搭建(需要一块安卓开发板,和源代码,我用的是芯灵思开发板
SINA31S
)
[size=10.5000pt]2.安卓的编译方式
[size=10.5000pt]3.安卓的启动分析
[size=10.5000pt]4.安卓的传感器模块
我们所学习的底层开发是
Framework
层和
Hal
层,下面我们说一下我们开发所需要的环境
[size=10.5000pt]1.软件开发环境:必须要有开发板源码、配置
java JDK
版本、需要
adb
调试工具
[size=10.5000pt]2.硬件开发环境:需要准备开发板及相关原理图,和相关芯片的
datasheet
、需要
USB
线、串口线调试工具
[size=10.5000pt]3.开发人员要对
Linux
有一定的了解,最好有
C
、
C++
、基础,如果从事
Framework
层要对
java
有一定的了解
下面我来简单介绍一下我们所使用的开发板的核心配置
SINA31S
的主要外围接口:
一个串口、一个
LED
灯,
SD
卡、一个
CAM
接口、一个
WIFI
接口、一组
IO
接口,一个有线网口、一个
OTG
接口、两个
USB
接口、一个
LCD
接口、一个
HDMI
接口、音频接口
另外我们的开发板还增加了一个电源管理芯片,使芯片的功耗降低了很多。
安卓的整个架构与分层:整个安卓系统应该是有软件和硬件组成的
我们所说的硬件通常指主
CPU
、和他的一些外围接口,如:
Camera
、
LCD\
、
Sensor
等
软件从底层到上层可以分为
U-boot
、内核和我们安卓的
OS
U-boot
主要就是引导内核的启动,我们的主
CPU
内部有一段程序是来引导我们的
U-boot
启动的
主芯片的启动模式主要有:USB
启动,
SD
卡启动和
Flash
启动,我们选择的启动方式主要是根据几个固定
GPIO
的电平来决定的。
内核是整个系统的核心,它主要负责进程的管理、内存的管理、网络的管理,可以直接控制我们的硬件
我们的安卓系统主要分为下面几个层:
[size=10.5000pt]1. Hal
层
[size=10.5000pt]2. Framework(C++)
层
[size=10.5000pt]3. 第三方的一些库文件
[size=10.5000pt]4. Dalvik
(虚拟机系统)
[size=10.5000pt]5. Framework(java)
层
[size=10.5000pt]6. App
(应用层)
Hal
层的主要作用是:把一些外设想象成一套接口供
Framework(C++)
层调用
Framework(C++)
层主要是承上启下的作用,对上可以为
Framework(java)
层提供服务,对下能够挂接我们
Hal
层的外设,还可以对外设提供保护,保证同一时刻只有一个应用程序对外设进行访问
第三方库文件主要是为系统提供一些处理
虚拟机系统主要是连接上层应用、底层的服务、和对第三方库文件提供一个自动化管理
Framework(java)
层为我们提供了一些服务和进程之间的通讯方式,这些可以让我们快速的构建自己应用,也可以定制自己需要的控件或者服务
App
层基于
java
来实现的,运行在虚拟机之上
我们来分析一下
Camera
从上到下的调用顺序:
当我们想要拍一张照片时首先他会获取我们的
Camera
服务(从
java
层调到
Framework java
层)
Framework java
层会通过虚拟机直接获取
Camera
服务,如果有人在占用
Camera
服务,那么会断开当前的链接,同时会和新的应用建立一个链接,这样应用就会获取到
Camera
访问权限和
Camera
所支持的属性,当我们点击拍照命令时,这个命令从上层一直到
Framework
层,再告诉
Hal
层,
Hal
层会调用我们的驱动去控制硬件抓拍一张照片,照片的数据会经过
ISB
的一些处理,然后返回
Hal
层,再从
Hal
层返回
Framework
层,再通过
Dalvik
传递到上层,上层拿到图片后就可以进行一些处理了。
上面呢就是我在第一期视频上学到的一些东西,希望对想学安卓的朋友有一定的帮助。