码迷,mamicode.com
首页 > 其他好文 > 详细

倒车流程2

时间:2015-10-27 22:06:26      阅读:414      评论:0      收藏:0      [点我收藏+]

标签:

一,ARM2部分。
1,platform/uboot/uboot-83xx/cpu/ac83xx/start.S
对于 CPU 来说,刚复位之后自然是执行一段汇编代码,然后该代码会做一些简单的通用寄存器的
初始化工作,然后再跳转到start_armboot代码中,
2,platform/uboot/uboot-83xx/lib_arm/board.c
在 start_armboot 中自然是一大堆的初始化操作啊之类,不过这里 ARM2 有关的只有 misc_init_r
函数,
3,platform/uboot/uboot-83xx/board/ac83xx_evb/ac83xx_board.c
ARM2 有关的其实只有两个函数,分别是 ARM2Image_Read 和u4ARM2Start
4,platform/uboot/uboot-83xx/board/ac83xx_evb/ac83xx_board.c
ARM2Image_Read 函数所做的事情很简单,只是从存储设备中读取 ARM2 的 Image,然后拷贝到RAM 中,

后期启动
5,platform\arm2\src\init.c
cmain 代码很简单,无非也是一些中断初始化啊,使能中断啊,显示初始化之类
6,platform\arm2\display\display.c
BL_DisplayInit,它主要是让屏的背光亮起来以及让系统显示 logo
7,platform\arm2\src\dual_task.c
对于 ARM2 而言,所有的任务调度都在 MainLoop 函数,其地位相当于 Win32 的消息循环函数,是整个
代码的核心流程

从 MainLoop 函数中我们还可以知道,ARM2 这颗 CPU 主要做三件事情:开机 logo、倒车和音频解码。

二,Android部分。
1)信号检测。
1,/packages/apps/BackCar/src/com/autochips/backcar/BackCarService.java,
注册回调函数,检测是否有信号;
2,/frameworks/atc/core/libs/backcar/core/video.cpp,
用线程(videoInThread)每个0.1S不停的读I/O口,检测倒车是否有信号。
3,/frameworks/base/native/osal/event.c
读取I/O口数据。
2)流程
1,/frameworks/atc/core/java/com/autochips/backcar/BackCar.java
对native层接口进行了封装,处理CBM,提供给app调用。
2,frameworks/atc/core/jni/backcar/BackCar.cpp
提供封装JNI接口,给BackCar.java调用。并且调用底层代码。
3,frameworks/atc/core/libs/backcar/core/backcar.cpp
和ARM2交互,等待ARM2退出,才启动ARM1,调用video.cpp和sound.cpp接口
4,/frameworks/atc/core/libs/backcar/core/video.cpp
(1) 调用native_window_set_buffers_geometry,使用硬件解码,渲染(render),因为数据从native层,
传到JNI层很耗时,
(2) 调用DeviceIoControl直接控制camera驱动及其它驱动,

倒车流程2

标签:

原文地址:http://www.cnblogs.com/senior-engineer/p/4915579.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!