1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
|
/* flashimg/vpu/main.c - Entry point for the HDMI-decoder co-processor
*
* Copyright (C) 2025 Luke T. Shumaker <lukeshu@lukeshu.com>
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
#include <hardware/gpio.h>
#include <hardware/uart.h>
#include <pico/binary_info.h> /* for bi_* */
#include <pico/time.h>
#include <libpicosdk/rp2040_gpiopad.h>
#define GPIO_PIN_DBG_UART_TX 0
#define GPIO_PIN_DBG_UART_RX 1
#define GPIO_PIN_META_ODCK 2
#define GPIO_PIN_META_DE 3
#define GPIO_PIN_META_SCDT 4
#define GPIO_PIN_RGB_B0 5
#define GPIO_PIN_RGB_B1 6
#define GPIO_PIN_RGB_G0 7
#define GPIO_PIN_RGB_G1 8
#define GPIO_PIN_RGB_G2 9
#define GPIO_PIN_RGB_R0 10
#define GPIO_PIN_RGB_R1 11
#define GPIO_PIN_RGB_R2 12
#define GPIO_PIN_HSYNC 13
#define GPIO_PIN_VSYNC 14
#define GPIO_PIN_UNUSED_V15 15
#define GPIO_PIN_NET_SPI_MISO 16
#define GPIO_PIN_NET_SPI_CS 17
#define GPIO_PIN_NET_SPI_CLK 18
#define GPIO_PIN_NET_SPI_MOSI 19
#define GPIO_PIN_NET_RST 20
#define GPIO_PIN_NET_INT 21
#define GPIO_PIN_DDC_SDA 22
#define GPIO_PIN_DDC_SCL 23
#define GPIO_PIN_UNUSED_V24 24
#define GPIO_PIN_LED 25
#define GPIO_PIN_UNUSED_V26 26
#define GPIO_PIN_UNUSED_V27 27
#define GPIO_PIN_UNUSED_V28 28
#define GPIO_PIN_UNUSED_V29 29
void __lm_putchar(unsigned char c) {
if (c == '\n') {
while (!uart_is_writable(uart0))
tight_loop_contents();
uart_get_hw(uart0)->dr = '\r';
}
while (!uart_is_writable(uart0))
tight_loop_contents();
uart_get_hw(uart0)->dr = c;
}
int main() {
for (uint gpio = 0; gpio < 30; gpio++)
gpiopad_configure(gpio, GPIOPAD_CONF(NOIN, NOOUT, NO_PULL));
gpiopad_configure(GPIO_PIN_LED, GPIOPAD_CONF(NOIN, OUT(4MA, SLOW), PULL_DOWN));
gpio_init(GPIO_PIN_LED);
gpio_set_dir(GPIO_PIN_LED, GPIO_OUT);
bi_decl(bi_1pin_with_name(GPIO_PIN_LED, "LED"));
gpiopad_configure(GPIO_PIN_DBG_UART_TX, GPIOPAD_CONF(NOIN, OUT(4MA, SLOW), PULL_DOWN));
gpiopad_configure(GPIO_PIN_DBG_UART_RX, GPIOPAD_CONF(IN(SCHMITT), NOOUT, PULL_DOWN));
uart_init(uart0, 115200);
gpio_set_function(GPIO_PIN_DBG_UART_TX, GPIO_FUNC_UART); /* tx */
gpio_set_function(GPIO_PIN_DBG_UART_RX, GPIO_FUNC_UART); /* rx */
bi_decl(bi_2pins_with_names(GPIO_PIN_DBG_UART_TX, "UART TX",
GPIO_PIN_DBG_UART_RX, "UART RX"));
bool on = false;
for (;;) {
gpio_put(GPIO_PIN_LED, on = !on);
sleep_ms(500);
}
}
|