重庆生活网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 生活 重庆
查看: 674|回复: 0

安卓學习经验 第一期

[复制链接]
发表于 2020-3-25 21:03:27 | 显示全部楼层 |阅读模式
    最近想学习一下安卓了,于是在网上买了一块安卓开发板,我买的是芯灵思的开发[size=10.5000pt]3.开发人员要对Linux有一定的了解,cpu[size=10.5000pt]GPU[size=10.5000pOpengles2.0[size=10.5000pt]1G[size=1Decoder:Mpeg4、H.263、H.264、decoder[si一个串口、一个LED灯,SD卡、一个CAM接口、一个WIFI接口、一组IFramework(C++)层主要是承上启下的作用,对上可以为Frame当我们想要拍一张照片时首先他会获取我们的Camera服务(从java层调层,再告诉Hal层,Hal层会调用我们的驱动去控制硬件抓拍一张照片,照片




最近想学习一下安卓了,于是在网上买了一块安卓开发板,我買的是芯灵思的開发板,核心板是全志的A31S,感觉性能挺好,而且老板还给了很多的資料,而且還带学习的视频,下面是我在学习完第一期之后的一个经验,希望能跟大家分享一下,也希望各位大神能多多的帮助小弟,小弟在此谢过了。这是芯靈思开发板的網站item.taobao.com/item.htm?spm=686.1000925.0.0.OsP6iu&id=38977486880
安卓开发我們要學习的包括四个部分:
[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有一定的了解
下面我来简单介绍一下我们所使用的开发板的核心配置
cpu [size=10.5000pt]GPU[size=10.5000pt]DDR[size=10.5000pt]EMMC[size=10.5000pt]Video[size=10.5000pt]Display[size=10.5000pt]
全志A31S 四核Cortex-A7[size=10.5000pt]
L1 cache 256[size=10.5000pt]
L2 cache 1M[size=10.5000pt]PowerVR SGX544MP2[size=10.5000pt]
Opengles 2.0[size=10.5000pt]1G[size=10.5000pt]16G[size=10.5000pt]Encoder:[size=10.5000pt]
H264 720p[size=10.5000pt]
Decoder: Mpeg4、H.263、H.264、decoder[size=10.5000pt]LAD: RGB/LVDS,1280X800[size=10.5000pt]
HDMI 1.4 :1920x1080@60fps[size=10.5000pt]

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傳递到上层,上层拿到图片后就可以进行一些处理了。


上面呢就是我在第一期视頻上学到的一些东西,希望對想学安卓的朋友有一定的帮助。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|联系我们|重庆生活网

GMT+8, 2021-9-27 15:27 , Processed in 0.187200 second(s), 18 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

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