how to use BeagBone uart4? you need build the uart driver and then insert
 kernel.i need file uart driver.


2014-05-18 1:08 GMT+07:00 Simon Platten <simonaplat...@gmail.com>:

> Sorry, I know nothing about the insmod kernel, can you tell me more?
>
>
> On 17/05/2014 12:22, Lê Hoàng Vũ wrote:
>
>> I need uart driver for insmod kernel,can you help me!
>>
>> 2014-05-17 17:53 GMT+07:00, Simon Platten <simonaplat...@gmail.com>:
>>
>>> This is a snippet of code from my JNI C libary which works:
>>> [code]
>>> JNIEXPORT jint JNICALL Java_cantley_co_uk_clsMain_openDevice
>>>    (JNIEnv *pEnv, jclass obj, jstring strDevice, jboolean blnRx, jboolean
>>> blnDebug) {
>>>      const char *pstrDevice    = (*pEnv)->GetStringUTFChars(pEnv,
>>> strDevice,
>>>
>>> NULL);
>>> // Try to open the port
>>>      int intFD = open(pstrDevice, O_RDWR | O_NOCTTY | O_NDELAY);
>>>
>>>      if ( intFD >= 0 ) {
>>>          struct termios options;
>>> // Get the current options for the port...
>>>          tcgetattr(intFD, &options);
>>> // Set the baud rates to 115200...
>>>          cfsetispeed(&options, B115200);
>>>          cfsetospeed(&options, B115200);
>>> //        options.c_cflag |= (CLOCAL | CREAD);
>>>          options.c_iflag &= ~(IGNBRK | BRKINT | PARMRK | ISTRIP | INLCR |
>>> IGNCR | ICRNL | IXON);
>>>          options.c_oflag &= ~OPOST;
>>>          options.c_lflag &= ~(ECHO | ECHONL | ICANON | ISIG | IEXTEN);
>>>          options.c_cflag &= ~(CSIZE | PARENB);
>>>          options.c_cflag |= CS8;
>>>
>>>          if ( blnRx == JNI_TRUE ) {
>>>              options.c_cc[VMIN]  = 0;
>>>              options.c_cc[VTIME] = 2;
>>>          } else {
>>> // non-blocking, we aren't reading
>>>              options.c_cc[VMIN] = options.c_cc[VTIME] = 0;
>>>          }
>>>          tcsetattr(intFD, TCSANOW, &options);
>>>
>>>          if ( blnRx == JNI_TRUE ) {
>>>              tcflush(intFD, TCIFLUSH);
>>>          }
>>>          fcntl(intFD, F_SETFL, FNDELAY);
>>>
>>>          if ( blnDebug == JNI_TRUE ) {
>>>              printf("%s opened and ready for use%s", pstrDevice,
>>> pstrEOL);
>>>          }
>>>      } else if ( blnDebug == JNI_TRUE ) {
>>>          printf("%s, port not ready%s", pstrDevice, pstrEOL);
>>>      }
>>>      (*pEnv)->ReleaseStringUTFChars(pEnv, strDevice, pstrDevice);
>>>      return intFD;
>>> }
>>> [/code]
>>>
>>> On Tuesday, 6 May 2014 19:42:34 UTC+1, Andrey wrote:
>>>
>>>> Hello,
>>>>
>>>> I need to use an UART to communicate between beaglebone and the device.
>>>> I
>>>>
>>>> have written the C code, but it has a few problems within it. I can't
>>>> identify the cause of the problem or to be more precise don't know how
>>>> fix
>>>>
>>>> it.
>>>>
>>>> The problem is of
>>>> reading in the information and displaying it on a shell. I can easily
>>>> write any information data set that I wish, but when I try to read in
>>>> response it either doesn't read in, with the perror being displayed as
>>>> (erno = EINTR [Interrupted function call]) meaning read () function
>>>> returned negative number.
>>>>
>>>> #include <iostream>
>>>>
>>>> #include <termios.h>
>>>>
>>>> #include <stdio.h>
>>>>
>>>> #include <unistd.h>
>>>>
>>>> #include <fcntl.h>
>>>>
>>>> #include <sys/signal.h>
>>>>
>>>> #include <stdlib.h>
>>>>
>>>> #include <sys/ioctl.h>
>>>>
>>>> #include <errno.h>
>>>>
>>>> #define BAUDRATE B19200
>>>>
>>>> #define PORT "/dev/ttyO4"
>>>>
>>>> #define _POSIX_SOURCE 1
>>>>
>>>>
>>>>
>>>> #define FALSE 0
>>>>
>>>> #define TRUE 1
>>>>
>>>> volatile int STOP=FALSE;
>>>>
>>>>
>>>>
>>>> void signal_handler_IO(int status);
>>>>
>>>> int wait_flag = TRUE;
>>>>
>>>>
>>>>
>>>> int main ()
>>>>
>>>> {
>>>>
>>>>      int fd=0, res=0;
>>>>
>>>>      int check=0;
>>>>
>>>>
>>>>
>>>>      char SYNC  [] = {0x55};
>>>>
>>>>      char PID [] = {0x6A};
>>>>
>>>>
>>>>
>>>>      struct termios oldtio, newtio;
>>>>
>>>>      struct sigaction saio;
>>>>
>>>>      char buff[255];
>>>>
>>>>
>>>>
>>>>      fd = open(PORT, O_RDWR | O_NOCTTY | O_NONBLOCK);
>>>>
>>>>      if (fd<0) {perror(PORT); exit(-1);}
>>>>
>>>>
>>>>
>>>>      saio.sa_handler=signal_handler_IO;
>>>>
>>>>      saio.sa_flags=0;
>>>>
>>>>      saio.sa_restorer = NULL;
>>>>
>>>>      sigaction(SIGIO, &saio,NULL);
>>>>
>>>>      fcntl(fd, F_SETFL, FASYNC);
>>>>
>>>>      check = tcgetattr(fd, &oldtio);
>>>>
>>>>      if (check<0){perror("tcgetattr");}
>>>>
>>>>
>>>>
>>>>      check = newtio.c_cflag = BAUDRATE | CS8 | CLOCAL | CREAD ; if
>>>> (check<0
>>>> ){perror("c_cflag");}
>>>>
>>>>      check = newtio.c_iflag = IGNPAR | IXON; if
>>>> (check<0){perror("c_iflag"
>>>> );}
>>>>
>>>>      check = newtio.c_oflag = 0; if (check<0){perror("c_oflag");}
>>>>
>>>>      //check = newtio.c_lflag = ICANON | ISIG;
>>>>
>>>>      check = newtio.c_lflag = 0; if (check<0){perror("c_lflag  ");}
>>>> /* c_cc is responsible for an erno error */
>>>>
>>>>      check = newtio.c_cc[VMIN]=1; if (check<0){perror("c_cc[VMIN]");}
>>>>
>>>>      check = newtio.c_cc[VTIME]=0; if (check<0){perror("c_cc[VTIME]");}
>>>>
>>>>      tcflush(fd, TCIFLUSH);
>>>>
>>>>
>>>>      check = tcsetattr(fd, TCSANOW, &newtio); if (check<0){perror(
>>>> "tcsetattr");}
>>>>
>>>>
>>>>
>>>> for(;;)
>>>>
>>>> {
>>>>      ioctl(fd, TIOCSBRK);
>>>>
>>>>      usleep(1300);
>>>>
>>>>      ioctl(fd,TIOCCBRK);
>>>>
>>>>      usleep(200);
>>>>
>>>>
>>>> /* send request to actuator to receive the current setting and setup */
>>>>      check = write(fd, SYNC, sizeof(SYNC));  if
>>>> (check<0){perror("SYNC");}
>>>>
>>>>      check = write(fd,PID, sizeof(PID)); if (check<0){perror("PID");}
>>>>
>>>> /* read response*/
>>>>      res = read(fd, buff,255);
>>>>      if (res < 0)
>>>>
>>>>      {
>>>>
>>>>          perror("read");
>>>>          //if(errno ==EINTR) continue;
>>>>      }
>>>>
>>>>          printf(": :%d :%d\n", res,buff);
>>>>
>>>>
>>>>
>>>> usleep(10000);
>>>>
>>>> }
>>>>
>>>>      close (fd);
>>>>
>>>> }
>>>>
>>>>
>>>>
>>>> void signal_handler_IO(int status)
>>>>
>>>> {
>>>>
>>>> wait_flag=FALSE;
>>>>
>>>>
>>>> e}
>>>>
>>>> erno EINTR error is displayed only when i'm setting any non-zero values
>>>> to
>>>>
>>>> c_cc[VTIME] or c_cc[VMIN]. but still even if i set the both to zero, I
>>>> cannot read anything from the port, it's just blank.
>>>>
>>>>
>>>> I'm confident that i'm receiving response from the device, I have
>>>> checked
>>>>
>>>> it with oscilloscope.
>>>>
>>>> Any assistance would be appreciated. if possible with the code examples
>>>> for me to see what should I modify.
>>>>
>>>> Thank you very much for the help.
>>>>
>>>>  --
>>> For more options, visit http://beagleboard.org/discuss
>>> ---
>>> You received this message because you are subscribed to a topic in the
>>> Google Groups "BeagleBoard" group.
>>> To unsubscribe from this topic, visit
>>> https://groups.google.com/d/topic/beagleboard/vbRrGiqZyfs/unsubscribe.
>>> To unsubscribe from this group and all its topics, send an email to
>>> beagleboard+unsubscr...@googlegroups.com.
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>>
>
> ---
> This email is free from viruses and malware because avast! Antivirus
> protection is active.
> http://www.avast.com
>
>
> --
> For more options, visit http://beagleboard.org/discuss
> --- You received this message because you are subscribed to a topic in the
> Google Groups "BeagleBoard" group.
> To unsubscribe from this topic, visit https://groups.google.com/d/
> topic/beagleboard/vbRrGiqZyfs/unsubscribe.
> To unsubscribe from this group and all its topics, send an email to
> beagleboard+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
For more options, visit http://beagleboard.org/discuss
--- 
You received this message because you are subscribed to the Google Groups 
"BeagleBoard" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to beagleboard+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to