/var/log/messages

debugging with sixth sense

UART 入力とか出力とか

参考にさせて頂いてるサンプルには入力はないですね。このあたりを云々してみたいと思っていますがどうなるか。

puts とか putc なあたりが以下な記述。

これ使えば 1 秒毎に一文字、ってできるよね。改行付けて 1 秒で文字列、ってのもできそげ。受信した文字を、ってのもやってみたいです。

一秒毎に一文字

確認したら get_systime という手続きが定義済みだったので以下を追加して

あとは kernel_main 手続きの末端部分を以下に修正。

    uart_init();

    while(1){
        delay_ms(1000);
        uart_putc('a');
    }

これでシリアルコンソール上での出力を確認しています。

文字を受けとる

以下の手続きを uart.c に定義して

kernel_main の末端を以下に。

    while(1) {
        while(is_fifo_enable());
        c = uart_getc();
        uart_putc(c);
    }

ちょっと uart と gpio でレジスタのアクセスの方法が統一されてないのが微妙ですね。

文字列を送る

以下なカンジで。

    char helloworld[] = "Hello World\r\n";
    int i;
    while(1) {
        delay_ms(1000);
        i = 0;
        while(helloworld[i] != '\0') {
            uart_putc(helloworld[i]);
            i++;
        }
    }

改行区切りで読み込んだ文字列を出力

以下で。

最初、enter の入力が ‘\r’ って事が分からなくてハマりました。いやはや。

とりあえず

リファクタ必要。追記の方向で色々検討します。

Comments