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.

[参考译文] AM4378:u-boot 警告:CPU:0 PID:1位于驱动程序/总线/OMAP_L3_NOC.c:141 L3_INTERRUPT_handler

Guru**** 691310 points
Other Parts Discussed in Thread: AM4378, SN65LVDS93A
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1204165/am4378-u-boot-warning-cpu-0-pid-1-at-drivers-bus-omap_l3_noc-c-141-l3_interrupt_handler

主题中讨论的其他器件:AM4378SN65LVDS93A

您好、专家

我正在尝试将 SD 卡中的 u-boot 输出 bmp 映像写入连接到 AM4378 DSS 的 LCD
在具有 AM4378的定制电路板上通过 LVDS (SN65LVDS93A)输入、并继续显示 LCD
即使内核已启动也是如此。
我能够通过更改 u-boot 在 LCD 上显示 bmp 图像、但警告日志已输出
仅在引导内核时执行一次。

LCD 背光由 u-boot 打开、由 I2C0和 PWM1控制。
即使输出了警告日志、内核也不会出现紧急情况、并且可以显示 LCD、因此它似乎正常引导。

TI_SDK:v7.3.0.005
u-boot 代码为定制它已更改为符合电路板(LCD 兼容)规范。
u-boot 代码可以在 e2e.ti.com/.../2592257上找到
定制电路板(LCD 兼容)规格。


环境

・TI_SDK:v7.3.0.005
・u-boot 代码更改为参考的定制电路板(LCD 兼容)规范
下面的主题。

e2e.ti.com/.../2592257

--问题--

问题1:即使在输出警告日志之后、是否仍可以继续使用 AM4378?
Q2:您需要恢复处理吗?
问题3:如果需要恢复处理、您能否告诉我需要恢复的模块(DSS 等)?
Q4:如果此警告没有问题、是否有办法隐藏警告日志?

--日志--

正在启动内核...

