embox

Форк
0
/
niiet_uart_ttys0.c 
53 строки · 1.3 Кб
1
/**
2
 * @file
3
 * @brief
4
 *
5
 * @author  Andrew Bursian
6
 * @date    20.02.2023
7
 */
8

9
#include <drivers/common/memory.h>
10
#include <drivers/serial/uart_dev.h>
11
#include <drivers/ttys.h>
12
#include <embox/unit.h>
13
#include <framework/mod/options.h>
14
#include <kernel/irq.h>
15
#include <util/macro.h>
16

17
EMBOX_UNIT_INIT(uart_init);
18

19
#define UART_BASE OPTION_GET(NUMBER, base_addr)
20
#define IRQ_NUM   OPTION_GET(NUMBER, irq_num)
21
#define BAUD_RATE OPTION_GET(NUMBER, baud_rate)
22
#define TTY_NAME  ttyS0
23

24
extern irq_return_t uart_irq_handler(unsigned int irq_nr, void *data);
25

26
extern const struct uart_ops niiet_uart_ops;
27

28
static struct uart uart0 = {
29
    .dev_name = MACRO_STRING(TTY_NAME),
30
    .uart_ops = &niiet_uart_ops,
31
    .irq_num = IRQ_NUM,
32
    .base_addr = UART_BASE,
33
    .params = ((struct uart_params){
34
        .baud_rate = BAUD_RATE,
35
        .uart_param_flags = UART_PARAM_FLAGS_8BIT_WORD
36
                            | UART_PARAM_FLAGS_USE_IRQ,
37
    }),
38
};
39

40
static const struct uart_params uart_defparams = {
41
    .baud_rate = BAUD_RATE,
42
    .uart_param_flags = UART_PARAM_FLAGS_8BIT_WORD | UART_PARAM_FLAGS_USE_IRQ,
43
};
44

45
static int uart_init(void) {
46
	return uart_register(&uart0, &uart_defparams);
47
}
48

49
PERIPH_MEMORY_DEFINE(NIIET_UART, UART_BASE, 0x48);
50

51
STATIC_IRQ_ATTACH(IRQ_NUM, uart_irq_handler, &uart0);
52

53
TTYS_DEF(TTY_NAME, &uart0);
54

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.