zoukankan      html  css  js  c++  java
  • 倒车流程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,platformarm2srcinit.c
    cmain 代码很简单,无非也是一些中断初始化啊,使能中断啊,显示初始化之类
    6,platformarm2displaydisplay.c
    BL_DisplayInit,它主要是让屏的背光亮起来以及让系统显示 logo
    7,platformarm2srcdual_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驱动及其它驱动,

  • 相关阅读:
    MFC中DoDataExchange()的作用
    图片下面出现空白像素的问题解决
    nginx 的 autoindex on首页不显示的问题 按照下面几行要写上不然不行
    配置 PHP 的 Session 存储到 Redis
    redis4安装
    jumpserver安装
    mysql命令参数详解
    定制LNMP的RPM包
    NTP原理
    内网环境NTP服务及时间同步(CentOS6.x)配置和部署
  • 原文地址:https://www.cnblogs.com/senior-engineer/p/4915579.html
Copyright © 2011-2022 走看看