거울을 붙여볼까 하는데

거울식 반사 시트는 없대서

500mm x 400mm 정도 되는 거울판(?) 같은거 3장 사옴

일단 벽지는 예비로 있으니 적당히 땜빵해봐야지 머..

'개소리 왈왈 > 육아관련 주저리' 카테고리의 다른 글

추워어어  (0) 2021.11.30
벽지 망했어 ㅋㅋ  (2) 2021.11.07
벽지 수선 준비  (0) 2021.11.06
떵개 사고침  (0) 2021.11.05
구몬 스마트펜 자가 수리  (0) 2021.11.01
냄비 손잡이 교체  (0) 2021.10.31
Posted by 구차니

댓글을 달아 주세요

오줌 싸고!

벽지 뜯고!

 

아오 -_-

'개소리 왈왈 > 육아관련 주저리' 카테고리의 다른 글

벽지 망했어 ㅋㅋ  (2) 2021.11.07
벽지 수선 준비  (0) 2021.11.06
떵개 사고침  (0) 2021.11.05
구몬 스마트펜 자가 수리  (0) 2021.11.01
냄비 손잡이 교체  (0) 2021.10.31
휴가 3일차  (0) 2021.10.29
Posted by 구차니

댓글을 달아 주세요

RS485는 LSB 부터 전송하게 되는 듯?

일단 예제는 아래와 같은데

