Skip to content

cpu/esp32: add low-level LCD parallel interface using LCD peripheral#19944

Merged
benpicco merged 4 commits intoRIOT-OS:masterfrom
gschorcht:cpu/esp32/lcd_parallel_ll_mcu
Nov 13, 2023
Merged

cpu/esp32: add low-level LCD parallel interface using LCD peripheral#19944
benpicco merged 4 commits intoRIOT-OS:masterfrom
gschorcht:cpu/esp32/lcd_parallel_ll_mcu

Conversation

@gschorcht
Copy link
Copy Markdown
Contributor

Contribution description

This PR the implementation of the LCD low-level MCU 8080 parallel interface using the LCD peripheral for ESP32, ESP32-S2 and ESP32-S3 or periph_gpio_ll for the ESP32-C3.

Testing procedure

BOARD=esp32s3-wt32-sc01-plus make -C tests/drivers/st77xx flash

should work on top of PR #19941. Drawing operations should be much faster.

Issues/PRs references

@github-actions github-actions bot added Area: pkg Area: External package ports Area: boards Area: Board ports Platform: ESP Platform: This PR/issue effects ESP-based platforms Area: cpu Area: CPU/MCU ports Area: Kconfig Area: Kconfig integration labels Sep 23, 2023
@gschorcht gschorcht added Type: enhancement The issue suggests enhanceable parts / The PR enhances parts of the codebase / documentation State: waiting for other PR State: The PR requires another PR to be merged first labels Sep 23, 2023
bors bot added a commit that referenced this pull request Oct 5, 2023
19941: drivers/lcd: add MCU-driven low-level parallel interface r=benpicco a=gschorcht

### Contribution description

The PR extends the LCD driver by a low-level interface for MCU-driven implementations of the MCU 8080 16-/8-bit parallel interface, allowing the MCU to use special peripherals for the interface, such as the FMC for STM32 MCUs, which is significantly faster than the integrated GPIO-driven parallel interface implementation of the LCD driver.

### Testing procedure

~Once PR #19938 and PR #19939 are merged, a PRs for these board can be pushed that allow to test this PR.~

Use either PR #19943 or PR #19944 on top of this PR to test, e.g. with PR #19943:
```
BOARD=stm32f723e-disco make -j8 -C tests/drivers/st77xx flash
```

### Issues/PRs references


Co-authored-by: Gunar Schorcht <[email protected]>
@gschorcht gschorcht force-pushed the cpu/esp32/lcd_parallel_ll_mcu branch from a35bd2d to ad9e936 Compare October 5, 2023 16:38
@gschorcht gschorcht added CI: ready for build If set, CI server will compile all applications for all available boards for the labeled PR and removed State: waiting for other PR State: The PR requires another PR to be merged first labels Oct 5, 2023
@riot-ci
Copy link
Copy Markdown

riot-ci commented Oct 5, 2023

Murdock results

✔️ PASSED

4e85968 boards/esp32s3-wt32-sc01-plus: enable LCD parallel interface

Success Failures Total Runtime
7957 0 7957 10m:31s

Artifacts

@benpicco
Copy link
Copy Markdown
Contributor

benpicco commented Nov 4, 2023

bors merge

bors bot added a commit that referenced this pull request Nov 4, 2023
19546: Enable compile_and_test_for_board to skip if nothing changed r=benpicco a=MrKevinWeiss

### Contribution description

The overall goal of this PR is to be able to keep running the `compile_and_test_for_board.py` script without destroying ones boards.  Useful if you are a board owner that wants to keep testing on master (say with nightlies, say in a CI).

For example, I could now just run and rerun the following:
```
./dist/tools/compile_and_test_for_board/compile_and_test_for_board.py . <MY_BOARD> -c
```
and monitor the results, even after updating a branch.

This is because the hashes now get stored with the results (thanks to the `RIOT_TEST_HASH_DIR` var) which means cleaning will not wipe them out.  Specifically in (`<results_base>/<board>/hashes/<app_dir>/test-input-hash.sha1`)

I tried to do as much as I could with make and only alter the python script when needed.

### Testing procedure

Clear results folder and run:
```
./dist/tools/compile_and_test_for_board/compile_and_test_for_board.py . native --applications tests/shell -c
```
<details>

```
INFO:native:Saving toolchain
INFO:native.tests/shell:Board supported: True
INFO:native.tests/shell:Board has enough memory: True
INFO:native.tests/shell:Application has test: True
INFO:native.tests/shell:Run compilation
**INFO:native.tests/shell:Hashes match: False**
INFO:native.tests/shell:Run test
INFO:native.tests/shell:Run test.flash
INFO:native.tests/shell:Success
INFO:native:Tests successful
```
</details>

