谷动谷力

 找回密码
 立即注册
查看: 1015|回复: 0
打印 上一主题 下一主题
收起左侧

MT7628/MT7688 修改串口2作为调试串口

[复制链接]
跳转到指定楼层
楼主
发表于 2023-7-1 15:50:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
MT7628/MT7688 修改串口2作为调试串口



MTK的芯片设计有些让人搞不懂,非得将串口作为启动选择引脚;

MT76x8 参考其datesheet,TXD0 启动时必须为低电平,TXD1启动时必须保持高电平;

一共最多3个串口,唯独UART2不影响启动;但是UART2与 NET PORT2是复用的;使用uart2必须牺牲1个网口;

准确来说是牺牲所有网口(PORT0除外),因此MT76x8 要么作为单网口使用要么作为5网口使用,没有中间模式;这一点也比较蛋疼;

但这不是我们今天要关心的;今天只谈uart2作为启动串口;

设定uart2作为启动调试串口,需要修改2个地方;一个是uboot,一个是kernel;
首先,在Uboot中    board/rt2880/serial.c,设定串口模式及复位串口;

参考datesheet


RSTCTL偏移地址0x34;

RSTCTL  bit12,19,20分别对应uart0,1,2,首先需将其复位;



RSTCTL  bit12,19,20分别对应uart0,1,2,首先需将其复位;
20171219152656325.png然后将UART2设为UART-lite模式,其默认为GPIO模式;

修改代码,位于board/rt2880/serial.c   serial_setbrg 函数,

//*(unsigned long *)(RALINK_SYSCTL_BASE + 0x0034) |= cpu_to_le32(1<<19|1<<12);
    *(unsigned long *)(RALINK_SYSCTL_BASE + 0x0034) |= cpu_to_le32(3<<19|1<<12); // 12 19 20  uart012置1
    /* RST Control change from W1C to W1W0 to reset, update 20080812 */
    //*(unsigned long *)(RALINK_SYSCTL_BASE + 0x0034) &= ~(1<<19|1<<12);
    *(unsigned long *)(RALINK_SYSCTL_BASE + 0x0034) &= ~(3<<19|1<<12);      // 12 19 20  uart012清零,复位控制(复位芯片部分功能)
    {
        u32 reg;

        reg = ra_inl(RT2880_GPIOMODE_REG);
        reg &= ~(0x3 << 26);                           // bit 26 27 清零,uart2
        //reg |= (0x3 << 2);
        ra_outl(RT2880_GPIOMODE_REG, reg);

    }
其次修改board/rt2880/serial.h

#define CFG_RT2880_CONSOLE    RT2880_UART3

定义console为uart3

到此Uboot修改完毕。
然后Kernel中,修改比较简单,如使用openwrt,只需在dts中定义console为ttyS2即可;

chosen {
        bootargs = "console=ttyS2,115200";
    };

+14

最近谁赞过

回复

使用道具 举报

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

本版积分规则

QQ|Archiver|手机版|深圳市光明谷科技有限公司|光明谷商城|Sunshine Silicon Corpporation ( 粤ICP备14060730号|Sitemap

GMT+8, 2024-12-27 07:38 , Processed in 0.088097 second(s), 42 queries .

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.

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