[링크 : https://www.best-microcontroller-projects.com/how-rs232-works.html]

 

대문자 J는 0x4A 이고

 

2진수로 계산하면 0b01001010 이고

 

실제로 찍은걸 보면 0이 Low고 1이 High로 매핑되고

LSB 부터니까 01010010 순서고

레벨을 바꾸어서 보면 10101101 인데

start bit 1개 들어가니 110101101 으로 보인다.

오호.. 신기해라(!)

 

Posted by 구차니

댓글을 달아 주세요

Linux2021. 11. 3. 11:32

gcc -g 옵션을 주고 빌드하지 않아서 그런가

어드레스만 주구장창 나와서 분석은 실패 ㅠㅠ

 

[링크 : https://blog.naver.com/hymne/221841282483]

[링크 : https://incredible-larva.tistory.com/entry/core-dump-분석을-위한-gdb-간단-정리]

'Linux' 카테고리의 다른 글

uniq 카운트  (0) 2021.12.07
grep 바이너리 파일 일치함  (0) 2021.12.06
리눅스 코어 덤프 및 분석  (0) 2021.11.03
convert fb(rgb565) to png 실..패?  (0) 2021.10.18
bash multiple session history  (0) 2021.10.01
특정 pts에서 프로그램 실행하기  (0) 2021.09.27
Posted by 구차니

댓글을 달아 주세요

Linux API/linux2021. 11. 2. 10:44

개략적으로 보면.. select나 poll이나 비슷하게 이벤트 발생시 누가 발생했는지 찾아서 처리해야 하고

epoll은 이벤트 발생시 발생목록을 전달하여, 누가 발생했는지 찾을 필요 없이 바로 처리하면 된다.

다만 select는 1024가 한번에 다룰수 있는 최대 fd 갯수고

poll은 숫자제한은 없지만 선형 탐색을 해야하고, 1500 넘으면 느려진다고 하고

epoll이 1500 보다 클 경우는 유리한 듯.

 

select / poll / epoll

[링크 : https://niklasjang.github.io/backend/select-poll-epoll/]

[링크 : https://applefarm.tistory.com/144]

 

select

while(1)
{
   fd_num = select(...);
   if(fd_num == -1) break;
   else if(fd_num == 0 ) continue;

   for(int fd =0; fd < fd_max + 1; ++fd)
   {
      if(FD_ISSET(fd, &cpy_reads))
      {
          // TODO
      }
   }

   close(server_socket);
   return 0;
}

[링크 : https://ozt88.tistory.com/21]

 

poll

       #include <poll.h>
       #include <fcntl.h>
       #include <sys/types.h>
       #include <stdio.h>
       #include <stdlib.h>
       #include <unistd.h>

       #define errExit(msg)    do { perror(msg); exit(EXIT_FAILURE); \
                               } while (0)

       int
       main(int argc, char *argv[])
       {
           int nfds, num_open_fds;
           struct pollfd *pfds;

           if (argc < 2) {
              fprintf(stderr, "Usage: %s file...\n", argv[0]);
              exit(EXIT_FAILURE);
           }

           num_open_fds = nfds = argc - 1;
           pfds = calloc(nfds, sizeof(struct pollfd));
           if (pfds == NULL)
               errExit("malloc");

           /* Open each file on command line, and add it 'pfds' array. */

           for (int j = 0; j < nfds; j++) {
               pfds[j].fd = open(argv[j + 1], O_RDONLY);
               if (pfds[j].fd == -1)
                   errExit("open");

               printf("Opened \"%s\" on fd %d\n", argv[j + 1], pfds[j].fd);

               pfds[j].events = POLLIN;
           }

           /* Keep calling poll() as long as at least one file descriptor is
              open. */

           while (num_open_fds > 0) {
               int ready;

               printf("About to poll()\n");
               ready = poll(pfds, nfds, -1);
               if (ready == -1)
                   errExit("poll");

               printf("Ready: %d\n", ready);

               /* Deal with array returned by poll(). */

               for (int j = 0; j < nfds; j++) {
                   char buf[10];

                   if (pfds[j].revents != 0) {
                       printf("  fd=%d; events: %s%s%s\n", pfds[j].fd,
                               (pfds[j].revents & POLLIN)  ? "POLLIN "  : "",
                               (pfds[j].revents & POLLHUP) ? "POLLHUP " : "",
                               (pfds[j].revents & POLLERR) ? "POLLERR " : "");

                       if (pfds[j].revents & POLLIN) {
                           ssize_t s = read(pfds[j].fd, buf, sizeof(buf));
                           if (s == -1)
                               errExit("read");
                           printf("    read %zd bytes: %.*s\n",
                                   s, (int) s, buf);
                       } else {                /* POLLERR | POLLHUP */
                           printf("    closing fd %d\n", pfds[j].fd);
                           if (close(pfds[j].fd) == -1)
                               errExit("close");
                           num_open_fds--;
                       }
                   }
               }
           }

           printf("All file descriptors closed; bye\n");
           exit(EXIT_SUCCESS);
       }

[링크 : https://man7.org/linux/man-pages/man2/poll.2.html]

 

epoll

int epoll_fd = epoll_create(EPOLL_SIZE);
struct epoll_event* events = malloc(sizeof(struct epoll_event)*EPOLL_SIZE);
struct epoll_event init_event;
init_event.events = EPOLLIN;
init_event.data.fd = server_socket;
epoll_ctl(epoll_fd, EPOLL_CTL_ADD, server_socket, &init_event);
while(TRUE)
{
   int event_count = epoll_wait(epoll_fd, events, EPOLL_SIZE, -1);
   if( event_count = -1 ) break;
   for( int i = 0 ; i < event_count; ++i )
   {
      if(events[i].data.fd == server_socket) //서버 소켓에 이벤트
      { //accept 처리 ... init_event.events = EPOLLIN;
         init_event.data.fd = new_client_socket;
         epoll_ctl(epoll_fd, EPOLL_CTL_ADD, new_client_socket, &init_event);
      }
      else //이벤트가 도착한 소켓들
      {
            //read, write, closesocket처리
      }
   }
}

closesocket(server_socket);
close(epoll_fd);
return 0;

[링크 : https://ozt88.tistory.com/21]

 

 

 

+

오래된 글이지만 벤치마크 결과 poll/select는 거의 동일한 성능이고

fd 갯수가 늘어갈수록 느려지지만, epoll이나 kqueue의 경우 일정 상한 이상으로는 성능이 유지되는 경향을 보인다.

[링크 : https://monkey.org/~provos/libevent/libevent-benchmark.jpg]

[링크 : https://kldp.org/node/46542]

 

일반적으로 소켓수가 1500이하일때는 퍼모먼스 차이는 거의 없는것으로 알고 있습니다.

select poll epoll 의 성능차이는 5000 이상부터 급격히 달라집니다.

[링크 : http://foroum.gpgstudy.com/forum/viewtopic.php?t=12610]

'Linux API > linux' 카테고리의 다른 글

select, poll, epoll  (0) 2021.11.02
Unhandled fault: external abort on non-linefetch  (0) 2021.05.25
Stopped (tty input)  (0) 2021.05.21
linux gpio interrupt poll?  (0) 2021.05.04
Floating point exception  (0) 2021.04.05
실행파일 not fount, FATAL: kernel too old  (0) 2021.04.05
Posted by 구차니

댓글을 달아 주세요

메모리 카드가 없다고 해서 분해해보니, 정말 SD 메모리 카드가 있네?!

 

구형이랑 다른게 sd 메모리 인줄 알았는데, 슬롯만 내부에 내장시키고 외부로 꺼내지 않았을뿐

동일한 구조인 것 같다는게 킹리적 갓심 -_-

 

남는 나사 하나는 어디서 나온거냐...

 

AXP173 GB132A 62G1 - 리튬이온 배터리 충전 및 PMIC

[링크 : http://www.x-powers.com/en.php/Info/product_detail/article_id/27]

N51822 QFABC0 1530NQ - BLE nRF51822

[링크 : https://www.nordicsemi.com/products/nrf51822]

BE1704 25Q16C61G P14915 - 정체 불명(SPI나 i2C 메모리나 램 아니려나?)

ANYKA AK3750CB121 T2A01B17 - ARM926EJ-S 

[링크 : http://www.anyka.com/en/productInfo.aspx?id=107]

'개소리 왈왈 > 육아관련 주저리' 카테고리의 다른 글

벽지 수선 준비  (0) 2021.11.06
떵개 사고침  (0) 2021.11.05
구몬 스마트펜 자가 수리  (0) 2021.11.01
냄비 손잡이 교체  (0) 2021.10.31
휴가 3일차  (0) 2021.10.29
휴가 2일차  (0) 2021.10.28
Posted by 구차니

댓글을 달아 주세요

embeded/FPGA - ALTERA2021. 11. 1. 15:11

altera/intel fpga의 soft mcu가 risc-v 채택해서 nios V로 제공되는데

[링크 : https://www.intel.com/content/www/us/en/products/details/fpga/nios-processor/v.html]

 

하드웨어 요구사항이 높네.. 아쉽게도 내가 가징 de0-nano의 cyclone IV로는 무리인듯.

2.1. Hardware and Software Requirements

Intel uses the following hardware and software to build a Nios® V/m processor system:
  • Supported Intel FPGA devices:
    • Intel® Cyclone® 10 GX
    • Intel® Arria® 10
    • Intel® Stratix® 10
    • Intel® Agilex™
  • Intel® Quartus® Prime Pro Edition software version 21.3 or later

[링크 : https://www.intel.com/content/www/us/en/programmable/documentation/jmv1629188568604.html]

'embeded > FPGA - ALTERA' 카테고리의 다른 글

Nios V  (0) 2021.11.01
IOFS - Intel Open FPGA Stack  (0) 2021.07.06
oneAPI Quartus pro 필요?  (0) 2021.04.06
cyclone V openCL?  (0) 2021.03.26
risc v on fpga  (0) 2021.03.09
quartus II 9.0이 아니야? 4.2 설치!  (0) 2020.06.23
Posted by 구차니

댓글을 달아 주세요

 

[링크 : https://en.wikipedia.org/wiki/EtherCAT]

[링크 : https://en.wikipedia.org/wiki/CODESYS]

Posted by 구차니

댓글을 달아 주세요