倒车流程2

一,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驱动及其它驱动,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值