找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 23406|回复: 46

openwrt添加Rtl8367s驱动 折腾记

[复制链接]
本帖最后由 z913457894 于 2020-12-12 15:55 编辑

最近部署软路由接触到了openwrt,想着把手里的设备都刷一下,一台tplink tl-ac100 v2,一台tplink tl-wvr450l v1,结果入了坑。ac100就是qca9533的芯片,比较简单,虽然led gpio有点问题,也算可以正常使用了。wvr450l就比较坑了,qca9563+rtl8367s,16mflash,128m内存,开始照着前面刷ac100的操作,先刷qca956x breed,刷完死活插网线网卡灯不亮,我把qca956x的breed都刷了一遍,结果还是不行,然后找到H大的一篇帖子(https://www.right.com.cn/forum/thread-390813-1-1.html)才知道,rtl8367s需要驱动,并且openwrt不支持这个switch,帖子里面的breed刷进去之后,网卡灯还是不亮,然后就开始到处搜罗捣鼓,发现论坛关于rtl8367s的资料很少,只有H大的这篇文章。然后就开始自己爬坑。






qca9563



内部结构图,ttl串口那里应该缺少元器件,尝试连接串口,串口没有任何返回信息
有大神知道如何加元器件,麻烦告诉我一下解答:楼下大神回复,直接短接两个电阻,测试通过





用编程器写固件




问题

我先尝试编译openwrt,然后在kernel modules /nework Devices里面把kmod-switch-rtl83XX全部选上了,由于没有breed,我把编译出来的kernel文件覆盖在原厂固件的kernel段上,用编程器写flash,尝试了用原厂uboot去启动,上电插网线网卡灯可以亮。这里面我有一个问题,openwrt启动了没有,到底是uboot让网卡灯亮的,还是openwrt让网卡灯亮的。我自认为openwrt是可以启动的,我一直在用这种方法做实验添加rtl8367s的驱动。这里希望大神解答下,不然我有可能一直在做无用功
后面自己接通了串口,通过查看ttl打印日志,发现这里网卡灯亮其实是UBOOT在工作,openwrt并没有被识别出来所以测试一定要把ttl串口连接好。 这里我对比了UBOOT中加载原始的uImage固件头(0x40000位置),可以看到tp原始固件也是openwrt 3.38。 对比原始uImage多出8个字节,后来逆向了uboot,查看了uboot源码do_bootm函数),当ih_type 为Multi-File Image 类型,这里就会多8个字节,并不影响启动,我自己编译的uboot是可以启动原厂的openwrt的,但为什么原厂的uboot没有办法启动自己编译openwrt,我猜测两个原因,lzma的版本不兼容,或者tp做了一些自定义的改动、





2020-10-26 折腾记录找到一台TL-R600v*p*n v4 ,同样是qca956x + RTL8367S, 不过是日语网站: 被屏蔽,去掉*
https://memo205.wordpress.com/2020/02/23/tl-r600v*p*n-v4/
https://taiha.net/jenkins/job/OpenWrt-master-TPLink-TL-R600V*P*N-v4/
他在github上的提交:
tl-r600v*p*n_v4 https://github.com/musashino-build/openwrt/tree/devadd/tl-r600v*p*n_v4

rtl8367s分支:  https://github.com/musashino-build/openwrt/tree/drvadd/rtl8367s
暂时原始uboot不支持,自己编译uboothttps://github.com/j-d-r/u-boot-QCA956x
编译出的uboot不能操作switch,只好自己适配了、



2020-11-8
不会写驱动,只好逆向了原始的uboot,抄了十几个关于switch初始化的函数,合并到jdr版本的uboot中。写入后,发现初始化switch流程几个函数返回值有问题。随后对原始uboot进行了patch,串口打印了读写寄存器值,具体分析发现,我的代码和原始uboot代码分别读的寄存器不一样,从第一个write,read开始就不一样。。。检查了phy_reg_read 和phy_reg_write 函数好几遍,没有发现问题,下层是调用ath_gmac_miiphy_read 和ath_gmac_miiphy_write,对着汇编检查了好几遍,没有发现问题不知道是不是switch初始化前,我掉了什么流程、
花了一个星期,不断nop掉原始uboot里面有初始化GPIO的函数,看哪个函数会影响phy_reg_read ,最后定位了函数,不断对比终于找到了问题,编译uboot的时候,使用了原来tp-link_eap245_v1的配置,他定义了CONFIG_QCA_MDC_MDIO_AS_GPIO,采用的是bit-banged的方式,注释掉该宏,uboot完美驱动rtl8367s。 下一步开始来适配openWRT,自己太菜,估计又要花上一段时间了、




2020-11-14

上面uboot初始的GPIO虽然不太明白,猜测下跟mdc和mdio有关, 最后尝试了在dts文件中添加了mdio中添加了gpios = <&gpio 8 GPIO_ACTIVE_HIGH>, /* MDC */&gpio 10 GPIO_ACTIVE_HIGH>; /* MDIO */,驱动中竟然可以读出chip_ver了,成功识别了rtl8367s硬件了、电脑端可以获取到192.168.1.100的IP,但是没办法ping通路由,swconfig dev switch0 show 可以看到网口的link down和up,不知道是哪一步骤出现了问题、
  1. ......
  2. ......
  3. [    0.442835] libphy: Fixed MDIO Bus: probed
  4. [    0.450045] ag71xx 19000000.eth: invalid MAC address, using random address
  5. [    1.088701] libphy: ag71xx_mdio: probed
  6. [    1.093663] ag71xx 19000000.eth: connected to PHY at fixed-0:00 [uid=00000000, driver=Generic PHY]
  7. [    1.103501] eth0: Atheros AG71xx at 0xb9000000, irq 4, mode: sgmii
  8. [    1.110098] i2c /dev entries driver
  9. [    1.115437] NET: Registered protocol family 10
  10. [    1.124655] Segment Routing with IPv6
  11. [    1.128581] NET: Registered protocol family 17
  12. [    1.133255] 8021q: 802.1Q VLAN Support v1.8
  13. [    1.143348] VFS: Mounted root (squashfs filesystem) readonly on device 31:4.
  14. [    1.157182] Freeing unused kernel memory: 1220K
  15. [    1.161889] This architecture does not have kernel memory protection.
  16. [    1.168542] Run /sbin/init as init process
  17. [    1.172774] random: fast init done
  18. [    1.758109] init: Console is alive
  19. [    1.761938] init: - watchdog -
  20. [    2.544406] kmodloader: loading kernel modules from /etc/modules-boot.d/*
  21. [    2.703317] rtl8367b rtl8367s: rtl8367s_probe...start
  22. [    2.708608] rtl8367b rtl8367s: using MDIO bus 'ag71xx_mdio'
  23. [    2.714919] rtl8367b rtl8367s: found chip num:6367 ver:00a0, mode:00a0
  24. [    2.721673] rtl8367b rtl8367s: RTL8367S chip found
  25. [    3.151805] libphy: rtl8367s: probed
  26. [    3.155575] rtl8367b rtl8367s: rtl8367s_probe...over
  27. [    3.161599] kmodloader: done loading kernel modules from /etc/modules-boot.d/*
  28. [    3.171260] init: - preinit -
  29. [    4.212997] random: jshn: uninitialized urandom read (4 bytes read)
  30. [    4.453408] random: jshn: uninitialized urandom read (4 bytes read)
  31. [    4.773683] random: jshn: uninitialized urandom read (4 bytes read)
  32. [    5.372468] swconfig_reset_switch
  33. [    5.375906] rtl8367b rtl8367s: rtl8366_sw_reset_switch
  34. [    5.381243] rtl8367b rtl8367s: sw_reset_switch
  35. [    5.504663] eth0: link up (1000Mbps/Full duplex)
  36. ......
  37. ......
  38. [   11.862492] kmodloader: done loading kernel modules from /etc/modules.d/*
  39. [   11.928951] random: crng init done
  40. [   24.992815] swconfig_reset_switch
  41. [   24.996255] rtl8367b rtl8367s: rtl8366_sw_reset_switch
  42. [   25.001616] rtl8367b rtl8367s: sw_reset_switch
  43. ......
  44. ......
复制代码




2020-12-06
这段时间尽在瞎折腾。 有线网络通啦
在解压后的固件里找到了有关rtl8367s操作的模块(ag71xx.ko)。就想尝试注入一下,像uboot一样,打印下读写mdio reg日志,跟一跟初始化流程,不过没想象中那么简单,每次注入内核都崩溃了,看来想注入还需要仔细研究elf格式,暂时放弃。不过发现,模块中留有初始化rtl8367s寄存器的接口,不过并没有调用,我后面直接nop掉接口注入测试,结果并不影响网络功能,后面我在V*P*N600 gpl的代码中也看到,开发人员在注释掉了调用该接口处的代码,也就是说在uboot中初始化rtl8367s后,内核中就不需要再次初始化了。
  1. //rtl8367s_config_init
  2. //V*P*N600 GPL
  3. pdev->priv = priv;
  4. pdev->supported |=SUPPORTED_1000baseT_Full | SUPPORTED_Pause;
  5.         pdev->advertising = pdev->supported;

  6.         swdev = &priv->dev;
  7.         swdev->cpu_port = RTL8367S_PORT_CPU;
  8.         swdev->ops = &rtl8367s_sw_ops;
  9.         swdev->ports = RTL8367S_MAX_PORTS;
  10.         swdev->name = "Realtek 8367S";
  11.         swdev->id = CHIP_RTL8367C;
  12.         swdev->vlans = RTL8367S_MAX_VLANS;

  13.         INIT_DELAYED_WORK(&priv->switch_work, switch_work_func);

  14.         ret = register_switch(&priv->dev, pdev->attached_dev);
  15.         if (ret)
  16.                 goto err_free_priv;

  17.         ret = rtl8367s_sw_reset_switch(&priv->dev);
  18.         if (ret)
  19.                 goto err_free_priv;

  20.         dev->phy_ptr = priv;
  21.         //rtk_switch_init();  这里被注释
  22.         rtk_port_phyEnableAll_set(ENABLED);

  23.         rtk_vlan_init();
复制代码


在log中发现驱动中的rtl8367b_setup函数被调用了两次,我们初始化rtl8367s寄存器的函数就在rtl8367b_setup函数中调用的,顺腾摸瓜往上找,.reset_switch=rtl8366_sw_reset_switch中调用了rtl8367b_setup方法,最上面swconfig模块中swconfig_reset_switch调用了.reset_switch,不知道为什么会reset两次,暂时还不清楚swconfig的工作原理
  1. //openwrt rtl8367b模块
  2. int rtl8366_sw_reset_switch(struct switch_dev *dev)
  3. {
  4.         struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev);
  5.         int err;

  6.         dev_info(smi->parent, "rtl8366_sw_reset_switch\n");

  7.         err = rtl8366_reset(smi);
  8.         if (err)
  9.                 return err;

  10.         err = smi->ops->setup(smi);
  11.         if (err)
  12.                 return err;

  13.         err = rtl8366_reset_vlan(smi);
  14.         if (err)
  15.                 return err;

  16.         err = rtl8366_enable_vlan(smi, 1);
  17.         if (err)
  18.                 return err;
  19.         
  20.         dev_info(smi->parent, "rtl8366_sw_reset_switch...over\n");
  21.         
  22.         return rtl8366_enable_all_ports(smi, 1);        
  23. }
复制代码

贴中有大神说需要reset switch一下,查看硬件qca9563有三个GPIO连接在rtl8367s上,mdc(8),mdio(10),reset(??),芯片引脚太小了,万用表没办法搞清楚reset到底是几号GPIO,暂时放弃。我逆向的时候只找到了软复位switch的函数rtl8367s_sw_reset_switchV*P*N600 gpl的代码也有同样的函数
  1. //GPL 中reset_switch函数
  2. static int
  3. rtl8367s_sw_reset_switch(struct switch_dev *dev)
  4. {
  5.     int i = 0;
  6.     u32 val = 0;

  7.     DBGINFO("start");

  8.     /* open smart speed down function, bit3 => 1000M->100M and bit5 => 100M->10M */
  9.     for (i = UTP_PORT0; i <= UTP_PORT4; i++)
  10.     {
  11.        rtl8367c_getAsicPHYOCPReg(i, 0xa442, &val);
  12.        rtl8367c_setAsicPHYOCPReg(i, 0xa442, val | (1 << 3) | (1 << 5));
  13.      }
  14.     return 0;
  15. }
