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

Update example software and exercises for 1.0 release #58

Merged
merged 8 commits into from
Nov 7, 2024

Conversation

AlexJones0
Copy link
Contributor

This PR only touches the automotive demo enough to make it compile, but not work, which will be addressed in a separate PR due to consistency issues with the demo, likely due to the demo's reliance on undefined behaviour.

See the commit messages for more details on the changes.

This PR primarily involves updating demos to use the updated GPIO, I2C and PWM drivers, and to match the newest GPIO board input/output mappings for any instances where the input/output GPIO registers are being interfaced with directly. It also updates the LCD library/driver to match the newest hardware changes - using SPI Chip Select lines and a PWM backlight in place of the original GPIO pin interface.

This has been tested to build and run all existing software with the exception of the automotive demo, which is not fixed by this PR, and the proximity demo, as I do not have hardware on hand to test that.

Includes the latest driver changes to match 1.0 HW changes, the new
pinmux driver, and also a bump to the system clock frequency from 30 MHz
to 40 MHz. The driver changes include updates to the I2C, EThernet, PWM
and GPIO drivers, as well as board description file updates.
The updated I2C driver handles controller halts properly, and for good
practice requires (via a `nodiscard` attribute) that the new Boolean
result of the I2C's `blocking_write` function is not discarded. This
commit hence simply adds checks to the existing demos that will debug
log if an error occurs on these writes.
libraries/lcd.cc Outdated Show resolved Hide resolved
Copy link
Contributor

@marnovandermaas marnovandermaas left a comment

Choose a reason for hiding this comment

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

These changes look good to me. Please also review the two commits I put on top.

AlexJones0 and others added 6 commits November 7, 2024 15:51
Sonata's updated GPIO driver correctly provides different struct for
different GPIO devices. This updates Sonata's examples and exercises
(with the exception of the automotive demo, which will be handled
separately) to use the new drivers and names of devices from the board
description file, and changes direct reads/writes to/from the `input`
and `output` registers to match the new general/board GPIO mappings
after things have moved in the hardware.
In the latest 1.0 hardware, the LCD has been changed to use a chip
select (for its CS, DC and RST pins) and to use a PWM for its backlight.
This commit updates the LCD library/driver to appropriately make use of
the SPI driver intsead of the GPIO as it was using before, and to use
the PWM for the LCD's backlight. The PWM is always set to 100, and for
now the driver simply replaces existing functionality - there is no way
to modify the PWM from the driver.
This was done using the following command:
nix flake lock --update-input sonata-system

The new revision for Sonata System is:
d410c6692bae8b579ee1b9986dd7ad1ebe077a8b
@AlexJones0
Copy link
Contributor Author

Your changes look good to me @marnovandermaas, I've just added a commit so that CI will also run on this PR (since it is a PR on the staging branch). Lets make sure that CI is passing first.

@marnovandermaas marnovandermaas merged commit f48ef47 into lowRISC:staging Nov 7, 2024
1 check passed
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