admin管理员组文章数量:1536091
最近一直在搞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 featuresast2500支持5组串口,12个寄存器。所以我需要先知道板子上的定向输出BIOS的串口是哪一个口,经过查询可知为串口1。 拿到串口后,查询设备树,发现设备树确实没有添加uart1,导致串口不能用。我首先想到的的是enable uart 1,即在设备树添加:
&uart1 {添加完以后,串口依旧不能输出对应的BIOS信息,但是通过跳线(先用浪潮的BMC启动,再跳线切到我的bmc),发现串口可以输出了。 到这里,说明,我的串口应该还有一些初始化配置未能加载和操作,导致输出不了启动信息。到这里只能求助到浪潮的工作人员,让他们发送串口1的设备树配置过来,看看结果。 最后,终于拿到了串口1的设备树信息:
status = "okay"; }
&uart1 {添加到设备树,通信正常。从配置看,是配置了pin脚,pinctrl的具体配置我也没看懂,有看懂的朋友留言交流。
/* 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>;
};
最后:
点赞是美德,
关注是缘分,
收藏是肯定,
打赏你随意,
你的鼓励是我世界善的一部分,爱你们!
版权声明:本文标题:Open BMC开发系列(十)配置串口可以输出BIOS信息 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dongtai/1726918221a1090388.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论