需要好好整理一下解决思路。
先说一下系统环境:virtualbox,
Openwrt版本:Chaos Calmer 15.05-rc2
硬件板卡:MT7688,64MB DDR2,8MB SPI FLASH,某宝LH7688
本次解决的问题:MT7688剩余两个串口不能通信,另外UART2端口仍处于analog PAD模式。
注意:本方法适用于标准的openwrt-cc,不适用于sdk和mtk-op。
第一步,改DTS,因为默认的mt7628an.dts缺少uart1和uart2的配置。
第二步,增加pinctrl信息。
第三步,修改arch/mips/ralink/mt7620.c
首先,看到perst,wdt都是错的,顺便改了他们。
prom_soc_init,add this code to fix AGPIO_MODE:(否则uart2还是网口电平)
这样子改后,网口只剩下lan0,个人觉得不够用,又不是去做路由器。
第四步,修改文件
drivers/pinctrl/pinmux.c
分析,
line317,pinmux_map_to_setting,group是每一个pinmux注册时的pin的组group,而groups[i]是mt7620.c中可以看到的所有的pin分组groups。这里要匹配,也就是轮询一遍,但是有个问题,num_groups传进来的一直是1,这就导致了357行for循环始终循环一遍。究其根本是get_function_groups函数传的num_groups有问题。
所以真正要修改的是drivers/pinctrl/pinmux-rt2880.c
为什么改成15呢,因为mt7620.c中看到了有15个groups。
对了,最后一个严重问题,请make kernel_menuconfig
找到Device Drivers---->Character devices----->Serial drivers--->Number of 8250/16550 serial ports to register at runtime.由2改为3.
接着来,3个串口就都起来了。
对了,最后一个严重问题,请make kernel_menuconfig
找到Device Drivers---->Character devices----->Serial drivers--->Number of 8250/16550 serial ports to register at runtime.由2改为3.
这样修改后,3个串口就都起来了。
阅读(21288) | 评论(4) | 转发(0) |