[ 0.000000]在物理 CPU 0x0上引导 Linux
[ 0.000000] Linux 版本5.4.106-g023faefa70 (xxx@xxx-VirtualBox)(gcc 版本9.2.1 20191025 (A-profile 体系结构的 GNU 工具链9.2-2019.12 (ARM-9.10)))#14抢占 Mon Jun 27 18:19:39 JST 2022
[ 0.000000] CPU:ARMv7处理器[412fc09A]修订版10 (ARMv7)、CR=10c53c7d
[ 0.000000] CPU:PIPT/VIPT 非别名数据高速缓存、VIPT 别名指令高速缓存
[ 0.000000] of:FDT:机器模型:TI AM437x GP EVM
[ 0.000000]内存策略:数据缓存写回
[ 0.000000] EFI:从 FDT 获取 EFI 参数:
[ 0.000000] EFI:未找到 UEFI。
[ 0.000000] CMA:保留48MiB,位于0xfcc00000
[ 0.000000] CPU:所有 CPU 都在 SVC 模式下启动。
[ 0.000000] AM437x ES1.2 (SGX NEON)
[0.000000]构建了1个区域主义者,移动性分组。 总页数:522559
[ 0.000000]内核命令行:console=ttyO0,115200n8 spidev.buFILEI=8192 root=PARTUUUID=9e5558a1-02 rw rootfstype=ext4 rootwait
[ 0.000000]条目高速缓存哈希表条目:131072 (顺序:7、524288字节、线性)
[ 0.000000] inode-cache 哈希表条目:65536 (顺序:6、262144字节、线性)
[ 0.000000] mem auto-init:stack:off、heap alloc:off、heap free:off
[ 0.000000]内存:2013568K/2097148K 可用(9216K 内核代码、293K rwdata、3092K rodata、1024K 初始化、257K BSS、 34428K 保留、49152K CMA 保留、1261564K HIGHMEM)
[ 0.000000] slub:HWalign=64、order=0-3、MinObjects=0、CPU=1、Nodes=1
[ 0.000000] RCU:抢占式分层 RCU 实现。
[ 0.000000]已启用任务 RCU。
[ 0.000000] RCU:RCU 计算出的调度器入射延迟值为10个间隔。
[ 0.000000] NR_IRQ:16、nr_IRQ:16、预分配的 IRQ:16
[ 0.000000] L2C:平台修改辅助控制寄存器:0x0e030000 -> 0x3e430000
[ 0.000000] L2C:DT/平台修改 AUX 控制寄存器:0x0e030000 -> 0x3e430000
[ 0.000000] L2C-310启用 Cortex-A9的早期 BRESP
[ 0.000000] OMAP L2C310:ROM 不支持电源控制设置
[ 0.000000] L2C-310动态时钟门控已禁用、待机模式已禁用
[ 0.000000] L2C-310高速缓存控制器已启用,16路,256 KB
[ 0.000000] L2C-310:cache_ID 0x410000c9、AUX_CTRL 0x4e430000
[ 0.000000] random:从 start_kernel+0x2b4/0x470调用 get_random_Bytes、crng_init=0
[ 0.000000] OMAP 时钟事件源:timer2为24000000 Hz
[ 0.000011] sched_clock:24MHz 时为32位、分辨率为41ns、每89478484971ns 换一次
[ 0.000028]时钟源:Timer1:MASK:0xFFFFFFFF max_cycles:0xFFFFFFFF、max_idle_ns:79635851949 ns
[ 0.000036] OMAP 时钟源:Timer1为24000000 Hz
[ 0.000478]时钟源:32K_COUNTER:MASK:0xFFFFFFFF max_cycles:0xFFFFFFFF、max_idle_ns:58327039986419 ns
[ 0.000487] OMAP 时钟源:32768Hz 上为32K_COUNTER
[0.001015]控制台:彩色虚拟设备80x30.
[ 0.001047]警告:您的"console=ttyO0"已替换为"ttyS0"
[0.001052]这可以确保您仍能看到内核消息。 幻灯片
[ 0.001055]更新内核命令行。
[0.001093]校准延迟环路... 1987.37 BogoMips (lpj=9936896)
[ 0.060182] pid_max:默认值:32768最小值:301
[ 0.060382]安装缓存哈希表条目:2048 (顺序:1、8192字节,线性)
[ 0.060404] mountpoint-cache hash table entries:2048 (顺序:1、8192字节,线性)
[ 0.061290] CPU:测试写入缓冲器一致性:确定
[0.061352] CPU0:SPRETER v2:使用 BPIALL 变通办法
[ 0.062221]为0x80100000 - 0x80100060设置静态标识映射
[0.062368] RCU:分层 SRCU 实施。
[0.062451] EFI 服务将不可用。
[ 0.063103] devtmpfs:初始化
[ 0.074943] VFP 支持 v0.3:Implementor 41体系结构3第30部分变化9修订版4
[ 0.075342] clocksource:jiffies:mask:0xFFFFFFFF max_cycles:0xFFFFFFFF、max_idle_ns:19112604462750000 ns
[ 0.07564] futex 哈希表条目: 256 (顺序:-1 , 3072字节,线性)
[ 0.078560] pinctrl core:初始化 pinctrl 子系统
[0.079318] DMI 不存在或无效。
[0.079783] NET:注册的协议系列16.
[0.0852424] DMA:为原子相干分配预分配256 KiB 池
[0.103040] cpuidle:使用调速器梯
[0.103074] cpuidle:使用调速器菜单
[ 0.104701] OMAP_L3_PROBE:IN
[ 0.104766] OMAP_L3_PROBE:[0] res=0xee95c480、L3->L3_base [I]=0xf2400000
[ 0.104774] OMAP_L3_PROBE:[0] res->start=0x44000000、res->end=0x443ffff
[ 0.104809] OMAP_L3_PROBE:[1] res=0xee95c4a0、L3->L3_base [I]=0xf2c00000
[ 0.104816] OMAP_L3_PROBE:[1] res->start=0x44800000、res->end=0x44bffff
[ 0.104835] OMAP_L3_PROBE:L3->DEBUG_IRQ=20
[ 0.104898] OMAP_L3_PROBE:L3->APP_IRQ=21
[ 0.104926] OMAP_L3_NOC 44000000.OCP:L3_INTERRUPT_Handler:I=1irq = 21、ERR_REG=0x00000080
[ 0.104926]
[0.104937]------- [剪切此处]-------
[ 0.104971]警告:CPU:0 PID:1 at drivers/bus/omap_L3_NOC.c:141 L3_interrupt_handler+0x37c/0x400
[ 0.104979] 44000000.OCP:L3自定义错误:主 DSS 目标 GPMC (读取):用户模式下在功能访问期间进行数据访问
[ 0.104984]以下位置链接的模块:
[0.104997] CPU: 0 PID: 1 Comm: swapper not damed 5.4.106-g023faefa70 #14.
[ 0.105003]硬件名称:通用 AM43 (平展设备树)
[0.105039][ ](relaxed_backtrace),从[ ](show_stack+0x10/0x14)
[0.105064][ ](show_stack)从[ ](__warn+0xd0/0xe8)
[0.105079][ ](__WARN)从[ ](WARN_SLOPPATH_fmt+0x98/0xc8)
[0.105092][ ](warn_sleppath_fmt),来自[ ](L3_INTERRUPT_Handler+0x37c/0x400)
[0.105108][ ](L3_INTERRUPT_Handler)从 ](__handle_irq_event_percpu+0x50/0x13c)
[0.105119][ ](__handle_irq_event_percpu),来自[] ](handle_irq_event_percpu+0x30/0x8c)
[0.105128][ ](handle_irq_event_percpu),来自 ](handle_IRQ_event+0x4c/0x8c)
[0.105142][ ](handle_IRQ_event)从 ](handle_fasteoi_IRQ+0xb4/0x184)
[0.105166][ ](handle_fasteoi_IRQ) from [ ](GENERAL_Handle_IRQ+0x24/0x34)
[0.105179][ ](generic_handle_IRQ)从 ](__handle_domain_irq+0x54/0xa4)
[0.105190 ](__handle_domain_IRQ),来自 ](gic_handle_irq+0x3c/0x68)
[0.105203][ ](gic_handle_IRQ)从 ](_IRQ_Svc+0x6c/0xa8)
[ 0.105210]异常堆栈(0xee88bc58至0xee88bca0)
[ 0.105217] BC40:ee809900 ee95f800
[ 0.105226] bc60:00000000 00000000 ee809900 00000000 ee95f800 00000015 ee8099c0 60000053
[0.105235] bc80:00000000 ee95c5c0 00000200 ee88bca8 c016f4f4 c016f504 60000053 ffffffff
[0.105247][ ](__ IRQ_Svc)来自 ](__setup_IRQ+0x394/0x874)
[0.105257] ](__setup_IRQ)、来自 ](request_thread_IRQ+0xd0/0x148)
[0.105269][ ](request_thread_IRQ) from [ ](devm_request_thread_IRQ+0x64/0xb8)
[0.105282][ ](devm_request_pthreading_IRQ) from [ ](OMAP_L3_Probe+0x2c8/0x304)
[0.105304][ ](OMAP_L3_PROBE)、来自 ](platform_drv_prob+0x48/0x98)
[0.105318][ ](platform_drv_probe)从[ ](REALIZE_PROT+0x1e0/0x348)
[0.105328][ ](reallet_probe)来自[ ](driver_probe_device+0x60/0x170)
[0.105339] ](driver_probe_device) from [ ](bus_for_ever_drv+0x84/0xd0)
[0.105349 ](bus_for_each_drv)从 ](__device_attach+0xf0/0x15c)
[0.105359] ](__ device_attach)、来自 ](bus_probe_device+0x84/0x8c)
[0.105368] ](bus_probe_device)从 ](device_add+0x370/0x60c)
[0.105385] ](device_add)从[] ](of_platform_device_create_pdata+0x9C/0xd8)
[0.105397] ](of_platform_device_create_pdata)、来自 ](of_platform_BUS_create+0x1a8/0x244)
[0.105407][ ](of_platform_BUS_create)从[ ](of_platform_population+0x6c/0xdc)
[0.105426][ ](of_platform_populate)从[ ](pdata_quirks_init+0x70/0x80)
[0.105438][ ](pdata_quirks_init) from [ ](OMAP_GENERAL_init+0x10/0x18)
[0.105459][ ](OMAP_generic_init)从 ](custom_machine+0x20/0x30)
[0.105474][ ](custom_machine) from [ ](DO_ONE_initcall+0x58/0x1c4)
[0.105486] ](DO_ONE_INITCALL)从[ ](kernel_init_freeable+0x124/0x1c0)
[0.105509][ ](kernel_init_freeable) ](kernel_init+0x8/0x110)
[0.105520][ ](kernel_init) ](RET_from_fork+0x14/0x2C)
[ 0.105526]异常堆栈(0xee88bfb0至0xee88bff8)
[ 0.105532] bfa0:00000000 00000000 00000000 00000000
[ 0.105540] bfc0:00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[ 0.105548] bfe0:00000000 00000000 00000000 00000000 00000013 00000000
[0.105561]--[末端迹线803a56ff1627779d ]-