复制代码



结合上面的一些问题,我直接在openwrt的驱动中,把有关rtl8367b_setup的调用注释掉了,用函数rtl8367s_sw_reset_switch代替函数rtl8366_sw_reset_switch,奇迹出现,eth0上有数据收发了,但是eth0.1(lan)和eth0.2(wan)都只有tx却没有rx,vlan异常,最后查看代码时发现,有两个vlan的步骤写在rtl8367b_setup里面,导致没有执行,然后把代码移到_init_vlan中,eth0.1(lan)和eth0.2(wan)都rx到数据了,网络也通了

  1. rtl8367b_setup函数中 两个vlan的步骤
  2.         /*
  3.          * discard VLAN tagged packets if the port is not a member of
  4.          * the VLAN with which the packets is associated.
  5.          */
  6.         REG_WR(smi, RTL8367B_VLAN_INGRESS_REG, RTL8367B_PORTS_ALL);

  7.         /*
  8.          * Setup egress tag mode for each port.
  9.          */
  10.         for (i = 0; i < RTL8367B_NUM_PORTS; i++)
  11.                 REG_RMW(smi,
  12.                         RTL8367B_PORT_MISC_CFG_REG(i),
  13.                         RTL8367B_PORT_MISC_CFG_EGRESS_MODE_MASK <<
  14.                                 RTL8367B_PORT_MISC_CFG_EGRESS_MODE_SHIFT,
  15.                         RTL8367B_PORT_MISC_CFG_EGRESS_MODE_ORIGINAL <<
  16.                                 RTL8367B_PORT_MISC_CFG_EGRESS_MODE_SHIFT);
