본문 바로가기

embedded

(6)
Rock960A/B/C 용 rtl8152 커널 드라이버 소스 Rock960A/B/C 를 쓰는 사용자라면 아마 VAMRs 에서 배포하는 리눅스를 사용하고 있으시거나, 제가 따로 배포하는 AARCH64 빌드를 높은 확률로 사용 중 이실 것 입니다만, 이 커널이 4.4 에 기반을 하고 있는지라 Realtek 의 RTL8152 계열 USB LAN 이 ( 보통 USB 3.0 GbE 지원 제품 ) 위 화면처럼 (unnamed net_device) (uninitialized) 오류를 뱉으면서 커널에서 인식을 못하고 있는 상황을 경험 할 것입니다. 이는 커널에 포함된 r8152 내장드라이버가 너무 옛날 것이라 생기는 문제로 최신 드라이버는 ACPI 와 개선된 net API 등을 사용해서 또 바로 사용해서 컴파일 할 수 없으므로, 이를 기존 kernel 4.4 에 맞도록 수정한 ..
리눅스에서 빠르게 TCP socket 서버 찾기. 리눅스에서 자신의 IP 영역대에서 (A.B.C.n, n = 1~자기자신~255) 다른 서버가 있는지 찾기 위해서는 여러 방법이 있긴 하겠지만, 대부분 이 방법으로 찾는게 아닐까 합니다. 아래 코드는 해당 ip 에 TCP socket 이 열려 있는지 찾는 간단한 방법 으로 실제 AnyStreaming Client 에서도 아래와 같은 방법으로 (물론 Windows용으로 바꾼 코드) AnyStreaming 을 찾습니다. 실제론 FD_ISSET() 이후에 socket 을 다시 blocked 로 바꾼 다음 send() 를 통해 특정 명령이 전달 되는지 까지 검사하면 더 좋을 듯 합니다. 이 방법은 TCP socket 의 connect() 함수가 blocking 으로 동작 하는것을 감안해서 만든 날림 코드지만 꽤 ..
리눅스내 현재 접속 ip 알기. 리눅스나, 임베디드 리눅스 내에서 현재 연결된 장치에 따라 ip 를 알고 싶을 때가 있다, 이럴때 아래 코드를 사용할 수 있다. #include #include #include #include #include #include #include #include #include #include #include #include #include #include bool getmyip( const char* devname, struct in_addr* addr ) { struct ifreq ifr; int fdSockTest = -1; fdSockTest = socket( AF_INET, SOCK_DGRAM, IPPROTO_IP ); if ( fdSockTest >= 0 ) { strcpy( ifr.ifr_name..
서비스 데몬을 만드려다 노가다 하다 ... 시스템을 이제 다 만들어 가는지라, 기존에 일일히 실행 해서 쓰던 서버들을 이제 데몬으로 올리려 임베디드 리눅스 파일 시스템 /etc/rc.local 뒤에 뙇 넣어 놨더니 ... 하 ... rcS.d 세션이 끝나니 다들 죽으신다 ... 대체 언제적 문제인가 해서 back to the past. 현재 개발 하는 시스템은 squashfs 를 이용한 NAND writing 을 하기 때문에 미리 sqfs 를 만들 위치에서 부터 ARM ELF 로 만들어진 바이너리를 각각 /usr/sbin 안에 넣어 준다. 예를 들어 서비스 서버로 만들었던 것 중 하나가 asctrld 이라면 /usr/sbin/ 안에 asctrld 를 넣어 주는 것. 그런 다음, 아래 스크립트를 복붙 으로 /etc/init.d 안에 asctrld ..
임베디드 리눅스의 이 난감한 상황은 ... 시그윈에서 socket 과 inet 만으로 단순 socket server 를 만들었습니다. class 로 wrapping 해서 쓰기 편하게 만들어서 돌렸더만 잘 돌기에 힘들게 porting 한 embedded linux 에 넣고 짠! 하고 잘 돌줄 알았더니, 흠 - 얘가 뭔가 뾰로퉁 하게 도네요 .. 30MB 짜리 버퍼를 보내는데 4KB 보내고 멎어 있습니다. socket server 를 non-blocking, async 로 설계한 이유는 아닌거 같은데, FD_ISSET() 이나 ioctl() 에서 멎는 문제도 아닐텐데, 그 이유를 찾기가 어려운 난감한 상황이 아닌가 합니다. 현재 GbE 로 연결된 상태라 전체 속도의 반인 60MBytes/sec 정도가 나와 주면 좋겠는데, 설계의 문제인지 아니면 제가..
Microsoft Windows Embedded Medical Solution Seminar 에 다녀 오다... 이전 부터 있어 온 말. 인텔과 마소의 관계. 2011년2월22일. 의료기기 관련 세미나가 마이크로소프트와 MDS 와 공동으로 진행 되었습니다. 저는 이번에 회사에서 중요한 프로젝트에 투입되는 관계로 새로운 플랫폼으로 무엇을 택할 것 인가를 한번 고려 해 보기 위해 참석 했습니다만 .. 결론부터 말 하자면 - 저라면 인텔 플랫폼은 쓰지 않겠다 입니다. 이번에 마소가 인텔의 솔루션을 얼마나 열심히 팔아 주려고 해 주는지. 인텔이 어떻게든 남아도는 아톰 플랫폼을 처분하려고 애 쓰는지 알 수 있었던 날 인듯 합니다. 보통 위 사진처럼 x86 기반 보드들이 부품이 과도히 많고, 소모전류가 많을 수 밖에 없는 구조임에도, 많이 쓰이는 이유는 x86 프로그래밍이 쉽기 때문 입니다. 이는 Visual Studio 와..