Open BMC开发系列(十)配置串口可以输出BIOS信息

最近一直在搞open BMC的串口问题,费了很长时间,主要原因还是不熟。

问题描述:

        我们使用浪潮的BMC,对应板子的串口可以正常输出BIOS的启动过程,但是使用我这个分支的BMC,串口并不能输出BIOS对应的启动信息。

分析过程:

        从问题可知,问题出在BMC侧,BIOS已经完成了重定向的设置。

        BMC上的串口组件是UART,对应的串口控制器描述如下:

39 UART Controller (16550)
39.1 Overview
AST2500 integrates 5 sets of UART (Universal Asynchronous Receiver/Transmitter) providing serial commu
nication capabilities with other external devices, like another computer using a serial cable based on RS232
protocol. This core is designed to be compatible with the industry standard — 16550 UART. The two sets of
UART are equipped with a 16x8 FIFO that can be programmed to be enabled or disabled. The supported baud
rates are also programmable.
Each unit of UART totally implements 12 sets of 32-bit registers, which are listed below, to program the various
supported functions including character length selection, baud rate selection, interrupt generation, and parity
generation/checking. Each register has its own specifific offset value, ranging from 0x00 to 0x14h, to derive its
physical address location.
Base Address of UART1 = 0x1E78 3000
Base Address of UART2 = 0x1E78 D000
Base Address of UART3 = 0x1E78 E000
Base Address of UART4 = 0x1E78 F000
Base Address of UART5 = 0x1E78 4000
Register Address of UART = (Base Address of UART) + Offset
UART RBR : Receiving Buffer Register (DLAB = 0)
UART THR : Transmit Holding Register (DLAB = 0)
UART IER : Interrupt Enable Register (DLAB = 0)
UART IIR : Interrupt Identity Register
UART FCR : FIFO Control Register
UART LCR : Line Control Register
UART MCR : Modem Control Register
UART LSR : Line Status Register
UART MSR : Modem Status Register
UART SCR : Scratch Register
UART DLL : Divisor Latch Low Register : (DLAB = 1)
UART DLH : Divisor Latch High Register : (DLAB = 1)

39.2 Features
Directly connected to APB bus
ASPEED Confifidential
All rights reserved.
631
May 12, 2017
ASPEED
Confifidential ASPEED AST2500/AST2520 A2 Datasheet – V1.6
Support two UART with full flflow control pins (one is with dedicated flflow control pins, the other is shared
with GPIO pins)
Separate transmit & receive FIFO buffer (16x8) to reduce CPU interrupts
Support up to 115.2K baud-rate
Programmable baud rate generator
Standard asynchronous communication bits — Stat/Stop/Parity
Independent masking of transmit FIFO, receive FIFO, receiving timeout and error condition Interrupts
False start-bit detection
Line break generation and detection
Fully programmable serial interface characteristics:
5/6/7/8 data length
Even, odd and none parity generation and detection
1/2 stop-bit generation
Extended diagnostic Loopback Mode allows testing more Modem Control and Auto Flow Control features
        ast2500支持5组串口,12个寄存器。所以我需要先知道板子上的定向输出BIOS的串口是哪一个口,经过查询可知为串口1。
        拿到串口后,查询设备树,发现设备树确实没有添加uart1,导致串口不能用。我首先想到的的是enable uart 1,即在设备树添加:
&uart1 {
    status = "okay";
}
        添加完以后,串口依旧不能输出对应的BIOS信息,但是通过跳线(先用浪潮的BMC启动,再跳线切到我的bmc),发现串口可以输出了。
        到这里,说明,我的串口应该还有一些初始化配置未能加载和操作,导致输出不了启动信息。到这里只能求助到浪潮的工作人员,让他们发送串口1的设备树配置过来,看看结果。
        最后,终于拿到了串口1的设备树信息:
&uart1 {
    /* Rear RS-232 connector */
    status = "okay";
    pinctrl-names = "default";
    pinctrl-0 = <&pinctrl_txd1_default
            &pinctrl_rxd1_default
            &pinctrl_nrts1_default
            &pinctrl_ndtr1_default
            &pinctrl_ndsr1_default
            &pinctrl_ncts1_default
            &pinctrl_ndcd1_default
            &pinctrl_nri1_default>;
};
        添加到设备树,通信正常。从配置看,是配置了pin脚,pinctrl的具体配置我也没看懂,有看懂的朋友留言交流。

最后:

        点赞是美德,

        关注是缘分,

        收藏是肯定,

        打赏你随意,

你的鼓励是我世界善的一部分,爱你们!

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大余里

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值