复制代码

有线通了,这里面还有一些问题要解决。
1、rtl8367b_setup函数中的初始化rtl8367s为什么不行,是与uboot初始化相冲突还是什么问题,后面还需要验证。
2、luci使用不了, 已解决,后面发现luci没有编译到固件
3、无线功能,已解决,dts中添加&wmac节点,编译添加ath9k驱动,中途遇到了bus err,换了几个版本,终于搞定、






2020-12-11
这几天开始支持usb,又出现了些问题,一直报错,config failed, hub doesn't have any ports! (err -19)
  1. [    3.652302] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
  2. [    3.666801] SCSI subsystem initialized
  3. [    3.675801] ehci-fsl: Freescale EHCI Host controller driver
  4. [    3.683462] ehci-platform: EHCI generic platform driver
  5. [    3.689164] ehci-platform 1b000000.usb: EHCI Host Controller
  6. [    3.695106] ehci-platform 1b000000.usb: new USB bus registered, assigned bus number 1
  7. [    3.703329] ehci-platform 1b000000.usb: irq 13, io mem 0x1b000000
  8. [    3.722533] ehci-platform 1b000000.usb: USB 2.0 started, EHCI 0.00
  9. [    3.729662] hub 1-0:1.0: USB hub found
  10. [    3.733977] hub 1-0:1.0: config failed, hub doesn't have any ports! (err -19)
  11. [    3.741837] ehci-platform 1b400000.usb: EHCI Host Controller
  12. [    3.747764] ehci-platform 1b400000.usb: new USB bus registered, assigned bus number 2
  13. [    3.755996] ehci-platform 1b400000.usb: irq 14, io mem 0x1b400000
  14. [    3.774539] ehci-platform 1b400000.usb: USB 2.0 started, EHCI 0.00
  15. [    3.781678] hub 2-0:1.0: USB hub found
  16. [    3.785978] hub 2-0:1.0: config failed, hub doesn't have any ports! (err -19)
