图拉丁吧 关注:7,502,253贴子:127,449,847

垃圾的rtl8196c路由适配主流openwrt

取消只看楼主收藏回复

从废品收购站收了20多个便宜路由器,本来以为会是rt3050,这样可以刷openwrt出,最次也是个bcm5xxx,还有ddwrt可刷,没想到拆开一看rtl8196c,16M SDRAM,4M Flash


IP属地:上海来自Android客户端1楼2017-09-10 23:42回复
    感觉很醉,不过百度了一下似乎还是有两个版本的openwrt可以上8196
    官方版本op只适用于rtl8196e d,但是819x bcde每个版本差别太大,直接烧录根本起不来
    民间版本支持c版本,但是内核是2.6,很老的op版本了,feeds update都失效了一大堆,根本不能正常编译


    IP属地:上海来自Android客户端2楼2017-09-10 23:43
    回复
      于是决定从官方版本开始,一点一点移植96c过去


      IP属地:上海来自Android客户端3楼2017-09-10 23:44
      回复
        首先是uboot,uboot是固件之母啊,百度了一下gpl的固件,发现华硕的还不错,uboot提供了按reset通过tcp刷机的功能,于是就以其为母本,搞了个不死uboot[不死是因为能通过192.168.1.1 web flash刷机]



        IP属地:上海来自Android客户端5楼2017-09-10 23:49
        回复
          有了不死uboot以后就开始放心折腾了,首先直接套用官方for96e的代码试试
          秒崩


          IP属地:上海来自Android客户端7楼2017-09-10 23:51
          回复
            仔细检查发现是时钟配置的问题,e版和c版有区别


            IP属地:上海来自Android客户端8楼2017-09-10 23:53
            回复
              搞定时钟以后遇到了第二个问题,卡死在算力测试上


              IP属地:上海来自Android客户端9楼2017-09-10 23:54
              回复
                感觉还是寄存器配置问题,中断没打开,百度给的datasheet又不全,于是从非官方版dump出来一份寄存器推测图,改了一下代码


                IP属地:上海来自Android客户端10楼2017-09-10 23:55
                回复
                  代码直接冲出了亚马逊来到了一串平原,这次kernel是panic,不怕不怕,我们来trace一下


                  IP属地:上海来自Android客户端11楼2017-09-10 23:57
                  回复
                    脑补了一下trace,结果,md **?居然是page fault?这个就有问题了,果然一查init,多初始化了些东西


                    IP属地:上海来自Android客户端12楼2017-09-11 00:00
                    回复
                      这回直接爆未知中断


                      IP属地:上海来自Android客户端13楼2017-09-11 00:01
                      回复
                        这还比较好办,补一下中断处理函数


                        IP属地:上海来自Android客户端14楼2017-09-11 00:01
                        回复
                          成功启动到op界面


                          IP属地:上海来自Android客户端15楼2017-09-11 00:02
                          回复
                            增加新target rtl8196c,完成本地化工作


                            IP属地:上海来自Android客户端16楼2017-09-11 00:03
                            回复
                              来个成功启动的日志(这个是在还没完成本地化时候取的,写的还是rtl8196e)
                              ========== SPI =============
                              SDRAM CLOCK:156MHZ
                              ------------------------- Force into Single IO Mode ------------------------
                              |No chipID Sft chipSize blkSize secSize pageSize sdCk opCk chipName |
                              | 0 ef4017h 0h 800000h 10000h 1000h 100h 40 39 UNKNOWN|
                              ----------------------------------------------------------------------------
                              ---RealTek(RTL8196C)at 2017.09.09-09:10+0800 version v1.4 [16bit](390MHz)
                              Jump to image start=0x80500000...
                              OpenWrt kernel loader for Realtek 819X
                              Copyright (C) 2011 Gabor Juhos <juhosg@openwrt.org>
                              Decompressing kernel... done!
                              Starting kernel at 80000000...
                              [ 0.000000] Linux version 3.10.49 (zhaonan@zhaonan-PC) (gcc version 4.6.4 (Realtek RSDK-4.6.4 Build 424) ) #11 Sun Sep 10 22:37:47 CST 2017
                              [ 0.000000] CPU revision is: 0000cd01
                              [ 0.000000] Determined physical RAM map:
                              [ 0.000000] memory: 04000000 @ 00000000 (usable)
                              [ 0.000000] Initrd not found or empty - disabling initrd
                              [ 0.000000] Zone ranges:
                              [ 0.000000] Normal [mem 0x00000000-0x03ffffff]
                              [ 0.000000] Movable zone start for each node
                              [ 0.000000] Early memory node ranges
                              [ 0.000000] node 0: [mem 0x00000000-0x03ffffff]
                              [ 0.000000] icache: 16kB/16B, dcache: 8kB/16B, scache: 0kB/0B
                              [ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 16256
                              [ 0.000000] Kernel command line: board=AP console=ttyS0,38400 linuxpart=0x10000
                              [ 0.000000] PID hash table entries: 256 (order: -2, 1024 bytes)
                              [ 0.000000] Dentry cache hash table entries: 8192 (order: 3, 32768 bytes)
                              [ 0.000000] Inode-cache hash table entries: 4096 (order: 2, 16384 bytes)
                              [ 0.000000] Memory: 61500k/65536k available (2559k kernel code, 4036k reserved, 584k data, 180k init, 0k highmem)
                              [ 0.000000] SLUB: HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
                              [ 0.000000] NR_IRQS:128
                              [ 0.000000] console [ttyS0] enabled
                              [ 0.200000] Calibrating delay loop... 388.30 Bog


                              IP属地:上海来自Android客户端17楼2017-09-11 00:05
                              回复