FC2カウンター FPGAの部屋 SDK における inbyte() の使用
FC2ブログ

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

SDK における inbyte() の使用

Vivado のSDK でベアメタルのアプリケーションソフトを作っているときに、キー入力を使用するが、その際にfgetc() , scanf() などを使用してキー入力すると、リターンキーが押されるまで処理が戻ってこなかったりする。それだと都合が悪い場合は、fflush(stdin) を使用すると思う。

Xilinx のSDKでは inbyte() という、1バイトのキー入力ルーチンがある。ブロックされて、1文字入力するまで戻ってこないが、リターンキーを待ってはいないので、一文字入力すると関数コールから帰ってくる。(ベアメタルのみでLinuxでは使えません。Linuxでのノンブロッキングのキー入力については、「Linux の C 言語でノンブロッキングキー入力をする」を参照してください)

    while(1){
        print("********************** LED4 TEST Start ***********************\n\r");
        print("TeraTerm: Please Set Local Echo Mode.\n\r");
        print("Press '1' to show all registers\n\r");
        print("Press '2' to set LED4 Enable or Disable(Toggle, Command Register)\n\r");
        print("Press '3' to set LED Counter Load Register (4bits, Please input hexadecimal)\n\r");
        print("Press '4' to set LED Interval Register (32bits, Please input decimal)\n\r");
        print("Press '5' to exit\n\r");
        print("Selection : ");
        inbyte_in = inbyte();
        print(" \r\n");
        print(" \r\n");

        switch(inbyte_in) {
            case '1' : // Show all registers
                val = (int)Xil_In32((u32)XPAR_LED4IP_0_S_AXI_BASEADDR);
                printf("Command Register is %x\r\n", val);
                val = (int)Xil_In32((u32)(XPAR_LED4IP_0_S_AXI_BASEADDR+4));
                printf("LED Counter Load Register is %x\r\n", val);
                val = (int)Xil_In32((u32)(XPAR_LED4IP_0_S_AXI_BASEADDR+8));
                printf("LED Monitor Register is %x\r\n", val);
                val = (int)Xil_In32((u32)(XPAR_LED4IP_0_S_AXI_BASEADDR+0xc));
                printf("LED Interval Register is %d (decimal)\r\n", val);
                break;
            case '2' : // Set LED4 Enable or Disable(Toggle, Command Register)


メニューを表示して、inbyte() でキー入力を待つ。1文字の数字を押してすぐに、その処理ルーチンに飛ぶようになっている。数字を入力して、リターンキーを押さなくて済むので便利だ。
  1. 2017年07月04日 05:15 |
  2. Vivado
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック URL
https://marsee101.blog.fc2.com/tb.php/3846-fd7f47c4
この記事にトラックバックする(FC2ブログユーザー)