复制代码
  1. //DTS 添加
  2. &usb_phy1 {
  3.         status = "okay";
  4. };

  5. &usb1 {
  6.         #address-cells = <1>;
  7.         #size-cells = <0>;
  8.         status = "okay";

  9.         hub_port0: port@1 {
  10.         reg = <1>;
  11.         #trigger-source-cells = <0>;
  12.         };
  13. };
复制代码
搞了一天,终于找到问题了,uboot里面没有初始化usb端口,,,害我又去研究了usb中的协议。







本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
我的恩山、我的无线 The best wifi forum is right here.
8367rb 的驱动改改就支持 8367s 了
https://github.com/openwrt/openwrt/pull/2174

点评

感谢大神回复,他这个里面修改的内容,跟我上面提到patch方法修改是类似的,直接在rtl836b.c文件上修改,我尝试过修改编译,但还是没有办法驱动。4#大神回复说这种方法只适用于RGMII接口的连接方式,而qca9563使用的  详情 回复 发表于 2020-9-25 10:05
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

短接R225和R237,串口应该就可以用了

点评

测试可行,感谢大神  详情 回复 发表于 2020-9-27 09:17
感谢大神,我测试下  详情 回复 发表于 2020-9-25 10:18
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

QCA9563+RTL8367S当前暂时无解,QCA9563只有SGMIIQCA9563没有RGMII/MII接口
RTL8367S的扩展GMAC1实现SGMII/HSMII接口,RTL8367S的扩展GMAC2实现RGMII/MII接口。
因而QCA9563是通过SGMII来连接RTL8367S,而TP-Link Archer C5 v4 的MT7620是通过RGMII来连接RTL8367S,现阶段的关于RTL8367S能正常驱动的都是基于RGMII接口的。

你贴出的patch文件内已经说明。
https://patchwork.ozlabs.org/project/openwrt/patch/117be9a8-4641-0033-1900-95f53af653e8@yandex.ru/

From driver point of view no differance between rtl8367b and rtl8367s ,if it connected through EXT2 (rgmii only).
So this trivial patch add some identification and initialization only.
从驱动程序的角度来看,如果它通过EXT2连接(仅限于rgmii),rtl8367b和rtl8367s没有区别。
所以这个补丁只添加了一些标识和初始化。


SGMII/HSGMII mode for EXT1 is not implemented for the sake of patch clairity.
通过EXT1连接的 SGMII/HSGMII 模式这个补丁没有实现。

点评

感谢大神,大神说的很详细,怪自己英语太烂,一直没有看到重点,翻了两个芯片的文档,确实如大神所说,qca9563跟MT7620采用连接的接口是不一样的,按照上面的办法是行不通的。问下大神,如果我想让qca9563+rtl8367s  详情 回复 发表于 2020-9-25 10:17

评分

参与人数 1恩山币 +2 收起 理由
qq632*** + 2 强大的恩山!(以下重复1万次)

查看全部评分

我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

rtlhq 发表于 2020-9-24 22:46
QCA9563+RTL8367S当前暂时无解,QCA9563只有SGMII,QCA9563没有RGMII/MII接口
但RTL8367S的扩展GMAC1实现S ...

好久没看到这么有内容的回复了
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
LGA1150 发表于 2020-9-24 21:42
8367rb 的驱动改改就支持 8367s 了
https://github.com/openwrt/openwrt/pull/2174

感谢大神回复,他这个里面修改的内容,跟我上面提到patch方法修改是类似的,直接在rtl836b.c文件上修改,我尝试过修改编译,但还是没有办法驱动。4#大神回复说这种方法只适用于RGMII接口的连接方式,而qca9563使用的是SGMII的接口,我查阅了qca9533和rtl8367s的文档,确实跟他说的相符。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
rtlhq 发表于 2020-9-24 22:46
QCA9563+RTL8367S当前暂时无解,QCA9563只有SGMII,QCA9563没有RGMII/MII接口
但RTL8367S的扩展GMAC1实现S ...

