ImJa 솔루션
글 수 23
2015.04.23 11:12:30 (*.134.169.166)
6650
ImJa 보드 출시 예정, 자바(Java)만으로 임베디드 시스템을 개발할 수 있다!!
임베디드 시스템 개발이라면 당연히 C언어를 떠올리는 분이 많습니다. 기계어와 어셈블러 다음으로 하드웨어에 밀접한 언어가 C언어이기 때문입니다. 그러나 C언어는 강력하지만, 학습하기 어렵고 개발자 충원이 힘들다는 단점이 있습니다. 이에 비해 자바(Java)는 완성도가 높은 객체 지향 프로그래밍 언어로 하드웨어 플랫폼에 독립적이며 폭 넓은 라이브러리 제공으로 생산성이 높습니다. 특히, 배우기 쉽고 많은 분이 사용하고 있어서 개발자를 구하기도 용이하다는 점은 큰 장점이지요.
장점이 많은 자바이지만, 그리고 가전 제품 제어 프로그램을 쉽게 작성하기 위해 만들어진 자바이지만, 시스템보다는 서버 관리나 웹 프로그래밍에 주로 사용합니다. 아마도 보안이 뛰어나고 웹과의 연동성이 좋기 때문이겠습니다만, 이런 이유로 하드웨어와 밀접한 시스템 개발에는 자바 개발자가 어려워 하는 경향이 많습니다. 이에 제가 다니는 에프에이리눅스(주)에서 자바 개발자가 자바 언어만으로 하드웨어에 치중된 시스템을 쉽게 개발할 수 있는 ImJa 보드를 곧 출시합니다.
C언어를 전혀 사용하지 않고 자바만으로 시리얼 통신, GPIO 제어, CAN 통신뿐만 아니라 쓰레드 없이 TCP/IP, UDP/IP 소켙 통신을 이벤트 방식으로 구현할 수 있으며, UNIX에서 제공하는 UDS 소켓 통신도 역시 이벤트 방식으로 사용할 수 있습니다.
▲ 에프에이리눅스(주)에서 곧 출시할 ImJa 보드입니다.
▲ 외부와 연결되는 커넥터가 배치된 SIB-IMJA 보드와 CPU와 메모리를 따로 구성한 EM-IMX6DQ MCU 모듈로 분리하여 제작되었습니다.
▲ 크기는 가로 120mm, 세로 90mm로 긴 쪽의 길이가 아이폰5와 비슷합니다. 매우 작지요?
▲ 크기는 작아도 (1) 전원 커넥터 외에 (2) 미니 USB 콘솔 포트 (3) USB 호스트 포트 (4) HDMI 커넥터 (5) RJ-45 LAN 커넥터가 있고,
▲ 반대쪽에는 CAN 통신할 수 있는 두 개의 포트 (1) CAN0, (2) CAN1 블록 단자, (3) rs485 두 개의 통신 포트를 위한 블록단자, (4) rs232c 한 개의 통신 포트를 위한 블록 단자가 배치되어 있습니다.
▲ (1) 카메라 인터페이스 커넥터와 (2) LCD 패널과 연결할 수 있는 LVDS LCD 연결 커넥터가 있습니다.
▲ (1) 리셋 스위치, (2) GPIO, 오디오 SSI 인터페이스, I2C 해더핀 커넥터, (3) SATA 커넥터에 (4) STAT를 위한 5V, 3.3V 전원 출력 포트를 제공합니다.
ImJa 보드 프로그래밍 특징
- 설치 간편한 ImJa 라이브러리 제공
ImJa 보드에서 사용하는 라이브러리는 한 개의 파일로 제공되어 설치 및 사용이 쉽습니다. - ImJa 라이브러리 사용을 더욱 편리하게
ImJa 라이브러리를 자바에서 쉽게 사용할 수 있는 jar 파일을 함께 제공합니다. - 이벤트 방식의 통신 루틴 작성 가능
자바에서 통신 루틴을 작성할 때 일반적으로 사용하는 쓰레드 방식 대신에 이벤트 방식 사용으로 입력과 출력 루틴의 연관성을 높일 수 있습니다. - 간편한 타이머 함수 사용
타이머 함수를 간편하게 작성할 수 있어서 주기적인 기능 실행이나 예외 상황 처리의 성능을 높일 수 있습니다.
생산성 높은 ImJa 라이브러리
아래 소스는 ImJa 라이브러리를 이용하여 시리얼 포트로부터 수신된 데이터를 재 전송하는 에코 예제입니다. 데이터 수신을 위해 쓰레드를 사용하지 않고 이벤트 방식으로 사용하여 프로그램 로직을 단순화할 수 있으며 예외 상황 처리가 쉽습니다.
public class SerialExample extends Serial { public SerialExample(String port, int baudRate, int bits) { super(port, baudRate, bits); poll = new Poll(); // 전체 통신 함수 초기화 this.open(); // 시리얼 포트 open poll.rebuild(); // 통신 객체 목록 갱신 } public int onRead(long arg0) { int readBytes = this.read(readBuffer); // 수신된 데이터 읽기 byte[] buf = new byte[readBytes]; // byte배열 선언 readBuffer.flip(); // 읽은 데이터 설정 readBuffer.get(buf); // byte배열에 데이터 설정 readBuffer.compact(); // bytebuff 포지션 재설정 writeBuffer.put(buf); // 수신된 데이터를 write buffer에 설정 writeBuffer.flip(); // write buffer 데이터 설정 this.write(writeBuffer); // 데이터 전송 writeBuffer.compact(); // bytebuff 포지션 재설정 return readBytes; } public void run() { while (true) { poll.pollDoLoop(100); // 등록된 이벤트 발생 여부 확인 } } public static void main(String[] args) { new SerialExample("/dev/ttymxc1", 115200, 8).run(); }
ImJa 보드로 개발 생산성을 높이십시오!!
ImJa 보드를 사용하시면 아래와 같은 장점이 있습니다!!
- 자바 개발자도 임베디드 시스템 개발에 대한 부담을 크게 줄일 수 있습니다.
- C언어를 학습해야 하는 부담이 없어집니다.-
- C언어 개발자를 충원해야 하는 비용 부담 없어집니다.
- C언어 개발자 보다 자바 개발자 충원이 쉽습니다.
- 자바 언어만으로 프로젝트를 진행할 수 있습니다.
- 자바 언어만으로 개발하므로 유지와 관리 비용을 줄일 수 있습니다.
- ImJa 라이브러리로 생산성을 높일 수 있습니다.
- ImJa 보드를 구매하시려면
ImJa 보드를 구매하시려면 에프에이리눅스(주) 영업부로 연락 바랍니다.
- 대표 전화 번호: 02-572-9527
- 영업부 : 070-7862-5140. 070-7862-5150
자바만으로 임베디드 시스템을 구축할 수 있는 ImJa 보드에 많은 관심 부탁드립니다.