Skip to content
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

Merged
merged 1 commit into from
Jul 10, 2020
Merged

Override default baud rate for FireChip #625

merged 1 commit into from
Jul 10, 2020

Conversation

a0u
Copy link
Member

@a0u a0u commented Jul 8, 2020

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.

This avoids target software needing to explicitly set the divisor to
match the UART bridge.
Copy link
Contributor

@davidbiancolin davidbiancolin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@a0u a0u merged commit fbc71d4 into dev Jul 10, 2020
@a0u a0u deleted the uart branch July 10, 2020 17:55
a0u added a commit to firesim/FireMarshal that referenced this pull request Jul 10, 2020
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
Copy link
Contributor

@timsnyder timsnyder Jul 13, 2020

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?

Copy link
Member Author

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.

Copy link
Contributor

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.

@alonamid alonamid mentioned this pull request Nov 24, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants