i96在上一篇文章中写道了一些坑和问题
Orange Pi i96 入手填坑问题总结_hoopertsau的博客-CSDN博客
今天在说两个个问题
主要是要重新编译一下内核中的相关驱动
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;
- }
这样即使溢出也能清空标志,还可以继续接收数据
重新编译后,更新内核和驱动即可