OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3714|回复: 1

kgdb调试内核需提供内核串口读写函数

[复制链接]

35

主题

106

帖子

0

精华

高级会员

Rank: 4

积分
546
金钱
546
注册时间
2016-4-20
在线时间
181 小时
发表于 2021-9-22 09:57:40 | 显示全部楼层 |阅读模式
1金钱
请问一下,用kgdb调试内核,要求串口驱动提供读写串口函数。
void    (*poll_put_char)(struct uart_port *, unsigned char);
int        (*poll_get_char)(struct uart_port *);

imx6ull里会写。在157里怎么写呢?一直通信不成功。

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

35

主题

106

帖子

0

精华

高级会员

Rank: 4

积分
546
金钱
546
注册时间
2016-4-20
在线时间
181 小时
 楼主| 发表于 2021-9-22 18:11:07 | 显示全部楼层
本帖最后由 wangjun110 于 2021-9-22 18:28 编辑

static const struct uart_ops stm32_uart_ops = {
    .tx_empty   = stm32_usart_tx_empty,
    .set_mctrl  = stm32_usart_set_mctrl,
    .get_mctrl  = stm32_usart_get_mctrl,
    .stop_tx    = stm32_usart_stop_tx,
    .start_tx   = stm32_usart_start_tx,
    .throttle   = stm32_usart_throttle,
    .unthrottle = stm32_usart_unthrottle,
    .stop_rx    = stm32_usart_stop_rx,
    .break_ctl  = stm32_usart_break_ctl,
    .startup    = stm32_usart_startup,
    .shutdown   = stm32_usart_shutdown,
    .flush_buffer   = stm32_usart_flush_buffer,
    .set_termios    = stm32_usart_set_termios,
    .pm     = stm32_usart_pm,
    .type       = stm32_usart_type,
    .release_port   = stm32_usart_release_port,
    .request_port   = stm32_usart_request_port,
    .config_port    = stm32_usart_config_port,
    .verify_port    = stm32_usart_verify_port,
   
#ifdef CONFIG_CONSOLE_POLL //添加串口读写函数
    void    (*poll_put_char)(struct uart_port *, unsigned char);
    int     (*poll_get_char)(struct uart_port *);
#endif  
};
   
//串口发送
static void stm32mp157_poll_put_char(struct uart_port *, unsigned char c)
{
    struct stm32_port *stm32_port = to_stm32_port(port);
    struct stm32_usart_offsets *ofs = &stm32_port->info->ofs;
   
    while (!(readl_relaxed(port->membase + ofs->isr) & USART_SR_TXE))//等待发送完成
    writel_relaxed(ch, port->membase + ofs->tdr);
}
   
//串口接收
static int stm32mp157_poll_put_char(struct uart_port *)
{
    struct stm32_port *stm32_port = to_stm32_port(port);
    struct stm32_usart_offsets *ofs = &stm32_port->info->ofs;
    unsigned long c;
   
   
    if(readl_relaxed(port->membase + ofs->isr)& USART_SR_RXNE))
    {
        c = readl_relaxed(port->membase + ofs->rdr);
        c &= stm32_port->rdr_mask;
    }
    return c;
}
   
kgdb串口连接时监控串口有数据发送,但一直接收不到串口的数据。这个问题卡几天了,求救。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 11:51

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表