-
Notifications
You must be signed in to change notification settings - Fork 651
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Override default baud rate for FireChip #625
Conversation
This avoids target software needing to explicitly set the divisor to match the UART bridge.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
ucb-bar/chipyard#625 and firesim/firesim#598 obviate the FireSim patches to the UART driver in bbl, as the UART divisor is now reset to the proper value without software intervention.
@@ -69,7 +69,8 @@ class WithNVDLASmall extends nvidia.blocks.dla.WithNVDLA("small") | |||
class WithFireSimConfigTweaks extends Config( | |||
// Required*: When using FireSim-as-top to provide a correct path to the target bootrom source | |||
new WithBootROM ++ | |||
// Optional*: Removing this will require target-software changes to properly capture UART output | |||
// Optional*: Removing this will require adjusting the UART baud rate and | |||
// potential target-software changes to properly capture UART output |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@a0u Any tips on the "potential target-software changes"? In the past Sagar pointed to adjusting the UART div in riscv-pk. If I'm using the br-base-bin linux image from Firemarshal, would I need to adjust the kconfig somewhere instead of adjusting riscv-pk/machine/uart.c like Sagar mentioned?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
As of firesim/firesim#598, both the UART device and bridge are initialized with the same baud rate from UARTParams
, so target software no longer needs to adjust the divisor after reset. This has recently enabled FireMarshal to switch back to upstream riscv-pk. At this point, a user is largely free to change the initBaudRate
parameter and pbus frequency without worrying about software, but the cautionary note still applies to at least two situations:
- As a fundamental constraint, the baud rate cannot exceed the pbus frequency (divided by 2).
- The Linux UART driver normally defaults to 115200 baud, unless specified otherwise by the boot command line or
/etc/inittab
(getty
). Most FireSim users do not need to be concerned about this since FireMarshal kernels use the SBI console driver, which is agnostic to the baud rate and bus frequency.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for your reply @a0u. This information is very helpful.
Related issue:
Type of change: other enhancement
Impact: rtl change
Release Notes
This avoids target software needing to explicitly set the divisor to match the UART bridge.