需要好好整理一下解决思路。 先说一下系统环境:virtualbox,ubuntu15.04@64bit 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个串口就都起来了。
|
|
来自: 云将东游 > 《MT7688/28》