FDAUのソース解析
 
&counter([total|today|yesterday]); - 0 - 0 - 14
 



power onからのソース解析

TRAPAからのソース解析

つまり、curtaskにtask_sw()を登録してから、 task_init()を呼ぶ(initial()が呼ばれる)

get_ipinfo()とget_ip()

単純に自分のIP, MASK, MACを返すだけ

sock構造体の状態変数の推移

    ptr = (STRING)iphdr;
    ptr = &(ptr[iphdr->header_len * 4]);
    tcphdr = (TCP_HDR*)ptr;
    for(i = 0;i < TCP_NUM;i++) {                             //既存ソケットの検索
        if(tcp_socket[i].state == TCP_STATE_LISTENING) continue;
        if(tcp_socket[i].remport != tcphdr->sport) continue; //このif文がFALSEにならない=remportとsportとが違う
        if(tcp_socket[i].locport != tcphdr->dport) continue;
        if(tcp_socket[i].rem_ip != iphdr->srcip) continue;
        return i;
    }
    if((tcphdr->hlen_flags & TCP_FLAG_SYN) == 0) return -1;  //SYN受信〜新規ソケットの作成
    if(tcphdr->hlen_flags & TCP_FLAG_ACK) return -1;
    if(tcphdr->hlen_flags & TCP_FLAG_RESET) return -1;
    if(tcphdr->hlen_flags & TCP_FLAG_FIN) return -1;
    for(i = 0;i < TCP_NUM;i++){
        if(tcp_socket[i].state != TCP_STATE_LISTENING) continue;
        if(tcp_socket[i].locport != tcphdr->dport) continue;
        tcp_socket[i].rem_ip = iphdr->srcip;
        tcp_socket[i].remport = tcphdr->sport;
        return i;
    }
    return -1;
}

initial()の解析

TCPクライアントのサンプル

timer周りの変更点

FDAUのクロックは20MHzなので、task.cの以下を変更する。 でも、ちょっと変なソースなので再考したい。

static void init_timer() {
    time_count = 0;
    counter = ((25 * 1000) >> 8) & 0xff;       ここの25を20に変更
    counter = (256 - counter) & 0xff;          WDTはアップカウンタなので256から引算
    start_timer();
}

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS