This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] Linux/AM5728:GC320存储器配置

Guru**** 2933190 points

Other Parts Discussed in Thread: AM5728

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/668898/linux-am5728-gc320-memory-configuration

器件型号:AM5728

工具/软件:Linux

你(们)好。  我们需要各种用于 GUI 的 vivante (gc320)连续存储器。 总尺寸为80MB。

 -1280x720、1920x1080、1280x300等等。 总尺寸为80MB。

在跟踪 gc320 drvier 时、我们 经常注意 到为 短连续存储器分配了非连续存储器、如下所示。

#define gcdDEFAULT_NEXUST_SIZE (4 << 20) at extra drivers\ti-gc320-driver-5.0.11.p7\hal\os\linux\kernel\gc_hal_kernel_probe.c

如果我们增大 gcdDEFAULT_NECK_SIZE -> 16MB 或32MB、则会发现解码错误(VPE 存储器)。  如何增加它?

作为其他解决方案、我们可以考虑 TI OMAP 或 CMEM。

但是、 我们有用于限制 TI OMAP 存储器(128MB)的短内存、然后我们不使用 TI OMAP 存储器(它已经有三个显示屏、3D GPU 和 IVA-HD)。

如果我们 CMEM (我们使用 CMEM_LOCAT2 API (内部返回 mmapd 地址(位于 cmem-mod-4.14.00.00+gitAUTOINC+b514a99ac4\src\cmem\api\cmem)  ) , 则此 API 将用作互连的 VPE,非常 好 ),vivante 在320以下有错误。

 status = gcoSURF_SetWindow (lpSurface -> Surface、0、0、宽度、高度);  ->gckKERNEL_Dispatch (gc_hal_kernel.c)-> case gcvHAL_map_user_memory -> gckOS_MapUserMemory 出现错误。

也就是说,当我使用 CMEM_LOCAT2 API 时,vivante gc320驱动程序不支持导入 cmem。

我 想在   vivante gc320上分配连续内存但非连续内存。  如何处理?  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好、Joonho、

    请查看此示例应用、了解如何将 CMEM 分配的内存导出到 Vivante 驱动程序-  

    请检查 VIDEO _GRAPHICS_TEST.CPP、cmem_buf.cpp 和 gc320.cpp 文件。 您将需要增强的 QT eglfs_kms QPA 来运行此示例应用程序。 增强型 QPA 以及此示例应用将在 PLSDK 4.3版中提供、该发行版计划于2018年第1季度末发布。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你(们)好。 感谢您帮助将 CMEM 分配的内存导出到 Vivante 驱动程序。
    我们查看此应用程序源、然后应用我们的源。
    但是、当 Vivante 驱动程序刷新缓存时、内核会像下面那样死。 我认为 vivante 驱动程序无法访问 CMEM 物理地址。

    我们的配置如下(cmem (块 ID 2)对于 VPE 非常有效。)

    arch/arm/boot/dts/am57xx-evm-cmem.dtsi

    cmem_block_mem_1:cmem_block_mem@a0100000{
    REG =<0x0 0xa0100000 0x0 0x12800000>;
    无地图;
    状态="正常";
    };


    当我们使用 CMEM_LOCAT2 (2、507904、&cmem_alloc_params)时;// align 为0x80。 表面的 W x h = 1024 x 124
    ,我们的 cmem 日志如下所示。

    [44.22345] CMEMK 调试:块2的堆池上接收到 ALLOAPCCHEACHED ioctl
    [44.22347] CMEMK 调试:MAP_HEADER:ioremap_page_range (0xa43f8000、0x1000)=0xf4ac3000
    [44.223453] CMEMK 调试:MAP_HEADER:ioremap_page_range (0xa4474000、0x1000)=0xf4ac5000
    [44.22345] CMEMK 调试:unmap_header: unmap_kernel_page_rage (0xf4ac5000、0x1000)
    [44.22342] CMEMK 调试:unmap_header:unmap_kernel_page_rage (0xf4ac3000、0x1000)
    [44.22349] CMEMK 调试:ALLOAPCHA3D:在0xa43f8000 (PHY 地址)处分配了0x7c000大小的缓冲区
    [44.223483] CMEMK 调试:mmap:vMA->VM_start = 0xb0364000
    [44.223486] CMEMK 调试:mmap:vMA->VM_END = 0xb03e0000
    [44.223488] CMEMK 调试:mmap:大小 = 0x7c000
    [44.22390] CMEMK 调试:mmap:vMA->VM_pgoff = 0xa43f8
    [44.228504] CMEMK 调试:接收到 EXPORTDMABUF ioctl。
    [44.22368] CMEMK 调试:get_phys:find_vMA 将用户 b0364000转换为0xa43f8000
    [44.223520] CMEMK 调试:map_virt_addr:ioremap_page_range (0xa43f8000、0x7c000)=0xf4e00000

    源的迹线如下所示。
    cmem_buf = CMEM_LOCAT2 (2、507904、&cmem_alloc_params);// align 为0x80。 表面的 W x h = 1024 x 124

    gcoSURF_SetBuffer... vaddr /*cmem_buf */,.);
    gcoSURF_SetWindow (lpSurface -> Surface、0、0、宽度、高度)
    -> gckKERNEL_Dispatch (gc_hal_kernelc) ->gckOS_MapUserMemory (gc_hal_kernel_os.c)

    gckOS_MapUserMemory()
    在 gckOS OS 操作系统中、
    在 gceCORE 内核中、
    在 gctPOINTER 存储器中、
    在 gctuint32物理层中、
    在 gctSIZE _T 大小中、
    Out gctPOINTER *信息、
    输出 gctuint32_ptr 地址
    )


    printk("DBG:PageCount (%d) at %s\n",PageCount,__function__);

    对于(i = 0;i < PageCount;i++)

    #ifdef CONFIG_ARM
    gctuint32数据;
    get_user (data、(gctuint32*)((memory & page_mask)+ i * page_size));
    #endif

    如果(PageCount =124)//当表面的 w x h 为1024 x 124时,该 PageCount 为124

    printk ("DBG:i (%d) page_TO_phys (page[i])=%u at %s\n"、i、(gctuint32) page_TO_phys (page[i])、__function__);

    否则(i =0)

    printk ("DBG:i (%d) page_TO_phys (page[i])=%u at %s\n"、i、(gctuint32) page_TO_phys (page[i])、__function__);

    /*刷新(清理)数据缓存。 *
    gcmkONERROR (gckOS_CacheFlush (OS、_GetProcessID()、gcvNULL、
    PAGE_TO_PHYS (PAGE[i])、
    (gctPOINTER)(MEMORY & PAGE_MASK)+ i*PAGE_SIZE、
    Page_size));


    printk("DBG:gckOS_CacheFlush..之后 在%s\n"、__function__);
    (笑声)


    gc_hal_kernel_patform_j6.c
    platform_cache (
    在 gckPLATFORM 平台中、
    在 gctuint32 ProcessID 中、
    在 gctPHYS_ADDR 句柄中、
    在 gctuint32物理层中、
    在 gctPOINTER 逻辑中、
    在 gctSIZE_T 字节中、
    在割槽操作中
    )


    if (physical!= gcvINVALID_address){
    // leejoonho:06/03/18:物理地址是2755624960 (0xA43F8000 ),该地址(0xA43F8000 )是 cmem,非常好。
    *
    printk("DBG:%u)at %s\n", physical,__function__);
    /* leejoonho:06/03/18:dma-mapping.c:arch/arm/mm/arm_dma_sync_single_for_device。 此函数打破了内核*/
    DMA_SYNC_SINGLE_FOR_DEVICE (gcvNULL、
    (dma_addr_t)物理、
    字节、
    方向);
    (笑声)


    [54.363814]无法处理虚拟地址 e43f8000的内核寻呼请求
    [54.363816] PgD = d2764600
    [54.363824][e43f8000]* PgD=80000080007003、* PMD=00000000
    [54.363830]内部错误:Oops:2a06 [#1]抢占 SMP ARM
    [54.363956]模块链接于: bc_example (O) sha512_generic sha512_arm sha256_generic sha1_arm_neon sha1_arm md5 CBC xfrm_user xfrm4_tunnel ipcomp xfrm_ipcomp rp4 ahf_key xfrm_algo bluetooth sd_mod xhtti_ti_prti_zh_core_prace_pracu_pru_pru_prue_pracu_pru_prue_mas pru_pru_prue_mas pic vap_pru_pru_pru_pru_tcpu_pracu_pru_pru_pru_pru_pru_pru_pru_pru_pru_pru_pru_pru_pru_pru_pru_pru_pru_pru_pru_pru_pru_pru_pru_pru_prue_mas pic vap_pru_ extcon_core DES_generic pixcir_i2c_ts crypto_engine rtc_Palmas omap_remoteproc virtio_rpmsg_bus rpmsg_core mcryptetsch_fq_cdel uio_module_drv (O) uio gdbserverproxy (O) memtodev (O) ck (O)
    [54.363961] CPU:1 PID:1105 Comm:omk_exe 被污染:g o 4.9.28-geed43d1050 #78
    [54.363963]硬件名称:通用 DRA74X (平展器件树)
    [54.363965]任务:d22e12c0 task.stack:d22fa000
    [54.363976] PC 位于 v7_DMA_CLEAR_RANGE+0x1c/0x34
    [54.363983] LR 位于 DMA_cache_maint_page+0x90/0x144
    [54.363987] PC:[ ] LR:[ ] PSR:20070013
    [54.363987] sp:d22fbba0 IP:d22fbba0 fp:d22fbd4
    [54.363989] R10:c107e904 R9:c1006184 R8:00000000
    [54.363993] r7:c021887c r6:000a43f8 r5:00000000 r4:00001000
    [54.363996] r3:0000003f r2:00000040 r1:e43f9000 r0:e43f8000
    [54.364000]标志:模式 SVC_32 ISA ARM 段用户上 FIQ 上的 nzCv IRQ
    [54.364003]控制:30c5387d 表:92764600 DAC:555555
    [54.3646006]处理 omk_exe (pid:1105、栈限制= 0xd22fa210)
    [54.3646009]堆栈:(0xd22fbba0至0xd22fc000)
    [54.364014] bba0:00000044 c1003018 c027d468 d4b18ee0 00000000 00000000 00001000 d32afc00
    [54.364018] bbc0:00000000 c1006184 d22fbbfc d22fbbd8 c0213780 c0213618 c021887c d22fbbe8
    [54.364021] bbe0:00000000 a43f8000 c0213804 d22fa000 d22fbc14 d22fbc00 c0213850 c021375c
    [54.364025] bc00:00000000 a43f8000 d22fbc74 d22fbc18 bf02b870 c0213810 fffffff2 c1006184
    [54.364029] bc20:d22fbc44 d22fbc30 c027d490 c027ce80 bf0415c0 d22fbc6c d22fbc64 d22fbc48
    [54.364032] BC40:c02d2bd4 c027d474 38e38e39 b0364000 c107e904 00000000 d22fa000 d32afc00
    [54.364036] bc60:bf02b290 c1006184 d22fbd0c d22fbc78 bf026090 bf02b29c b0364000 00001000
    [54.364040] bc80:00000003 00000000 60070013 b0364000 fffffff2 c1006184 c107e904 b0364000
    [54.364046] bca0:000001f8 0000007e b0364000 00000000 fffff2 00000000 d2797400 ffffff
    [54.364050] bcc0:d3fc1b00 38e38e39 d32afc00 0000007c d22fbcfc 00000000 c02d2bd4 c027d474
    [54.364053] bce0:d3338400 d22fbd98 00000000 d305b200 00000001 ffffff 00000000 00000000
    [54.364057] bd00:d22fbd6c d22fbd10 bf02e99c bf025850 0007c000 d22fbd2c d22fbdd4 00000000
    [54.364061] bd20:00000000 df808000 00000000 00000000 00000000 00000451 00000002 c028d320
    [54.364064] bd40:FFFFFFFF 00000000 d3064600 d335f880 00007530 d22fa000 d22fbd78 d22fa000
    [54.364068] bd60:d22fbefc d22fbd70 bf02a99c bf02dde0 00000001 00000001 be3d828 00000000
    [54.364071] bd80:00000140 00000000 b3d828 00000000 00000140 00000000 0000000b 00000002
    [54.364076] bda0:00000001 105cf61e b51b8c20 b6f81f53 00000001 b51bfed0 b0364000 00000000
    [54.364080] bdc0:FFFFFFFF beb3d8ac 0007c000 00000000 7465535f 105cf61e b6fa2cf0 b51c1790
    [54.364085] bde0:000139fb 3e2d6563 0082e7b0 b51b8c20 00012998 b6fa2cf0 beb3d918 b6fa3000
    [54.364089] be00:aaaaab beb3d8a8 beb3d8ac 00000000 b6f97158 00000032 00000000 00000000
    [54.364093] BE20:00000000 105cf61e b6f971b8 00000000 beb3d8f8 000139fb beb3d918 beb3d920
    [54.364096] be40:beb3d98c b6f823dd beb3d920 b6fa3ab4 00000022 b6f971b8 00000005 00000000
    [54.364101] be60:00000001 b6fa3958 06052307 07e20302 38313032 00000000 b6fa3b10 0000007f
    [54.364105] be80:00000004 b6e0cb3b b6e2969c 0041aeec b51bfed0 b6f9bb08 6f636720 00000000
    [54.364109] bea0:00000002 00000001 00000006 000000d4 0041c9ec b6e2969c beb3d964 b6e0cdfd
    [54.364113] bec0:0041c9f0 00000001 0041c9d8 00000000 b6f954c0 00418d0c beb3d7e0 d36db020
    [54.364116] bee0:d367a300 0000001c beb3d7e0 d22fa000 d22fbf7c d22fbff00 c033eba8 bf02a880
    [54.364120] bf00:beb3d9a8 0000c350 00000000 d22fbf88 d22fbf84 d22fbf20 c0292cc4 c08c652c
    [54.364124] bf20:d367a300 00004000 d22fbf5c d22fbf38 c034a3b4 c0288524 00002710 0000001c
    [54.364129] bf40:00007530 00007530 b3d7e0 d22fa000 d22fbf6c d367a301 0000001c d367a300
    [54.364134] bf60:00007530 b3d7e0 d22fa000 00000000 d22fbfa4 d22fbf80 c033f338 c033eb0c
    [54.364137] bf80:00002710 b6e33b3c 00007530 00000036 c0207d84 d22fa000 00000000 d22fbfa8
    [54.364141] bfa0:c0207be0 c033f308 00002710 b6e33b3c 0000001c 00007530 beb3d7e0 00417f08
    [54.364145] bfc0:00002710 b6e33b3c 00007530 00000036 00000140 00000f80 00000400 00000004
    [54.364148] bfe0:b6e29808 b3d7cc b6e1567b b5243116 20070030 0000001c 00000000 00000000
    [54.364152]回溯:
    [54.364161][ ](dma_cache_maint_page)、来自[ ](_DMA_PAGE_CPU_TO_DEV_0x30/b4)
    [54.364167] R10:c1006184 R9:00000000 R8:d32afc00 r7:00001000 R6:00000000 R5:00000000
    [54.364169] R4:d4b18ee0
    [54.364177][ ](__dma_page_cpu_TO_dev)、来自[ ](ARM_DMA_SYNC_SINGLE_TO_DEVICE_0x4c/0x50)
    [54.364181] r7:d22fa000 r6:c0213804 r5:a43f8000 r4:00000000
    [54.364219][ ](ARM_DMA_SYNC_SINGLE_TO_DEVICE)从[ ](platform_cache+0x5e0/0x5ec [galcore])
    [54.36422] R5:a43f8000 R4:00000000
    [54.364267][ ](platform_cache [galcore])、来自[ ](gckOS_MapUserMemory+0x84c/0xc00 [galcore])
    [54.364272] R10:c1006184 R9:bf02b290 R8:d32afc00 r7:d22fa000 R6:00000000 R5:c107e904
    [54.364275] R4:b0364000
    [54.364320][ ](gckOS_MapUserMemory [galcore])、来自[ ](gckKERNEL_Dispatch + bbc8/0x11d0 [galcore])
    [54.364325] R10:00000000 R9:00000000 R8:ffff r7:00000001 R6:d305b200 R5:00000000
    [54.364327] R4:d22fbd98
    [54.364372][ ](gckKERNEL_Dispatch [galcore])、来自[ ](drv_ioctl+0x128/0x294 [galcore])
    [54.36437] R9:d22fa000 R8:d22fbd78 r7:d22fa000 R6:00007530 R5:d335f880 R4:d3064600
    [54.364406][ ](drv_ioctl [galcore])、来自[ ](do_vfs_ioctl+0xa8/0x7fc)
    [54.364410] R9:d22fa000 R8:beb3d7e0 r7:0000001c R6:d3667a300 R5:d36db020 R4:beb3d7e0
    [54.364416][ ](do _vfs_ioctl)、从[ ](sys_ioctl+0x3c/0x64)
    [54.36421] R10:00000000 R9:d22fa000 R8:beb3d7e0 r7:00007530 R6:d367a300 R5:0000001c
    [54.364424] R4:d367a301
    [54.36431][ ](sys_ioctl)从[ ](RET_FAST_SYSCALL+0x0/0x34)
    [54.364435] R9:d22fa000 R8:c0207d84 r7:00000036 R6:00007530 R5:b6e33b3c R4:00002710
    [54.36442]代码:e3a02004 e1a02312 e2423001 e1c00003 (ee070f3a)
    [54.36447]--[结束线迹7aed95bdafa0d7c9 ]--
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好、Joonho、

    使用 CMEM 存储器与 GC320时不应出现任何问题、因为我之前指出的视频图形测试示例应用程序与 GC320运行良好。 我没有看到 gcoSURF_SetWindow() API 中的任何内核错误。 GC320驱动器对缓冲器对齐和大小有一些限制。  您可能需要打印这些要求并与您正在传递的缓冲区的实际值进行比较。 在视频图形测试示例应用程序的 gc320.cpp 文件中检查函数 Gc320Obj::configure_surface()。 在设置缓冲区和窗口之前、需要检查代码。

    gcmONERROR (gcoSURF_GetAlignedSize (SURF_ctx[I].SURF、
    宽度(&W)、
    高度(&H)、
    跨度(&S));

    if ((width!= bo->m_width)||(height!= bo->m_height)||((uint32_t) STRIDE!= bo->m_STRIDE)){
    错误("分配的冲浪缓冲区宽度%d、高度%d 和跨度%d 不符合宽度%d、高度%d 和跨度%d 的 GC320对齐要求"、
    bo->m_width、bo->m_height、bo->m_STRIDE、width、height、 跨度);

    uint32_t p_adr_al;
    gcmONERROR (gcoSURF_GetAlignment (gcvSURF_BITMAP、SURF_FORMAT、
    &p_ADR_al、
    空、//&p_x_al、
    空//p_y_al)
    ));

    if ((uint32_t) bo->m_buf[i]% p_adr_al){
    错误("传递给 GC320的缓冲区不符合对齐要求、GC320对齐需要为%x、接收到的缓冲区具有%x 对齐地址\n"、
    P_ADR_al (((uint32_t) bo->m_buf[i]%p_adr_al));

     

    此外,请检查 cmem_buf.cpp 文件中的 BufObj::BufObj()函数。 需要调整缓冲区大小以满足宽度和高度对齐要求。  

    /* Vivante HAL 需要在宽度上进行16像素对齐、在中需要进行4像素对齐
    *高度、因此可单独调整缓冲区大小。
    *
    uint32_t 大小= m_STRIDE *((m_height + 3)&~3);

     

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    e2e.ti.com/.../vivante_5F00_cmem.7z

    你(们)好。

    我们附加完整源(vivante_cmem.7z)。

    您可以在 galRunTest2.c 中看到#define OMK_CMEM_support

    如果没有 OMK_CMEM_SUPPORT助、它可以与 OMAP 存储器完美配合。

    我编译为 make -f makefile.linux

    我们的编译日志如下所示。

    arm-linux-gnueabihf-gcc -c -March =armv7-a -marm -mfpu=neon -mfloat-abi= hard -- sysroot=/home/jhlee/AM5728_4.0/ti-processor-sdk-linux-am57xx-evm-04.00.00.04/linux-devkit/sysroots/armv7ahf-neon-linux-gnueabi -i/home/jhlee/AM5728_4.0/omk/lib/ coresSystem/src/hal_include/GC320 -Wall -D_retentant -fno-strict-al叠 层-mtun=arm920 -duse_v2=0 -dgcuse_opendcdtrad_ench=dsp2=d_micro-gv0=dcs_energ_energ_energ_energy=d_energy=degr_enam_enam-d_energy=d_energy=degr_enam1_enam_cortegr_ench_ench_enam1_def=degr.micro-cdr.micro-d_ench_ench_gi_ench.-dcdr.microcontrollers-degr.micro-r.micro-dcdr.micro-cdr.micro-dcdr.micro-d_ench_ench_ench.micro-dcdr.micro-dcdr.microcontrollers-d_d_d -i/home/jhlee/AM5728_4.0/unittest/vivante_cmem/sdk/inc -i/home/jhlee/AM5728_4.0/unittest/vivante_cme/test/hal/common/UnitTest/inc -i/home/jhource/am5728_4.0/unittest/vivene/libm/librs/rs/r/24.0/librs/r/24.0/libr/27.m/libr/24.0/librs/rs/rum/librandr/2-rs/r/27.m/r/2-r/2-r/24.0/libr/2-r/2-r/2-r/2-im/libr/2-rs/r/2-r/2-im/librs/r/2-

    我们的电路板出现以下错误。

    root@am57xx-EVM:~/gc320_cmem#./galRunTest2 -dst A8R8G8B8 1024x124
    -dst A8R8G8B8 1024x124
    DBG: main 的宽度(1024)高度(124)
    DBG:初始化时的 G_ContiguousSize (4194304)
    DBG:create_cmem_buffer 的宽度(1024)条形1 (1024)高度(124)大小(507904)
    DBG:create_cmem_buffer 处的 vaddr(bb6854000)
    DBG111:初始化时的 G_RUNTIME.TARGET (0x4d26c) SLEE(5)

    [78.213337]  背迹:
    [78.215813]  [ ](dma_cache_maint_page)、来自[ ](_DMA_PAGE_CPU_TO_DEV_0x30/b4)
    [78.224902]   R10:d36e0000 R9:00000000 R8:c1006184 r7:00001000 R6:00000000 R5:00000000
    [78.232766]   R4:d4a82400
    [78.235317][   ](__dma_page_cpu_TO_dev)、来自[ ](ARM_DMA_SYNC_SINGLE_TO_DEVICE_0x4c/0x50)
    [78.245275]   r7:bf0270c8 R6:c0213804 R5:00000000 R4:00000000
    [78.251000][   ](ARM_DMA_SYNC_SINGLE_TO_DEVICE)从[ ](platform_cache+0x74/0x5a8 [galcore])
    [78.261307]   R5:00000000 R4:00000000
    [78.264958]  [ ](platform_cache [galcore])、来自[ ](gckOS_MapUserMemory+0x250/bb58 [galcore])
    [78.275268]   R10:d36e0000 R9:c107e904 R8:c1006184 r7:bf0270c8 R6:d235c000 R5:00000000
    [78.283132]   R4:b6854000
    [78.285735][   ](gckOS_MapUserMemory [galcore])、来自[ ](gckKERNEL_Dispatch + 0xbb4/0x11a8 [galcore])
    [78.296480]   R10:00000000 R9:00000000 R8:ffff r7:00000001 R6:d3fc1d00 R5:00000000
    [78.304344]   R4:d235dd98
    [78.306947]  [ ](gckKERNEL_Dispatch [galcore])、来自[ ](drv_ioctl+0x128/0x294 [galcore])
    [78.316732]   R9:d235c000 R8:d235dd78 r7:d235c000 R6:00007530 R5:d2749fc0 R4:d3020600
    [78.324542]  [ ](drv_ioctl [galcore])、来自[ ](do_vfs_ioctl+0xa8/0x7fc)
    [78.332845]   R9:d235c000 R8:becd68b8 r7:00000003 R6:d2605b40 R5:d37fcb58 R4:becd68b8
    [78.340625]  [ ](do _vfs_ioctl)、从[ ](sys_ioctl+0x3c/0x64)
    [78.347969]   R10:00000000 R9:d235c000 R8:becd68b8 r7:00007530 R6:d2605b40 R5:00000003
    [78.3555832]   R4:d2605b40
    [78.358383][   ](sys_ioctl)从[ ](RET_FAST_SYSCALL+0x0/0x34)
    [78.365988]   R9:d235c000 R8:c0207d84 r7:00000036 R6:00007530 R5:b6f64b3c R4:00002710
    [78.373767]  代码:e3a02004 e1a02312 e2423001 e1c00003 (ee070f3a)

    /usb/lib

    lrwxrwxrwx   1 root    root root 2016           年10月 3日 /usr/lib/libGAL.so -> libgagl.so.5.0.11.p7
    -rwxr-xr-x 1   1001           229592 2017年6月28日 /usr/lib/libGAL.so.5.0.11.p7

    我犯了什么错误?

    非常感谢。