感谢大神,大神说的很详细,怪自己英语太烂,一直没有看到重点,翻了两个芯片的文档,确实如大神所说,qca9563跟MT7620采用连接的接口是不一样的,按照上面的办法是行不通的。问下大神,如果我想让qca9563+rtl8367s的方案可行,是不是就要自己完全写一个rtl8367s驱动出来

点评

若非要使用openwrt,暂时参考这里的 TP-Link TL-WDR7500 V6方法 (最新的Openwrt Snapshot已移除 ar71xx , 此法仅支持19.07.x、18.06.x、17.01.x): https://patchwork.ozlabs.org/project/lede/patch/CAHLa1eurko  详情 回复 发表于 2020-9-25 20:18
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
laoma348 发表于 2020-9-24 21:50
短接R225和R237,串口应该就可以用了

感谢大神,我测试下
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

z913457894 发表于 2020-9-25 10:17
感谢大神,大神说的很详细,怪自己英语太烂,一直没有看到重点,翻了两个芯片的文档,确实如大神所说,qc ...

若非要使用openwrt,暂时参考这里的 TP-Link TL-WDR7500 V6方法 (最新的Openwrt Snapshot已移除 ar71xx , 此法仅支持19.07.x18.06.x17.01.x):

https://patchwork.ozlabs.org/project/lede/patch/CAHLa1eurkoMr=SOHtK1siq606UxF6BRpYw86Nmk2AXeJVPeyDg@mail.gmail.com/
以通用 SGMII PHY 方式来使用RTL8367S,这样RTL8367S仅识别单网口来使用(即独臂路由),无法使用 switch 功能,没有Vlan功能来划分wan/lan。



点评

大神,又遇到了些问题,请教下, 第一个,tplin原始uboot加载Kenel的uImage头部,比正常的多了8个字节,没办法加载自己编译的固件,图片贴在上面帖子里,大神可有什么线索。 第二个,我自己编译了uboot,但是没有  详情 回复 发表于 2020-10-26 19:13
感谢大神,我先测试下,有什么问题再来回复、  详情 回复 发表于 2020-9-26 09:22
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

这样的帖子才是论坛精华

点评

是这里乐于助人的大神比较多、  详情 回复 发表于 2020-9-26 09:18
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
一脸懵13 发表于 2020-9-26 00:38
这样的帖子才是论坛精华

