Orange Pi i96 入手填坑问题(2)-wifi网卡MAC地址随机变化和串口粘贴死机问题

i96在上一篇文章中写道了一些坑和问题

Orange Pi i96 入手填坑问题总结_hoopertsau的博客-CSDN博客

今天在说两个个问题

一、MAC地址每次启动都会变化的问题

主要是要重新编译一下内核中的相关驱动

1、修改OrangePiRDA/kernel/drivers/net/wireless/rdaw80211/rdawlan/wland_defs.h 第194行

将USE_MAC_FROM_RDA_NVRAM注释掉

2、然后在文件系统中增加一个文件,路径 /data/misc/wifi/WLANMAC

这里就是MAC地址的取值,主要读取前6个字节,注意这不应该是一个文本文件,应该是一个二进制文件,6个字节刚好就是对应MAC地址

3、重新编译内核和驱动

形成新的模块 drivers/net/wireless/rdaw80211/rdawlan/rdawfmac.ko

4、更新到SD卡上。重启,你就发现MAC地址就是这个文件中设置的地址了

二、串口命令行粘贴较多数据后死机的问题

        这是一个很烦人的问题,主要是使用串口命令行的时候,如果一下子粘贴太多数据,直接就卡死了。原因是这个芯片的uart缓冲区溢出了,但是代码中没有将相关的标志位清空,导致系统直接卡死,不能再接收UART数据。

        解决这个问题也很简单,再uart相关代码中增加一行即可。

        在内核源代码中的 drivers/tty/serial/rda_uart.c 第886行,增加一句话

hwp_uart->status = 0;

 主要在这个函数中

static irqreturn_t rda_interrupt(int irq, void *dev_id)
{

.....
....
     /*
     if received rx break interrupt should close all rx interrupt
    */
     if(irqstatus & UART_RX_LINE_ERR){
         rda_handle_rxerr(port);
     }

     rda_handle_receive(port, irqstatus);
     rda_handle_uart_transmit(port, irqstatus);
 

    // Poke status register to reset error conditions
    hwp_uart->status = 0;

    return IRQ_HANDLED;
}

这样即使溢出也能清空标志,还可以继续接收数据

重新编译后,更新内核和驱动即可

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值