此致
Hidekazu

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

     Hidekazu、您好!

    通常、 Uboot 不会为 L3_NOC 中断提供服务、只会在内核中提供服务。   DSS 可能尝试 访问 Uboot 中 不存在的区域。 作为一个实验、尝试从 Uboot 禁用启动界面、然后查看 L3_NOC 是否显示在内核中。

    此致、
    Krunal.

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

    您好、 Krunal

    这是我们的一位客户提出的问题、由于我不在、我有一位同事代表我提出了这一问题。
    客户已向我报告了有关该实验的情况。
    您能给我们讲一讲如何处理吗?

    ----------------------------------------------------------------------------------------------------
    禁用启动界面(无 DSS 寄存器设置)不会导致警告(L3_NOC)。
    DSS 寄存器和中的 LCD 设置和帧缓冲设置
    DISPC_CTRL 寄存器的 GO_LCD (位5)设置为1、发生警告(L3_NOC)。
    如果 DISPC_CTRL 寄存器的 GO_LCD (位5)保持为0、则不会发生警告。

    是否可以将在 u-boot 中运行 DSSS 的状态转移到内核(以不生成警告的方式)?
    如果有,请提供资料说明如何实现这一目标?
    ----------------------------------------------------------------------------------------------------

    此致

    西畑浩二

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

    您好、Kouji:

    我能想到的唯一方法是手动清除内核在 Uboot 中检查 L3-NOC 错误的位、代码是: https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/tree/drivers/bus/omap_l3_noc.c?h=ti-linux-5.10.y。

    此致、
    Krunal.

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

    您好、Krunal

    我们收到了一份客户关于执行结果的报告和问题。


    我们参考了 OMAP_L3_NOC.c,在 bootm.c 中的 u-boot (announce_and_cleaning())启动内核之前,我们添加了一个进程(Clest_L3_NOC_EVENT ())来消除 warninig 错误因素。 因此、我们确认警告不再输出。

    bootm.c
    static void announce_and_cleanup(int fake)
    {
        :
                  board_quiesce_devices();
    
    #if 1       /* test */
                  clear_l3_noc_event();
    #endif   /* test */
    
                  printf("\nStarting kernel ...%s\n\n", fake ?
                                "(fake run for tracing)" : "");
        :
    }
    

    启用 LCD 输出时出现的此错误是否会影响其他功能(I2C、DDR、MMC 等)?
    如果它不影响其他功能、我们将尝试清除 L3_NOC 中的错误因子、以解决该问题。


    此致、

    西畑浩二

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

    尊敬的  Kouji:

    它不应对其他功能产生任何影响、并且仅作为一条警告、告知您 LCD 尝试访问的区域不存在。

    此致、

    Krunal.

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

    您好、Krunal

    感谢您的答复。

    您的问题结束、请关闭此主题。

    (我看不到[这解决了我的问题]按钮、因此无法按下它)

    此致、

    西畑浩二