[Armadillo:00434] Armadillo-J での RTS, DTR 制御

Kenji Hirano email@hidden
2005年 8月 4日 (木) 13:32:15 JST


お世話になっております,平野と申します.

Armadillo-J で RS-232C の RTS,DTR 制御・CTS,DSR 読取を
したいのですが,ioctl 関数がエラーを返すようです.

下記のテストプログラムを開発環境で実行すると問題なく動
作するのですが,Armadillo-J では ioctl 関数がエラーを
返します.

Armadillo-J では何か異なった処理が必要なのでしょうか?

開発環境:Fedora CORE 3
 arm-elf-tools-20030314.sh
 uClinux-dist-aj20050421.tar.gz
Armadillo-J:
 JP1,2,3 ショート

テストプログラム(test.c)
//////////////
#include <stdio.h>
#include <termios.h>
#include <fcntl.h>
#include <sys/ioctl.h>

main()
{
	int fd, serial;
	int old_serial=0;
	int diff;
	int i;

	fd = open("/dev/ttyS0", O_RDONLY | O_NOCTTY);
	if (fd==-1){
		printf("open error...\n");
		return;
	}
	printf("TIOCM_LE	:0x%08X\n",TIOCM_LE);	// DSR (data set ready/line enable)
	printf("TIOCM_DTR	:0x%08X\n",TIOCM_DTR);	// DTR (data terminal ready)
	printf("TIOCM_RTS	:0x%08X\n",TIOCM_RTS);	// RTS (request to send)
	printf("TIOCM_ST	:0x%08X\n",TIOCM_ST);	// Secondary TXD (transmit)
	printf("TIOCM_SR	:0x%08X\n",TIOCM_SR);	// Secondary RXD (receive)
	printf("TIOCM_CTS	:0x%08X\n",TIOCM_CTS);	// CTS (clear to send)
	printf("TIOCM_CAR	:0x%08X\n",TIOCM_CAR);	// DCD (data carrier detect)
	printf("TIOCM_CD	:0x%08X\n",TIOCM_CD);	// TIOCM_CAR を参照。
	printf("TIOCM_RNG	:0x%08X\n",TIOCM_RNG);	// RNG (ring)
	printf("TIOCM_RI	:0x%08X\n",TIOCM_RI);	// TIOCM_RNG を参照。
	printf("TIOCM_DSR	:0x%08X\n",TIOCM_DSR);	// DSR (data set ready)
	for (i=0;i<1000;i++){
		if (ioctl(fd, TIOCMGET, &serial)==-1){
			printf("ioctl error...\n");
			close(fd);
			return;
		}
		if (serial!=old_serial){
			diff=serial^old_serial;
			printf("%04d:0x%08X => 0x%08X : 0x%08X\n",i,old_serial,serial,diff);
		}
		usleep(200000);
		old_serial=serial;
	}
	if (close(fd)==-1){
		printf("ioctl error...\n");
		return;
	}
}
/////////////////

結果
////////////////
# ./test
TIOCM_LE        :0x00000001
TIOCM_DTR       :0x00000002
TIOCM_RTS       :0x00000004
TIOCM_ST        :0x00000008
TIOCM_SR        :0x00000010
TIOCM_CTS       :0x00000020
TIOCM_CAR       :0x00000040
TIOCM_CD        :0x00000040
TIOCM_RNG       :0x00000080
TIOCM_RI        :0x00000080
TIOCM_DSR       :0x00000100
ioctl error...
////////////////

P.S.
AJ020 についてですが,開発環境は AJ010 と同様で
問題ありますか?




armadillo メーリングリストの案内