it should execute the test...

Then the same command again should skip it.
<details>

```
INFO:native:Saving toolchain
INFO:native.tests/shell:Board supported: True
INFO:native.tests/shell:Board has enough memory: True
INFO:native.tests/shell:Application has test: True
INFO:native.tests/shell:Run compilation
**INFO:native.tests/shell:Hashes match: True**
INFO:native.tests/shell:Success
INFO:native:Tests successful
```
</details>

Try changing something (say the `tests/shell/01-run.py`) and rerun, it should trigger the test again.
<details>

```
INFO:native:Saving toolchain
INFO:native.tests/shell:Board supported: True
INFO:native.tests/shell:Board has enough memory: True
INFO:native.tests/shell:Application has test: True
INFO:native.tests/shell:Run compilation
**INFO:native.tests/shell:Hashes match: False**
INFO:native.tests/shell:Run test
INFO:native.tests/shell:Run test.flash
INFO:native.tests/shell:Success
INFO:native:Tests successful
```
</details>

...finally, running without the changes check should run the test as usual, even if nothing changes:
```
./dist/tools/compile_and_test_for_board/compile_and_test_for_board.py . native --applications tests/shell
```
<details>

```
INFO:native:Saving toolchain
INFO:native.tests/shell:Board supported: True
INFO:native.tests/shell:Board has enough memory: True
INFO:native.tests/shell:Application has test: True
INFO:native.tests/shell:Run compilation
INFO:native.tests/shell:Run test
INFO:native.tests/shell:Run test.flash
INFO:native.tests/shell:Success
INFO:native:Tests successful
```
</details>

### Issues/PRs references

Might help the surprises we got with #19469


19944: cpu/esp32: add low-level LCD parallel interface using LCD peripheral r=benpicco a=gschorcht

### Contribution description

This PR the implementation of the LCD low-level MCU 8080 parallel interface using the LCD peripheral for ESP32, ESP32-S2 and ESP32-S3 or `periph_gpio_ll` for the ESP32-C3.

### Testing procedure

```
BOARD=esp32s3-wt32-sc01-plus make -C tests/drivers/st77xx flash
```
should work on top of PR #19941. Drawing operations should be much faster.

### Issues/PRs references

Co-authored-by: MrKevinWeiss <[email protected]>
Co-authored-by: Gunar Schorcht <[email protected]>
@bors
Copy link
Copy Markdown
Contributor

bors bot commented Nov 4, 2023

Build failed (retrying...):

bors bot added a commit that referenced this pull request Nov 4, 2023
19944: cpu/esp32: add low-level LCD parallel interface using LCD peripheral r=benpicco a=gschorcht

### Contribution description

This PR the implementation of the LCD low-level MCU 8080 parallel interface using the LCD peripheral for ESP32, ESP32-S2 and ESP32-S3 or `periph_gpio_ll` for the ESP32-C3.

### Testing procedure

```
BOARD=esp32s3-wt32-sc01-plus make -C tests/drivers/st77xx flash
```
should work on top of PR #19941. Drawing operations should be much faster.

### Issues/PRs references

Co-authored-by: Gunar Schorcht <[email protected]>
@benpicco
Copy link
Copy Markdown
Contributor

benpicco commented Nov 7, 2023

bors cancel
bors merge

@benpicco benpicco enabled auto-merge November 10, 2023 10:20
@gschorcht
Copy link
Copy Markdown
Contributor Author

What currently needs to be done to merge this PR? It seems to be stuck in the merge-queue migration phase because it is still waiting for bors. Is a rebase sufficient to trigger the merge? Auto-merge is enabled.

@benpicco
Copy link
Copy Markdown
Contributor

I think you need to do a rebase to get the new GitHub config in.

@gschorcht gschorcht force-pushed the cpu/esp32/lcd_parallel_ll_mcu branch from ad9e936 to 4e85968 Compare November 13, 2023 12:02
@benpicco benpicco added this pull request to the merge queue Nov 13, 2023
Merged via the queue into RIOT-OS:master with commit 72ddd4d Nov 13, 2023
@gschorcht gschorcht deleted the cpu/esp32/lcd_parallel_ll_mcu branch December 6, 2023 07:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Area: boards Area: Board ports Area: cpu Area: CPU/MCU ports Area: Kconfig Area: Kconfig integration Area: pkg Area: External package ports CI: ready for build If set, CI server will compile all applications for all available boards for the labeled PR Platform: ESP Platform: This PR/issue effects ESP-based platforms Type: enhancement The issue suggests enhanceable parts / The PR enhances parts of the codebase / documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants