变参 – Variadic 应用

好久没更新博客了,太忙了^-^

这是我写的一个仿scanf函数,比较粗糙,只是练习一下变参

#include <stdio.h>
#include <stdarg.h>
#include <string.h>
#include <stdlib.h>
void dget(int *b, char k)
{
    char n[20],*a;
    a=n;
    do{
    *a=getchar();
    a++;
    }while(!(*(a-1) == 'n' || *(a-1) == k));
    *(a-1)='';
    *b=atoi(n);
}

void sget(char *a,char k)
{
    do{
    *a=getchar();
    a++;
    }while(!(*(a-1) == 'n' || *(a-1) == k));
    *(a-1)='';
}

void cget(char *a)
{
    *a=getchar();
    getchar();
}

int myscanf(char *list, …)
{
    va_list ap;
    char *p;
    int *num;
   

    va_start(ap,list);
    for(;*list!='';list++){
       
        if(*list=='%'){
            switch(*(list+1)){
                case 'c':
                    p=(char *)va_arg(ap,int);
                    cget(p);
                    list++;
                    continue;
                case 's':
                    p=(char *)va_arg(ap,int);
                    sget(p,*(list+2));
                    list++;
                    continue;
                case 'd':
                    num=(int *)va_arg(ap,int);
                    dget(num,*(list+2));
                    list++;
                    continue;
                default:
                    //list++;
                    break;
            }
        }
    }

    return 0;
}

int main(void)
{
    int a,c;
    char b[30];
    myscanf("%s,%d,%c",b,&c,&a);
    printf("%s,%c,%d",b,a,c);
    return 0;
}
 

TPLINK-841N_V3.4刷OPENWRT

昨天晚上把手里的841n V3.4改成openwrt了,要用单wan双拨功能

在网上走了几圈。发现有改这个机子成功的了。

于是,开始动手,上TTL无信息,R356直连后还是不行(rx,tx,gnd)

无果,没TTL如何刷呢,分析网上的方法后。闪光一灵,直接用编程器刷,分析后得出结论

0x0000-0x20000存放uboot

0x20001-0x7f0000存放factory命令的固件

0x7f0001-0x800000存放的是board_config

按顺序刷上后,一切OK成功了

编程器固件下载:

841N_v3.4_OPENWRT_USB_WHOLEFLASH.bin

安装debian 遇到的无线网卡的问题

昨天安装了 debian 发现只能使用有线网卡上网,无线无法使用,用lsmod看也挂载了RT73的模式,但是dmesg后发现
[   63.664048] firmware: requesting rt73.bin
[   63.670027] phy0 -> rt2x00lib_request_firmware: Error – Failed to request Firmware.
[   68.831346] firmware: requesting rt73.bin
[   68.842955] phy0 -> rt2x00lib_request_firmware: Error – Failed to request Firmware.
[   80.756466] firmware: requesting rt73.bin
[   80.790575] phy0 -> rt2x00lib_request_firmware: Error – Failed to request Firmware.
[   90.955321] firmware: requesting rt73.bin
[   90.964185] phy0 -> rt2x00lib_request_firmware: Error – Failed to request Firmware.
[  102.940896] firmware: requesting rt73.bin
[  102.953273] phy0 -> rt2x00lib_request_firmware: Error – Failed to request Firmware.
[  113.139790] firmware: requesting rt73.bin
[  113.152929] phy0 -> rt2x00lib_request_firmware: Error – Failed to request Firmware.
[  125.136884] firmware: requesting rt73.bin
[  125.203243] phy0 -> rt2x00lib_request_firmware: Error – Failed to request Firmware.
[  135.245554] firmware: requesting rt73.bin
[  135.258749] phy0 -> rt2x00lib_request_firmware: Error – Failed to request Firmware.
[  147.276858] firmware: requesting rt73.bin
[  147.289446] phy0 -> rt2x00lib_request_firmware: Error – Failed to request Firmware.
[  157.326490] firmware: requesting rt73.bin
[  157.339120] phy0 -> rt2x00lib_request_firmware: Error – Failed to request Firmware.
[  169.344628] firmware: requesting rt73.bin
[  169.360210] phy0 -> rt2x00lib_request_firmware: Error – Failed to request Firmware.
[  179.448775] firmware: requesting rt73.bin
[  179.464593] phy0 -> rt2x00lib_request_firmware: Error – Failed to request Firmware.
[  191.510340] firmware: requesting rt73.bin
[  191.521165] phy0 -> rt2x00lib_request_firmware: Error – Failed to request Firmware.
[  201.543051] firmware: requesting rt73.bin
[  201.555175] phy0 -> rt2x00lib_request_firmware: Error – Failed to request Firmware.
[  313.860291] firmware: requesting rt73.bin
[  313.872983] phy0 -> rt2x00lib_request_firmware: Error – Failed to request Firmware.
[  323.920712] firmware: requesting rt73.bin
[  323.935466] phy0 -> rt2x00lib_request_firmware: Error – Failed to request Firmware.
[  436.388172] firmware: requesting rt73.bin
[  436.399077] phy0 -> rt2x00lib_request_firmware: Error – Failed to request Firmware.
[  446.427830] firmware: requesting rt73.bin
[  446.440847] phy0 -> rt2x00lib_request_firmware: Error – Failed to request Firmware.
[  472.808760] firmware: requesting rt73.bin
[  472.816789] phy0 -> rt2x00lib_request_firmware: Error – Failed to request Firmware.
[  494.946043] firmware: requesting rt73.bin
[  494.954865] phy0 -> rt2x00lib_request_firmware: Error – Failed to request Firmware.
[  517.091645] firmware: requesting rt73.bin
[  517.102763] phy0 -> rt2x00lib_request_firmware: Error – Failed to request Firmware.
[  539.174906] firmware: requesting rt73.bin
[  539.186079] phy0 -> rt2x00lib_request_firmware: Error – Failed to request Firmware.
[  558.847040] firmware: requesting rt73.bin
[  558.860371] phy0 -> rt2x00lib_request_firmware: Error – Failed to request Firmware.
[  561.261524] firmware: requesting rt73.bin
[  561.274506] phy0 -> rt2x00lib_request_firmware: Error – Failed to request Firmware.
[  568.897654] firmware: requesting rt73.bin
[  568.978907] ADDRCONF(NETDEV_UP): wlan0: link is not ready

用桌面工具也搜不到无线网,手工加入也是上不了
ifup wlan0显示
Ignoring unknown interface wlan0=wlan0

iwlist wlan0 scanning
显示网卡没有启动

这里有点晕菜了,后来发现应该是驱动的问题

下边说说解决的过程
我下载的的debian5.08 i386 DVD 第一张盘
安装后并无iwlist之类的命令,要自己安
aptitude install frimware-iwlwifi wireless-tools
安完后
再安装雷凌网卡的驱动包就OK了
aptitude install firmware-ralink
然后就看到nm-applet搜出了无线信号
问题解决了

LINUX TTL软件 Minicom – linux下的超级终端

最近由于一些原因,要把系统转到linux,于是就安了fedora14(出的好快,我记得几个月不看,就到14了,几个月前还只有13测试版的)

但是我在调试路由用的TTL怎么使用呢,在google上一查,发现有个软件叫minicom,等同于winodows下的超级终端

于是我就yum install minicom ,没想到在默认的源里就有。

然后简单设置一下就可以正常使用了。

linux下要先看看,系统是否认出了设备(我使用的是PL2303心片的USB转TTL)

运行命令 dmesg | grep usb

看看是否认出了一个叫PL2303的设备,这里同时也是设备名,但是有时候是不准确的比如/dev/ttyUSB0

看具体的设备,最好直接到/dev/下看看,有时候是ttyUSB0有时确是1,这个要看清,并记下

然后进入minicom这个软件的配置页

命令 minicom -s

选第三项

 

按相应的字母,就可以改变对应的选项

改好后保存并退出。它会自动进入工作状态。

如果要退出,按CTRL+Z,再按Q回车

。。。。。。。。中间少了点东西是选项的英文菜单,等我在工具环境中再加入。

路由器的陷阱-ADSL帐号的丢失

刚近收了不少二手路由,发现好多的朋友都用PPPOE的拨号方式,但好多人不清楚,卖路由时要改掉pppoe的用户名和密码并保存。

否则就会出现如下的结果。

以TPLINK841N 为例

先进入管理页面,抄下adsl的账号这里的是1000******52

拆下841N的flash,放入编程器读出里边的内容

用UltraEdit,搜索1000******52 然后见

看到账号了吗?下边不远处就是密码了明文的26914292,

验证密码的正确性,到www.bbn.com.cn

自助服务里查一下时长,就知道对不对了。

看看,用了18个小时。现在虽然ADSL账号无法通用,但是对方可以在网上改密码和加大速率等操作,会带来麻烦和经济损失,所以大家还是注意一下。卖路由别连密码一起卖了。:)

NW618 之刷不死的小强

NW618万能恢复程序,对于内核不管有没有刷成第三方的固件,都可以使用这个方法进行恢复。

NW618万能恢复程序使用说明:
1.下载TFTP Server,及升级固件,在硬盘根目录新建文件夹并重命名为“NW618 Recovery”,把固件文件名改成upgrade_linux.trx,把TFTP Server和upgrade_linux.trx一并放在NW618 Recovery文件夹里面,切记NW618 Recovery文件夹最好位于硬盘的根目录下;
2、关闭所有杀毒软件、防火墙、360等;
3.运行NW618 Recovery文件夹里的TFTP Server;
4.将连接路由器LAN口的主机IP地址设置成192.168.1.33;
5.按住路由器上的恢复确省按键后上电,并继续按住大概15-20秒左右,看到原本闪烁的CPU灯长亮之后放开;
6.耐心等待大概3分钟(提示的error 10060不用管,等结果就是了),执行 Ping 192.168.1.1 看看能否Ping通。或进入路由器界面,如果能够进入,则恢复成功。如果不行重启路由,右键修复本地连接,即可!

此种方法不仅可用于NW618内核恢复程序,也可用于升级,只需把DD-WRT,或Tomato固件重命名为:upgrade_linux.trx   放置于NW618 Recovery文件夹内,其他操作相同!

