【问题标题】:How to specify virtual Address for pl011 uart in linux kernel如何在linux内核中为pl011 uart指定虚拟地址
【发布时间】:2018-01-29 20:53:59
【问题描述】:

我是内核移植的初学者。我正在尝试将 Linux 内核(版本 - 4.9.22)移植到自定义 SoC(基于 cpu = arm1176jzfs)上以用于自定义评估板。我的 SoC 中有 ARM Prime 单元 pl011 UART。它物理映射到0x5800_1000 地址。当我试图将它用作调试 UART 时,内核正在询问它的虚拟地址。我应该如何配置这个选项。

即:

-> Kernel low-level debugging functions
    -> kernel low-level debugging port (Kernel low-level debugging on via ARM Ltd PL01x Primecell UART)
(0x58001000) Physical base address of debug UART
(??) Virtual base address of debug UART

谢谢, Vivek T.

【问题讨论】:

  • 它的虚拟地址只是使用一组规则的物理地址的映射(通常非常简单,例如位移位和位掩码)。你需要先弄清楚为什么驱动配置会问这个。

标签: linux-kernel embedded


【解决方案1】:

标准 UART 地址为:

标准端口地址是:

COM1 0x3F8 (1016) COM2 0x2F8 (760) COM3 0x3E8 (1000) COM4 0x2E8 (744)

其他端口地址是:

COM5 0x3E0 (992) COM6 0x2E0 (736) COM7 0x338 (824) COM8 0x238 (568)

【讨论】:

    【解决方案2】:

    如果您有调试器,那么您当然可以调试内核无法启动的原因。

    你可以看这个步骤:

    -在内核配置中,启用CONFIG_DEBUG_INFO(Kernel Hacking -> Compile-time checks and compiler options)

    -编译内核

    -从调试器软件中,从精灵加载符号。该命令因调试器而异

    -查找符号“log_buf”,并选择“将内存显示为转储”选项

    所以我认为内核日志存储在缓冲区中。也许它可以帮助你:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-06
      • 2018-02-23
      • 1970-01-01
      • 2021-07-25
      • 2011-06-17
      • 1970-01-01
      • 2012-02-01
      • 2021-10-26
      相关资源
      最近更新 更多