'IT관련 지식들'에 해당되는 글 70건
- 2016.09.01 :: 리눅스 파일 전송 명령어(scp)
- 2016.08.18 :: ubuntu mount 명령어.
- 2016.08.12 :: DateX-ASN.1
- 2016.07.26 :: gdb 디버거 사용하기.
- 2016.07.25 :: makefile
- 2016.07.25 :: gcc 컴파일러.
- 2016.07.07 :: 우분투에서 Git 시작하기
- 2016.06.30 :: 가상 머신 네트워크 설정.
- 2016.06.30 :: 소켓 통신
- 2016.06.30 :: 싸이로드 세미나(카메라)
우분투 시스템간 파일을 전송할 때, 간단하게 파일을 전송할 수 있다.
송신(Local -> Remote)
scp [파일명] [계정]@[주소]:[위치&파일명]
ex)
$ scp ./video_test.c odroid@192.168.128.6:/home/odroid/project/video_test.c
수신 (Remote -> Local)
scp [계정]@[주소]:[위치&파일명] [파일명]
ex)
$ scp odroid@192.168.128.6:/home/odroid/project/helloworld.c ./helloworld.c
'IT관련 지식들' 카테고리의 다른 글
우분투에서 잡히지 않은 하드 설정. (0) | 2016.10.26 |
---|---|
strdup 함수 (0) | 2016.09.07 |
ubuntu mount 명령어. (0) | 2016.08.18 |
DateX-ASN.1 (0) | 2016.08.12 |
gdb 디버거 사용하기. (0) | 2016.07.26 |
상황 : USB를 Insert
1. USB file 확인
> (sudo) fdisk -l
2. mount
- standard : mount -t type device dir
> (sudo) mount vfat /dev/sdb1/ ./usb/
3. 확인
> cd usb
> ll
'IT관련 지식들' 카테고리의 다른 글
strdup 함수 (0) | 2016.09.07 |
---|---|
리눅스 파일 전송 명령어(scp) (0) | 2016.09.01 |
DateX-ASN.1 (0) | 2016.08.12 |
gdb 디버거 사용하기. (0) | 2016.07.26 |
makefile (0) | 2016.07.25 |
DateX-ASN.1 개념 정리
1. ASN.1
Abstract Syntax Notation #1의 약자. 국제전기통신 연합(ITU : International Telecommunication Union)에서 정한 통신 데이터 형식 표준.
2. 관련 문서
* X.680~X.699 : ASN.1의 문법을 정의한 표준 문서.
X.680 – Basic Notation
X.681 – Information Objects
X.682 – General Constraint Notation
X.683 – Parameterization
X.690 – Basic (BER), Cannoical(CER), and Distinguished (DER) Encoding Rules
X.691 – Packed Encoding Rules (PER)
3. ASN.1 문법
- X680 문서에 기본 문법 참조.
ModuleDefinition ::=
ModuleIdentifier
DEFINITIONS
TagDefault
ExtensionDefault
"::="
BEGIN
ModuleBody
END
ModuleIdentifier ::=
modulereference
DefinitiveIdentifier
DefinitiveIdentifier ::=
"{" DefinitiveObjIdComponentList "}"
| empty
DefinitiveObjIdComponentList ::=
DefinitiveObjIdComponent
| DefinitiveObjIdComponent DefinitiveObjIdComponentList
...(중략)...
AssignmentList ::=
Assignment
| AssignmentList Assignment
Assignment ::=
TypeAssignment
| ValueAssignment
| XMLValueAssignment
| ValueSetTypeAssignment
| ObjectClassAssignment
| ObjectAssignment
| ObjectSetAssignment
| ParameterizedAssignment
각 모듈에서 사용할 수 있는 문법 중 다음 항목을 설명한다.
* Type Assignment : 변수의 타입을 설정.
InventoryList {1 2 0 0 6 1} DEFINITIONS ::= BEGIN
{
ItemId ::= SEQUENCE
{
partnumber IA5String,
quantity INTEGER,
wholesaleprice REAL,
saleprice REAL
}
StoreLocation ::= ENUMERATED
{
Baltimore (0),
Philadelphia (1),
Washington (2)
}
} END
* Value Assignment : 변수값을 설정
gadget ItemId ::=
{
partnumber "7685B2",
quantity 73,
wholesaleprice 13.50,
saleprice 24.95
}
2. BER(Basic Encoding Rule)
- DateX(Date Exchange)중 한가지 방법인 BER에 대해 설명.
- Tag Length Value의 앞자를 따서 TLV라고도 함.
- X.690 문서 참조.
- Structure of an encoding
Identifier Octets |
Length Octets |
Contents octets |
End-of contents Octets(생략가능) |
- 그리고 대략 다음과 같은 구조를 가짐
Seq ::= SEQUENCE {
first INTEGER,
second INTEGER }
seqVa1 Seq ::= { 10, 20 }
Tag |
Length |
Value |
|
|
SEQUENCE |
V의 길이(구조체 전체 크기) |
Tag |
Length |
Value |
|
|
INTEGER |
V의 길이 |
10 |
|
|
INTEGER |
V의 길이 |
20 |
'IT관련 지식들' 카테고리의 다른 글
리눅스 파일 전송 명령어(scp) (0) | 2016.09.01 |
---|---|
ubuntu mount 명령어. (0) | 2016.08.18 |
gdb 디버거 사용하기. (0) | 2016.07.26 |
makefile (0) | 2016.07.25 |
gcc 컴파일러. (0) | 2016.07.25 |
# 컴파일 하면서 -g 옵션을 넣는다.
$gcc -o helloworld helloworld.c
==>
$gcc -g -o helloworld helloworld.c
단, 이때 최적화 옵션[-Oleverl]은 제거한다.
# 파일을 실행하면서 gdb로 실행한다.
$gdb ./helloworld
break point를 지정한 뒤 run 명령어로 시작한다.
# breakpoint 설정방법.
(gdb) break initTask
breakpoint를 함수명(initTask)에 설정.
(gdb) break keonamain.c:120
breakpoint를 파일(keonamain.c)의 x(120)번째 줄에 설정.
# 변수값 설정
(gdb) p gValue
변수(gValue)값을 출력
(gdb) set gsImageQueue.front=2
변수(gsImageQueue.front)값을 변경(0-->2).
# 코드보기
(gdb) list
현재 실행중이 코드를 출력.
'IT관련 지식들' 카테고리의 다른 글
ubuntu mount 명령어. (0) | 2016.08.18 |
---|---|
DateX-ASN.1 (0) | 2016.08.12 |
makefile (0) | 2016.07.25 |
gcc 컴파일러. (0) | 2016.07.25 |
우분투에서 Git 시작하기 (0) | 2016.07.07 |
기본적인 내용은 KLDP wiki를 참고했음.
1. makefile의 사용목적
- 편리하게 컴파일
2. 구조.
- <target> <depend> <command><macro>로 구성
<Target> : <Depend> ?... [[;] Command ]
/탭문자/ <Command>
<Target> 생성하려고 하는 목적물.
<Depend> Target을 만드는데 필요한 요소.
<Command> 일반 쉘 명령어. 앞에 /탭문자/를 입력하여 구분.
===== 예제 =====
test: test.o
ld -lc -m elf_i386 -dynamic-linker /lib/ld-linux.so.2 \
-o test \
/usr/lib/crt1.o \
/usr/lib/crti.o \
/usr/lib/crtn.o \
test.o
test.o: test.c
cc -O2 -Wall -Werror -fomit-frame-pointer -c -o test.o test.c
3. 매크로 활용.
<Macro> 특정한 단어, 경로 등등을 미리 저장.
선언 : <Macro name> = <Macro 내용>
사용 : $(macro name)
위 내용을 다음과 같이 변환 가능
CC = cc
LD = ld
CFLAGS = -O2 -Wall -Werror -fomit-frame-pointer -c
LDFLAGS = -lc -m elf_i386 -dynamic-linker /lib/ld-linux.so.2
STARTUP = /usr/lib/crt1.o /usr/lib/crti.o /usr/lib/crtn.o
test: test.o
$(LD) $(LDFLAGS) -o test $(STARTUP) test.o
test.o: test.c
$(CC) $(CFLAGS) -o test.o test.c
4. 기본 확장자 규칙
.c.o:
- .c파일을 .o파일로 만들기
$@
- target
$<
- 열거된 depend중 최 좌측 항목
$^
- depend 전체
위 내용을 다음과 같이 변환 가능
CC = cc
LD = ld
CFLAGS = -O2 -Wall -Werror -fomit-frame-pointer -c
LDFLAGS = -lc -m elf_i386 -dynamic-linker /lib/ld-linux.so.2
STARTUP = /usr/lib/crt1.o /usr/lib/crti.o /usr/lib/crtn.o
test: test.o
$(LD) $(LDFLAGS) -o $@ $(STARTUP) $^
.c.o:
$(CC) $(CFLAGS) -o $@ $<
응용 & 확장
CC = cc
LD = ld
RM = rm -f
CFLAGS = -O2 -Wall -Werror -fomit-frame-pointer -v -c
LDFLAGS = -lc -m elf_i386 -dynamic-linker /lib/ld-linux.so.2
STARTUP = /usr/lib/crt1.o /usr/lib/crti.o /usr/lib/crtn.o
BUILD = test
OBJS = test.o hello.o
.PHONY: all clean
all: $(BUILD)
clean: ; $(RM) *.o $(BUILD)
test: $(OBJS) ; $(LD) $(LDFLAGS) -o $@ $(STARTUP) $^
# 의존관계 성립
$(OBJS): $($@:.o=.c) hello.h Makefile
# test.o hello.o: $($@:.o=.c) hello.h Makefile
# 확장자 규칙 (컴파일 공통 규칙)
.c.o: ; $(CC) $(CFLAGS) -o $@ $<
$($@:.o=.c) : 타겟의 확장자 .o를 .c로 변경
'IT관련 지식들' 카테고리의 다른 글
DateX-ASN.1 (0) | 2016.08.12 |
---|---|
gdb 디버거 사용하기. (0) | 2016.07.26 |
gcc 컴파일러. (0) | 2016.07.25 |
우분투에서 Git 시작하기 (0) | 2016.07.07 |
가상 머신 네트워크 설정. (0) | 2016.06.30 |
makefile을 분석하기 위해서는 먼저 gcc 컴파일에 대한 이해가 필요하다.
1. 기본동작
execute파일을 생성한다.
==== 소스코드 ====
#include <stdio.h>
int main(int argc, char** argv)
{
printf("Hellow World\n");
return 0;
}
==== 실행 예제 ====
$ gcc test.c
$./a.out
Hellow World
==== 이론 ====
1. 전처리 단계 - 전처리기 (cpp)
: #include, #define 등 #으로 시작하는 문법 사항이 적절히 전처리된 C 언어 소스파일 생성
2. 컴파일 단계 - 컴파일러 (cc1)
: C 언어 소스파일은 컴파일 과정을 거쳐 어셈블리 소스 파일이 됨
3. 어셈블 단계 - 어셈블러 (as)
:어셈블리 소스 파일은 어셈블 과정을 거쳐 목적 파일이 됨
4. 링크 단계 - 링커 (ld)
: 목적 코드는 라이브러리와 링크되어 실행 가능한 파일이 됨
2. 옵션
2.1. 실행파일명 입력 [-o outfile]
$ gcc test.c -o test
$./test
Hellow World
2.2. 오브젝트파일 생성까지만 진행 [-c]
- 위 이론에서 3번까지만 진행. *.o파일을 생성.
- 각각의 오브젝트파일을 만들어 추후에 링크를 걸 경우 유용함.
ㄱ) 한번에 컴파일하는경우
$gcc -o main main.c fun1.c fun2.c
ㄴ) 나눠서 컴파일 하는 경우.
$gcc -c main.c
$gcc -c fun1.c
$gcc -c fun2.c
$gcc -o main main.o fun1.o fun2.o
- ㄴ)의 경우 파일 하나를 고쳐서 다시 컴파일하는 경우 유리하다. 파일 하나가 아니라 모듈 단위로 컴파일 하는 경우라면 더욱 더 ㄴ)의 형태로 가는 것이 좋다.
2.3 어셈블리까지 진행 [-s]
2.4 최적화 수준 지정(-Olevel]
- 숫자가 클수록 높은 최적화
2.5 디버깅 옵션 [-g]
2.6 추가 디파인 [-Dmacro[=defn]...]
2.7 라이브러리 디렉토리 지정[-Ldir...]
2.8 모든 에러 출력 [-Wwarn...] [-Wpedantic]
2.9 추가 헤더파일 디렉토리 지정 [-Idir...]
'IT관련 지식들' 카테고리의 다른 글
gdb 디버거 사용하기. (0) | 2016.07.26 |
---|---|
makefile (0) | 2016.07.25 |
우분투에서 Git 시작하기 (0) | 2016.07.07 |
가상 머신 네트워크 설정. (0) | 2016.06.30 |
소켓 통신 (0) | 2016.06.30 |
ubuntu 14.04에서 git 시작하기
1. 프로그램 다운로드
~/$ sudo apt-get install git qgit gitk git-svn
2. 사용자 등록
~/$ git config --global user.name "kangmin"
~/$ git config --global user.email "kangmini82@gmail.com"
3. 초기화
~/$mkdir gitrepository
~/gitrepository$ git init
4. 사용하는 프로그램 등록 및 동기화
~/project$mkdir gitrepository
~/project/gitrepository$git clone ~/gitrepository/
~/project/gitrepository$git add *
~/project/gitrepository$git commit -m "Working all thread"
* GUI 환경
~/project/gitrepository$gitk
관련사이트
'IT관련 지식들' 카테고리의 다른 글
makefile (0) | 2016.07.25 |
---|---|
gcc 컴파일러. (0) | 2016.07.25 |
가상 머신 네트워크 설정. (0) | 2016.06.30 |
소켓 통신 (0) | 2016.06.30 |
싸이로드 세미나(카메라) (0) | 2016.06.30 |
가상 머신의 네트워크 설정은 다음과 같다.
1. NAT(Network Address Translation)
- PC가 IP공유기 역할을 수행한다.
- 가상머신은 내부 네트워크를 사용하며 PC와는 다른 대역의 IP를 부여한다.
ex) PC : 192.168.0.2 , 가상머신 ; 10.0.0.2
2. 브릿지
- 가상머신은 PC와 동등한 PC로 인식한다.
- PC와 같은 대역의 IP를 부여받는다.
ex) PC : 192.168.0.2 , 가상머신 : 192.168.0.3
3. Host only.
- 가상머신은 인터넷을 할 수 없다.
ex) PC : 192.168.0.2 , 가상머신 : IP 없음.
버추얼 머신 5.0.20을 설치하면 이외에 NAT 네트워크, 내부네크워크, 일반 드라이버 3가지 메뉴가 더 있다. 이에 대해서는 실험을 해 본 후 추가한다.
'IT관련 지식들' 카테고리의 다른 글
gcc 컴파일러. (0) | 2016.07.25 |
---|---|
우분투에서 Git 시작하기 (0) | 2016.07.07 |
소켓 통신 (0) | 2016.06.30 |
싸이로드 세미나(카메라) (0) | 2016.06.30 |
UML(Unified Modeling Language). (0) | 2016.06.20 |
통신을 할 일이 생겨서 소켓통신을 찾아봤다.
서버는 다음의 흐름을 가진다.
socket() : 구조체 생성
bind() : IP addr등의 값 설정.
listen() : 대기
accept() : 연결
<<read(), write()>>
close()
클라이언트는 다음의 흐름을 가진다.
socket() : 구조체생성
connect() : 연결
<< read(), write() >>
close()
코드는 첨부파일 참조.
'IT관련 지식들' 카테고리의 다른 글
우분투에서 Git 시작하기 (0) | 2016.07.07 |
---|---|
가상 머신 네트워크 설정. (0) | 2016.06.30 |
싸이로드 세미나(카메라) (0) | 2016.06.30 |
UML(Unified Modeling Language). (0) | 2016.06.20 |
가변인자를 사용한 매크로 (개인용 printf) (0) | 2016.06.16 |
- 이미지 센서와 성능
- CCD와 CMOS의 차이점
- EMVA1228 비교 테이블
- 이미지 성능 관련 요소.
- Shot noise
- Pixel Size
- Quantum efficiency
- 양자 효율
- Temporal dark noise
- Saturation capacity
- Full Well depth
- Signal to noise ratio
- Dynamic range
- Absolute Sensitivity threshold
- Gain
- 사용 환경에 따른 고려가 필요.
- 빠른 이동 중이라면 fps가 늘어야 한다
- 셔터 속도가 빠르면 광량이 적기 때문에 픽셀사이즈, 양자효율들을 확인한다.
- 밤에 광량이 적은 상태에서 촬영을 해야하는 조건이 추가된다면 또 다른 조건들을 생각해봐야한다.
- SDK - point grey
- Spinnaker - GenICam 표준을 따름
- FlayCapture2
- 열화상카메라 기초교육.
- 각 픽셀에 온도값을 받아서 온도 캘리브레이션 내용과 비교하여 열 영상을 출력.
- 적외선 카메라 선정시 고려사항
- 측정하는 온도범위
- 각 제품의 적정 온도 범위가 다름
- 데이터 수집 속도
- 노출 시간과 프레임 속도
- 목표물의 크기와 측정 거리
- 목표물의 한 픽셀안에 들어오지 않는 경우 온도가 다르게 표현될 수 있다.
- 측정거리가 멀먼 온도가 실제 온도보다 낮게 나올 수 있다.
- 적합한 디텍터와 필터.
- 가시광선, 적외선(NIR, MWIR & LWIR)
- 지원 SW, 개발툴
- 제조사의 지원 및 교육
- 추가 액세서리
- 측정하는 온도범위
- 3D 카메라의 측정 방법과 특성.
- Laser Triangulation
- 라인 레이저로 발사한 빛을 카메라가 받아서 거리를 연산
- Photogrammetry
- 다양한 각도에서 찍은 사진을 분석하여 하나의 3D이미지로 합성
- Stereometry
- 두개의 렌즈로 수집한 데이터를 분석하여 거리를 측정.
- TOF
- 레이더의 원리와 비슷.
- 동작 카메라의 특성을 가짐.
- Moire
- Laser Triangulation
'IT관련 지식들' 카테고리의 다른 글
가상 머신 네트워크 설정. (0) | 2016.06.30 |
---|---|
소켓 통신 (0) | 2016.06.30 |
UML(Unified Modeling Language). (0) | 2016.06.20 |
가변인자를 사용한 매크로 (개인용 printf) (0) | 2016.06.16 |
usleep함수 사용. (0) | 2016.06.15 |