Fri Jan 07 18:42:35 2011: 正在发送 'upgrade_linux.trx' 文件到 192.168.1.1 以 binary 模式
##################################################################
(省略中间的#)
##################################################################
Fri Jan 07 18:43:47 2011: 成功.

ciscotftp11_jp

阿尔卡特全系一体机升级-780wl

手中有一个腾达的一体机W548D功能太弱,想升级一下,看到配置和780wl一样,只是内存和闪存不同,所以想刷一下试试,找到了个阿尔卡特的升级软件和固件的下载网站,不敢独享。

刷机程序
http://www.speedtouch.nl/drivers.html

  Thomson ST122g
  SpeedTouch 516/546 en 516i/546i
  SpeedTouch 585 en 585i
  SpeedTouch 605s
  SpeedTouch 608, 608i, 608 WL en 608i WL (R5)
  SpeedTouch 620 en 620i
  SpeedTouch 706, 706i, 706 WL en 706i WL
  SpeedTouch 780, 780i, 780 WL en 780i WL
Eerdere modellen (niet meer leverbaar):
  SpeedTouch 110 en 120
  SpeedTouch 110g en 120g
  SpeedTouch 121g
  SpeedTouch Home en Home ISDN
  SpeedTouch USB en USB ISDN
  SpeedTouch 330
  SpeedTouch 510 en 510i
  SpeedTouch 570 en 570i R2 (tot jan 2004)
  SpeedTouch 570/545 en 570i/545i R4 (vanaf jan 2004)
  SpeedTouch 580 en 580i
  SpeedTouch 608 en 608i (R4)
  SpeedTouch 610, 610i en 610s
  SpeedTouch 716g R1.1
  SpeedTouch 716v5, 716iv5, 716v5 WL en 716iv5 WL
Hulpprogramma's:
  SpeedTouch NAT-poort Manager
  SpeedTouch Surftool voor ADSL Tijdsurfen

以上为荷兰阿尔卡特官方网站提供的刷机程序,绝对保险,该程序一般会带有一个最新的固件,刷机程序有的为英文,有的为荷兰文,看不懂的可以到http://www.google.co.jp/language_tools?hl=zh-CN选择荷兰语翻译为英语

下面这个就NB了,包含speedtouch各品牌各版本的固件
http://mirror.opensourcehub.com/pub/speedtouch/routers/

ReleaseNotes/           23-May-2007 02:47      – 
ST510v4/                27-Jul-2006 03:16      – 
ST510v5/                27-Jul-2006 03:16      – 
ST510v6/                27-Jul-2006 03:16      – 
ST511v5/                08-Feb-2006 14:26      – 
ST516/                  27-Jul-2006 03:16      – 
ST516v6/                23-May-2007 02:21      – 
ST530v4/                27-Jul-2006 03:16      – 
ST530v5/                27-Jul-2006 03:16      – 
ST530v6/                17-Mar-2007 03:58      – 
ST536/                  27-Jul-2006 03:16      – 
ST536v6/                23-May-2007 02:20      – 
ST546/                  27-Jul-2006 03:16      – 
ST546v6/                23-May-2007 02:22      – 
ST576/                  27-Jul-2006 03:16      – 
ST580/                  27-Jul-2006 03:16      – 
ST585/                  27-Jul-2006 03:16      – 
ST585v6/                23-May-2007 02:23      – 
ST605/                  05-Jan-2007 00:28      – 
ST608/                  23-May-2007 02:24      – 
ST608WL/                23-May-2007 02:27      – 
ST610/                  27-Jul-2006 03:16      – 
ST620/                  05-Jan-2007 00:28      – 
ST706WL/                23-May-2007 02:32      – 
ST716v5WL/              23-May-2007 02:35      – 
ST780DXT/               23-May-2007 02:38      – 
ST780WL/                23-May-2007 02:47      – 

DLINK 624+A 修复记

DLINK 624+A 修复记

前几天入手了一个624+A   C1版的。开机状态灯狂闪,于是上TTL

定义如下,网口向上灯向自己 6个针分别为

GND   VCC

RX       TX

VCC   GND

显示为

  AMIT R3210 RECOVERY SYSTEM 
 ROM ID =
[00] 444C4236-30363100-00000000-00000000 | DLB6 061. …. ….
 MAC address =
[00] 001B119D-19F4                       | …. ..           
 IP address =
[00] C0A80001-                           | ….              
Flash_id ,0x5b
$Data = 807f0600
PHY Vendor ID=243

在网上细心查找,发现这是reload状态,和开机按住reset是一样的

此情况为刷固件没刷中间过渡版本所致

能DHCP,也能ping通192.168.0.1,但进不了web

又在网上找,TFTP工具

Cisco TFTP Server

将TFTP工具解压,在dos窗口里,进入该目录,发命令  tftp -i 192.168.0.1 put 固件路径

下载固件在dlink

624+A_3.0_C1

下载后发现里边有个20070531_A1,C1_624+A_V3.00Patch01CN.EXE

双击,升级之,不用TFTP工具了,然后路由自动重启,OK了