是这里乐于助人的大神比较多、
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
rtlhq 发表于 2020-9-25 20:18
若非要使用openwrt,暂时参考这里的 TP-Link TL-WDR7500 V6方法 (最新的Openwrt Snapshot已移除 ar71xx  ...

感谢大神,我先测试下,有什么问题再来回复、
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
laoma348 发表于 2020-9-24 21:50
短接R225和R237,串口应该就可以用了

测试可行,感谢大神
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
rtlhq 发表于 2020-9-25 20:18
若非要使用openwrt,暂时参考这里的 TP-Link TL-WDR7500 V6方法 (最新的Openwrt Snapshot已移除 ar71xx  ...

大神,又遇到了些问题,请教下,
第一个,tplin原始uboot加载Kenel的uImage头部,比正常的多了8个字节,没办法加载自己编译的固件,图片贴在上面帖子里,大神可有什么线索。
第二个,我自己编译了uboot,但是没有初始化rtl8367s,加载openwrt会不会影响它正常启动。
第三个,openwrt的dts文件要添加rtl8367s的设备吗,我又找到了qca956x+rtl8367s同样的组合的设备,并且做了rtl8367s的sgmii的支持,贴在上面的帖子里面,我今天实验了下,我是在随便选的qca9563的设备编译加kmod-switch-8367b的模块,其它方面都没有修改,都失败了,我在想是不是dts文件没有加入rtl8367s的设备导致的问题。

点评

第一个,TL-WVR450L没有放出 GPL代码这个需参考TL-R600^du v4 的 GPL代码uboot部分。 第二个,https://github.com/j-d-r/u-boot-QCA956x的可以试用tp-link_eap245_v1配置改下,uboot下没有初始化rtl8367s,只是uboo  详情 回复 发表于 2020-10-26 23:31
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

本帖最后由 rtlhq 于 2020-10-26 23:38 编辑
z913457894 发表于 2020-10-26 19:13
大神,又遇到了些问题,请教下,
第一个,tplin原始uboot加载Kenel的uImage头部,比正常的多了8个字节, ...

第一个,TL-WVR450L没有放出 GPL代码这个需参考TL-R600^du v4 的 GPL代码uboot部分。
第二个https://github.com/j-d-r/u-boot-QCA956x,这个版本好处是可以生成64k带web恢复的uboot,但有Bug将一些RAM:128M的设备识别为RAM:1M后停止启动,可以试用tp-link_eap245_v1配置改下,uboot下没有初始化rtl8367s,只是uboot下网口不通,是不会影响openwrt下的rtl8367s驱动,两者是驱动独立的。但若uboot下没有初始化pcie,openwrt下是不能识别pcie上的设备。
第三个,openwrt的dts文件要添加rtl8367s的设备,参考qca9563_tplink_tl-r600^du-v4.dts的 rtl8367s{}, &eth0 {}, &mdio0 {}部分,但是 target/linux/generic/files/drivers/net/phy/rtl8367b.c  文件中的 redData[][2]redDataH[][2]中的定义需要 TL-WVR450L的 GPL代码中提取(官方网站没有提供),使用TL-R600^du v4的固件log,可能是由于redData[][2] redDataH[][2]的差异造成无法初始化

Tips: 根据 TL-WVR450L编程器固件格式分析,与qca9563_tplink_tl-r600^du-v4.dts中的分区定义略有差异
        "flash大小    ":        "0x01000000",
        "分区表":        [{
                        "分区名称":        "bootloader",
                        "开始地址":        "0x00000000",
                        "  长度    ":        "0x00030000",
                }, {
                        "分区名称":        "partition-table",
                        "开始地址":        "0x00030000",
                        "  长度    ":        "0x00010000",
                }, {
                        "分区名称":        "kernel",
                        "开始地址":        "0x00040000",
                        "  长度    ":        "0x00150000",
                }, {
                        "分区名称":        "rootfs",
                        "开始地址":        "0x00190000",
                        "  长度    ":        "0x00BA0000",
                }, {
                        "分区名称":        "device-info",
                        "开始地址":        "0x00D30000",
                        "  长度    ":        "0x00010000",
                }, {
                        "分区名称":        "firmware-info",
                        "开始地址":        "0x00D40000",
                        "  长度    ":        "0x00010000",
                }, {
                        "分区名称":        "tddp",
                        "开始地址":        "0x00D50000",
                        "  长度    ":        "0x00010000",
                }, {
                        "分区名称":        "log",
                        "开始地址":        "0x00D60000",
                        "  长度    ":        "0x00020000",
                }, {
                        "分区名称":        "rootfs_data",
                        "开始地址":        "0x00DF0000",
                        "  长度    ":        "0x00200000",
                }, {
                        "分区名称":        "art",
                        "开始地址":        "0x00FF0000",
                        "  长度    ":        "0x00010000",
                }]

点评

头有点大,R600V*P*N_V4 GPL代码里面没有uboot的代码,只有一个uboot.bin。只能分析下他原始固件生成的过程,看看有没有线索了,makefile有点不熟,先放放,不过自己编译的uboot用串口刷固件实在是太慢了。jdr这个固  详情 回复 发表于 2020-10-27 17:43
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

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

本版积分规则

关闭

欢迎大家光临恩山无线论坛上一条 /1 下一条

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2024-4-28 15:57

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com 举报电话:0519-86695797

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