导航

    全志在线开发者论坛

    • 注册
    • 登录
    • 搜索
    • 版块
    • 话题
    • 在线文档
    • 社区主页
    1. 主页
    2. embfly
    E
    • 资料
    • 关注 0
    • 粉丝 0
    • 我的积分 1650
    • 主题 13
    • 帖子 28
    • 最佳 3
    • 群组 0

    embflyLV 5

    @embfly

    1650
    积分
    3
    声望
    14
    资料浏览
    28
    帖子
    0
    粉丝
    0
    关注
    注册时间 最后登录

    embfly 取消关注 关注

    embfly 发布的最佳帖子

    • 一文带你玩转全志T527的GPU(2)-盈鹏飞嵌入式

      本文中涉及到产品的实际操作,该操作都是在盈鹏飞嵌入式AHD-X527主板上进行执行,AHD-X527介绍如下:
       AHD-X527产品特性:

      • 采用Allwinner公司Cortex-A55八核A527/T527处理器,运行最高速度为2.0GHZ(T527最高1.8GHZ);

      • 支持Mali-G57 MC1 GPU,支持OpenGL ES 3.2/2.0/1.0, Valkan 1.1,OpenCL 2.0

      • 支持4K/25fps H.264视频编码,支持4K/15fps MJPEG编码;

      • 多格式4K/60fps视频解码 (H.265,H.264,VC-1, MPEG-1/2/4, VP8) ;

      • 支持双屏异显;支持HDMI 2.0B, 分辨率最高4K@60fps;支持LVDS,分辨率最高1920x1080@60fps;支持MIPI DSI,分辨率最高2.5K@60fps(与LVDS复用);

      • 支持1-4G  Bytes LPDDR4X SDRAM;

      • 支持EMMC 8G-64G大容量电子盘,可启动;

      • 支持1路USB 3.0;支持3路USB2.0 HOST和一路OTG(TYPE-C接口);

      • 支持2路I2C(其中一路支持掉电唤醒)、2路PWM(应用于背光);

      • 支持双路千兆以太网;

      • 支持3G/4G通信;

      • 支持2路UART(TTL)、支持1路RS485、支持双路CAN BUS(2.0B,仅T527支持);

      • 支持MIPI CSI - 24-lane/42-lane/ 4+2*2-lane;

      • 操作系统的支持,可预装Android13/LINUX 5.15/Ubuntu 22.04;

      • 尺寸为146X119MM

      AHD-X527产品功能图:

      AHD-X527功能图.jpg

      ​
      三、Linux图形显示

      Tina_Linux_图形系统_开发指南_linux图形系统-CSDN博客

      Tina_Linux_图形系统_开发指南_tinalinux-CSDN博客

      Wayland与Weston简介_weston wayland-CSDN博客

      Wayland与Weston简介_weston wayland-CSDN博客

      GPU的使用是需要结合图形显示系统的,对于不同的图形显示系统,GPU驱动库也有所不同,所以要使用GPU必须先了解Linux下的图形显示方式。

      linux是一个基于命令行的操作系统,图形界面是一个应用程序(而windows的图形界面是操作系统的一部分)。 Linux中图形显示所涉及的知识,简单框图如下所示:

      ​图4.jpg

      图5.jpg

      下面简单介绍一些图形相关的知识,包括内核驱动、图形API接口、显示管理器、窗口管理器、GUI应用工具,桌面环境等等。

      3.1. DRM/KMS
      Direct Rendering Manager(DRM)子系统用于linux内核显示、图形和合成子系统的管理。 通常使用该框架来控制显示接口和外部显示器(控制分辨率,频率,多屏显示等)、输出画面到显示面板、硬件渲染画面等。

      DRM是在内核空间,用户空间使用,通常通过相应的 libdrm 库函数调用, 也可以直接ioctl访问设备文件或者使用sysfs文件DRM驱动通信, 使用OpenGL或Vulkan等图形API的应用程序可以通过这些设备文件与GPU进行交互,以实现硬件加速渲染等。

      3.2. libdrm
      libdrm库,为DRM驱动ioctl提供了包装函数,避免了将内核接口直接暴露给应用程序, 通过libdrm对显示资源进行统一访问,libdrm将命令传递到内核最终由DRM驱动接管各应用的请求并处理。

      libdrm是一个底层库,通常被其他图形驱动程序调用,例如Mesa、X、libva和类似项目。

      3.3. OpenGL
      OpenGL是一组专门涉及2D和3D图形的硬件加速渲染的规范, 至于内部具体每个函数是如何实现,将由编写OpenGL库的人自行决定,实际通常是GPU的生产商。 OpenGL API实现通常是C语言,也有其他语言的实现,如Java、Golang和Rust等。

      OpenGL ES(OpenGL for Embedded Systems)是适用于嵌入式设备的OpenGL规范,针对Android手机和iPhone等嵌入式设备。

      EGL 是一个依赖于平台的API, 是渲染 API(如 OpenGL ES)和原生窗口系统之间的接口。通常来说,OpenGL 是一个操作 GPU 的 API,它通过驱动向 GPU 发送相关指令,控制图形渲染管线状态机的运行状态,但是当涉及到与本地窗口系统进行交互时,就需要这么一个中间层,因此 EGL 被设计出来,作为 OpenGL 和原生窗口系统之间的桥梁,且它与平台无关的。

      图6.jpg

      3.4. Vulkan
      Vulkan 是一个低开销、跨平台的2D和3D图形与计算的应用程序接口(API),能够跨平台高效访问GPU。

      Vulkan的设计目标是提供一个更轻量级、更高效的图形API,以取代OpenGL等传统的图形API。 作为业内开放标准的现代GPU API,开发人员能够编写可移植到多个不同平台的应用程序。

      3.5. Mesa
      Mesa 也称为Mesa3D和Mesa 3D图形库,是OpenGL、Vulkan和其他图形API规范的开源实现。 Mesa将这些API规范转换为特定于供应商的图形硬件驱动程序。

      Mesa项目最初是作为OpenGL规范的开源实现而开始。经过多年来发展,具有跨平台支持、高性能、开源和扩展性等特点,并且该项目已经扩展到实现更多的图形API, 包括OpenGL ES、OpenCL、OpenMAX、VDPAU、VA-API、Vulkan和EGL。

      3.6. X Window System
      大多数基于Linux的发行版都使用 X Window System (X11,或者简称X) , 它是基于客户端-服务器体系结构,可以在远程环境中使用。

      X Window系统基于客户端-服务器体系结构,客户端和服务器可以在同一台机器上也可以不在同一台机器上,就需要一个在客户端和服务器之间传递消息的协议。 X11协议就是负责消息传递,当客户端和服务器在同一台机器上时,消息通过UNIX套接字进行交换,不同机器上通过网络(TCP/IP)

      3.7. Wayland
      Wayland 是一种显示服务协议,不依赖客户端-服务器体系结构,旨在提供一个现代、 安全的的Linux和其他类Unix操作系统窗口系统取代X Window system,而Weston是Wayland开源显示协议的参考实现

      3.8. EGLFS
      EGLFS是QT自带的一个平台插件,可以在EGL和OpenGL ES之上运行Qt应用程序,而不需要通过X11或Wayland这样的实际窗口系统。 EGLFS还支持软件渲染窗口,如QWidget的内容使用CPU渲染成图像,然后上传到纹理中,并由插件进行合成。

      四、T527 GPU使用
      T527 GPU的使用,还要分两种GPU驱动来说,一种是闭源驱动mali,一种是开源panforst驱动。

      4.1、闭源GPU驱动的测试

      由于部分 Android 平台 GKI 的要求,默认不开启CONFIG_DEBUG_FS, 导致 cpu_monitor 工具无法获取gpu 的频率信息,于是 mali‑valhall dirver 将 debugfs 相应的功能移动到 sysfs。具体的路径位于:
      /sys/devices/platform/soc@3000000/1800000.gpu/sunxi_gpu。接下来介绍下 sysfs 调试节点的使用方法。
      scene_ctrl:可读写,GPU 是否运行在性能模式
      echo 1 >scene_ctrl; GPU将会关闭dvfs,运行在最高频。
      0:关闭
      1:开启
      
      sunxi_gpu_freq:可读写,用来查看、改变 GPU 的频率
      /sys/devices/platform/soc@3000000/1800000.gpu/sunxi_gpu # cat sunxi_gpu_freq
      Frequency:696MHz; //GPU当前的频率
      Utilisation from last show:0%; //GPU当前的负载率,这两个信息是用户最常用的
      // 更改GPU的频率,单位是MHz,将GPU频率设为600MHz;同时会将dvfs关闭
      /sys/devices/platform/soc@3000000/1800000.gpu/sunxi_gpu # echo 600 >sunxi_gpu_freq
      /sys/devices/platform/soc@3000000/1800000.gpu/sunxi_gpu # cat sunxi_gpu_freq
      Frequency:600MHz;
      Utilisation from last show:0%;
      如果更改频率失败,会有以下提示:
      /sys/devices/platform/soc@3000000/1800000.gpu/sunxi_gpu # echo 1 >sunxi_gpu_freq
      [ 1212.444659] mali 1800000.gpu: sunxi:mali_kbase:set gpu core clock to 1000000 err ‑22!
      注意:虽然更改频率失败,但仍会影响dvfs_ctrl的值,将dvfs_ctrl设为0,即dvfs不再起作用。读写频率的单位MHz。
      
      sunxi_gpu_volt:可读写,用来查看、改变 GPU 的电压 (GPU 独立供电时才能更改电压)
      /sys/devices/platform/soc@3000000/1800000.gpu/sunxi_gpu # cat sunxi_gpu_volt
      920mv
      //非独立供电时,尝试更改电压会报错
      /sys/devices/platform/soc@3000000/1800000.gpu/sunxi_gpu # echo 900 >sunxi_gpu_volt
      [ 1315.910428] mali 1800000.gpu: sunxi:mali_kbase:[ERR]: GPU not support change voltage!!!
      ash: write error: Operation not permitted
      注意:读写电压的单位是mv
      
      sunxi_gpu_dvfs:可读写,用来查看、配置 dvfs 对 GPU 的控制
      echo 0 >sunxi_gpu_dvfs;//dvfs将不再影响GPU的频率,这个配置,只有内核开启PM_DEVFREQ
      并且GPU驱动开启CONFIG_MALI_DEVFREQ选项时才有效。
      
      sunxi_gpu_info:只读,查看 GPU 详细的运行信息和几组重要寄存器的值
      /sys/devices/platform/soc@3000000/1800000.gpu/sunxi_gpu # cat sunxi_gpu_info
      voltage:920mV;
      idle:on;
      scenectrl:off;
      dvfs:off;
      independent_power:no;
      Frequency:600MHz;
      Utilisation from last show:0%;
      Register state:
      GPU_IRQ_RAWSTAT=0x00000000 GPU_STATUS=0x00000100
      JOB_IRQ_RAWSTAT=0x90910010 JOB_IRQ_JS_STATE=0x00000001
      JS0_STATUS=0x00000000 JS0_HEAD_LO=0x00000000
      JS1_STATUS=0x00000000 JS1_HEAD_LO=0x00000000
      JS2_STATUS=0x00000000 JS2_HEAD_LO=0x00000000
      MMU_IRQ_RAWSTAT=0x00000000 GPU_FAULTSTATUS=0x00000000
      GPU_IRQ_MASK=0x00000000 JOB_IRQ_MASK=0x00000000 MMU_IRQ_MASK=0x00000000
      PWR_OVERRIDE0=0x00000000 PWR_OVERRIDE1=0x00000000
      SHADER_CONFIG=0x20000000 L2_MMU_CONFIG=0x00000000
      TILER_CONFIG=0x00000000 JM_CONFIG=0x000f0000
      
      

      4.2、开源GPU驱动Panfrost的测试

      具体的路径位于:/sys/devices/platform/soc@3000000/1800000.gpu/devfreq/1800000.gpu

      注意:路径和闭源驱动不同了。

      embfly-x527:/sys/devices/platform/soc@3000000/1800000.gpu/devfreq/1800000.gp
      available_frequencies  max_freq               subsystem
      available_governors    min_freq               target_freq
      cur_freq               name                   timer
      device                 polling_interval       trans_stat
      governor               power                  uevent
      
      

      available_frequencies表示可用的GPU频率:

      #cat available_frequencies
      150000000 200000000 300000000 400000000 600000000 696000000
      

      可以看到最高频率是696Mhz,这个和G57标称的有区别,G57标称的最高频率是850MHZ ,而全志只能让它跑在700Mhz,分析估计是散热问题,跑太快,发热量高,最后导致不稳定。

      available_governors表示GPU支持的工作方式,和CPU比较类似:

      #cat available_governors
      userspace performance simple_ondemand
      

      GPU的工作支持performance(最高性能),也支持simple_ondemand按照需求调度。那么默认是什么工作方式呢?通过如下指令可以获得:

      #cat governor
      simple_ondemand
      

      目前不得而知如何让其默认工作在性能模式。

      4.3、开源GPU驱动Panfrost下glmark2的跑分

      glmark2是一个用于评估OpenGL(图形编程接口)性能的基准测试工具。它可以测试图形处理器(GPU)在处理图形渲染任务时的性能表现。

      root@Embfly-x527:/$ glmark2-es2-drm
      [  135.729283] [drm] [LVDS]sunxi_lvds_connector_get_modes start
      =======================================================
          glmark2 2021.02
      =======================================================
          OpenGL Information
          GL_VENDOR:     Panfrost
          GL_RENDERER:   Mali-G57 (Panfrost)
          GL_VERSION:    OpenGL ES 3.1 Mesa 22.2.2
      =======================================================
      [build] use-vbo=false: FPS: 59 FrameTime: 16.949 ms
      [build] use-vbo=true: FPS: 59 FrameTime: 16.949 ms
      [texture] texture-filter=nearest: FPS: 59 FrameTime: 16.949 ms
      [texture] texture-filter=linear: FPS: 59 FrameTime: 16.949 ms
      [texture] texture-filter=mipmap: FPS: 59 FrameTime: 16.949 ms
      [shading] shading=gouraud: FPS: 59 FrameTime: 16.949 ms
      [shading] shading=blinn-phong-inf: FPS: 59 FrameTime: 16.949 ms
      [shading] shading=phong: FPS: 59 FrameTime: 16.949 ms
      [shading] shading=cel: FPS: 59 FrameTime: 16.949 ms
      [bump] bump-render=high-poly: FPS: 59 FrameTime: 16.949 ms
      [bump] bump-render=normals: FPS: 59 FrameTime: 16.949 ms
      [bump] bump-render=height: FPS: 59 FrameTime: 16.949 ms
      [effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 59 FrameTime: 16.949 ms
      [effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 59 FrameTime: 16.949 ms
      [pulsar] light=false:quads=5:texture=false: FPS: 59 FrameTime: 16.949 ms
      [desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 59 FrameTime: 16.949 ms
      [desktop] effect=shadow:windows=4: FPS: 59 FrameTime: 16.949 ms
      [buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 59 FrameTime: 16.949 ms
      [buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 59 FrameTime: 16.949 ms
      [buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 59 FrameTime: 16.949 ms
      [ideas] speed=duration: FPS: 59 FrameTime: 16.949 ms
      [jellyfish] <default>: FPS: 59 FrameTime: 16.949 ms
      [terrain] <default>: FPS: 14 FrameTime: 71.429 ms
      [shadow] <default>: FPS: 59 FrameTime: 16.949 ms
      [refract] <default>: FPS: 43 FrameTime: 23.256 ms
      [conditionals] fragment-steps=0:vertex-steps=0: FPS: 59 FrameTime: 16.949 ms
      [conditionals] fragment-steps=5:vertex-steps=0: FPS: 59 FrameTime: 16.949 ms
      [conditionals] fragment-steps=0:vertex-steps=5: FPS: 59 FrameTime: 16.949 ms
      [function] fragment-complexity=low:fragment-steps=5: FPS: 59 FrameTime: 16.949 ms
      [function] fragment-complexity=medium:fragment-steps=5: FPS: 59 FrameTime: 16.949 ms
      [loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 59 FrameTime: 16.949 ms
      [loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 59 FrameTime: 16.949 ms
      [loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 59 FrameTime: 16.949 ms
      =======================================================
                                        glmark2 Score: 57
      =======================================================
      
      ///////////////////////////////////////////
      glmark2-es-wayland测试先要启动weston,否则不工作
      root@Embfly-x527:/$ /etc/init.d/S40weston start
      mkdir: can't create directory '/tmp/wayland': File exists
      root@Embfly-x527:/$ Date: 2000-01-01 UTC
      [00:08:15.443] weston 9.0.0
                     https://wayland.freedesktop.org
                     Bug reports to: https://gitlab.freedesktop.org/wayland/weston/issues/
                     Build: 9.0.0
      [00:08:15.444] Command line: weston --backend=drm-backend.so --tty=1 --xwayland
      [00:08:15.444] OS: Linux, 5.15.147, #5 SMP PREEMPT Sat Jul 19 14:38:28 CST 2025, aarch64
      [00:08:15.444] Using config file '/etc/xdg/weston/weston.ini'
      [00:08:15.444] Output repaint window is 7 ms maximum.
      [00:08:15.444] Loading module '/usr/lib/libweston-9/drm-backend.so'
      [00:08:15.446] initializing drm backend
      [00:08:15.449] using /dev/dri/card0
      [00:08:15.449] DRM: supports atomic modesetting
      [00:08:15.449] DRM: supports GBM modifiers
      [00:08:15.449] DRM: supports picture aspect ratio
      [00:08:15.449] Loading module '/usr/lib/libweston-9/gl-renderer.so'
      [00:08:15.477] EGL client extensions: EGL_EXT_device_base
                     EGL_EXT_device_enumeration EGL_EXT_device_query
                     EGL_EXT_platform_base EGL_KHR_client_get_all_proc_addresses
                     EGL_EXT_client_extensions EGL_KHR_debug EGL_EXT_platform_device
                     EGL_EXT_platform_wayland EGL_KHR_platform_wayland
                     EGL_MESA_platform_gbm EGL_KHR_platform_gbm
                     EGL_MESA_platform_surfaceless
      [00:08:15.481] EGL version: 1.4
      [00:08:15.481] EGL vendor: Mesa Project
      [00:08:15.481] EGL client APIs: OpenGL OpenGL_ES
      [00:08:15.481] EGL extensions: EGL_ANDROID_blob_cache EGL_EXT_buffer_age
                     EGL_EXT_image_dma_buf_import
                     EGL_EXT_image_dma_buf_import_modifiers EGL_KHR_cl_event2
                     EGL_KHR_config_attribs EGL_KHR_context_flush_control
                     EGL_KHR_create_context EGL_KHR_create_context_no_error
                     EGL_KHR_fence_sync EGL_KHR_get_all_proc_addresses
                     EGL_KHR_gl_colorspace EGL_KHR_gl_renderbuffer_image
                     EGL_KHR_gl_texture_2D_image EGL_KHR_gl_texture_3D_image
                     EGL_KHR_gl_texture_cubemap_image EGL_KHR_image
                     EGL_KHR_image_base EGL_KHR_image_pixmap
                     EGL_KHR_no_config_context EGL_KHR_partial_update
                     EGL_KHR_reusable_sync EGL_KHR_surfaceless_context
                     EGL_EXT_pixel_format_float EGL_KHR_wait_sync
                     EGL_MESA_configless_context EGL_MESA_drm_image
                     EGL_MESA_image_dma_buf_export EGL_MESA_query_driver
                     EGL_WL_bind_wayland_display
      [00:08:15.482] warning: Disabling render GPU timeline and explicit synchronization due to missing EGL_ANDROID_native_fence_sync extension
      [00:08:15.482] EGL_KHR_surfaceless_context available
      [00:08:15.486] GL version: OpenGL ES 3.1 Mesa 22.2.2
      [00:08:15.486] GLSL version: OpenGL ES GLSL ES 3.10
      [00:08:15.486] GL vendor: Panfrost
      [00:08:15.486] GL renderer: Mali-G57 (Panfrost)
      [00:08:15.487] GL extensions: GL_EXT_blend_minmax GL_EXT_multi_draw_arrays
                     GL_EXT_texture_filter_anisotropic
                     GL_EXT_texture_compression_s3tc GL_EXT_texture_compression_dxt1
                     GL_EXT_texture_compression_rgtc GL_EXT_texture_format_BGRA8888
                     GL_OES_compressed_ETC1_RGB8_texture GL_OES_depth24
                     GL_OES_element_index_uint GL_OES_fbo_render_mipmap
                     GL_OES_mapbuffer GL_OES_rgb8_rgba8 GL_OES_standard_derivatives
                     GL_OES_stencil8 GL_OES_texture_3D GL_OES_texture_float
                     GL_OES_texture_float_linear GL_OES_texture_half_float
                     GL_OES_texture_half_float_linear GL_OES_texture_npot
                     GL_OES_vertex_half_float GL_EXT_draw_instanced
                     GL_EXT_texture_sRGB_decode GL_OES_EGL_image
                     GL_OES_depth_texture GL_OES_packed_depth_stencil
                     GL_EXT_texture_type_2_10_10_10_REV GL_NV_conditional_render
                     GL_OES_get_program_binary GL_APPLE_texture_max_level
                     GL_EXT_discard_framebuffer GL_EXT_read_format_bgra
                     GL_NV_pack_subimage GL_EXT_frag_depth
                     GL_NV_fbo_color_attachments GL_OES_EGL_image_external
                     GL_OES_EGL_sync GL_OES_vertex_array_object
                     GL_ANGLE_pack_reverse_row_order
                     GL_ANGLE_texture_compression_dxt3
                     GL_ANGLE_texture_compression_dxt5
                     GL_EXT_occlusion_query_boolean GL_EXT_texture_rg
                     GL_EXT_unpack_subimage GL_NV_draw_buffers GL_NV_read_buffer
                     GL_NV_read_depth GL_NV_read_depth_stencil GL_NV_read_stencil
                     GL_EXT_draw_buffers GL_EXT_map_buffer_range GL_KHR_debug
                     GL_KHR_texture_compression_astc_ldr GL_NV_pixel_buffer_object
                     GL_OES_depth_texture_cube_map GL_OES_required_internalformat
                     GL_OES_surfaceless_context GL_EXT_color_buffer_float
                     GL_EXT_sRGB_write_control GL_EXT_separate_shader_objects
                     GL_EXT_shader_framebuffer_fetch
                     GL_EXT_shader_implicit_conversions GL_EXT_shader_integer_mix
                     GL_EXT_compressed_ETC1_RGB8_sub_texture
                     GL_EXT_draw_buffers_indexed GL_EXT_draw_elements_base_vertex
                     GL_EXT_gpu_shader5 GL_EXT_primitive_bounding_box
                     GL_EXT_shader_io_blocks GL_EXT_texture_border_clamp
                     GL_EXT_texture_buffer GL_EXT_texture_view
                     GL_KHR_blend_equation_advanced
                     GL_KHR_blend_equation_advanced_coherent
                     GL_KHR_context_flush_control GL_NV_image_formats
                     GL_OES_draw_buffers_indexed GL_OES_draw_elements_base_vertex
                     GL_OES_gpu_shader5 GL_OES_primitive_bounding_box
                     GL_OES_sample_shading GL_OES_sample_variables
                     GL_OES_shader_io_blocks GL_OES_shader_multisample_interpolation
                     GL_OES_texture_border_clamp GL_OES_texture_buffer
                     GL_OES_texture_stencil8
                     GL_OES_texture_storage_multisample_2d_array GL_OES_texture_view
                     GL_EXT_blend_func_extended GL_EXT_float_blend
                     GL_EXT_texture_sRGB_R8 GL_EXT_texture_sRGB_RG8 GL_KHR_no_error
                     GL_KHR_texture_compression_astc_sliced_3d
                     GL_OES_EGL_image_external_essl3 GL_OES_shader_image_atomic
                     GL_EXT_multisampled_render_to_texture
                     GL_EXT_multisampled_render_to_texture2
                     GL_EXT_texture_compression_s3tc_srgb
                     GL_MESA_shader_integer_functions GL_EXT_color_buffer_half_float
                     GL_EXT_texture_compression_bptc
                     GL_EXT_texture_mirror_clamp_to_edge
                     GL_KHR_parallel_shader_compile GL_EXT_EGL_image_storage
                     GL_EXT_shader_framebuffer_fetch_non_coherent
                     GL_INTEL_blackhole_render GL_MESA_framebuffer_flip_y
                     GL_EXT_depth_clamp GL_MESA_bgra
      [00:08:15.817] GL ES 2 renderer features:
                     read-back format: BGRA
                     wl_shm sub-image to texture: yes
                     EGL Wayland extension: yes
      [00:08:15.825] event2  - sunxi-gpadc0/channel3/input0: not tagged as supported input device
      [00:08:15.854] event2  - not usi[  492.639666] [drm] [LVDS]sunxi_lvds_connector_get_modes start
      ng input device '/dev/input/even[  492.647254] [drm] sunxi-hdmi: drm hdmi detect: connect
      t2'
      [00:08:15.855] event3  - su[  492.655579] [drm] sunxi-hdmi: drm get edid support modes: 42
      nxi-gpadc0/channel4/input0: not tagged as supported input device
      [00:08:15.901] event3  - not using input device '/dev/input/event3'
      [00:08:15.903] event4  - sunxi-gpadc0/channel5/input0: not tagged as supported input device
      [00:08:15.953] event4  - not using input device '/dev/input/event4'
      [00:08:15.955] event5  - sunxi-gpadc0/channel6/input0: not tagged as supported input device
      [00:08:15.986] event5  - not using input device '/dev/input/event5'
      [00:08:15.987] event6  - sunxi-gpadc0/channel7/input0: not tagged as supported input device
      [00:08:16.029] event6  - not using input device '/dev/input/event6'
      [00:08:16.031] event0  - sunxi-keyboard: is tagged by udev as: Keyboard
      [00:08:16.031] event0  - sunxi-keyboard: device is a keyboard
      [00:08:16.033] event1  - sunxi_ir_recv: is tagged by udev as: Keyboard Pointingstick Joystick
      [00:08:16.033] event1  - sunxi_ir_recv: device is a pointer
      [00:08:16.033] event1  - sunxi_ir_recv: device is a keyboard
      [00:08:16.035] event7  - axp2202-pek: is tagged by udev as: Keyboard
      [00:08:16.035] event7  - axp2202-pek: device is a keyboard
      [00:08:16.037] event8  - audiocodec Headphones: is tagged by udev as: Keyboard Switch
      [00:08:16.037] event8  - audiocodec Headphones: device is a keyboard
      [00:08:16.060] libinput: configuring device "sunxi-keyboard".
      [00:08:16.060] libinput: configuring device "sunxi_ir_recv".
      [00:08:16.060] libinput: configuring device "axp2202-pek".
      [00:08:16.060] libinput: configuring device "audiocodec Headphones".
      [00:08:16.068] DRM: head 'LVDS-1' found, connector 133 is connected, EDID make 'unknown', model 'unknown', serial 'unknown'
      [00:08:16.086] DRM: head 'HDMI-A-1' found, connector 135 is connected, EDID make 'DEL', model 'DELL U2414H', serial '4CWX76429U6L'
      [00:08:16.086] Registered plugin API 'weston_drm_output_api_v1' of size 24
      [00:08:16.086] Chosen EGL config details: id:  25 rgba: 8 8 8 0 buf: 24 dep:  0 stcl: 0 int: 1-1 type: win vis_id: XRGB8888 (0x34325258)
      [00:08:16.087] Output LVDS-1 (crtc 115) video modes:
                     1280x800@60.2, preferred, current, 65.0 MHz
      [00:08:16.087] associating input device event0 with output LVDS-1 (none by udev)
      [00:08:16.087] associating input device event1 with output LVDS-1 (none by udev)
      [00:08:16.087] associating input device event7 with output LVDS-1 (none by udev)
      [00:08:16.087] associating input device event8 with output LVDS-1 (none by udev)
      [00:08:16.087] Output 'LVDS-1' enabled with head(s) LVDS-1
      [00:08:16.087] Chosen EGL config details: id:  25 rgba: 8 8 8 0 buf: 24 dep:  0 stcl: 0 int: 1-1 type: win vis_id: XRGB8888 (0x34325258)
      [00:08:16.087] Output HDMI-A-1 (crtc 94) video modes:
                     1920x1080@60.0, preferred, current, 148.5 MHz
                     1920x1080@60.0 16:9, 148.5 MHz
                     1920x1080@59.9 16:9, 148.4 MHz
                     1920x1080@60.0, 74.2 MHz
                     1920x1080@60.0 16:9, 74.2 MHz
                     1920x1080@59.9 16:9, 74.2 MHz
                     1920x1080@50.0 16:9, 148.5 MHz
                     1920x1080@50.0 16:9, 74.2 MHz
                     1600x1200@60.0, 162.0 MHz
                     1600x900@60.0, 108.0 MHz
                     1280x1024@60.0, 108.0 MHz
                     1280x720@60.0, 74.2 MHz
                     1280x720@60.0 16:9, 74.2 MHz
                     1280x720@59.9 16:9, 74.2 MHz
                     1280x720@50.0 16:9, 74.2 MHz
                     1024x768@60.0, 65.0 MHz
                     800x600@60.3, 40.0 MHz
                     720x576@50.0 16:9, 27.0 MHz
                     720x576@50.0 16:9, 13.5 MHz
                     720x480@60.0 4:3, 27.0 MHz
                     720x480@60.0 16:9, 27.0 MHz
                     720x480@59.9, 27.0 MHz
                     720x480@59.9 16:9, 27.0 MHz
                     720x480@59.9 4:3, 27.0 MHz
                     720x480@60.0 16:9, 13.5 MHz
                     720x480@59.9 16:9, 13.5 MHz
                     640x480@60.0 4:3, 25.2 MHz
                     640x480@59.9, 25.2 MHz
                     640x480@59.9 4:3, 25.2 MHz
      [00:08:16.087] Output 'HDMI-A-1' enabled with head(s) HDMI-A-1
      [00:08:16.087] Compositor capabilities:
                     arbitrary surface rotation: yes
                     screen capture uses y-flip: yes
                     presentation clock: CLOCK_MONOTONIC, id 1
                     presentation clock resolution: 0.000000001 s
      [00:08:16.418] Loading module '/usr/lib/weston/desktop-shell.so'
      [00:08:16.419] launching '/usr/libexec/weston-keyboard'
      [00:08:16.421] Loading module '/usr/lib/libweston-9/xwayland.so'
      [00:08:16.440] Registered plugin API 'weston_xwayland_v1' of size 32
      [00:08:16.440] Registered plugin API 'weston_xwayland_surface_v1' of si[  493.060950] [drm] sunxi-hdmi: drm hdmi check mode: unchange >>>>>>>>>>>>>>>>
      ze 16
      [00:08:16.440] xserver listening on display :0
      [00:08:16.440] launching '/usr/libexec/weston-desktop-shell'
      could not load cursor 'dnd-move'
      could not load cursor 'dnd-move'
      could not load cursor 'dnd-copy'
      could not load cursor 'dnd-copy'
      could not load cursor 'dnd-none'
      could not load cursor 'dnd-none'
      Fontconfig warning: "/usr/share/fontconfig/conf.avail/44-wqy-zenhei.conf", line 11: Having multiple values in <test> isn't supported and may not work as expected
      Fontconfig warning: "/usr/share/fontconfig/conf.avail/44-wqy-zenhei.conf", line 11: Having multiple values in <test> isn't supported and may not work as expected
      xkbcommon: ERROR: couldn't find a Compose file for locale "C" (mapped to "C")
      could not create XKB compose table for locale 'C'.  Disabiling compose
      xkbcommon: ERROR: couldn't find a Compose file for locale "C" (mapped to "C")
      could not create XKB compose table for locale 'C'.  Disabiling compose
      [  494.282726] [drm] sunxi-hdmi: drm hdmi check mode: unchange >>>>>>>>>>>>>>>>
      [  494.317721] [drm] sunxi-hdmi: drm hdmi check mode: unchange >>>>>>>>>>>>>>>>
      
      root@Embfly-x527:/$ glmark2-es2-wayland
      =======================================================
          glmark2 2021.02
      =======================================================
          OpenGL Information
          GL_VENDOR:     Panfrost
          GL_RENDERER:   Mali-G57 (Panfrost)
          GL_VERSION:    OpenGL ES 3.1 Mesa 22.2.2
      =======================================================
      [build] use-vbo=false: FPS: 442 FrameTime: 2.262 ms
      [build] use-vbo=true: FPS: 676 FrameTime: 1.479 ms
      [texture] texture-filter=nearest: FPS: 672 FrameTime: 1.488 ms
      [texture] texture-filter=linear: FPS: 651 FrameTime: 1.536 ms
      [texture] texture-filter=mipmap:[  553.106439] [drm] sunxi-hdmi: drm hdmi check mode: unchange >>>>>>>>>>>>>>>>
      [  553.115778] [drm] sunxi-hdmi: drm hdmi check mode: unchange >>>>>>>>>>>>>>>>
       FPS: 664 FrameTime: 1.506 ms
      [shading] shading=gouraud: FPS: 695 FrameTime: 1.439 ms
      [shading] shading=blinn-phong-inf: FPS: 665 FrameTime: 1.504 ms
      [shading] shading=phong: FPS: 667 FrameTime: 1.499 ms
      [shading] shading=cel: FPS: 659 FrameTime: 1.517 ms
      [bump] bump-render=high-poly: FPS: 459 FrameTime: 2.179 ms
      [bump] bump-render=normals:[  613.105150] [drm] sunxi-hdmi: drm hdmi check mode: unchange >>>>>>>>>>>>>>>>
      [  613.114472] [drm] sunxi-hdmi: drm hdmi check mode: unchange >>>>>>>>>>>>>>>>
       FPS: 669 FrameTime: 1.495 ms
      [bump] bump-render=height: FPS: 655 FrameTime: 1.527 ms
      [effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 713 FrameTime: 1.403 ms
      [effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 298 FrameTime: 3.356 ms
      [pulsar] light=false:quads=5:texture=false: FPS: 642 FrameTime: 1.558 ms
      [desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 255 FrameTime: 3.922 ms
      [desktop] effect=shadow:windows=4:[  673.103149] [drm] sunxi-hdmi: drm hdmi check mode: unchange >>>>>>>>>>>>>>>>
      [  673.112629] [drm] sunxi-hdmi: drm hdmi check mode: unchange >>>>>>>>>>>>>>>>
       FPS: 363 FrameTime: 2.755 ms
      [buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 95 FrameTime: 10.526 ms
      [buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 96 FrameTime: 10.417 ms
      [buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 59 FrameTime: 16.949 ms
      [ideas] speed=duration: FPS: 230 FrameTime: 4.348 ms
      [jellyfish] <default>: FPS: 445 FrameTime: 2.247 ms
      [terrain] <default>:[  733.104976] [drm] sunxi-hdmi: drm hdmi check mode: unchange >>>>>>>>>>>>>>>>
      [  733.124117] [drm] sunxi-hdmi: drm hdmi check mode: unchange >>>>>>>>>>>>>>>>
       FPS: 26 FrameTime: 38.462 ms
      [shadow] <default>: FPS: 495 FrameTime: 2.020 ms
      [refract] <default>: FPS: 70 FrameTime: 14.286 ms
      [conditionals] fragment-steps=0:vertex-steps=0: FPS: 702 FrameTime: 1.425 ms
      [conditionals] fragment-steps=5:vertex-steps=0: FPS: 669 FrameTime: 1.495 ms
      [conditionals] fragment-steps=0:vertex-steps=5: FPS: 712 FrameTime: 1.404 ms
      [function] fragment-complexity=low:fragment-steps=5:[  793.104596] [drm] sunxi-hdmi: drm hdmi check mode: unchange >>>>>>>>>>>>>>>>
      [  793.114071] [drm] sunxi-hdmi: drm hdmi check mode: unchange >>>>>>>>>>>>>>>>
       FPS: 686 FrameTime: 1.458 ms
      [function] fragment-complexity=medium:fragment-steps=5: FPS: 714 FrameTime: 1.401 ms
      [loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 679 FrameTime: 1.473 ms
      [loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 712 FrameTime: 1.404 ms
      [loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 670 FrameTime: 1.493 ms
      =======================================================
                                        glmark2 Score: 512
      =======================================================
      
      
      发布在 T Series
      E
      embfly
    • 盈鹏飞嵌入式再添A527/T527核心模块新成员DIM-X527,八核2GHZ可插拔!

      今天,盈鹏飞嵌入式产品系列增加A527/T527核心模块新成员DIM-X527,该方案基于全志A527/T527高性能可选AI功能MPU,配备八核A55高性能处理器,RISC-V协处理器,支持2Tops NPU,满足边缘智能AI加速应用;

      另外,它还支持丰富的通讯接口,包括2路千兆以太网、1路PCIE2.1、2路CAN(仅T527支持)、10路UART串口等超多接口,功能强大。2Ghz的运行速度让A527适合智慧商显、零售支付、智慧教育、商用机器人等应用领域;
      T527稳定运行在-40-85度,更适合于智慧车载、视觉辅驾、工业控制、边缘计算、智能配电终端等。
      DIM-T527_V1.0 1763X1588.jpg
      产品特性:

      • 采用Allwinner公司Cortex-A55八核A527/T527处理器,最高速度为2.0GHZ;

      • 支持2TOPS NPU,仅特定型号支持;

      • 支持Mali-G57 MC1 GPU,支持OpenGL ES 3.2/2.0/1.0, Valkan 1.1,OpenCL 2.0

      • 支持4K/25fps H.264视频编码,支持4K/15fps MJPEG编码;
        多格式4K/60fps视频解码 (H.265,H.264,VC-1, MPEG-1/2/4, VP8) ;

      • 支持1-4G Bytes LPDDR4X SDRAM;支持EMMC 4G-64G大容量电子盘,可启动;

      • 支持双屏异显;支持双通道LVDS,分辨率最高1920x1080@60fps;支持HDMI 2.0B, 分辨率最高4K/60fps;支持MIPI DSI;

      • 支持PCIE2.1;支持 10路UART;支持双路CANBUS;支持双路千兆以太网;

      • 稳定的操作系统的支持,可预装Android13.0或者LINUX 5.15/Ubuntu 22.04

      • SODIMM_260POS设计, 尺寸69.645MM
         部件组成图:
        DIM-X527元件图_250616  878X522 .jpg
         产品参数: 
        DIM-X527产品参数.jpg
         产品框图: 
        DIM-X527核心板框图1523X1289.jpg
         引脚定义: 
        DIM-X527功能图1400X1400.jpg
        产品尺寸图: 
        DIM-X527尺寸图1249X816.jpg
        DIM-X527 评估板 AHD-X527简介
        AHD-X527淘宝图1571X1746.jpg
        AHD-X527框图:
        AHD-X527框图1945X1250.jpg
         AHD-X27功能图: 
        AHD-X527功能图.jpg
         全志T527简要介绍:
        内置8
        RAM Cortex-A55, 8核主频可运行至1.8GHz,提供更稳健强劲的处理能力

      • Octa-core ARM Cortex-A55 in a DynamlQ big.LITTLE configuration, up to 1.8 GHz

      • 32KB L1 I-cache and 32KB L1 D-cache per A55 core

      • Optional 64KB L2 cache per“LITTLE”core

      • Optional 128KB L2 cache per“big”core
        处理器功能.png
        集成ARM Mail-G57 GPU图形显示能力更上一层楼

      • ARM G57 MC1 GPU

      • Supports OpenGL ES 3.2/2.0/1.1, Vulkan 1.1/1.2/1.3, and OpenCL2.2

      • Anti-aliasing algorithm

      • High memory bandwidth and low power consumption in 3D graphics processing
        显示功能.png
        集成2Tops NPU为端侧语音、自然语言、 图像处理及 画质增强等AI应用提供性能支持

      • 2 TOPS NPU

      • Embedded 512KB internal buffer

      • Supports deep learning frameworks:TensorFlow, Pytorch, Caffe, Onnx NN, TFLite…
        NPU功能.png
         内置HiFi4 DSP,频率可达600MHz,广泛应用于图像、音频及数字信号处理的 专用领域为 影音娱乐、工业生产提供专属算力

      • HiFi4 Audio DSP

      • 32KB I-cache +32KB D-cache
        HIFI4 DSP功能.png
         内置RISC-V架构MCU,主频可达200MHz独立运行RTOS系统,为工业及机器人系统上 的实时处理、高速响应及工业级的稳定运行提供重要保障

      • RISC-V CPU, up to 200 MHz

      • 16 KB I-cache and 16 KB D-cache·RV32IMAFC instructions
        MCU功能.png
         全志T527产品框图:
        block_diagiam.png

      发布在 其它全志芯片讨论区
      E
      embfly
    • 一文带你玩转全志T527的GPU(1)-盈鹏飞嵌入式

      本文中涉及到产品的实际操作,该操作都是在盈鹏飞嵌入式AHD-X527主板上进行执行,AHD-X527介绍如下:

      AHD-X527产品特性:

      • 采用Allwinner公司Cortex-A55八核A527/T527处理器,运行最高速度为2.0GHZ(T527最高1.8GHZ);

      • 支持Mali-G57 MC1 GPU,支持OpenGL ES 3.2/2.0/1.0, Valkan 1.1,OpenCL 2.0

      • 支持4K/25fps H.264视频编码,支持4K/15fps MJPEG编码;

      • 多格式4K/60fps视频解码 (H.265,H.264,VC-1, MPEG-1/2/4, VP8) ;
        支持双屏异显;支持HDMI 2.0B, 分辨率最高4K@60fps;支持LVDS,分辨率最高1920x1080@60fps;支持MIPI DSI,分辨率最高2.5K@60fps(与LVDS复用);

      • 支持1-4G  Bytes LPDDR4X SDRAM;

      • 支持EMMC 8G-64G大容量电子盘,可启动;

      • 支持1路USB 3.0;支持3路USB2.0 HOST和一路OTG(TYPE-C接口);

      • 支持2路I2C(其中一路支持掉电唤醒)、2路PWM(应用于背光);

      • 支持双路千兆以太网;

      • 支持3G/4G通信;

      • 支持2路UART(TTL)、支持1路RS485、支持双路CAN BUS(2.0B,仅T527支持);

      • 支持MIPI CSI - 24-lane/42-lane/ 4+2*2-lane;

      • 操作系统的支持,可预装Android13/LINUX 5.15/Ubuntu 22.04;

      • 尺寸为146X119MM

      AHD-X527产品功能图:
      AHD-X527功能图.jpg

      一、A527/T527处理器简介

      T527是八核64位Cortex-A55 处理器,采用全新ARM v8.2-A架构,主频最高可达1.8GHz(A527最高速度是2.0GHz),效能有大幅提升;采用22nm先进工艺,具有低功耗高性能的特点

      T527集成了单核心架构 GPU,高性能VPU以及高效能 NPU。 GPU:Mail-G57,支持OpenGL ES3.2/2.0/1.1,Vulkan1.1;VPU:可实现4K 60fps H.265/H.264/VP9视频解码和1080P 60fps H.265/H.264视频编码;NPU:2.0Tops算力(特定型号支持),支持INT8/INT16混合操作。此外,兼容基于一系列框架的网络模型,如TensorFlow/MXNet/PyTorch/Caffe可轻松转换

      T527支持PCIE/USB3.0/HDMI/MIPI CSI/MIPI DSI/eDP/LVDS等各类型外围接口

      T527除支持Android及Linux系统外,更可适配多个主流国产OS
      9d7c0876-b543-4859-8396-630336ee52a7-image.png

      63933c11-3cfb-42a0-b626-111fd6e4b895-image.png

      二、T527平台GPU
      2.1、GPU简介
      GPU提供了一个基于开放标准的完整图形加速平台,支持2D/3D图形渲染硬件加速。GPU的作用是为计算机系统提供强大的图形处理和计算能力,能够处理大量的图形数据并进行高效的计算,从而实现各种应用的图形渲染、数据处理和加速等功能。T527是使用Mali-G57,支持OpenGL ES1.1/2.0/3.0,Vulkan 以及OpenCL。和Rk356x系列使用的虽有区别,但是性能区别不大。Rk356x是使用Mali-G52,支持OpenGL ES1.1/2.0/3.0,Vulkan 以及OpenCL。 这里不得不提RK3576,RK3576也是8核处理器,它使用大小核异构形式,RK3576虽然也是使用Mali-G52,但是它是使用G52 MC3。

      5bb2cc8d-80a2-4b81-9e38-81d53cb51601-image.png

      a4f9cd01-f635-4bf2-9c04-b31eaee46a72-image.png

      注意看下G57可以跑到850Mhz,后续介绍T527 GPU使用的时候,全部把这个限制在700MHZ。
      以下是RK3576的GPU的具体参数
      b86185b4-4780-4720-ba41-2ae1c06a607f-image.png

      77bcc885-2abb-41c2-8002-d013b8b579fe-image.png

      RK3576的处理单元是3个,而T527的处理单元只有一个。T527的Pixel fillrate是1.7G,而RK3576是5.1G。看似小小的区别,其实区别很大。

      当然了,如果是GPU的代差上看,RK3576是老了一代,Mali其实是ARM的Mali系列IP核,ARM mali gpu目前有四大架构,每一代架构在性能上都有提升和更高效的能耗管理:

      (1)第一代微架构Utgard(北欧神话人物:乌特加德),2007年推出,主要系列有:mali-200, mali-400, mali-450, mali-470

      (2)第二代微架构Midgard(北欧神话人物:米德加德),主要系列有:mali-t6xx, mali-t7xx, mali-t8xx

      (3)第三代微架构Bifrost(北欧神话中连接天宫和大地的:彩虹桥),2016年推出,主要系列有:mali-g31, mali-g51, mali-g71, mali-g52, mali-g72, mali-g76

      (4)第四代微架构Valhall,2019年退出,主要系列有:mali-g57, mali-g77

      2.2、GPU驱动
      Mali GPU 驱动一般分为两部分:一小部分在 Linux 内核中,另外一大部分在 userspace,在 usercapce 的部分向下操作内核中的驱动,向上对应用层提供标准的 OpenGL 接口,这样各种图形显示相关的应用才能通过标准的 OpenGL API 进行图形渲染加速。其 结构图 简单参考如下: 
      图1.jpg

      在linux系统上使用OpenGL ES或者OpenCL接口,需要添加libmali库以及头文件, libmali有不同的版本(x11,gbm,wayland),提供了opengles,egl,opencl接口

      图2.jpg

      但是 mali GPU IP 提供商 Arm 公司只开放了内核部分驱动,而且这部分驱动还没有按照 linux kernel 的规范以 Drm 的框架去实现,所以它无法被 linux mainline 接受;usersapce 部分,Arm没有开源,只是以库的形式提供给购买了 mali GPU 授权的 SOC 厂商,比如 Rockchip,Amlogic。

      面对这种状况,很多人为了能够利用 GPU 加速,就只能使用 SOC 原厂提供的内核,和他们定制的系统,这种内核和系统一般都比较老。如果想跑 mainline 的内核,基本就没法使用 GPU 加速了。

      但是也有一部分黑客们不满于这种封锁,他们勇于探索,积极尝试,逆向了 Arm 发布的二进制库(现在ARM公司已经承认了他们,并与他们合作了),然后重写了针对 Arm mali gpu 的开源驱动,最终在 Linux 5.2 发布的时候合并到了 mainline 中:针对 Mali-400/Mali-450 的驱动叫做 lima,针对 Mali-T6xx / Mali-T7xx / Mali-T8xx GPU 和 GXX 系列的叫做 panfrost。Usersacpe 部分的开源库叫做 mesa,对 mali gpu 的支持从 mesa 19.2 开始

      图3.jpg

      2.3、GPU驱动使用方案
      2.3.1、方案一:使用官方闭源的GPU驱动

      (闭源的驱动可以通过下面途径获取到)

      通过ARM官方的SDK编译下载,需要在buildroot中使能 valhall-mali,
      (全志公司已经编译好了,不需要我们再编译了,并且已经集成到了SDK中)

      e8a20cbc-3512-4f35-b897-9268bcf8cb76-image.png

      图8.jpg.png

      GPU库看似只能选择wayland/和fbdev,但是实际上在配置脚本中可以看到KMS选项,需要去掉BR2_PACKAGE_WAYLAND/ BR2_PACKAGE_WESTON_DRM,才可以选择KMS。

       config BR2_PACKAGE_GPU_UM_PUB_DEFAULT_KMS
      	bool "kms(gbm + drm)"
      	depends on !BR2_PACKAGE_WAYLAND && !BR2_PACKAGE_WESTON_DRM
      

      最后会全志编译好的库复制到rootfs中,以下是支持wayland的库,也有支持KMS的库。

      ping@embfly-server:/sda7/allwinner_a527/A527_Tina5.0_AIOT_V1.4.6/1.SDK/A527_Tina5.0_AIOT_V1.4.6/tina/platform/allwinner/display/libgpu/mali-g57/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/wayland/aarch64-none-linux-gnu/lib64$ tree -L 2
      .
      ├── cl
      │   ├── libOpenCL.so -> libOpenCL.so.2
      │   ├── libOpenCL.so.2 -> libOpenCL.so.2.1.0
      │   └── libOpenCL.so.2.1.0
      ├── egl
      │   ├── libEGL.so -> libEGL.so.1
      │   ├── libEGL.so.1 -> libEGL.so.1.4.0
      │   └── libEGL.so.1.4.0
      ├── gbm
      │   ├── libgbm.so -> libgbm.so.1
      │   ├── libgbm.so.1 -> libgbm.so.1.0.0
      │   └── libgbm.so.1.0.0
      ├── gles1
      │   ├── libGLESv1_CM.so -> libGLESv1_CM.so.1
      │   ├── libGLESv1_CM.so.1 -> libGLESv1_CM.so.1.1.0
      │   └── libGLESv1_CM.so.1.1.0
      ├── gles2
      │   ├── libGLESv2.so -> libGLESv2.so.2
      │   ├── libGLESv2.so.2 -> libGLESv2.so.2.1.0
      │   └── libGLESv2.so.2.1.0
      ├── mali
      │   ├── libmali.so -> libmali.so.0
      │   ├── libmali.so.0 -> libmali.so.0.32.0
      │   └── libmali.so.0.32.0
      ├── vulkan
      │   ├── libvulkan.so -> libvulkan.so.1
      │   ├── libvulkan.so.1 -> libvulkan.so.1.3.296
      │   └── libvulkan.so.1.3.296
      ├── vulkan_wsi
      │   └── libVkLayer_window_system_integration.so
      └── wayland-egl
          ├── libwayland-egl.so -> libwayland-egl.so.1
          ├── libwayland-egl.so.1 -> libwayland-egl.so.1.0.0
          └── libwayland-egl.so.1.0.0
      

      其实,这些库是有版本的,只是全志把他们封闭起来了,参考RK_libmali的命名规则:gpu型号-软件版本-硬件版本(如果有的话,比如说r1p0区分3288和3288w)-编译选项。
      aa2b7159-bda2-45fc-93f7-960bbd777eeb-image.png

      注意gbm是配置drm使用的memory机制,如果不是3.10的kernel,不要用fbdev的。

      (1)gbm:是给qt+eglfs这样的程序用的,不依赖x11,wayland。

      (2)wayland: 给wayland使用。

      (3)X11:是给xorg使用的。

      2.3.2、方案二:使用开源的mesa

      这种方案要 利用 linux kernel 的 Panfrost 驱动 + userspace 的 mesa 来解锁 3D 图形加速功能。但是这种方案对内核版本有要求,需要在5.2以上,但是瑞芯微提供的4.19的kernel版本还没有支持Panfrost 驱动,需要使用5.10内核版本的
      图3-1.jpg
      进一步深究,这个mesa库编译出来库都有什么呢?以下是编译出来的内容:

      ├── dri
      │   ├── armada-drm_dri.so
      │   ├── asahi_dri.so
      │   ├── etnaviv_dri.so
      │   ├── exynos_dri.so
      │   ├── hx8357d_dri.so
      │   ├── i830_dri.so
      │   ├── i915_dri.so
      │   ├── i965_dri.so
      │   ├── ili9225_dri.so
      │   ├── ili9341_dri.so
      │   ├── imx-dcss_dri.so
      │   ├── imx-drm_dri.so
      │   ├── ingenic-drm_dri.so
      │   ├── kgsl_dri.so
      │   ├── kms_swrast_dri.so
      │   ├── lima_dri.so
      │   ├── mcde_dri.so
      │   ├── mediatek_dri.so
      │   ├── meson_dri.so
      │   ├── mi0283qt_dri.so
      │   ├── msm_dri.so
      │   ├── mxsfb-drm_dri.so
      │   ├── nouveau_vieux_dri.so
      │   ├── panfrost_dri.so
      │   ├── pl111_dri.so
      │   ├── r200_dri.so
      │   ├── r300_dri.so
      │   ├── r600_dri.so
      │   ├── r600_drv_video.so
      │   ├── radeon_dri.so
      │   ├── repaper_dri.so
      │   ├── rockchip_dri.so
      │   ├── st7586_dri.so
      │   ├── st7735r_dri.so
      │   ├── stm_dri.so
      │   ├── sun4i-drm_dri.so
      │   ├── swrast_dri.so
      │   ├── v3d_dri.so
      │   ├── vc4_dri.so
      │   ├── virtio_gpu_dri.so
      │   └── zink_dri.so
      ├── libEGL.so -> libEGL.so.1
      ├── libEGL.so.1 -> libEGL.so.1.0.0
      ├── libEGL.so.1.0.0
      ├── libgbm.so -> libgbm.so.1
      ├── libgbm.so.1 -> libgbm.so.1.0.0
      ├── libgbm.so.1.0.0
      ├── libglapi.so -> libglapi.so.0
      ├── libglapi.so.0 -> libglapi.so.0.0.0
      ├── libglapi.so.0.0.0
      ├── libGLESv1_CM.so -> libGLESv1_CM.so.1
      ├── libGLESv1_CM.so.1 -> libGLESv1_CM.so.1.1.0
      ├── libGLESv1_CM.so.1.1.0
      ├── libGLESv2.so -> libGLESv2.so.2
      ├── libGLESv2.so.2 -> libGLESv2.so.2.0.0
      ├── libGLESv2.so.2.0.0
      ├── libGL.so -> libGL.so.1
      ├── libGL.so.1 -> libGL.so.1.2.0
      ├── libGL.so.1.2.0
      ├── libxatracker.so -> libxatracker.so.2
      ├── libxatracker.so.2 -> libxatracker.so.2.5.0
      ├── libxatracker.so.2.5.0
      └── pkgconfig
      

      说明:这里dri目录下的内容是和平台相关的(比如i915是intel的,lima和panfrost是mali的,只是支持的代数不一样而已)。T527平台就是选择的panfrost驱动。同时我们也可以看到libGLESv2.so/ libGL.so/ libEGL.so/ libgbm.so等身影,其实他们和ARM官方提供库名字是一致的。不过ARM官方提供的功能更全,而mesa只能算是阉割版本。

      发布在 T Series
      E
      embfly

    embfly 发布的最新帖子

    • 一文带你玩转全志T527的GPU(2)-盈鹏飞嵌入式

      本文中涉及到产品的实际操作,该操作都是在盈鹏飞嵌入式AHD-X527主板上进行执行,AHD-X527介绍如下:
       AHD-X527产品特性:

      • 采用Allwinner公司Cortex-A55八核A527/T527处理器,运行最高速度为2.0GHZ(T527最高1.8GHZ);

      • 支持Mali-G57 MC1 GPU,支持OpenGL ES 3.2/2.0/1.0, Valkan 1.1,OpenCL 2.0

      • 支持4K/25fps H.264视频编码,支持4K/15fps MJPEG编码;

      • 多格式4K/60fps视频解码 (H.265,H.264,VC-1, MPEG-1/2/4, VP8) ;

      • 支持双屏异显;支持HDMI 2.0B, 分辨率最高4K@60fps;支持LVDS,分辨率最高1920x1080@60fps;支持MIPI DSI,分辨率最高2.5K@60fps(与LVDS复用);

      • 支持1-4G  Bytes LPDDR4X SDRAM;

      • 支持EMMC 8G-64G大容量电子盘,可启动;

      • 支持1路USB 3.0;支持3路USB2.0 HOST和一路OTG(TYPE-C接口);

      • 支持2路I2C(其中一路支持掉电唤醒)、2路PWM(应用于背光);

      • 支持双路千兆以太网;

      • 支持3G/4G通信;

      • 支持2路UART(TTL)、支持1路RS485、支持双路CAN BUS(2.0B,仅T527支持);

      • 支持MIPI CSI - 24-lane/42-lane/ 4+2*2-lane;

      • 操作系统的支持,可预装Android13/LINUX 5.15/Ubuntu 22.04;

      • 尺寸为146X119MM

      AHD-X527产品功能图:

      AHD-X527功能图.jpg

      ​
      三、Linux图形显示

      Tina_Linux_图形系统_开发指南_linux图形系统-CSDN博客

      Tina_Linux_图形系统_开发指南_tinalinux-CSDN博客

      Wayland与Weston简介_weston wayland-CSDN博客

      Wayland与Weston简介_weston wayland-CSDN博客

      GPU的使用是需要结合图形显示系统的,对于不同的图形显示系统,GPU驱动库也有所不同,所以要使用GPU必须先了解Linux下的图形显示方式。

      linux是一个基于命令行的操作系统,图形界面是一个应用程序(而windows的图形界面是操作系统的一部分)。 Linux中图形显示所涉及的知识,简单框图如下所示:

      ​图4.jpg

      图5.jpg

      下面简单介绍一些图形相关的知识,包括内核驱动、图形API接口、显示管理器、窗口管理器、GUI应用工具,桌面环境等等。

      3.1. DRM/KMS
      Direct Rendering Manager(DRM)子系统用于linux内核显示、图形和合成子系统的管理。 通常使用该框架来控制显示接口和外部显示器(控制分辨率,频率,多屏显示等)、输出画面到显示面板、硬件渲染画面等。

      DRM是在内核空间,用户空间使用,通常通过相应的 libdrm 库函数调用, 也可以直接ioctl访问设备文件或者使用sysfs文件DRM驱动通信, 使用OpenGL或Vulkan等图形API的应用程序可以通过这些设备文件与GPU进行交互,以实现硬件加速渲染等。

      3.2. libdrm
      libdrm库,为DRM驱动ioctl提供了包装函数,避免了将内核接口直接暴露给应用程序, 通过libdrm对显示资源进行统一访问,libdrm将命令传递到内核最终由DRM驱动接管各应用的请求并处理。

      libdrm是一个底层库,通常被其他图形驱动程序调用,例如Mesa、X、libva和类似项目。

      3.3. OpenGL
      OpenGL是一组专门涉及2D和3D图形的硬件加速渲染的规范, 至于内部具体每个函数是如何实现,将由编写OpenGL库的人自行决定,实际通常是GPU的生产商。 OpenGL API实现通常是C语言,也有其他语言的实现,如Java、Golang和Rust等。

      OpenGL ES(OpenGL for Embedded Systems)是适用于嵌入式设备的OpenGL规范,针对Android手机和iPhone等嵌入式设备。

      EGL 是一个依赖于平台的API, 是渲染 API(如 OpenGL ES)和原生窗口系统之间的接口。通常来说,OpenGL 是一个操作 GPU 的 API,它通过驱动向 GPU 发送相关指令,控制图形渲染管线状态机的运行状态,但是当涉及到与本地窗口系统进行交互时,就需要这么一个中间层,因此 EGL 被设计出来,作为 OpenGL 和原生窗口系统之间的桥梁,且它与平台无关的。

      图6.jpg

      3.4. Vulkan
      Vulkan 是一个低开销、跨平台的2D和3D图形与计算的应用程序接口(API),能够跨平台高效访问GPU。

      Vulkan的设计目标是提供一个更轻量级、更高效的图形API,以取代OpenGL等传统的图形API。 作为业内开放标准的现代GPU API,开发人员能够编写可移植到多个不同平台的应用程序。

      3.5. Mesa
      Mesa 也称为Mesa3D和Mesa 3D图形库,是OpenGL、Vulkan和其他图形API规范的开源实现。 Mesa将这些API规范转换为特定于供应商的图形硬件驱动程序。

      Mesa项目最初是作为OpenGL规范的开源实现而开始。经过多年来发展,具有跨平台支持、高性能、开源和扩展性等特点,并且该项目已经扩展到实现更多的图形API, 包括OpenGL ES、OpenCL、OpenMAX、VDPAU、VA-API、Vulkan和EGL。

      3.6. X Window System
      大多数基于Linux的发行版都使用 X Window System (X11,或者简称X) , 它是基于客户端-服务器体系结构,可以在远程环境中使用。

      X Window系统基于客户端-服务器体系结构,客户端和服务器可以在同一台机器上也可以不在同一台机器上,就需要一个在客户端和服务器之间传递消息的协议。 X11协议就是负责消息传递,当客户端和服务器在同一台机器上时,消息通过UNIX套接字进行交换,不同机器上通过网络(TCP/IP)

      3.7. Wayland
      Wayland 是一种显示服务协议,不依赖客户端-服务器体系结构,旨在提供一个现代、 安全的的Linux和其他类Unix操作系统窗口系统取代X Window system,而Weston是Wayland开源显示协议的参考实现

      3.8. EGLFS
      EGLFS是QT自带的一个平台插件,可以在EGL和OpenGL ES之上运行Qt应用程序,而不需要通过X11或Wayland这样的实际窗口系统。 EGLFS还支持软件渲染窗口,如QWidget的内容使用CPU渲染成图像,然后上传到纹理中,并由插件进行合成。

      四、T527 GPU使用
      T527 GPU的使用,还要分两种GPU驱动来说,一种是闭源驱动mali,一种是开源panforst驱动。

      4.1、闭源GPU驱动的测试

      由于部分 Android 平台 GKI 的要求,默认不开启CONFIG_DEBUG_FS, 导致 cpu_monitor 工具无法获取gpu 的频率信息,于是 mali‑valhall dirver 将 debugfs 相应的功能移动到 sysfs。具体的路径位于:
      /sys/devices/platform/soc@3000000/1800000.gpu/sunxi_gpu。接下来介绍下 sysfs 调试节点的使用方法。
      scene_ctrl:可读写,GPU 是否运行在性能模式
      echo 1 >scene_ctrl; GPU将会关闭dvfs,运行在最高频。
      0:关闭
      1:开启
      
      sunxi_gpu_freq:可读写,用来查看、改变 GPU 的频率
      /sys/devices/platform/soc@3000000/1800000.gpu/sunxi_gpu # cat sunxi_gpu_freq
      Frequency:696MHz; //GPU当前的频率
      Utilisation from last show:0%; //GPU当前的负载率,这两个信息是用户最常用的
      // 更改GPU的频率,单位是MHz,将GPU频率设为600MHz;同时会将dvfs关闭
      /sys/devices/platform/soc@3000000/1800000.gpu/sunxi_gpu # echo 600 >sunxi_gpu_freq
      /sys/devices/platform/soc@3000000/1800000.gpu/sunxi_gpu # cat sunxi_gpu_freq
      Frequency:600MHz;
      Utilisation from last show:0%;
      如果更改频率失败,会有以下提示:
      /sys/devices/platform/soc@3000000/1800000.gpu/sunxi_gpu # echo 1 >sunxi_gpu_freq
      [ 1212.444659] mali 1800000.gpu: sunxi:mali_kbase:set gpu core clock to 1000000 err ‑22!
      注意:虽然更改频率失败,但仍会影响dvfs_ctrl的值,将dvfs_ctrl设为0,即dvfs不再起作用。读写频率的单位MHz。
      
      sunxi_gpu_volt:可读写,用来查看、改变 GPU 的电压 (GPU 独立供电时才能更改电压)
      /sys/devices/platform/soc@3000000/1800000.gpu/sunxi_gpu # cat sunxi_gpu_volt
      920mv
      //非独立供电时,尝试更改电压会报错
      /sys/devices/platform/soc@3000000/1800000.gpu/sunxi_gpu # echo 900 >sunxi_gpu_volt
      [ 1315.910428] mali 1800000.gpu: sunxi:mali_kbase:[ERR]: GPU not support change voltage!!!
      ash: write error: Operation not permitted
      注意:读写电压的单位是mv
      
      sunxi_gpu_dvfs:可读写,用来查看、配置 dvfs 对 GPU 的控制
      echo 0 >sunxi_gpu_dvfs;//dvfs将不再影响GPU的频率,这个配置,只有内核开启PM_DEVFREQ
      并且GPU驱动开启CONFIG_MALI_DEVFREQ选项时才有效。
      
      sunxi_gpu_info:只读,查看 GPU 详细的运行信息和几组重要寄存器的值
      /sys/devices/platform/soc@3000000/1800000.gpu/sunxi_gpu # cat sunxi_gpu_info
      voltage:920mV;
      idle:on;
      scenectrl:off;
      dvfs:off;
      independent_power:no;
      Frequency:600MHz;
      Utilisation from last show:0%;
      Register state:
      GPU_IRQ_RAWSTAT=0x00000000 GPU_STATUS=0x00000100
      JOB_IRQ_RAWSTAT=0x90910010 JOB_IRQ_JS_STATE=0x00000001
      JS0_STATUS=0x00000000 JS0_HEAD_LO=0x00000000
      JS1_STATUS=0x00000000 JS1_HEAD_LO=0x00000000
      JS2_STATUS=0x00000000 JS2_HEAD_LO=0x00000000
      MMU_IRQ_RAWSTAT=0x00000000 GPU_FAULTSTATUS=0x00000000
      GPU_IRQ_MASK=0x00000000 JOB_IRQ_MASK=0x00000000 MMU_IRQ_MASK=0x00000000
      PWR_OVERRIDE0=0x00000000 PWR_OVERRIDE1=0x00000000
      SHADER_CONFIG=0x20000000 L2_MMU_CONFIG=0x00000000
      TILER_CONFIG=0x00000000 JM_CONFIG=0x000f0000
      
      

      4.2、开源GPU驱动Panfrost的测试

      具体的路径位于:/sys/devices/platform/soc@3000000/1800000.gpu/devfreq/1800000.gpu

      注意:路径和闭源驱动不同了。

      embfly-x527:/sys/devices/platform/soc@3000000/1800000.gpu/devfreq/1800000.gp
      available_frequencies  max_freq               subsystem
      available_governors    min_freq               target_freq
      cur_freq               name                   timer
      device                 polling_interval       trans_stat
      governor               power                  uevent
      
      

      available_frequencies表示可用的GPU频率:

      #cat available_frequencies
      150000000 200000000 300000000 400000000 600000000 696000000
      

      可以看到最高频率是696Mhz,这个和G57标称的有区别,G57标称的最高频率是850MHZ ,而全志只能让它跑在700Mhz,分析估计是散热问题,跑太快,发热量高,最后导致不稳定。

      available_governors表示GPU支持的工作方式,和CPU比较类似:

      #cat available_governors
      userspace performance simple_ondemand
      

      GPU的工作支持performance(最高性能),也支持simple_ondemand按照需求调度。那么默认是什么工作方式呢?通过如下指令可以获得:

      #cat governor
      simple_ondemand
      

      目前不得而知如何让其默认工作在性能模式。

      4.3、开源GPU驱动Panfrost下glmark2的跑分

      glmark2是一个用于评估OpenGL(图形编程接口)性能的基准测试工具。它可以测试图形处理器(GPU)在处理图形渲染任务时的性能表现。

      root@Embfly-x527:/$ glmark2-es2-drm
      [  135.729283] [drm] [LVDS]sunxi_lvds_connector_get_modes start
      =======================================================
          glmark2 2021.02
      =======================================================
          OpenGL Information
          GL_VENDOR:     Panfrost
          GL_RENDERER:   Mali-G57 (Panfrost)
          GL_VERSION:    OpenGL ES 3.1 Mesa 22.2.2
      =======================================================
      [build] use-vbo=false: FPS: 59 FrameTime: 16.949 ms
      [build] use-vbo=true: FPS: 59 FrameTime: 16.949 ms
      [texture] texture-filter=nearest: FPS: 59 FrameTime: 16.949 ms
      [texture] texture-filter=linear: FPS: 59 FrameTime: 16.949 ms
      [texture] texture-filter=mipmap: FPS: 59 FrameTime: 16.949 ms
      [shading] shading=gouraud: FPS: 59 FrameTime: 16.949 ms
      [shading] shading=blinn-phong-inf: FPS: 59 FrameTime: 16.949 ms
      [shading] shading=phong: FPS: 59 FrameTime: 16.949 ms
      [shading] shading=cel: FPS: 59 FrameTime: 16.949 ms
      [bump] bump-render=high-poly: FPS: 59 FrameTime: 16.949 ms
      [bump] bump-render=normals: FPS: 59 FrameTime: 16.949 ms
      [bump] bump-render=height: FPS: 59 FrameTime: 16.949 ms
      [effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 59 FrameTime: 16.949 ms
      [effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 59 FrameTime: 16.949 ms
      [pulsar] light=false:quads=5:texture=false: FPS: 59 FrameTime: 16.949 ms
      [desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 59 FrameTime: 16.949 ms
      [desktop] effect=shadow:windows=4: FPS: 59 FrameTime: 16.949 ms
      [buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 59 FrameTime: 16.949 ms
      [buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 59 FrameTime: 16.949 ms
      [buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 59 FrameTime: 16.949 ms
      [ideas] speed=duration: FPS: 59 FrameTime: 16.949 ms
      [jellyfish] <default>: FPS: 59 FrameTime: 16.949 ms
      [terrain] <default>: FPS: 14 FrameTime: 71.429 ms
      [shadow] <default>: FPS: 59 FrameTime: 16.949 ms
      [refract] <default>: FPS: 43 FrameTime: 23.256 ms
      [conditionals] fragment-steps=0:vertex-steps=0: FPS: 59 FrameTime: 16.949 ms
      [conditionals] fragment-steps=5:vertex-steps=0: FPS: 59 FrameTime: 16.949 ms
      [conditionals] fragment-steps=0:vertex-steps=5: FPS: 59 FrameTime: 16.949 ms
      [function] fragment-complexity=low:fragment-steps=5: FPS: 59 FrameTime: 16.949 ms
      [function] fragment-complexity=medium:fragment-steps=5: FPS: 59 FrameTime: 16.949 ms
      [loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 59 FrameTime: 16.949 ms
      [loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 59 FrameTime: 16.949 ms
      [loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 59 FrameTime: 16.949 ms
      =======================================================
                                        glmark2 Score: 57
      =======================================================
      
      ///////////////////////////////////////////
      glmark2-es-wayland测试先要启动weston,否则不工作
      root@Embfly-x527:/$ /etc/init.d/S40weston start
      mkdir: can't create directory '/tmp/wayland': File exists
      root@Embfly-x527:/$ Date: 2000-01-01 UTC
      [00:08:15.443] weston 9.0.0
                     https://wayland.freedesktop.org
                     Bug reports to: https://gitlab.freedesktop.org/wayland/weston/issues/
                     Build: 9.0.0
      [00:08:15.444] Command line: weston --backend=drm-backend.so --tty=1 --xwayland
      [00:08:15.444] OS: Linux, 5.15.147, #5 SMP PREEMPT Sat Jul 19 14:38:28 CST 2025, aarch64
      [00:08:15.444] Using config file '/etc/xdg/weston/weston.ini'
      [00:08:15.444] Output repaint window is 7 ms maximum.
      [00:08:15.444] Loading module '/usr/lib/libweston-9/drm-backend.so'
      [00:08:15.446] initializing drm backend
      [00:08:15.449] using /dev/dri/card0
      [00:08:15.449] DRM: supports atomic modesetting
      [00:08:15.449] DRM: supports GBM modifiers
      [00:08:15.449] DRM: supports picture aspect ratio
      [00:08:15.449] Loading module '/usr/lib/libweston-9/gl-renderer.so'
      [00:08:15.477] EGL client extensions: EGL_EXT_device_base
                     EGL_EXT_device_enumeration EGL_EXT_device_query
                     EGL_EXT_platform_base EGL_KHR_client_get_all_proc_addresses
                     EGL_EXT_client_extensions EGL_KHR_debug EGL_EXT_platform_device
                     EGL_EXT_platform_wayland EGL_KHR_platform_wayland
                     EGL_MESA_platform_gbm EGL_KHR_platform_gbm
                     EGL_MESA_platform_surfaceless
      [00:08:15.481] EGL version: 1.4
      [00:08:15.481] EGL vendor: Mesa Project
      [00:08:15.481] EGL client APIs: OpenGL OpenGL_ES
      [00:08:15.481] EGL extensions: EGL_ANDROID_blob_cache EGL_EXT_buffer_age
                     EGL_EXT_image_dma_buf_import
                     EGL_EXT_image_dma_buf_import_modifiers EGL_KHR_cl_event2
                     EGL_KHR_config_attribs EGL_KHR_context_flush_control
                     EGL_KHR_create_context EGL_KHR_create_context_no_error
                     EGL_KHR_fence_sync EGL_KHR_get_all_proc_addresses
                     EGL_KHR_gl_colorspace EGL_KHR_gl_renderbuffer_image
                     EGL_KHR_gl_texture_2D_image EGL_KHR_gl_texture_3D_image
                     EGL_KHR_gl_texture_cubemap_image EGL_KHR_image
                     EGL_KHR_image_base EGL_KHR_image_pixmap
                     EGL_KHR_no_config_context EGL_KHR_partial_update
                     EGL_KHR_reusable_sync EGL_KHR_surfaceless_context
                     EGL_EXT_pixel_format_float EGL_KHR_wait_sync
                     EGL_MESA_configless_context EGL_MESA_drm_image
                     EGL_MESA_image_dma_buf_export EGL_MESA_query_driver
                     EGL_WL_bind_wayland_display
      [00:08:15.482] warning: Disabling render GPU timeline and explicit synchronization due to missing EGL_ANDROID_native_fence_sync extension
      [00:08:15.482] EGL_KHR_surfaceless_context available
      [00:08:15.486] GL version: OpenGL ES 3.1 Mesa 22.2.2
      [00:08:15.486] GLSL version: OpenGL ES GLSL ES 3.10
      [00:08:15.486] GL vendor: Panfrost
      [00:08:15.486] GL renderer: Mali-G57 (Panfrost)
      [00:08:15.487] GL extensions: GL_EXT_blend_minmax GL_EXT_multi_draw_arrays
                     GL_EXT_texture_filter_anisotropic
                     GL_EXT_texture_compression_s3tc GL_EXT_texture_compression_dxt1
                     GL_EXT_texture_compression_rgtc GL_EXT_texture_format_BGRA8888
                     GL_OES_compressed_ETC1_RGB8_texture GL_OES_depth24
                     GL_OES_element_index_uint GL_OES_fbo_render_mipmap
                     GL_OES_mapbuffer GL_OES_rgb8_rgba8 GL_OES_standard_derivatives
                     GL_OES_stencil8 GL_OES_texture_3D GL_OES_texture_float
                     GL_OES_texture_float_linear GL_OES_texture_half_float
                     GL_OES_texture_half_float_linear GL_OES_texture_npot
                     GL_OES_vertex_half_float GL_EXT_draw_instanced
                     GL_EXT_texture_sRGB_decode GL_OES_EGL_image
                     GL_OES_depth_texture GL_OES_packed_depth_stencil
                     GL_EXT_texture_type_2_10_10_10_REV GL_NV_conditional_render
                     GL_OES_get_program_binary GL_APPLE_texture_max_level
                     GL_EXT_discard_framebuffer GL_EXT_read_format_bgra
                     GL_NV_pack_subimage GL_EXT_frag_depth
                     GL_NV_fbo_color_attachments GL_OES_EGL_image_external
                     GL_OES_EGL_sync GL_OES_vertex_array_object
                     GL_ANGLE_pack_reverse_row_order
                     GL_ANGLE_texture_compression_dxt3
                     GL_ANGLE_texture_compression_dxt5
                     GL_EXT_occlusion_query_boolean GL_EXT_texture_rg
                     GL_EXT_unpack_subimage GL_NV_draw_buffers GL_NV_read_buffer
                     GL_NV_read_depth GL_NV_read_depth_stencil GL_NV_read_stencil
                     GL_EXT_draw_buffers GL_EXT_map_buffer_range GL_KHR_debug
                     GL_KHR_texture_compression_astc_ldr GL_NV_pixel_buffer_object
                     GL_OES_depth_texture_cube_map GL_OES_required_internalformat
                     GL_OES_surfaceless_context GL_EXT_color_buffer_float
                     GL_EXT_sRGB_write_control GL_EXT_separate_shader_objects
                     GL_EXT_shader_framebuffer_fetch
                     GL_EXT_shader_implicit_conversions GL_EXT_shader_integer_mix
                     GL_EXT_compressed_ETC1_RGB8_sub_texture
                     GL_EXT_draw_buffers_indexed GL_EXT_draw_elements_base_vertex
                     GL_EXT_gpu_shader5 GL_EXT_primitive_bounding_box
                     GL_EXT_shader_io_blocks GL_EXT_texture_border_clamp
                     GL_EXT_texture_buffer GL_EXT_texture_view
                     GL_KHR_blend_equation_advanced
                     GL_KHR_blend_equation_advanced_coherent
                     GL_KHR_context_flush_control GL_NV_image_formats
                     GL_OES_draw_buffers_indexed GL_OES_draw_elements_base_vertex
                     GL_OES_gpu_shader5 GL_OES_primitive_bounding_box
                     GL_OES_sample_shading GL_OES_sample_variables
                     GL_OES_shader_io_blocks GL_OES_shader_multisample_interpolation
                     GL_OES_texture_border_clamp GL_OES_texture_buffer
                     GL_OES_texture_stencil8
                     GL_OES_texture_storage_multisample_2d_array GL_OES_texture_view
                     GL_EXT_blend_func_extended GL_EXT_float_blend
                     GL_EXT_texture_sRGB_R8 GL_EXT_texture_sRGB_RG8 GL_KHR_no_error
                     GL_KHR_texture_compression_astc_sliced_3d
                     GL_OES_EGL_image_external_essl3 GL_OES_shader_image_atomic
                     GL_EXT_multisampled_render_to_texture
                     GL_EXT_multisampled_render_to_texture2
                     GL_EXT_texture_compression_s3tc_srgb
                     GL_MESA_shader_integer_functions GL_EXT_color_buffer_half_float
                     GL_EXT_texture_compression_bptc
                     GL_EXT_texture_mirror_clamp_to_edge
                     GL_KHR_parallel_shader_compile GL_EXT_EGL_image_storage
                     GL_EXT_shader_framebuffer_fetch_non_coherent
                     GL_INTEL_blackhole_render GL_MESA_framebuffer_flip_y
                     GL_EXT_depth_clamp GL_MESA_bgra
      [00:08:15.817] GL ES 2 renderer features:
                     read-back format: BGRA
                     wl_shm sub-image to texture: yes
                     EGL Wayland extension: yes
      [00:08:15.825] event2  - sunxi-gpadc0/channel3/input0: not tagged as supported input device
      [00:08:15.854] event2  - not usi[  492.639666] [drm] [LVDS]sunxi_lvds_connector_get_modes start
      ng input device '/dev/input/even[  492.647254] [drm] sunxi-hdmi: drm hdmi detect: connect
      t2'
      [00:08:15.855] event3  - su[  492.655579] [drm] sunxi-hdmi: drm get edid support modes: 42
      nxi-gpadc0/channel4/input0: not tagged as supported input device
      [00:08:15.901] event3  - not using input device '/dev/input/event3'
      [00:08:15.903] event4  - sunxi-gpadc0/channel5/input0: not tagged as supported input device
      [00:08:15.953] event4  - not using input device '/dev/input/event4'
      [00:08:15.955] event5  - sunxi-gpadc0/channel6/input0: not tagged as supported input device
      [00:08:15.986] event5  - not using input device '/dev/input/event5'
      [00:08:15.987] event6  - sunxi-gpadc0/channel7/input0: not tagged as supported input device
      [00:08:16.029] event6  - not using input device '/dev/input/event6'
      [00:08:16.031] event0  - sunxi-keyboard: is tagged by udev as: Keyboard
      [00:08:16.031] event0  - sunxi-keyboard: device is a keyboard
      [00:08:16.033] event1  - sunxi_ir_recv: is tagged by udev as: Keyboard Pointingstick Joystick
      [00:08:16.033] event1  - sunxi_ir_recv: device is a pointer
      [00:08:16.033] event1  - sunxi_ir_recv: device is a keyboard
      [00:08:16.035] event7  - axp2202-pek: is tagged by udev as: Keyboard
      [00:08:16.035] event7  - axp2202-pek: device is a keyboard
      [00:08:16.037] event8  - audiocodec Headphones: is tagged by udev as: Keyboard Switch
      [00:08:16.037] event8  - audiocodec Headphones: device is a keyboard
      [00:08:16.060] libinput: configuring device "sunxi-keyboard".
      [00:08:16.060] libinput: configuring device "sunxi_ir_recv".
      [00:08:16.060] libinput: configuring device "axp2202-pek".
      [00:08:16.060] libinput: configuring device "audiocodec Headphones".
      [00:08:16.068] DRM: head 'LVDS-1' found, connector 133 is connected, EDID make 'unknown', model 'unknown', serial 'unknown'
      [00:08:16.086] DRM: head 'HDMI-A-1' found, connector 135 is connected, EDID make 'DEL', model 'DELL U2414H', serial '4CWX76429U6L'
      [00:08:16.086] Registered plugin API 'weston_drm_output_api_v1' of size 24
      [00:08:16.086] Chosen EGL config details: id:  25 rgba: 8 8 8 0 buf: 24 dep:  0 stcl: 0 int: 1-1 type: win vis_id: XRGB8888 (0x34325258)
      [00:08:16.087] Output LVDS-1 (crtc 115) video modes:
                     1280x800@60.2, preferred, current, 65.0 MHz
      [00:08:16.087] associating input device event0 with output LVDS-1 (none by udev)
      [00:08:16.087] associating input device event1 with output LVDS-1 (none by udev)
      [00:08:16.087] associating input device event7 with output LVDS-1 (none by udev)
      [00:08:16.087] associating input device event8 with output LVDS-1 (none by udev)
      [00:08:16.087] Output 'LVDS-1' enabled with head(s) LVDS-1
      [00:08:16.087] Chosen EGL config details: id:  25 rgba: 8 8 8 0 buf: 24 dep:  0 stcl: 0 int: 1-1 type: win vis_id: XRGB8888 (0x34325258)
      [00:08:16.087] Output HDMI-A-1 (crtc 94) video modes:
                     1920x1080@60.0, preferred, current, 148.5 MHz
                     1920x1080@60.0 16:9, 148.5 MHz
                     1920x1080@59.9 16:9, 148.4 MHz
                     1920x1080@60.0, 74.2 MHz
                     1920x1080@60.0 16:9, 74.2 MHz
                     1920x1080@59.9 16:9, 74.2 MHz
                     1920x1080@50.0 16:9, 148.5 MHz
                     1920x1080@50.0 16:9, 74.2 MHz
                     1600x1200@60.0, 162.0 MHz
                     1600x900@60.0, 108.0 MHz
                     1280x1024@60.0, 108.0 MHz
                     1280x720@60.0, 74.2 MHz
                     1280x720@60.0 16:9, 74.2 MHz
                     1280x720@59.9 16:9, 74.2 MHz
                     1280x720@50.0 16:9, 74.2 MHz
                     1024x768@60.0, 65.0 MHz
                     800x600@60.3, 40.0 MHz
                     720x576@50.0 16:9, 27.0 MHz
                     720x576@50.0 16:9, 13.5 MHz
                     720x480@60.0 4:3, 27.0 MHz
                     720x480@60.0 16:9, 27.0 MHz
                     720x480@59.9, 27.0 MHz
                     720x480@59.9 16:9, 27.0 MHz
                     720x480@59.9 4:3, 27.0 MHz
                     720x480@60.0 16:9, 13.5 MHz
                     720x480@59.9 16:9, 13.5 MHz
                     640x480@60.0 4:3, 25.2 MHz
                     640x480@59.9, 25.2 MHz
                     640x480@59.9 4:3, 25.2 MHz
      [00:08:16.087] Output 'HDMI-A-1' enabled with head(s) HDMI-A-1
      [00:08:16.087] Compositor capabilities:
                     arbitrary surface rotation: yes
                     screen capture uses y-flip: yes
                     presentation clock: CLOCK_MONOTONIC, id 1
                     presentation clock resolution: 0.000000001 s
      [00:08:16.418] Loading module '/usr/lib/weston/desktop-shell.so'
      [00:08:16.419] launching '/usr/libexec/weston-keyboard'
      [00:08:16.421] Loading module '/usr/lib/libweston-9/xwayland.so'
      [00:08:16.440] Registered plugin API 'weston_xwayland_v1' of size 32
      [00:08:16.440] Registered plugin API 'weston_xwayland_surface_v1' of si[  493.060950] [drm] sunxi-hdmi: drm hdmi check mode: unchange >>>>>>>>>>>>>>>>
      ze 16
      [00:08:16.440] xserver listening on display :0
      [00:08:16.440] launching '/usr/libexec/weston-desktop-shell'
      could not load cursor 'dnd-move'
      could not load cursor 'dnd-move'
      could not load cursor 'dnd-copy'
      could not load cursor 'dnd-copy'
      could not load cursor 'dnd-none'
      could not load cursor 'dnd-none'
      Fontconfig warning: "/usr/share/fontconfig/conf.avail/44-wqy-zenhei.conf", line 11: Having multiple values in <test> isn't supported and may not work as expected
      Fontconfig warning: "/usr/share/fontconfig/conf.avail/44-wqy-zenhei.conf", line 11: Having multiple values in <test> isn't supported and may not work as expected
      xkbcommon: ERROR: couldn't find a Compose file for locale "C" (mapped to "C")
      could not create XKB compose table for locale 'C'.  Disabiling compose
      xkbcommon: ERROR: couldn't find a Compose file for locale "C" (mapped to "C")
      could not create XKB compose table for locale 'C'.  Disabiling compose
      [  494.282726] [drm] sunxi-hdmi: drm hdmi check mode: unchange >>>>>>>>>>>>>>>>
      [  494.317721] [drm] sunxi-hdmi: drm hdmi check mode: unchange >>>>>>>>>>>>>>>>
      
      root@Embfly-x527:/$ glmark2-es2-wayland
      =======================================================
          glmark2 2021.02
      =======================================================
          OpenGL Information
          GL_VENDOR:     Panfrost
          GL_RENDERER:   Mali-G57 (Panfrost)
          GL_VERSION:    OpenGL ES 3.1 Mesa 22.2.2
      =======================================================
      [build] use-vbo=false: FPS: 442 FrameTime: 2.262 ms
      [build] use-vbo=true: FPS: 676 FrameTime: 1.479 ms
      [texture] texture-filter=nearest: FPS: 672 FrameTime: 1.488 ms
      [texture] texture-filter=linear: FPS: 651 FrameTime: 1.536 ms
      [texture] texture-filter=mipmap:[  553.106439] [drm] sunxi-hdmi: drm hdmi check mode: unchange >>>>>>>>>>>>>>>>
      [  553.115778] [drm] sunxi-hdmi: drm hdmi check mode: unchange >>>>>>>>>>>>>>>>
       FPS: 664 FrameTime: 1.506 ms
      [shading] shading=gouraud: FPS: 695 FrameTime: 1.439 ms
      [shading] shading=blinn-phong-inf: FPS: 665 FrameTime: 1.504 ms
      [shading] shading=phong: FPS: 667 FrameTime: 1.499 ms
      [shading] shading=cel: FPS: 659 FrameTime: 1.517 ms
      [bump] bump-render=high-poly: FPS: 459 FrameTime: 2.179 ms
      [bump] bump-render=normals:[  613.105150] [drm] sunxi-hdmi: drm hdmi check mode: unchange >>>>>>>>>>>>>>>>
      [  613.114472] [drm] sunxi-hdmi: drm hdmi check mode: unchange >>>>>>>>>>>>>>>>
       FPS: 669 FrameTime: 1.495 ms
      [bump] bump-render=height: FPS: 655 FrameTime: 1.527 ms
      [effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 713 FrameTime: 1.403 ms
      [effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 298 FrameTime: 3.356 ms
      [pulsar] light=false:quads=5:texture=false: FPS: 642 FrameTime: 1.558 ms
      [desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 255 FrameTime: 3.922 ms
      [desktop] effect=shadow:windows=4:[  673.103149] [drm] sunxi-hdmi: drm hdmi check mode: unchange >>>>>>>>>>>>>>>>
      [  673.112629] [drm] sunxi-hdmi: drm hdmi check mode: unchange >>>>>>>>>>>>>>>>
       FPS: 363 FrameTime: 2.755 ms
      [buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 95 FrameTime: 10.526 ms
      [buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 96 FrameTime: 10.417 ms
      [buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 59 FrameTime: 16.949 ms
      [ideas] speed=duration: FPS: 230 FrameTime: 4.348 ms
      [jellyfish] <default>: FPS: 445 FrameTime: 2.247 ms
      [terrain] <default>:[  733.104976] [drm] sunxi-hdmi: drm hdmi check mode: unchange >>>>>>>>>>>>>>>>
      [  733.124117] [drm] sunxi-hdmi: drm hdmi check mode: unchange >>>>>>>>>>>>>>>>
       FPS: 26 FrameTime: 38.462 ms
      [shadow] <default>: FPS: 495 FrameTime: 2.020 ms
      [refract] <default>: FPS: 70 FrameTime: 14.286 ms
      [conditionals] fragment-steps=0:vertex-steps=0: FPS: 702 FrameTime: 1.425 ms
      [conditionals] fragment-steps=5:vertex-steps=0: FPS: 669 FrameTime: 1.495 ms
      [conditionals] fragment-steps=0:vertex-steps=5: FPS: 712 FrameTime: 1.404 ms
      [function] fragment-complexity=low:fragment-steps=5:[  793.104596] [drm] sunxi-hdmi: drm hdmi check mode: unchange >>>>>>>>>>>>>>>>
      [  793.114071] [drm] sunxi-hdmi: drm hdmi check mode: unchange >>>>>>>>>>>>>>>>
       FPS: 686 FrameTime: 1.458 ms
      [function] fragment-complexity=medium:fragment-steps=5: FPS: 714 FrameTime: 1.401 ms
      [loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 679 FrameTime: 1.473 ms
      [loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 712 FrameTime: 1.404 ms
      [loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 670 FrameTime: 1.493 ms
      =======================================================
                                        glmark2 Score: 512
      =======================================================
      
      
      发布在 T Series
      E
      embfly
    • 一文带你玩转全志T527的GPU(1)-盈鹏飞嵌入式

      本文中涉及到产品的实际操作,该操作都是在盈鹏飞嵌入式AHD-X527主板上进行执行,AHD-X527介绍如下:

      AHD-X527产品特性:

      • 采用Allwinner公司Cortex-A55八核A527/T527处理器,运行最高速度为2.0GHZ(T527最高1.8GHZ);

      • 支持Mali-G57 MC1 GPU,支持OpenGL ES 3.2/2.0/1.0, Valkan 1.1,OpenCL 2.0

      • 支持4K/25fps H.264视频编码,支持4K/15fps MJPEG编码;

      • 多格式4K/60fps视频解码 (H.265,H.264,VC-1, MPEG-1/2/4, VP8) ;
        支持双屏异显;支持HDMI 2.0B, 分辨率最高4K@60fps;支持LVDS,分辨率最高1920x1080@60fps;支持MIPI DSI,分辨率最高2.5K@60fps(与LVDS复用);

      • 支持1-4G  Bytes LPDDR4X SDRAM;

      • 支持EMMC 8G-64G大容量电子盘,可启动;

      • 支持1路USB 3.0;支持3路USB2.0 HOST和一路OTG(TYPE-C接口);

      • 支持2路I2C(其中一路支持掉电唤醒)、2路PWM(应用于背光);

      • 支持双路千兆以太网;

      • 支持3G/4G通信;

      • 支持2路UART(TTL)、支持1路RS485、支持双路CAN BUS(2.0B,仅T527支持);

      • 支持MIPI CSI - 24-lane/42-lane/ 4+2*2-lane;

      • 操作系统的支持,可预装Android13/LINUX 5.15/Ubuntu 22.04;

      • 尺寸为146X119MM

      AHD-X527产品功能图:
      AHD-X527功能图.jpg

      一、A527/T527处理器简介

      T527是八核64位Cortex-A55 处理器,采用全新ARM v8.2-A架构,主频最高可达1.8GHz(A527最高速度是2.0GHz),效能有大幅提升;采用22nm先进工艺,具有低功耗高性能的特点

      T527集成了单核心架构 GPU,高性能VPU以及高效能 NPU。 GPU:Mail-G57,支持OpenGL ES3.2/2.0/1.1,Vulkan1.1;VPU:可实现4K 60fps H.265/H.264/VP9视频解码和1080P 60fps H.265/H.264视频编码;NPU:2.0Tops算力(特定型号支持),支持INT8/INT16混合操作。此外,兼容基于一系列框架的网络模型,如TensorFlow/MXNet/PyTorch/Caffe可轻松转换

      T527支持PCIE/USB3.0/HDMI/MIPI CSI/MIPI DSI/eDP/LVDS等各类型外围接口

      T527除支持Android及Linux系统外,更可适配多个主流国产OS
      9d7c0876-b543-4859-8396-630336ee52a7-image.png

      63933c11-3cfb-42a0-b626-111fd6e4b895-image.png

      二、T527平台GPU
      2.1、GPU简介
      GPU提供了一个基于开放标准的完整图形加速平台,支持2D/3D图形渲染硬件加速。GPU的作用是为计算机系统提供强大的图形处理和计算能力,能够处理大量的图形数据并进行高效的计算,从而实现各种应用的图形渲染、数据处理和加速等功能。T527是使用Mali-G57,支持OpenGL ES1.1/2.0/3.0,Vulkan 以及OpenCL。和Rk356x系列使用的虽有区别,但是性能区别不大。Rk356x是使用Mali-G52,支持OpenGL ES1.1/2.0/3.0,Vulkan 以及OpenCL。 这里不得不提RK3576,RK3576也是8核处理器,它使用大小核异构形式,RK3576虽然也是使用Mali-G52,但是它是使用G52 MC3。

      5bb2cc8d-80a2-4b81-9e38-81d53cb51601-image.png

      a4f9cd01-f635-4bf2-9c04-b31eaee46a72-image.png

      注意看下G57可以跑到850Mhz,后续介绍T527 GPU使用的时候,全部把这个限制在700MHZ。
      以下是RK3576的GPU的具体参数
      b86185b4-4780-4720-ba41-2ae1c06a607f-image.png

      77bcc885-2abb-41c2-8002-d013b8b579fe-image.png

      RK3576的处理单元是3个,而T527的处理单元只有一个。T527的Pixel fillrate是1.7G,而RK3576是5.1G。看似小小的区别,其实区别很大。

      当然了,如果是GPU的代差上看,RK3576是老了一代,Mali其实是ARM的Mali系列IP核,ARM mali gpu目前有四大架构,每一代架构在性能上都有提升和更高效的能耗管理:

      (1)第一代微架构Utgard(北欧神话人物:乌特加德),2007年推出,主要系列有:mali-200, mali-400, mali-450, mali-470

      (2)第二代微架构Midgard(北欧神话人物:米德加德),主要系列有:mali-t6xx, mali-t7xx, mali-t8xx

      (3)第三代微架构Bifrost(北欧神话中连接天宫和大地的:彩虹桥),2016年推出,主要系列有:mali-g31, mali-g51, mali-g71, mali-g52, mali-g72, mali-g76

      (4)第四代微架构Valhall,2019年退出,主要系列有:mali-g57, mali-g77

      2.2、GPU驱动
      Mali GPU 驱动一般分为两部分:一小部分在 Linux 内核中,另外一大部分在 userspace,在 usercapce 的部分向下操作内核中的驱动,向上对应用层提供标准的 OpenGL 接口,这样各种图形显示相关的应用才能通过标准的 OpenGL API 进行图形渲染加速。其 结构图 简单参考如下: 
      图1.jpg

      在linux系统上使用OpenGL ES或者OpenCL接口,需要添加libmali库以及头文件, libmali有不同的版本(x11,gbm,wayland),提供了opengles,egl,opencl接口

      图2.jpg

      但是 mali GPU IP 提供商 Arm 公司只开放了内核部分驱动,而且这部分驱动还没有按照 linux kernel 的规范以 Drm 的框架去实现,所以它无法被 linux mainline 接受;usersapce 部分,Arm没有开源,只是以库的形式提供给购买了 mali GPU 授权的 SOC 厂商,比如 Rockchip,Amlogic。

      面对这种状况,很多人为了能够利用 GPU 加速,就只能使用 SOC 原厂提供的内核,和他们定制的系统,这种内核和系统一般都比较老。如果想跑 mainline 的内核,基本就没法使用 GPU 加速了。

      但是也有一部分黑客们不满于这种封锁,他们勇于探索,积极尝试,逆向了 Arm 发布的二进制库(现在ARM公司已经承认了他们,并与他们合作了),然后重写了针对 Arm mali gpu 的开源驱动,最终在 Linux 5.2 发布的时候合并到了 mainline 中:针对 Mali-400/Mali-450 的驱动叫做 lima,针对 Mali-T6xx / Mali-T7xx / Mali-T8xx GPU 和 GXX 系列的叫做 panfrost。Usersacpe 部分的开源库叫做 mesa,对 mali gpu 的支持从 mesa 19.2 开始

      图3.jpg

      2.3、GPU驱动使用方案
      2.3.1、方案一:使用官方闭源的GPU驱动

      (闭源的驱动可以通过下面途径获取到)

      通过ARM官方的SDK编译下载,需要在buildroot中使能 valhall-mali,
      (全志公司已经编译好了,不需要我们再编译了,并且已经集成到了SDK中)

      e8a20cbc-3512-4f35-b897-9268bcf8cb76-image.png

      图8.jpg.png

      GPU库看似只能选择wayland/和fbdev,但是实际上在配置脚本中可以看到KMS选项,需要去掉BR2_PACKAGE_WAYLAND/ BR2_PACKAGE_WESTON_DRM,才可以选择KMS。

       config BR2_PACKAGE_GPU_UM_PUB_DEFAULT_KMS
      	bool "kms(gbm + drm)"
      	depends on !BR2_PACKAGE_WAYLAND && !BR2_PACKAGE_WESTON_DRM
      

      最后会全志编译好的库复制到rootfs中,以下是支持wayland的库,也有支持KMS的库。

      ping@embfly-server:/sda7/allwinner_a527/A527_Tina5.0_AIOT_V1.4.6/1.SDK/A527_Tina5.0_AIOT_V1.4.6/tina/platform/allwinner/display/libgpu/mali-g57/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/wayland/aarch64-none-linux-gnu/lib64$ tree -L 2
      .
      ├── cl
      │   ├── libOpenCL.so -> libOpenCL.so.2
      │   ├── libOpenCL.so.2 -> libOpenCL.so.2.1.0
      │   └── libOpenCL.so.2.1.0
      ├── egl
      │   ├── libEGL.so -> libEGL.so.1
      │   ├── libEGL.so.1 -> libEGL.so.1.4.0
      │   └── libEGL.so.1.4.0
      ├── gbm
      │   ├── libgbm.so -> libgbm.so.1
      │   ├── libgbm.so.1 -> libgbm.so.1.0.0
      │   └── libgbm.so.1.0.0
      ├── gles1
      │   ├── libGLESv1_CM.so -> libGLESv1_CM.so.1
      │   ├── libGLESv1_CM.so.1 -> libGLESv1_CM.so.1.1.0
      │   └── libGLESv1_CM.so.1.1.0
      ├── gles2
      │   ├── libGLESv2.so -> libGLESv2.so.2
      │   ├── libGLESv2.so.2 -> libGLESv2.so.2.1.0
      │   └── libGLESv2.so.2.1.0
      ├── mali
      │   ├── libmali.so -> libmali.so.0
      │   ├── libmali.so.0 -> libmali.so.0.32.0
      │   └── libmali.so.0.32.0
      ├── vulkan
      │   ├── libvulkan.so -> libvulkan.so.1
      │   ├── libvulkan.so.1 -> libvulkan.so.1.3.296
      │   └── libvulkan.so.1.3.296
      ├── vulkan_wsi
      │   └── libVkLayer_window_system_integration.so
      └── wayland-egl
          ├── libwayland-egl.so -> libwayland-egl.so.1
          ├── libwayland-egl.so.1 -> libwayland-egl.so.1.0.0
          └── libwayland-egl.so.1.0.0
      

      其实,这些库是有版本的,只是全志把他们封闭起来了,参考RK_libmali的命名规则:gpu型号-软件版本-硬件版本(如果有的话,比如说r1p0区分3288和3288w)-编译选项。
      aa2b7159-bda2-45fc-93f7-960bbd777eeb-image.png

      注意gbm是配置drm使用的memory机制,如果不是3.10的kernel,不要用fbdev的。

      (1)gbm:是给qt+eglfs这样的程序用的,不依赖x11,wayland。

      (2)wayland: 给wayland使用。

      (3)X11:是给xorg使用的。

      2.3.2、方案二:使用开源的mesa

      这种方案要 利用 linux kernel 的 Panfrost 驱动 + userspace 的 mesa 来解锁 3D 图形加速功能。但是这种方案对内核版本有要求,需要在5.2以上,但是瑞芯微提供的4.19的kernel版本还没有支持Panfrost 驱动,需要使用5.10内核版本的
      图3-1.jpg
      进一步深究,这个mesa库编译出来库都有什么呢?以下是编译出来的内容:

      ├── dri
      │   ├── armada-drm_dri.so
      │   ├── asahi_dri.so
      │   ├── etnaviv_dri.so
      │   ├── exynos_dri.so
      │   ├── hx8357d_dri.so
      │   ├── i830_dri.so
      │   ├── i915_dri.so
      │   ├── i965_dri.so
      │   ├── ili9225_dri.so
      │   ├── ili9341_dri.so
      │   ├── imx-dcss_dri.so
      │   ├── imx-drm_dri.so
      │   ├── ingenic-drm_dri.so
      │   ├── kgsl_dri.so
      │   ├── kms_swrast_dri.so
      │   ├── lima_dri.so
      │   ├── mcde_dri.so
      │   ├── mediatek_dri.so
      │   ├── meson_dri.so
      │   ├── mi0283qt_dri.so
      │   ├── msm_dri.so
      │   ├── mxsfb-drm_dri.so
      │   ├── nouveau_vieux_dri.so
      │   ├── panfrost_dri.so
      │   ├── pl111_dri.so
      │   ├── r200_dri.so
      │   ├── r300_dri.so
      │   ├── r600_dri.so
      │   ├── r600_drv_video.so
      │   ├── radeon_dri.so
      │   ├── repaper_dri.so
      │   ├── rockchip_dri.so
      │   ├── st7586_dri.so
      │   ├── st7735r_dri.so
      │   ├── stm_dri.so
      │   ├── sun4i-drm_dri.so
      │   ├── swrast_dri.so
      │   ├── v3d_dri.so
      │   ├── vc4_dri.so
      │   ├── virtio_gpu_dri.so
      │   └── zink_dri.so
      ├── libEGL.so -> libEGL.so.1
      ├── libEGL.so.1 -> libEGL.so.1.0.0
      ├── libEGL.so.1.0.0
      ├── libgbm.so -> libgbm.so.1
      ├── libgbm.so.1 -> libgbm.so.1.0.0
      ├── libgbm.so.1.0.0
      ├── libglapi.so -> libglapi.so.0
      ├── libglapi.so.0 -> libglapi.so.0.0.0
      ├── libglapi.so.0.0.0
      ├── libGLESv1_CM.so -> libGLESv1_CM.so.1
      ├── libGLESv1_CM.so.1 -> libGLESv1_CM.so.1.1.0
      ├── libGLESv1_CM.so.1.1.0
      ├── libGLESv2.so -> libGLESv2.so.2
      ├── libGLESv2.so.2 -> libGLESv2.so.2.0.0
      ├── libGLESv2.so.2.0.0
      ├── libGL.so -> libGL.so.1
      ├── libGL.so.1 -> libGL.so.1.2.0
      ├── libGL.so.1.2.0
      ├── libxatracker.so -> libxatracker.so.2
      ├── libxatracker.so.2 -> libxatracker.so.2.5.0
      ├── libxatracker.so.2.5.0
      └── pkgconfig
      

      说明:这里dri目录下的内容是和平台相关的(比如i915是intel的,lima和panfrost是mali的,只是支持的代数不一样而已)。T527平台就是选择的panfrost驱动。同时我们也可以看到libGLESv2.so/ libGL.so/ libEGL.so/ libgbm.so等身影,其实他们和ARM官方提供库名字是一致的。不过ARM官方提供的功能更全,而mesa只能算是阉割版本。

      发布在 T Series
      E
      embfly
    • 盈鹏飞嵌入式再添A527/T527核心模块新成员DIM-X527,八核2GHZ可插拔!

      今天,盈鹏飞嵌入式产品系列增加A527/T527核心模块新成员DIM-X527,该方案基于全志A527/T527高性能可选AI功能MPU,配备八核A55高性能处理器,RISC-V协处理器,支持2Tops NPU,满足边缘智能AI加速应用;

      另外,它还支持丰富的通讯接口,包括2路千兆以太网、1路PCIE2.1、2路CAN(仅T527支持)、10路UART串口等超多接口,功能强大。2Ghz的运行速度让A527适合智慧商显、零售支付、智慧教育、商用机器人等应用领域;
      T527稳定运行在-40-85度,更适合于智慧车载、视觉辅驾、工业控制、边缘计算、智能配电终端等。
      DIM-T527_V1.0 1763X1588.jpg
      产品特性:

      • 采用Allwinner公司Cortex-A55八核A527/T527处理器,最高速度为2.0GHZ;

      • 支持2TOPS NPU,仅特定型号支持;

      • 支持Mali-G57 MC1 GPU,支持OpenGL ES 3.2/2.0/1.0, Valkan 1.1,OpenCL 2.0

      • 支持4K/25fps H.264视频编码,支持4K/15fps MJPEG编码;
        多格式4K/60fps视频解码 (H.265,H.264,VC-1, MPEG-1/2/4, VP8) ;

      • 支持1-4G Bytes LPDDR4X SDRAM;支持EMMC 4G-64G大容量电子盘,可启动;

      • 支持双屏异显;支持双通道LVDS,分辨率最高1920x1080@60fps;支持HDMI 2.0B, 分辨率最高4K/60fps;支持MIPI DSI;

      • 支持PCIE2.1;支持 10路UART;支持双路CANBUS;支持双路千兆以太网;

      • 稳定的操作系统的支持,可预装Android13.0或者LINUX 5.15/Ubuntu 22.04

      • SODIMM_260POS设计, 尺寸69.645MM
         部件组成图:
        DIM-X527元件图_250616  878X522 .jpg
         产品参数: 
        DIM-X527产品参数.jpg
         产品框图: 
        DIM-X527核心板框图1523X1289.jpg
         引脚定义: 
        DIM-X527功能图1400X1400.jpg
        产品尺寸图: 
        DIM-X527尺寸图1249X816.jpg
        DIM-X527 评估板 AHD-X527简介
        AHD-X527淘宝图1571X1746.jpg
        AHD-X527框图:
        AHD-X527框图1945X1250.jpg
         AHD-X27功能图: 
        AHD-X527功能图.jpg
         全志T527简要介绍:
        内置8
        RAM Cortex-A55, 8核主频可运行至1.8GHz,提供更稳健强劲的处理能力

      • Octa-core ARM Cortex-A55 in a DynamlQ big.LITTLE configuration, up to 1.8 GHz

      • 32KB L1 I-cache and 32KB L1 D-cache per A55 core

      • Optional 64KB L2 cache per“LITTLE”core

      • Optional 128KB L2 cache per“big”core
        处理器功能.png
        集成ARM Mail-G57 GPU图形显示能力更上一层楼

      • ARM G57 MC1 GPU

      • Supports OpenGL ES 3.2/2.0/1.1, Vulkan 1.1/1.2/1.3, and OpenCL2.2

      • Anti-aliasing algorithm

      • High memory bandwidth and low power consumption in 3D graphics processing
        显示功能.png
        集成2Tops NPU为端侧语音、自然语言、 图像处理及 画质增强等AI应用提供性能支持

      • 2 TOPS NPU

      • Embedded 512KB internal buffer

      • Supports deep learning frameworks:TensorFlow, Pytorch, Caffe, Onnx NN, TFLite…
        NPU功能.png
         内置HiFi4 DSP,频率可达600MHz,广泛应用于图像、音频及数字信号处理的 专用领域为 影音娱乐、工业生产提供专属算力

      • HiFi4 Audio DSP

      • 32KB I-cache +32KB D-cache
        HIFI4 DSP功能.png
         内置RISC-V架构MCU,主频可达200MHz独立运行RTOS系统,为工业及机器人系统上 的实时处理、高速响应及工业级的稳定运行提供重要保障

      • RISC-V CPU, up to 200 MHz

      • 16 KB I-cache and 16 KB D-cache·RV32IMAFC instructions
        MCU功能.png
         全志T527产品框图:
        block_diagiam.png

      发布在 其它全志芯片讨论区
      E
      embfly
    • 盈鹏飞嵌入式A527/T527核心模块,搭载最新全志八核处理器!

      今天,盈鹏飞嵌入式发布一款A527/T527核心板及开发板方案,该方案基于全志A527/T527高性能可选AI功能MPU,配备八核A55高性能处理器,RISC-V协处理器,支持2Tops NPU,满足边缘智能AI加速应用;
       另外,它还支持丰富的通讯接口,包括2路千兆以太网、1路PCIE2.1、2路CAN(仅T527支持)、10路UART串口等超多接口,功能强大。2Ghz的运行速度让A527适合智慧商显、零售支付、智慧教育、商用机器人等应用领域;
      T527稳定运行在-40-85度,更适合于智慧车载、视觉辅驾、工业控制、边缘计算、智能配电终端等。
      ​CoM-T527_V1.0 .jpg
       产品特性:

      • 采用Allwinner公司Cortex-A55八核A527/T527处理器,最高速度为2.0GHZ;

      • 支持2TOPS NPU,仅特定型号支持;

      • 支持Mali-G57 MC1 GPU,支持OpenGL ES 3.2/2.0/1.0, Valkan 1.1,OpenCL 2.0

      • 支持4K/25fps H.264视频编码,支持4K/15fps MJPEG编码;

      • 多格式4K/60fps视频解码 (H.265,H.264,VC-1, MPEG-1/2/4, VP8) ;

      • 支持1-4G Bytes LPDDR4X SDRAM;支持EMMC 4G-64G大容量电子盘,可启动;

      • 支持双屏异显;支持双通道LVDS,分辨率最高1920x1080@60fps;支持 EDP 1.3,分辨率最高2.5K@60fps 和4K@30fps;支持HDMI 2.0B, 分辨率最高4K/60fps;

      • 支持PCIE2.1;支持 10路UART;支持双路CANBUS;支持双路千兆以太网;

      • 稳定的操作系统的支持,可预装Android13.0或者LINUX 5.15/Ubuntu 22.04

      • 邮票孔240POS设计, 尺寸为:56*45MM

      部件组成图:
      COM-T527元件图.jpg
      产品参数:
      COM-T527产品参数.jpg
       产品框图:
      COM-T527产品框图.png
      产品功能图
      CoM-X527功能图.jpg

      产品尺寸图:
      COM-T527尺寸图.png
      COM-T527产品与银行卡厚度对比:
      COM-T527银行卡对比图1250X801.jpg
       CoM-X527 评估板 STK-X527功能图:
      STK-T527产品功能图主页图5.jpg
      STK-T527主板接口标示图CN 背面956X956.jpg
      *全志T527简要介绍:
      内置8RAM Cortex-A55, 8核主频可运行至1.8GHz,提供更稳健强劲的处理能力

      • Octa-core ARM Cortex-A55 in a DynamlQ big.LITTLE configuration, up to 1.8 GHz

      • 32KB L1 I-cache and 32KB L1 D-cache per A55 core

      • Optional 64KB L2 cache per“LITTLE”core

      • Optional 128KB L2 cache per“big”core**
        ​处理器功能.png
        集成ARM Mail-G57 GPU图形显示能力更上一层楼

      • ARM G57 MC1 GPU

      • Supports OpenGL ES 3.2/2.0/1.1, Vulkan 1.1/1.2/1.3, and OpenCL2.2

      • Anti-aliasing algorithm

      • High memory bandwidth and low power consumption in 3D graphics processing
        显示功能.png
        集成2Tops NPU为端侧语音、自然语言、 图像处理及 画质增强等AI应用提供性能支持

      • ​2 TOPS NPU

      • Embedded 512KB internal buffer

      • Supports deep learning frameworks:TensorFlow, Pytorch, Caffe, Onnx NN, TFLite…
        NPU功能.png
        内置HiFi4 DSP,频率可达600MHz,广泛应用于图像、音频及数字信号处理的 专用领域为 影音娱乐、工业生产提供专属算力

      • HiFi4 Audio DSP

      • 32KB I-cache +32KB D-cache
        HIFI4 DSP功能.png
         内置RISC-V架构MCU,主频可达200MHz独立运行RTOS系统,为工业及机器人系统上 的实时处理、高速响应及工业级的稳定运行提供重要保障

      • RISC-V CPU, up to 200 MHz

      • 16 KB I-cache and 16 KB D-cache·RV32IMAFC instructions
        MCU功能.png
         全志T527产品框图:
        block_diagiam.png

      发布在 其它全志芯片讨论区
      E
      embfly
    • 回复: 一键生成可定制的Debian rootfs,支持riscv64

      @memory 在 一键生成可定制的Debian rootfs,支持riscv64 中说:

      么做debian roo

      请问有人用了这个工具了吗?做出来无法启动呢,出现错误信息如下:
      [ 4.469869] I2C communication ERROR!
      [ 4.469901] regulator-dummy: Underflow of regulator enable count
      [ 4.480911] gt9xxnew_ts: probe of 1-0014 failed with error -1
      [ 4.490050] OF: fdt: not creating '/sys/firmware/fdt': CRC check failed
      [ 4.497539] cfg80211: Loading compiled-in X.509 certificates for regulatory database
      [ 4.508814] cfg80211: Loaded X.509 cert 'sforshee: 00b28ddf47aef9cea7'
      [ 4.516332] platform regulatory.0: Direct firmware load for regulatory.db failed with error -2
      [ 4.526089] clk: Not disabling unused clocks
      [ 4.530919] ALSA device list:
      [ 4.534249] #0: audiocodec
      [ 4.537490] alloc_fd: slot 0 not NULL!
      [ 4.541767] cfg80211: failed to load regulatory.db
      [ 4.558945] EXT4-fs (mmcblk0p5): recovery complete
      [ 4.564396] EXT4-fs (mmcblk0p5): mounted filesystem with ordered data mode. Opts: (null)
      [ 4.573566] VFS: Mounted root (ext4 filesystem) on device 179:5.
      [ 4.581999] Freeing unused kernel memory: 1024K
      [ 4.600127] Kernel init done
      [ 4.603355] Run /sbin/init as init process
      [ 4.704682] Kernel panic - not syncing: Requested init /sbin/init failed (error -2).
      [ 4.713373] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 5.4.61 #2
      [ 4.720003] Hardware name: Generic DT based system
      [ 4.725394] [<c010e308>] (unwind_backtrace) from [<c010a8ac>] (show_stack+0x10/0x14)
      [ 4.734078] [<c010a8ac>] (show_stack) from [<c089698c>] (dump_stack+0x7c/0x98)
      [ 4.742177] [<c089698c>] (dump_stack) from [<c011a014>] (panic+0x104/0x3dc)
      [ 4.749986] [<c011a014>] (panic) from [<c08ab694>] (kernel_init+0x98/0x118)
      [ 4.757792] [<c08ab694>] (kernel_init) from [<c01010e8>] (ret_from_fork+0x14/0x2c)
      [ 4.766274] Exception stack(0xde43dfb0 to 0xde43dff8)
      [ 4.771934] dfa0: 00000000 00000000 00000000 00000000
      [ 4.781099] dfc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
      [ 4.790264] dfe0: 00000000 00000000 00000000 00000000 00000013 00000000
      [ 4.797689] CPU1: stopping
      [ 4.800722] CPU: 1 PID: 0 Comm: swapper/1 Not tainted 5.4.61 #2
      [ 4.807352] Hardware name: Generic DT based system
      [ 4.812725] [<c010e308>] (unwind_backtrace) from [<c010a8ac>] (show_stack+0x10/0x14)
      [ 4.821406] [<c010a8ac>] (show_stack) from [<c089698c>] (dump_stack+0x7c/0x98)
      [ 4.829504] [<c089698c>] (dump_stack) from [<c010c6b0>] (handle_IPI+0xc0/0x168)
      [ 4.837701] [<c010c6b0>] (handle_IPI) from [<c0431a80>] (gic_handle_irq+0x70/0x78)
      [ 4.846189] [<c0431a80>] (gic_handle_irq) from [<c01021cc>] (__irq_svc+0x6c/0xa8)
      [ 4.854572] Exception stack(0xde477f80 to 0xde477fc8)
      [ 4.860233] 7f80: 00000b68 deb416b4 00000000 c01153a0 00000002 de476000 c0e03e28 c0e03e68
      [ 4.869400] 7fa0: 4000406a 410fc075 00000000 00000000 00000000 de477fd0 c0107fb8 c0107fbc
      [ 4.878563] 7fc0: 60000113 ffffffff
      [ 4.882476] [<c01021cc>] (__irq_svc) from [<c0107fbc>] (arch_cpu_idle+0x2c/0x38)
      [ 4.890770] [<c0107fbc>] (arch_cpu_idle) from [<c013fae8>] (do_idle+0xb8/0x120)
      [ 4.898965] [<c013fae8>] (do_idle) from [<c013fdec>] (cpu_startup_entry+0x18/0x1c)
      [ 4.907452] [<c013fdec>] (cpu_startup_entry) from [<40102c0c>] (0x40102c0c)
      [ 4.915269] ---[ end Kernel panic - not syncing: Requested init /sbin/init failed (error -2). ]---

      发布在 MR Series
      E
      embfly
    • T113使用gt911竖屏(longan SDK),触摸坐标不对!

      大家有谁用过T113 longan系统,使用电容式触摸gt911的吗?
      我这边用的是竖屏,不是横屏,请问配置dts有什么特别的要求吗?
      目前使用的是800x1280分辨率的屏,发现坐标不对!dts如下:

      	ctp@14 {
      		compatible = "allwinner,goodix";
      		device_type = "ctp";
      		reg = <0x14>;
      		status = "okay";
      		ctp_name = "gt9xxnew_ts";
      		ctp_twi_id = <0x2>;
      		ctp_twi_addr = <0x14>;
      		/*mipi 800x1280*/
      		ctp_screen_max_x = <0x320>;/*Set according to screen parameters*/
      		ctp_screen_max_y = <0x500>;/*Set according to screen parameters*/
      		ctp_revert_x_flag = <0x0>;
      		ctp_revert_y_flag = <0x0>;
      		ctp_exchange_x_y_flag = <0x0>;
      		ctp_int_port = <&pio PE 16 GPIO_ACTIVE_HIGH>;
      		ctp_wakeup = <&pio PE 17 GPIO_ACTIVE_HIGH>;
      		/*ctp-supply = <&reg_aldo2>;*/
      		/*ctp_power_ldo = <&reg_aldo2>;*/
      		/*ctp_power_ldo_vol = <3300>;*/
      	};
      

      我是用QT做的测试程序,qt程序启动时候的脚本配置是:

      export QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS=/dev/input/event$TouchDeviceNum
      		export QT_QPA_GENERIC_PLUGINS=evdevtouch:/dev/input/event$TouchDeviceNum
      

      就是QT下获得坐标不对,而TSLIB进行校验,反而可以进行校正和工作。

      发布在 T Series
      E
      embfly
    • T527和A527的区别?pin对pin兼容吗?

      各位朋友,A527和T527是pin to pin兼容的吗?
      我查了官方原理,PMIC一个是AX717B,一个是使用AX717C

      发布在 T Series
      E
      embfly
    • T527关于AHD摄像头的咨询

      各位专业的T527开发的朋友,请问在android下,T527支持多少路摄像头?另外,T527满载的情况下,发热怎么样?坛子的朋友给说说

      发布在 T Series
      E
      embfly
    • 弱弱的问一句,T527是正式量产了吗?

      弱弱的问一句,T527是正式量产了吗?
      跑起来效果怎么样?速度可以达到1.8GHZ?

      发布在 T Series
      E
      embfly
    • 回复: T113的Tina 使用udev自动挂载U盘 就是挂载不上去

      您好,这个问题我也遇到了,我遇到的问题是udevd服务无法开启,既然这个服务都无法开启,那么肯定是不能实现自动挂载u盘的。

      发布在 其它全志芯片讨论区
      E
      embfly