1. WWAN(Wireless WAN)
WWAN(Wireless wide area network)은 일반적으로 LTE, WiMAX 같은 넓은 망에 연결된 망을 말한다.
SoC에 USB로 LTE Module을 연결할 때 처음 알았으며, Linux에서도 Qualcomm Driver를 올려서 이를 해결했다.
Network 문제보다 오히려, USB와 다른 Serial 관련된 부분이 말썽이었다.
이에 관련되어 좀 더 공부할 필요가 있다면, Kernel 와 같이 분석해서 알아야 할 것 같다.
https://en.wikipedia.org/wiki/Wireless_WAN
글 혹은 그림의 출처가 문제있다면 수정 및 삭제하겠습니다. 우측의 Tags 와 검색기능을 이용하여 편하게 찾을 수 있습니다.
Please check buttons on the right like Tags and language options if can't read this blog (*mobile not support)
11/03/2017
11/02/2017
SVN 관련 설명 (추후 정리)
1. SVN 이란?
Subversion 의 약자로 그 이전의 CVS 처럼 Source의 Version을 관리해주는 형상관리 Tool이다.
SVN이 나온지도 오래되었지만, 그 이전의 CVS도 존재하니, 꽤 괜찮은 Version System이라고 해야겠다.
아주 오래전에 개발과 양산을 동시에 할때 Server 관리자 역할까지 한 적이 있었는데, 그때 SVN을 많이 사용했었지만,
현재 다시 SVN을 사용하게 될 줄은 몰랐다. 왜냐하면 요즘 거의 기본으로 GIT로 가는 줄 알았는데, 그리고,
더불어 GIT를 기반으로 하는 repo or yocto 관련 사항으로 되는 것으로 변하게되어 SVN을 안하게 될 줄 았았는데 다시 해야 하니 머리나쁜놈이 잘못이다.
이전에 SVN에 관련명령어도 다 까먹고 해서 이를 관련해서 다시 공부하고자 한다.
1.1 SVN 과 GIT의 비교
우선 현재 많이 사용되어지고 있는 GIT와 SVN의 기능 관리 방법에 있어 이를 비교 해보자.
Subversion 의 약자로 그 이전의 CVS 처럼 Source의 Version을 관리해주는 형상관리 Tool이다.
SVN이 나온지도 오래되었지만, 그 이전의 CVS도 존재하니, 꽤 괜찮은 Version System이라고 해야겠다.
아주 오래전에 개발과 양산을 동시에 할때 Server 관리자 역할까지 한 적이 있었는데, 그때 SVN을 많이 사용했었지만,
현재 다시 SVN을 사용하게 될 줄은 몰랐다. 왜냐하면 요즘 거의 기본으로 GIT로 가는 줄 알았는데, 그리고,
더불어 GIT를 기반으로 하는 repo or yocto 관련 사항으로 되는 것으로 변하게되어 SVN을 안하게 될 줄 았았는데 다시 해야 하니 머리나쁜놈이 잘못이다.
이전에 SVN에 관련명령어도 다 까먹고 해서 이를 관련해서 다시 공부하고자 한다.
1.1 SVN 과 GIT의 비교
우선 현재 많이 사용되어지고 있는 GIT와 SVN의 기능 관리 방법에 있어 이를 비교 해보자.
- SVN와 GIT 비교사항
- 공통사항은 SVN과 GIT 도 형상관리 프로그램이기에 소스관리가 목적이다.
- SVN과 GIT 둘다 동일하게 Branch 와 Tag가 가능하며, 이는 메인소스와 다르게 구성 가능하며 배포도 가능하다.
- SVN과 GIT 둘다 형상관리 목적이기에 수정된 소스 or 새로추가한 소스를 Commit를 한다
- DevOps와 같이 연동하여 개발이 가능하다
- SVN와 GIT 상이사항
GIT의 경우는 Client 내부에 Local Repository가 존재하여 속도 및 성능이 좋은 것 같다.
SVN와 GIT와 중간구조를 보면 SVN은 Local Repository 존재하지 않으며 Remote Repository로 Commit 내부로 직접 관리된다.
SVN의 경우 중앙에 SVN Server로 하나를 두고 주로 관리를 하지만 GIT의 경우 분산 GIT Server를 두고 관리가 처리를 진행을 하는 것 같다.
하지만 SVN도 구성을 보면 기본적으로 가능할 것 같기는 한 것 같다
http://www.allofsoftware.net/2011/10/svn-git.html
https://www.slideshare.net/einsub/svn-git-17386752
https://backlog.com/git-tutorial/kr/reference/git-svn.html
Android를 예를 보면 Repo를 보면 여러 Git Server와 연결하여 소스를 가져온다. 물론 위와 같이 소스를 구성하고 관리하는 것이 힘들 것이다.
왜냐하면 Base Repository를 두고 개발하는 팀이 있고, 특정 모듈을 개발하는 팀들이 존재할 경우, 이 소스를 받아 이를 넣고 페치하는 작업을 하는 것이다.
https://ahyuo79.blogspot.com/2014/07/repo.html
아래 내용은 참고만하자
http://flowerykeyboard.tistory.com/9
1.2 SVN의 기본구성
SVN은 위에서 설명했듯이 SVN Server가 존재하며 SVN Client로 존재하게된다.
SVN Client는SVN을 checkout을 하게 될 경우 SVN Server에서 관련 소스를 다운을 받고 이 소스안에는 .svn 저장되어 있다.
.svn 의 역할은 중요하며 소스 수정사항 및 만약 새로 소스를 추가한다면 이곳에서 조절을 하게된다.
1.3 SVN Tools
http://tortoisesvn.tigris.org/
2. SVN 의 명령어
SVN의 명령어들을 Server에서 사용하는 명령어와 Client에서 사용되는 명령어로 구분해보자
SVN-Server-URL : HTTP or SVN or SSH를 이용하며 이 주소는 SVN에서 정한다
PATH : Local Machine의 Path
[PATH] : PATH이지만 옵션
현재 작업 중인 SVN Version과 Remote SVN Version 이 다를 경우 즉 다른 SVN Client 사용자가 commit 하여
Remote SVN Server Version 이 변경될 경우에 대비하는 것이다.
https://stormaa.tistory.com/122
http://seedraker.tistory.com/28
http://tongtongj.tistory.com/22
http://tongtongj.tistory.com/18?category=607471
http://okkks.tistory.com/988
svn add xxx.c
svb update // 기존파일 수정
svn ci -m " message " driectory 설정가능
svn co svn://xxxxxxxxxx
http://seedraker.tistory.com/28
svn st -q // 수정한 파일 보기
http://zetawiki.com/wiki/Svn_status
~ : Link 파일문제
E145001
- GIT의 기본개념 참조
- SVN과 GIT의 차이점
http://www.allofsoftware.net/2011/10/svn-git.html
https://www.slideshare.net/einsub/svn-git-17386752
https://backlog.com/git-tutorial/kr/reference/git-svn.html
Android를 예를 보면 Repo를 보면 여러 Git Server와 연결하여 소스를 가져온다. 물론 위와 같이 소스를 구성하고 관리하는 것이 힘들 것이다.
왜냐하면 Base Repository를 두고 개발하는 팀이 있고, 특정 모듈을 개발하는 팀들이 존재할 경우, 이 소스를 받아 이를 넣고 페치하는 작업을 하는 것이다.
https://ahyuo79.blogspot.com/2014/07/repo.html
아래 내용은 참고만하자
http://flowerykeyboard.tistory.com/9
1.2 SVN의 기본구성
SVN은 위에서 설명했듯이 SVN Server가 존재하며 SVN Client로 존재하게된다.
SVN Client는SVN을 checkout을 하게 될 경우 SVN Server에서 관련 소스를 다운을 받고 이 소스안에는 .svn 저장되어 있다.
.svn 의 역할은 중요하며 소스 수정사항 및 만약 새로 소스를 추가한다면 이곳에서 조절을 하게된다.
1.3 SVN Tools
http://tortoisesvn.tigris.org/
2. SVN 의 명령어
SVN의 명령어들을 Server에서 사용하는 명령어와 Client에서 사용되는 명령어로 구분해보자
SVN-Server-URL : HTTP or SVN or SSH를 이용하며 이 주소는 SVN에서 정한다
PATH : Local Machine의 Path
[PATH] : PATH이지만 옵션
- Checkout
svn checkout SVN-Server-URL svn co SVN-Server-URL [PATH]
svn co svn://127.0.0.1 ~/test // 특정 PATH에 checkout을 하여 Client에 저장 svn co svn://127.0.0.1 // current directory Client에 저장
- Update
현재 작업 중인 SVN Version과 Remote SVN Version 이 다를 경우 즉 다른 SVN Client 사용자가 commit 하여
Remote SVN Server Version 이 변경될 경우에 대비하는 것이다.
svn update [PATH] svn up [PATH]
svn up // 현재 directory는 SVN Main 이며, 이를 Remote의 최신 Revision으로 Update svn up ~/test // PATH를 지정하여 Remote의 최신 Revision로 Update svn up -r1 // 옵션 revision 번호를 지정하여 특정 revision으로 update 가능
https://stormaa.tistory.com/122
http://seedraker.tistory.com/28
http://tongtongj.tistory.com/22
http://tongtongj.tistory.com/18?category=607471
http://okkks.tistory.com/988
- SVN admin 명령어
$ svnadmin create
- SVN Client 관련 명령어
svn add xxx.c
svb update // 기존파일 수정
svn ci -m " message " driectory 설정가능
svn co svn://xxxxxxxxxx
http://seedraker.tistory.com/28
svn st -q // 수정한 파일 보기
http://zetawiki.com/wiki/Svn_status
~ : Link 파일문제
E145001
10/28/2017
Raspberry-Pi3 Model B 구조 및 기본정보
1. Raspberry-Pi3 Model B기본구조 및 정보
Raspberry Pi3를 구입을 할지 말지를 몇번이나 망설였지만 최종적으로 구입하기로 드디어 결정보았다 이유는 단 하나 많은 무료 프로젝트들과 기능들
모델은 아래 구성으로 구입을 하기로 결정했으며, 추가로 카메라와 기타 액서서리를 구입하기로 했다.
문제는 집에 남아있는 골치 아픈 이 EVM들이며, 특히 ODROID의 경우는 좀 심각하다. 왜냐하면 이 비싼 eMMC부터 모든것을 다 구입을 해서 많이 가지고 놀았지만,
거의 NAS와 셋탑박스처럼 사용을 하다가, 그놈의 채굴기능 사용해보겠다고 백업도 하지를 않아, 이제 정리하고 버려야 할 것 같다.
아래와 같이 Element14.com 에서 쉽게 제공을 해주고 있다.
https://www.element14.com/community/docs/DOC-81294/l/raspberry-pi-3-model-b-with-1gb-of-ram-with-wifi-and-bluetooth-low-energy
1.1 추가 구매사항
나는 내부에 기본으로 USB-To Serial 포함이 되어있을 거라고 생각을 했는데, 아쉽게도 포함되어 있지 않았다.
그래서 찾아보지, USB2Serial을 별도로 구매하여, 연결을 해줘야 한다.
이를 연결하기 위해서 또, 케이블도 같이 구매를 해야하니 참고하기 바란다.
그리고, 이것을 연결해서 사용한다고 하면, 블루투스 기능을 사용하지 못한다고 한다.
추후 회로도 검토
가급적 GPIO 핀이 뚤려진 것으로 사야겠다.
1.2 Raspberry-Pi3 HW(schematic 정보)
아래의 회로도는 보면 알겠지만, 자세한 정보의 HW 존재하지 않는다.
다른 USB의 회로도는 확인 불가능하지만, 아래의 BCM2835문서를 확인을 해보면 OTG가 지원가능한 것 같다.
외부의 별도의 USB Phy를 두어 동작이 되며 Register를 보면 Charge와 Drive VBUS가 있는 걸로 보아 지원은 되지만 Raspberry PI에서는 지원되지 않는 것 같다.
(본래의 계획은 USB To Serial 을 사용할 생각을 염두해두고 있었는데 실망이 크다)
https://www.raspberrypi.org/documentation/hardware/raspberrypi/schematics/README.md
2. Raspberry-Pi3 OS 선택
아래의 사이트에 가면, 다양한 Raspberry-Pi3의 OS를 제공하는데 우선 나는 Ubuntu로 정했기때문에 이를 먼저하기로 했다.
https://www.raspberrypi.org/products/raspberry-pi-3-model-b/
2.1 RASPBIAN OS 설치
사용설명서
https://wikidocs.net/book/483
본인이 원하는 OS를 Download 받자
https://www.raspberrypi.org/downloads/
2.2 Ubuntu Mate 16.04.2 설치
일단 Raspberry-PI를 구입을 했으니, 기본이 되는 Ubuntu를 SD Disk에 설치를 해보자.
아래의 사이트에서 Ubuntu를 Image를 down받고 아래의 Win32DiskImager를 이용하여
Image 구워 기본 TEST를 진행해보자.
https://ubuntu-mate.org/raspberry-pi/
ubuntu-mate-16.04.2-desktop-armhf-raspberry-pi.img
3. How to write Raspberry OS Image
2016/05/sd-card-writer-window.html
상위 이미지가 제대로 Write가 되었고, SD Card를 다시 뺏다가 꽂으면, 아래와 같이 Raspberry-PI SD DISK 완성
상위처럼 Download 하여 Image Write 한 후 SD Card와 HDMI를 연결하면 기본동작이 된다.
더불어 필요한 것이 키보드와 마우스이지만 이는 나의 무선용으로 대채
처음부팅 후 언어설정/키보드설정/네트워크 설정 필수
Ubuntu Mate 16은 깔끔한 GUI와 윈도우와 거의 비슷하게 변경이 되어 사용하기가 쉬워졌다.
기본으로 설치되어 있는질 알았는데, 아래와 같이 설치해야한다.
3.1 WIFI/ Ethernet TEST
이상하게 WIFI 암호를 실수해서 넣으면, 잘동작이 안되며, 다시 넣으면, Reboot가 필요하다.
이부분은 좀 이상하며, Ethernet은 잘동작 확인했다.잘안되면, Reboot 한 후 확인하자
3.2 Bluetooth TEST
이 부분은 아직 미확인 이며, 상위 Serial을 사용하면 사용을 못한다고 하니 설정을 확인해야겠다.
3.3 Camera Module TEST
Raspberry Pi3를 구입을 할지 말지를 몇번이나 망설였지만 최종적으로 구입하기로 드디어 결정보았다 이유는 단 하나 많은 무료 프로젝트들과 기능들
모델은 아래 구성으로 구입을 하기로 결정했으며, 추가로 카메라와 기타 액서서리를 구입하기로 했다.
문제는 집에 남아있는 골치 아픈 이 EVM들이며, 특히 ODROID의 경우는 좀 심각하다. 왜냐하면 이 비싼 eMMC부터 모든것을 다 구입을 해서 많이 가지고 놀았지만,
거의 NAS와 셋탑박스처럼 사용을 하다가, 그놈의 채굴기능 사용해보겠다고 백업도 하지를 않아, 이제 정리하고 버려야 할 것 같다.
- 기본구성
- Model: Raspberry Pi 3 Model B V 1.2
- 2.5A MicroUSB-B Cable Adapter
- Heatsink
- 추가구성
- Camera: NoIR Camera V2
아래와 같이 Element14.com 에서 쉽게 제공을 해주고 있다.
https://www.element14.com/community/docs/DOC-81294/l/raspberry-pi-3-model-b-with-1gb-of-ram-with-wifi-and-bluetooth-low-energy
1.1 추가 구매사항
- RS232 관련사항
나는 내부에 기본으로 USB-To Serial 포함이 되어있을 거라고 생각을 했는데, 아쉽게도 포함되어 있지 않았다.
그래서 찾아보지, USB2Serial을 별도로 구매하여, 연결을 해줘야 한다.
이를 연결하기 위해서 또, 케이블도 같이 구매를 해야하니 참고하기 바란다.
그리고, 이것을 연결해서 사용한다고 하면, 블루투스 기능을 사용하지 못한다고 한다.
추후 회로도 검토
- USBToSerial Device
- 관련 Cable
- 보드 Case or 받침대
가급적 GPIO 핀이 뚤려진 것으로 사야겠다.
- HDMI Cable / SD Disk
1.2 Raspberry-Pi3 HW(schematic 정보)
아래의 회로도는 보면 알겠지만, 자세한 정보의 HW 존재하지 않는다.
- USB의 경우
다른 USB의 회로도는 확인 불가능하지만, 아래의 BCM2835문서를 확인을 해보면 OTG가 지원가능한 것 같다.
외부의 별도의 USB Phy를 두어 동작이 되며 Register를 보면 Charge와 Drive VBUS가 있는 걸로 보아 지원은 되지만 Raspberry PI에서는 지원되지 않는 것 같다.
(본래의 계획은 USB To Serial 을 사용할 생각을 염두해두고 있었는데 실망이 크다)
- 관련회로도
https://www.raspberrypi.org/documentation/hardware/raspberrypi/schematics/README.md
- BCM2835 문서
- USB OTG 기능 불가능 확인
2. Raspberry-Pi3 OS 선택
아래의 사이트에 가면, 다양한 Raspberry-Pi3의 OS를 제공하는데 우선 나는 Ubuntu로 정했기때문에 이를 먼저하기로 했다.
- SW 관련 정보
https://www.raspberrypi.org/products/raspberry-pi-3-model-b/
2.1 RASPBIAN OS 설치
사용설명서
https://wikidocs.net/book/483
본인이 원하는 OS를 Download 받자
https://www.raspberrypi.org/downloads/
2.2 Ubuntu Mate 16.04.2 설치
일단 Raspberry-PI를 구입을 했으니, 기본이 되는 Ubuntu를 SD Disk에 설치를 해보자.
아래의 사이트에서 Ubuntu를 Image를 down받고 아래의 Win32DiskImager를 이용하여
Image 구워 기본 TEST를 진행해보자.
- Download
https://ubuntu-mate.org/raspberry-pi/
ubuntu-mate-16.04.2-desktop-armhf-raspberry-pi.img
3. How to write Raspberry OS Image
- SD Card Writer (Win32DiskImager) 이용
2016/05/sd-card-writer-window.html
상위 이미지가 제대로 Write가 되었고, SD Card를 다시 뺏다가 꽂으면, 아래와 같이 Raspberry-PI SD DISK 완성
상위처럼 Download 하여 Image Write 한 후 SD Card와 HDMI를 연결하면 기본동작이 된다.
더불어 필요한 것이 키보드와 마우스이지만 이는 나의 무선용으로 대채
처음부팅 후 언어설정/키보드설정/네트워크 설정 필수
Ubuntu Mate 16은 깔끔한 GUI와 윈도우와 거의 비슷하게 변경이 되어 사용하기가 쉬워졌다.
- Raspberry 설정 파일 설치
기본으로 설치되어 있는질 알았는데, 아래와 같이 설치해야한다.
$ sudo apt-get install raspi-config
$ sudo raspi-config // Camera Interface Enable 변경
3.1 WIFI/ Ethernet TEST
이상하게 WIFI 암호를 실수해서 넣으면, 잘동작이 안되며, 다시 넣으면, Reboot가 필요하다.
이부분은 좀 이상하며, Ethernet은 잘동작 확인했다.잘안되면, Reboot 한 후 확인하자
3.2 Bluetooth TEST
이 부분은 아직 미확인 이며, 상위 Serial을 사용하면 사용을 못한다고 하니 설정을 확인해야겠다.
3.3 Camera Module TEST
기본으로 들어있는 cheese 라는 Camera 관련 Program 이 있는데, 이는 USB용 UVC 만 지원이 가능한 것 같다.
그리고, 이를 UV4L이라고 하는 것 같은데, 이 부분은 추후에 좀 더 자세히 알아보자.
http://www.knight-of-pi.org/installing-the-camera-module-for-ubuntu/
http://webnautes.tistory.com/929
https://blog.hypriot.com/getting-started-with-docker-and-linux-on-the-raspberry-pi/
4. NVR 및 Google Driver에 전송자료
https://blog.cedric.ws/opencv-simple-motion-detection-concave-hull-optimization
그리고, 이를 UV4L이라고 하는 것 같은데, 이 부분은 추후에 좀 더 자세히 알아보자.
import picamera cam = picamera.PiCamera() cam.capture('test.jpg') cam.close()
http://www.knight-of-pi.org/installing-the-camera-module-for-ubuntu/
http://webnautes.tistory.com/929
- Ubuntu Mate Upgrade
$ sudo apt-get update $ sudo apt-get upgrade
- OpenCV 3.0
- Raspberry 관련 Docker
Raspberry PI 기반에서 Docker 사용
https://blog.hypriot.com/getting-started-with-docker-on-your-arm-device/https://blog.hypriot.com/getting-started-with-docker-and-linux-on-the-raspberry-pi/
4. NVR 및 Google Driver에 전송자료
- Raspberry PI를 이용한 NVR/DVR
- Python을 이용하여 AVI Gdrive upload
- How To install OPEN CV
- Open CV의 활용
- Motion detection
https://blog.cedric.ws/opencv-simple-motion-detection-concave-hull-optimization
10/26/2017
Linux Kernel 관련 Manual
Linux Kernel 관련자료
https://lwn.net/Kernel/LDD3/
https://wiki.kldp.org/KoreanDoc/html/EmbeddedKernel-KLDP/
https://lwn.net/Search/
https://docs.oracle.com/cd/E37670_01/E52461/html/ol_migdd.html
https://www.kernel.org/doc/html/v4.9/driver-api/index.html#
https://www.kernel.org/doc/html/v4.9/media/v4l-drivers/index.html#
https://www.kernel.org/doc/html/v4.9/media/media_kapi.html
https://www.kernel.org/doc/html/v4.9/80211/index.html
https://docs.oracle.com/cd/E37670_01/E52461/html/ch06s07.html
https://kldp.org/node/91044
https://www.kernel.org/
- Linux Device Drivers, Third Edition
- Chapter 1: An Introduction to Device Drivers
- Chapter 2: Building and Running Modules
- Chapter 3: Char Drivers
- Chapter 4: Debugging Techniques
- Chapter 5: Concurrency and Race Conditions
- Chapter 6: Advanced Char Driver Operations
- Chapter 7: Time, Delays, and Deferred Work
- Chapter 8: Allocating Memory
- Chapter 9: Communicating with Hardware
- Chapter 10: Interrupt Handling
- Chapter 11: Data Types in the Kernel
- Chapter 12: PCI Drivers
- Chapter 13: USB Drivers
- Chapter 14: The Linux Device Model
- Chapter 15: Memory Mapping and DMA
- Chapter 16: Block Drivers
- Chapter 17: Network Drivers
- Chapter 18: TTY Drivers
https://lwn.net/Kernel/LDD3/
- Kernel 분석의 한글자료
https://wiki.kldp.org/KoreanDoc/html/EmbeddedKernel-KLDP/
- Linux Kernel에 관련된 자료들
https://lwn.net/Search/
- Linux 배포관련 리스트
- Migrating/Porting Device Drivers
- Considerations for Porting Device Drivers
- Reading and Writing Data from or to User Space
- About Handling Access to Shared Resources
- About the Bus Model
- About Character Device Drivers
- About Block Device Drivers
- About Network Device Drivers
- About USB Device Drivers
- About the Sysfs File System
- Loading Device Drivers as Kernel Modules
https://docs.oracle.com/cd/E37670_01/E52461/html/ol_migdd.html
- Linux Kernel API
https://www.kernel.org/doc/html/v4.9/driver-api/index.html#
- Video4Linux Doc
https://www.kernel.org/doc/html/v4.9/media/v4l-drivers/index.html#
https://www.kernel.org/doc/html/v4.9/media/media_kapi.html
- Network 802.11 Driver API
https://www.kernel.org/doc/html/v4.9/80211/index.html
- Network drivers 관련자료
https://docs.oracle.com/cd/E37670_01/E52461/html/ch06s07.html
https://kldp.org/node/91044
- Linux Kernel Source
https://www.kernel.org/
10/12/2017
RS485 Interface 기본정리
1. RS485 Interface
RS485를 직접 다루어본 기억은 너무 오래전이라서 아래의 링크로만 간단히 정리하겠다.
나의 경우는 DVR 제품양산 , 즉 공장의 QC 관련프로그램을 작성할 때 와 Camera 제어 목적으로 사용했던 걸로 기억하고 있다.
이외에 거의 사용한 경우는 드문 것 같다. 대부분이 간단한 제어와 데이터 전송 목적으로 사용했다.
각자 회사마다 독자적인 RS485의 Protocol 만들어서 구현했던 걸로 기억하는데, 왜냐하면, 타 회사와 호환이 되면 안되기 때문이다.
사실 기억이 너무 가물가물하다.
- RS232/RS422/RS485 관련 Serial 통신개념
RS232/ RS422/ RS485 통신들의 비교 한글로 설명이 너무 잘되어있어 링크연결.
https://m.blog.naver.com/PostView.nhn?blogId=jmsin30&logNo=220264593087&proxyReferer=https%3A%2F%2Fwww.google.co.kr%2F - RS485 관련기본정리
RS485의 장점은 우선 Bus구조가 가능하며, Differential 을 이용하여 원거리 데이타 전송가능
그래서 Voltage Level 이 상당히 높다
- RS485 2선 및 4선 전송 관련내용
RS485의 2가지로 지원하며, 위에서 언급 했듯이 Differnetial로 전송하기 때문에 2Pin or 4Pin 구조이다.
- Full Duplex(4선) : 4 Pin TX RX 분리
- Half Duplex(2선): 2 Pin TX/RX 공용
9/17/2017
Docker Jenkins 설치 (추후 시간있을 경우, 다시 작성)
1. Docker Jenkins 설치
일반적인 Jenkins 설치
https://jenkins.io/
https://jenkins.io/doc/pipeline/tour/getting-started/
https://pkg.jenkins.io/debian/
Docker Jenkins 설치
https://docs.docker.com/samples/library/jenkins/
https://jenkins.io/doc/book/installing/
https://hub.docker.com/_/jenkins/
Embedded Jenkins
https://jenkins.io/solutions/embedded/
Jenkins and Slack 설치
https://jojoldu.tistory.com/139
Java Build
https://jenkins.io/doc/tutorials/build-a-java-app-with-maven/
DockerFile 기반의 Jenkins 이용
https://medium.com/@NovaWoo/docker-%EC%99%80-jenkins-%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%9C-%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-ci-1-9510178a525f
https://jojoldu.tistory.com/139
Docker Volumes 원리 (추후 자세한 설명)
https://stackoverflow.com/questions/46703596/jenkins-error-in-mkdir-command
https://www.notion.so/Jenkins-Dockerfile-37407a3b5c6446b68e18f3412d3dbf06
일반적인 Jenkins 설치
https://jenkins.io/
https://jenkins.io/doc/pipeline/tour/getting-started/
https://pkg.jenkins.io/debian/
Docker Jenkins 설치
https://docs.docker.com/samples/library/jenkins/
https://jenkins.io/doc/book/installing/
https://hub.docker.com/_/jenkins/
Embedded Jenkins
https://jenkins.io/solutions/embedded/
Jenkins and Slack 설치
https://jojoldu.tistory.com/139
Java Build
https://jenkins.io/doc/tutorials/build-a-java-app-with-maven/
DockerFile 기반의 Jenkins 이용
https://medium.com/@NovaWoo/docker-%EC%99%80-jenkins-%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%9C-%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-ci-1-9510178a525f
https://jojoldu.tistory.com/139
Docker Volumes 원리 (추후 자세한 설명)
docker 이용시, 각 command 이용할 경우, 동작되는 방식
https://docs.docker.com/storage/volumes/
https://docs.docker.com/storage/bind-mounts/
https://docs.docker.com/storage/tmpfs/
Docker 기본동작 (1번에 복사하여 설명)
https://docs.docker.com/get-started/
2. Jenkins 설정
Docker 기반으로 쉽게 Jenkins를 동작
http://192.168.1.100:50000
http://192.168.1.100:8080
http://www.itworld.co.kr/news/107527
http://www.nextree.co.kr/ciwa-execute-shelleul-iyonghan-jadongbaepo-buteo-seobeo-silhaengggaji/
https://github.com/softwaresaved/build_and_test_examples/tree/master/jenkins
2.1 기타 문제사항
https://docs.docker.com/storage/volumes/
https://docs.docker.com/storage/bind-mounts/
https://docs.docker.com/storage/tmpfs/
Docker 기본동작 (1번에 복사하여 설명)
https://docs.docker.com/get-started/
$ sudo docker run -d -name jenkins -p 8080:8080 -p 50000:50000 jenkins or $ sudo docker run -p 8080:8080 -p 50000:50000 -v /your/home:/var/jenkins_home jenkins or $ sudo docker run -p 8080:8080 -p 50000:50000 -v /var/jenkins_home jenkins
$ cd $HOME
$ mkdir dockers dockers/jenkins_home // /var/jenkins_home 이곳에 저장
$ sudo docker run -p 8080:8080 -p 50000:50000 -v $HOME/dockers/jenkins_home:/var/jenkins_home jenkins
$ sudo docker run -d -p 8080:8080 -p 50000:50000 -v $HOME/dockers/jenkins_home:/var/jenkins_home jenkins
$ sudo docker run --rm -p 8080:8080 -p 50000:50000 -v $HOME/dockers/jenkins_home:/var/jenkins_home jenkins
$ sudo docker run -d --rm -p 8080:8080 -p 50000:50000 -v $HOME/dockers/jenkins_home:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock jenkins
$ cat $HOME/dockers/jenkins_home/secrets/initialAdminPassword
45ece99138e843b599c467b29ddd081e
$ sudo docker ps // 작동 중인 Container/Image 상태보기 $ sudo docker stop // 동작중 Container 정지 $ sudo docker rm // Container 제거 $ sudo docker rmi // Image 제거
$ sudo docker images // 설치된 Image들 전체보기 $ sudo docker stats // Container 상태확인 $ sudo docker logs // Container Log 파악
2. Jenkins 설정
Docker 기반으로 쉽게 Jenkins를 동작
http://192.168.1.100:50000
http://192.168.1.100:8080
............................ ************************************************************* ************************************************************* ************************************************************* Jenkins initial setup is required. An admin user has been created and a password generated. Please use the following password to proceed to installation: 499ba15a6e3d4099a9a457b199281c63 // 이 Password를 복사하여 8080 Port에서 인증 This may also be found at: /var/jenkins_home/secrets/initialAdminPassword ......................
http://www.itworld.co.kr/news/107527
http://www.nextree.co.kr/ciwa-execute-shelleul-iyonghan-jadongbaepo-buteo-seobeo-silhaengggaji/
https://github.com/softwaresaved/build_and_test_examples/tree/master/jenkins
2.1 기타 문제사항
- mkdir 에러
https://stackoverflow.com/questions/46703596/jenkins-error-in-mkdir-command
sudo vi /etc/group jenkins:x:130:jhleehttps://www.facebook.com/groups/712393792190261/
https://www.notion.so/Jenkins-Dockerfile-37407a3b5c6446b68e18f3412d3dbf06
일단 기본적으로 동작을 확인했으나, 추후 시간이 다시 있을 경우, 블로그를 업데이트 진행
관련링크만,!!!
8/12/2017
CCSv6,7 TI-BIOS시 ROV 기능 소개
ROV(Runtime Object View)
CCSv7에서 부터 지원이 가능한 것 같으며, TI-RTOS인 BIOS를 사용할 경우 지원이 가능한 것 같다.
아직 이 기능을 사용해보지 못했으며, 만약 다시 TI의 BIOS를 이용하게될 경우가 있다면 추후 이용해보도록 하겠다.
정확한 기능은 A.out 기반으로 사용되는 실행파일(Object File)을 분석하고 각 Stack Size 및 Heap size를 측정해주는 것 같다.
다만 ELF도 되는지는 아직 확인 안했음.
동작방식은 Symbol Table 기반으로 분석하여 각각 분석을 해주는 것 같은데, 카테고리로 나누어서 분석을 해줘
나중에 사용한다면 유용할 것 같다.
https://www.youtube.com/watch?v=NV0gNNavmUw&t=36s
https://www.youtube.com/watch?v=MI_2iM2WbU8&t=146
아래의 동영상을 보면 최적화를 할때 반드시 필요할 것 같다.
TI-TOOLS 관련내용
https://www.youtube.com/watch?v=_F2bVVqaeFk
CCSv7에서 부터 지원이 가능한 것 같으며, TI-RTOS인 BIOS를 사용할 경우 지원이 가능한 것 같다.
아직 이 기능을 사용해보지 못했으며, 만약 다시 TI의 BIOS를 이용하게될 경우가 있다면 추후 이용해보도록 하겠다.
- CCS의 JTAG을 이용하여 Connection
- CCS Debug Mode 로 진입
- Tools->RTOS Object View(ROV) 선택
다만 ELF도 되는지는 아직 확인 안했음.
동작방식은 Symbol Table 기반으로 분석하여 각각 분석을 해주는 것 같은데, 카테고리로 나누어서 분석을 해줘
나중에 사용한다면 유용할 것 같다.
https://www.youtube.com/watch?v=NV0gNNavmUw&t=36s
https://www.youtube.com/watch?v=MI_2iM2WbU8&t=146
아래의 동영상을 보면 최적화를 할때 반드시 필요할 것 같다.
TI-TOOLS 관련내용
https://www.youtube.com/watch?v=_F2bVVqaeFk
8/11/2017
CCSv7 설치 및 호환성 (MSP430)
CCS v7 Download
http://www.ti.com/tool/ccstudio
CCS version Download
http://processors.wiki.ti.com/index.php/Download_CCS
CCS v7 Setting up MSP430
https://www.youtube.com/watch?v=acNqh_2GmpQ&t=125
CCS How to Install
http://processors.wiki.ti.com/index.php/Compiler_Installation_and_Selection
http://www.ti.com/tool/ccstudio
CCS version Download
http://processors.wiki.ti.com/index.php/Download_CCS
CCS v7 Setting up MSP430
https://www.youtube.com/watch?v=acNqh_2GmpQ&t=125
CCS How to Install
http://processors.wiki.ti.com/index.php/Compiler_Installation_and_Selection
8/10/2017
CCS MSP430의 Breakpoint 기능 및 Graph 기능
1. MSP430 JTAG의 고급 사용
http://www.ti.com/lit/ug/slau157ao/slau157ao.pdf
아래의 기능을 MSP430으로 한정 지어서 생각할 필요는 없으며, 다른 TI Chip에게도 해당이 되는 일이기에 같이 설명한다.
1.1 HW Breakpoint의 작동원리
기존에 설명했듯이 MSP430의 Debug는 JTAG이 지원을 하며, HW Breakpointer를 지원하 디버깅이 쉽게 가능하다.
물론 Breakpointer 기능이 SW로 구현이 가능하며, 이는 또한 Software debugger 필요하겠지만, 여기서 설명하는 것은 JTAG을 이용한 HW breakpoint 기능이다.
하지만 좀 더 많은 기능을 사용해보기 위해서 아래와 같이 BreakPointer의 원리와 구성을 알아보자.
기본적으로 동작원리는 얼추 비슷하다. 심볼테이블에서에 실제 주소를 찾아 이 부분이 Cache에 들어올때
확인하여 그부분을 멈추는 것이다.
1.2 Breakpoint 세부설정
상위에서 기본동작 원리를 알았으니, 이제 아래에서 세부적으로 더 설정이 가능한지 알아보자.
Breakpoint에는 Properties라는 설정이 있는데, 이는 세부적인 Control을 가능하게 만들어준다.
- Location: 현재 사용중인 a.out format
- Access :
Skip Count: 설정
Current Count 설정
Instruction Fetch 설정할 경우
Action :
http://www.ti.com/lit/an/slaa393f/slaa393f.pdf
https://drive.google.com/open?id=0B_ehveuLi8MVcVRwa3ZpNEZGSGc
2. HW Breakpoint 응용
아래와 같이 Register->View Memory at Address를 하면 쉽게 아래와 같이 주소를 알수 있으며,
이것을 상위 BreakPoint와 조합을 이용하여 사용이 가능하다.
본인이 원하는 Breakpoint를 별도로 설정하고 Register를 감시하자.
Watchpoint 를 사용해도 좋다.
아래 보면, Breakpointer list에 등록이 되어 있고 사용중인 지 항상확인해야 한다.
(Local 변수도 가능하지만 제한적으로 가능)
쉽게 등록하는 방법은 Watchpoint로 등록하는 방법이고, 직접 여기에 전역변수를 본인이 직접 넣어도 무방하다.
다만 여기에는 Symboltable 기반으로 작동이 되는것 같다.
Breakpointer와 항상 사용하다보면 아래와 같이 이부분을 변경하며 Debug하게 된다.
간단한 사용의 예를 아래와 같이 정리한다.
아래는 txmsg는 배열선언 했으며, 이고, txhead는 일반 value 선언했다.
이를 이용하여 아래와 같이 C 프로그래밍처럼 배열참조가 가능하다.
각 Value에 우측 마우스를 이용하여 다음과 같은 메뉴가 나오며, 이를 이용하여 좀 더 나은 디버깅을 해보자.
2.1 전역변수 Graph 설정
상위에서 HW BreakPointer의 설정을 이제 Graph에 적용을 해보자.
아래와 같이 설정하면, Breakpointer는 멈추지 않고 Graph를 Refresh 하고 그려줄 것이다.
http://processors.wiki.ti.com/index.php/Data_Breakpoint/Watchpoint
http://processors.wiki.ti.com/index.php/Breakpoint
https://www.youtube.com/watch?v=-iGnh0_9YxE
- MSP430 CCS Manual
http://www.ti.com/lit/ug/slau157ao/slau157ao.pdf
아래의 기능을 MSP430으로 한정 지어서 생각할 필요는 없으며, 다른 TI Chip에게도 해당이 되는 일이기에 같이 설명한다.
1.1 HW Breakpoint의 작동원리
기존에 설명했듯이 MSP430의 Debug는 JTAG이 지원을 하며, HW Breakpointer를 지원하 디버깅이 쉽게 가능하다.
물론 Breakpointer 기능이 SW로 구현이 가능하며, 이는 또한 Software debugger 필요하겠지만, 여기서 설명하는 것은 JTAG을 이용한 HW breakpoint 기능이다.
하지만 좀 더 많은 기능을 사용해보기 위해서 아래와 같이 BreakPointer의 원리와 구성을 알아보자.
- HW BreakPoint의 기본동작
기본적으로 동작원리는 얼추 비슷하다. 심볼테이블에서에 실제 주소를 찾아 이 부분이 Cache에 들어올때
확인하여 그부분을 멈추는 것이다.
1.2 Breakpoint 세부설정
상위에서 기본동작 원리를 알았으니, 이제 아래에서 세부적으로 더 설정이 가능한지 알아보자.
Breakpoint에는 Properties라는 설정이 있는데, 이는 세부적인 Control을 가능하게 만들어준다.
- Breakpoint Properties 설정
- 기본설정구성
- Location: 현재 사용중인 a.out format
- Access :
- instruction fetch: fetch 할 때 비교 하여 멈춤
Skip Count: 설정
Current Count 설정
Instruction Fetch 설정할 경우
Action :
- Remain Halted : Trigger 의 조건이 맞을 경우, 멈추는 것
- Refresh All Windows: Trigger의 조건이 맞을 경우, 현재 CCS의 Window를 Refresh
- Breakpoint 관련 Manual
다양한 Breakpoint의 기능을 사용하고 싶다면 아래의 글을 읽어보도록 하자.
https://drive.google.com/open?id=0B_ehveuLi8MVcVRwa3ZpNEZGSGc
2. HW Breakpoint 응용
아래와 같이 Register->View Memory at Address를 하면 쉽게 아래와 같이 주소를 알수 있으며,
이것을 상위 BreakPoint와 조합을 이용하여 사용이 가능하다.
본인이 원하는 Breakpoint를 별도로 설정하고 Register를 감시하자.
Watchpoint 를 사용해도 좋다.
아래 보면, Breakpointer list에 등록이 되어 있고 사용중인 지 항상확인해야 한다.
- View->Expressions
(Local 변수도 가능하지만 제한적으로 가능)
쉽게 등록하는 방법은 Watchpoint로 등록하는 방법이고, 직접 여기에 전역변수를 본인이 직접 넣어도 무방하다.
다만 여기에는 Symboltable 기반으로 작동이 되는것 같다.
Breakpointer와 항상 사용하다보면 아래와 같이 이부분을 변경하며 Debug하게 된다.
간단한 사용의 예를 아래와 같이 정리한다.
아래는 txmsg는 배열선언 했으며, 이고, txhead는 일반 value 선언했다.
이를 이용하여 아래와 같이 C 프로그래밍처럼 배열참조가 가능하다.
각 Value에 우측 마우스를 이용하여 다음과 같은 메뉴가 나오며, 이를 이용하여 좀 더 나은 디버깅을 해보자.
- View Memory : Memory 창에서 전역변수의 주소를 볼수가 있다.
- View Memory at Address : 전역변수의 값의 주소를 볼수가 있다.
- Number Format: Value의 Format을 변경한다. (중요)
- Graph는 추후 설명
2.1 전역변수 Graph 설정
상위에서 HW BreakPointer의 설정을 이제 Graph에 적용을 해보자.
아래와 같이 설정하면, Breakpointer는 멈추지 않고 Graph를 Refresh 하고 그려줄 것이다.
- Breakpointer Properties -> Action -> Refresh All Windows 설정
- Expression 창에서 전역변수를 등록
- 전역변수 우클릭으로 Graph 창 설정
or
- Tools->Single Time 설정
- Gprah Properties 설정 ( Start Address 설정 중요 )
아래의 기능은 아이콘 형태로 제공되므로 잘 찾아보자.
- Graph Properties를 설정
- Start Address : 전역변수 주소
- Sampling Rate : 본인은 원하는 Rate
- Grid Style : 본인인 원하는 설정
- Time Display Unit : Sample or ms or us
- 추가적인 설정
- Reset Graph: 그래프를 처음부터 보고 싶다고 한다면
- (Disable/Enable) Continuous Refresh : 지속적으로 보고 싶다고 한다면.
- Refresh on Halt : Halt일 경우 Refresh 기능
http://processors.wiki.ti.com/index.php/Data_Breakpoint/Watchpoint
http://processors.wiki.ti.com/index.php/Breakpoint
https://www.youtube.com/watch?v=-iGnh0_9YxE
8/01/2017
Ubuntu에서 USB-Serial을 설정
USB Serial은 전에도 설명했듯이 CDC-ACM을 이용하여 Descriptor을 이용하여 사용한다.
대부분 사람들이 Linux를 Virtual Box를 통해서 사용하기 때문에 그 기준으로 설명한다.
현재 usb device 상황 파악
참고사항
http://belitino.tistory.com/140
Minicom 사용법
https://help.ubuntu.com/community/Minicom
http://tldp.org/HOWTO/Serial-Programming-HOWTO/
https://wiki.kldp.org/wiki.php/Serial-Programming-HOWTO
Window도 이 Driver를 제공하지만, Linux도 이 Driver를 제공을 하고 있기에 아래와 같이
간단히 설명한다.
대부분 사람들이 Linux를 Virtual Box를 통해서 사용하기 때문에 그 기준으로 설명한다.
- Virtual Box 설정
- 설정->USB->장치필터 에 USB Serial 등록
- Ubuntu xxx 설정 및 확인사항
- Ubuntu 에서 lsusb에서 USB Vendor ID와 Product ID 확인
- sudo modprobe usbserial vendor=xxx product=xxxx 로 등록
현재 usb device 상황 파악
jhlee@jhlee-VirtualBox:~$ lsusb Bus 002 Device 002: ID 80ee:0021 VirtualBox USB Tablet Bus 002 Device 003: ID 0451:16b6 Texas Instruments, Inc. Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub jhlee@jhlee-VirtualBox:~$ lsusb -t /: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ohci-pci/12p, 12M |__ Port 1: Dev 2, If 0, Class=HID, Driver=usbhid, 12M |__ Port 2: Dev 3, If 0, Class=comm., Driver=cdc_acm, 12M |__ Port 2: Dev 3, If 1, Class=data, Driver=cdc_acm, 12M /: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/12p, 480M
jhlee@jhlee-VirtualBox:~$ sudo modprobe usbserial vendor=0x0451 product=0x16b6 jhlee@jhlee-VirtualBox:~$ dmesg [ 6.721716] cdc_acm 2-2:1.0: This device cannot do calls on its own. It is not a modem. [ 6.721805] cdc_acm 2-2:1.0: ttyACM0: USB ACM device [ 6.742603] usbcore: registered new interface driver cdc_acm [ 6.742605] cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters ..... [ 87.360071] usbcore: registered new interface driver usbserial [ 87.360707] usbcore: registered new interface driver usbserial_generic [ 87.360953] usbserial: USB Serial support registered for generic
- Ubuntu에서 minicom 설정 (Serial Program)
jhlee@jhlee-VirtualBox:~$ dmesg | grep tty [ 3.809474] console [tty0] enabled [ 6.721805] cdc_acm 2-2:1.0: ttyACM0: USB ACM device jhlee@jhlee-VirtualBox:~$ sudo minicom -s +-----[configuration]------+ | Filenames and paths | | File transfer protocols | | Serial port setup | | Modem and dialing | | Screen and keyboard | | Save setup as dfl | | Save setup as.. | | Exit | | Exit from Minicom | +--------------------------+ Serial port setup | A - Serial Device : /dev/ttyACM0 Save setup as dfl Exit
참고사항
http://belitino.tistory.com/140
Minicom 사용법
https://help.ubuntu.com/community/Minicom
- Serial Program 관련내용
http://tldp.org/HOWTO/Serial-Programming-HOWTO/
https://wiki.kldp.org/wiki.php/Serial-Programming-HOWTO
7/25/2017
LPC Cameras / LPR Camera 의 차이 및 기능
최근 Camera 관련기능을 알아보다가 LPC/LPR 관련 Camera까지 알아보게 되었으며, 간단히 개념이해만 하고 추후 개발할일 있다면 그때 자세히 기술한다.
License Plate은 자동차의 번호판을 말하며, 이를 번호판을 Capture 하여 번호를 인식가능한 Camera를 아래와 같이 분류해서 말한다.
정확히 말하면, OCR 기능까지 들어간 것이 LPR Camera 기능이 되겠다.
https://www.securitycameraking.com/securityinfo/license-plate-capture-camera-vs-license-plate-recognition-camera/
License Plate은 자동차의 번호판을 말하며, 이를 번호판을 Capture 하여 번호를 인식가능한 Camera를 아래와 같이 분류해서 말한다.
정확히 말하면, OCR 기능까지 들어간 것이 LPR Camera 기능이 되겠다.
- License Plate Capture / LPC Cameras
- License Plate Recognition / LPR Camera
https://www.securitycameraking.com/securityinfo/license-plate-capture-camera-vs-license-plate-recognition-camera/
7/24/2017
Camera 관련용어 (HLC,BLC,WDR)
1. Camera 센서
카메라 센서는 CCD(charge coupled device) 와 CMOS (complementary metal oxide semiconductor) 있으며 정확한 차이를 알고자 한다.
카메라 센서의 목적은 빛을 전하로 변화하여 전자신호로 처리를 진행하는 기능을 처리한다.
카메라 센서의 감도 (Analog Gain)
https://blog.envision.co.kr/5?category=539349
https://blog.envision.co.kr/9?category=539349
https://www.edmundoptics.com/resources/application-notes/imaging/basics-of-digital-camera-settings-for-improved-imaging-results/
1.1 CCD 센서
CCD센서는 아날로그 카메라에서 고품질로 사용된다고 하며, 아래의 WDR기술에서 사용이 된다고 한다.
하지만 모든 용도에서 적합하지 않다고 한다. CCD센서의 경우 CMOS에 비해 노이즈가 적어 더 선명한 이미지를 생성이 가능하다고 하여 품질이 우수하다고 한다.
1.2 CMOS 센서
CMOS vs CCD
https://www.cctvcameraworld.com/all-about-ccd-images-and-cmos-chips.html
http://www.teledynedalsa.com/en/learn/knowledge-center/ccd-vs-cmos/
https://blog.udemy.com/ccd-vs-cmos/
https://www.techhive.com/article/246931/security-cameras/cmos-is-winning-the-camera-sensor-battle-and-heres-why.html
2. Camera 관련 보정기술 용어 정리
Camera 관련정보 수집하기 위해 아래와 같이 관련된 용어 및 보정기술을 간단히 정리하고자한다.
Camera에 관련된 기술이 상당히 많은 것 같으며, 아직 정확한 이해를 하지 못하고 있어 관련사항들을 기술구현방법을 간단히 기술한다.
우선 상위 기술을 알기전에 Camera의 센서부터 대충알고 넘어가자, 지금까지 CMOS센서밖에 써보지를 못해 대충만 들어 알고 있지
미세한 차이는 정확하게 알지를 못하겠다.
2.1 HLC( High Light Compensation)
HLC의 필요성은 예를들면 야간의 강한 빛(spot light, head light)에 의해 과노출되었을 경우 영상의 전체가
강한 빛으로 인해 눈이 부시는 효과가 발생하는데 이런부분을 없애주고자 하는 보정기술이다.
주로 LPC(License Plate Capture)에서 사용되는 기술이라고 한다.
백번의 말보다 한번의 그림을 보고 판단하는 것이 이해하기가 편하다.
주로 발생문제를 살펴보면 주의에 비해 상대적으로 어두운곳에서 물체에서 갑자기 빛의양이 많이 들어와 발생하는 문제라는 것을 알수 있다
일반적으로 야간카메라는 Black & White모드로 사용을 한다고 하지만, 아래를 보면 Color 와 Black & White Version을 비교해보면
Black & white가 더 눈부심을 알수가 있다.
일단 기본방법은 노출시간을 줄여 광량을 줄이는 방법으로 가야 할 것 같지만 , 너무 줄이며 배경도 같이 어두워지는 문제발생하기때문에 적정량으로 줄이는 것이 관건인 것 같다.
이와 관련된 Video Filter와 정확한 이해가 필요한 것 같은데 이부분은 자세히 알아봐야겠다
HLC와 LPC 관련 기술내용설명
https://ipvm.com/reports/headlights-harm-video-surveillance
Hikvision의 HLC 기능설명
http://www.hikvision.com/europe/Press-Release-details_90_i3270.html
http://www.hkvstar.com/technology-news/hlc-highlight-compensation-vs-blc-backlight-compensation.html
이 부분은 LPC/LPR에서도 중요한 문제로 생각이 되는 부분이다.
2.2 BLC (Back Light Compensation)
카메라 입장에서 보면 앞의 물체와 뒷물체 혹은 배경에서 자연채광이 모두 표시가 되기때문에, 앞 물체가 상대적으로 어둡게 보이는 현상이다.
주로 사용되는 곳은 사람을 인식하는 곳에서 많이 사용이 된다고 한다. BLC의 경우 앞물체와 뒷배경 노출을 최적화하는 DSP에서 제공하는 기능이라고 한다.
보정방법은 각 영역마다 다른 노출을 사용한다고 하는데 주요 포커스가 되는 부분은 정상적이고 사용가능한 빛을 유지하고
극단적으로 높거나 낮은 빛의 영역을 수정한다고 한다.
어떻게 하는지는 좀 더 자세히 알아봐야겠다.
2.3 WDR(Wide Dynamic Range)
BLC에서 발생하는 한계점을 좀 더 극복하고자 나온기술이라고 하며 이부분은 BLC와 마찬가지로 주로 사무실의 창문과 같이 자연채광이 많은 곳에서 사용된다.
상위에서 설명한 BLC와 비슷하지만, 더 발전된 기술이 WDR이라고 한다.
WDR에서는 이미지의 가장 밝은 요소와 가장 어두운 요소간의 비율 나타낸다고 한다.
WDR의 카메라의 경우 두 개의 CCD(Charge Coupled Device) 장착된 센서를 제공한다고 하며, 이 센서 중 하나는 고속용이고 다른하나는 저속 이미지/비디오용이라고 한다.
이 두개의 이미지는 함께 작업하며, 장면을 여러번 스캔하여 작업한다고 한다.
개인 생각으로는 노출시간이 다르게 작동하니 두개의 이미지 DSP를 이용하여 최적화하는 것 같다.
2.4 HDRI(High Dynamic Range Imaging)
개인생각으로는 WDR과 유사한 개념과 같으며, 서로 다른 밝기 노출시간을 주어 이를 점차 개선해나가는 것 같다.
아래의 라온피플에서는 DSP가 아닌, OpenCV를 이용하여 여러 Image를 보정해나가는데,
이를 고속을 하면 WDR이 되는 것 같다.
https://laonple.blog.me/220830099505
카메라 센서는 CCD(charge coupled device) 와 CMOS (complementary metal oxide semiconductor) 있으며 정확한 차이를 알고자 한다.
카메라 센서의 목적은 빛을 전하로 변화하여 전자신호로 처리를 진행하는 기능을 처리한다.
카메라 센서의 감도 (Analog Gain)
https://blog.envision.co.kr/5?category=539349
https://blog.envision.co.kr/9?category=539349
https://www.edmundoptics.com/resources/application-notes/imaging/basics-of-digital-camera-settings-for-improved-imaging-results/
1.1 CCD 센서
CCD센서는 아날로그 카메라에서 고품질로 사용된다고 하며, 아래의 WDR기술에서 사용이 된다고 한다.
- 장점
하지만 모든 용도에서 적합하지 않다고 한다. CCD센서의 경우 CMOS에 비해 노이즈가 적어 더 선명한 이미지를 생성이 가능하다고 하여 품질이 우수하다고 한다.
- 단점
1.2 CMOS 센서
- 장점
- 단점
CMOS vs CCD
https://www.cctvcameraworld.com/all-about-ccd-images-and-cmos-chips.html
http://www.teledynedalsa.com/en/learn/knowledge-center/ccd-vs-cmos/
https://blog.udemy.com/ccd-vs-cmos/
https://www.techhive.com/article/246931/security-cameras/cmos-is-winning-the-camera-sensor-battle-and-heres-why.html
2. Camera 관련 보정기술 용어 정리
Camera 관련정보 수집하기 위해 아래와 같이 관련된 용어 및 보정기술을 간단히 정리하고자한다.
Camera에 관련된 기술이 상당히 많은 것 같으며, 아직 정확한 이해를 하지 못하고 있어 관련사항들을 기술구현방법을 간단히 기술한다.
- HLC(High Light Compensation)
- BLC (Back Light Compensation)
- WDR(Wide Dynamic Range)
- HLC/BLC/WDR 의 용어설명
우선 상위 기술을 알기전에 Camera의 센서부터 대충알고 넘어가자, 지금까지 CMOS센서밖에 써보지를 못해 대충만 들어 알고 있지
미세한 차이는 정확하게 알지를 못하겠다.
2.1 HLC( High Light Compensation)
HLC의 필요성은 예를들면 야간의 강한 빛(spot light, head light)에 의해 과노출되었을 경우 영상의 전체가
강한 빛으로 인해 눈이 부시는 효과가 발생하는데 이런부분을 없애주고자 하는 보정기술이다.
주로 LPC(License Plate Capture)에서 사용되는 기술이라고 한다.
백번의 말보다 한번의 그림을 보고 판단하는 것이 이해하기가 편하다.
주로 발생문제를 살펴보면 주의에 비해 상대적으로 어두운곳에서 물체에서 갑자기 빛의양이 많이 들어와 발생하는 문제라는 것을 알수 있다
- Color vs Black & White
일반적으로 야간카메라는 Black & White모드로 사용을 한다고 하지만, 아래를 보면 Color 와 Black & White Version을 비교해보면
Black & white가 더 눈부심을 알수가 있다.
- Shutter 속도제어
일단 기본방법은 노출시간을 줄여 광량을 줄이는 방법으로 가야 할 것 같지만 , 너무 줄이며 배경도 같이 어두워지는 문제발생하기때문에 적정량으로 줄이는 것이 관건인 것 같다.
이와 관련된 Video Filter와 정확한 이해가 필요한 것 같은데 이부분은 자세히 알아봐야겠다
HLC와 LPC 관련 기술내용설명
https://ipvm.com/reports/headlights-harm-video-surveillance
Hikvision의 HLC 기능설명
http://www.hikvision.com/europe/Press-Release-details_90_i3270.html
http://www.hkvstar.com/technology-news/hlc-highlight-compensation-vs-blc-backlight-compensation.html
이 부분은 LPC/LPR에서도 중요한 문제로 생각이 되는 부분이다.
2.2 BLC (Back Light Compensation)
카메라 입장에서 보면 앞의 물체와 뒷물체 혹은 배경에서 자연채광이 모두 표시가 되기때문에, 앞 물체가 상대적으로 어둡게 보이는 현상이다.
주로 사용되는 곳은 사람을 인식하는 곳에서 많이 사용이 된다고 한다. BLC의 경우 앞물체와 뒷배경 노출을 최적화하는 DSP에서 제공하는 기능이라고 한다.
보정방법은 각 영역마다 다른 노출을 사용한다고 하는데 주요 포커스가 되는 부분은 정상적이고 사용가능한 빛을 유지하고
극단적으로 높거나 낮은 빛의 영역을 수정한다고 한다.
어떻게 하는지는 좀 더 자세히 알아봐야겠다.
2.3 WDR(Wide Dynamic Range)
상위에서 설명한 BLC와 비슷하지만, 더 발전된 기술이 WDR이라고 한다.
WDR에서는 이미지의 가장 밝은 요소와 가장 어두운 요소간의 비율 나타낸다고 한다.
WDR의 카메라의 경우 두 개의 CCD(Charge Coupled Device) 장착된 센서를 제공한다고 하며, 이 센서 중 하나는 고속용이고 다른하나는 저속 이미지/비디오용이라고 한다.
이 두개의 이미지는 함께 작업하며, 장면을 여러번 스캔하여 작업한다고 한다.
개인 생각으로는 노출시간이 다르게 작동하니 두개의 이미지 DSP를 이용하여 최적화하는 것 같다.
AXIS에서 개발을 했다고 하는데 아직 HLC/BLC/WDR 정확한 보정기술 및 세부기술은 이해해가자.
https://www.axis.com/kr/ko/technologies/wide-dynamic-range2.4 HDRI(High Dynamic Range Imaging)
개인생각으로는 WDR과 유사한 개념과 같으며, 서로 다른 밝기 노출시간을 주어 이를 점차 개선해나가는 것 같다.
아래의 라온피플에서는 DSP가 아닌, OpenCV를 이용하여 여러 Image를 보정해나가는데,
이를 고속을 하면 WDR이 되는 것 같다.
https://laonple.blog.me/220830099505
7/23/2017
Docker Redmine 기본설치
1. Redmine 소개
SVN or GIT 소스를 관리만을 하지만, Redmine or Track 은 Project 관리와 버그 추적을 쉽게 해주기 위해서 만들어진 통합된 프로젝트 관리 프로그램이다.
2. Docker로 Redmine 설치방법
아래의 설치방법을 보면, Redmine Image는 Database 필요하고, SQlite3가 포함하고 있지만, Multi-User로는 사용이 불가능하다고 한다.
Database를 MySQL or PostgreSQL로 변경하여 2개의 Container를 설치 및 연결해보자.
설치전 Docker의 기본환경을 구축하자
https://ahyuo79.blogspot.com/2017/07/docker.html
Docker 기본 명령어 파악
https://docs.docker.com/engine/reference/commandline/docker/
Redmine 설치방법
https://docs.docker.com/samples/library/redmine/
https://github.com/sameersbn/docker-redmine
2.1 Docker Images 찾기
Docker로 Redmine/MySQL/Postgres Image를 찾아 많이 사용하는 것을 찾아보자.
SVN or GIT 소스를 관리만을 하지만, Redmine or Track 은 Project 관리와 버그 추적을 쉽게 해주기 위해서 만들어진 통합된 프로젝트 관리 프로그램이다.
흔히 ITS(Issue Tracking Ssystem) 이라고도 불리우기도 하며,Redmine이전에도 다양한 오픈소스가 존재한다.
최근에는 거의 오픈소스는 Redmine으로 사용으로 가거나, 유료인 JIRA 사용하는 것으로 보인다.
오픈소스 ITS(Issue Tracking Ssystem)/BTS관련소개
Redmine 기능 및 소개
https://www.redmine.org/
https://ko.wikipedia.org/wiki/%EB%A0%88%EB%93%9C%EB%A7%88%EC%9D%B8
Redmine 설치 전 기본환경사항파악
http://www.redmine.org/projects/redmine/wiki/RedmineInstall#Supported-database-back-ends
Redmine은 Database를 필요하며, 기본적으로 Database도 설치를 해줘야 한다.
이전에는 각 서버에 다 설치해주었지만, 요즘 Docker가 있어서 편하다.
https://www.redmine.org/
https://ko.wikipedia.org/wiki/%EB%A0%88%EB%93%9C%EB%A7%88%EC%9D%B8
Redmine 설치 전 기본환경사항파악
http://www.redmine.org/projects/redmine/wiki/RedmineInstall#Supported-database-back-ends
Redmine은 Database를 필요하며, 기본적으로 Database도 설치를 해줘야 한다.
이전에는 각 서버에 다 설치해주었지만, 요즘 Docker가 있어서 편하다.
2. Docker로 Redmine 설치방법
아래의 설치방법을 보면, Redmine Image는 Database 필요하고, SQlite3가 포함하고 있지만, Multi-User로는 사용이 불가능하다고 한다.
Database를 MySQL or PostgreSQL로 변경하여 2개의 Container를 설치 및 연결해보자.
설치전 Docker의 기본환경을 구축하자
https://ahyuo79.blogspot.com/2017/07/docker.html
Docker 기본 명령어 파악
https://docs.docker.com/engine/reference/commandline/docker/
Redmine 설치방법
https://docs.docker.com/samples/library/redmine/
https://github.com/sameersbn/docker-redmine
2.1 Docker Images 찾기
Docker로 Redmine/MySQL/Postgres Image를 찾아 많이 사용하는 것을 찾아보자.
- Docker Image 검색하여 설치할 Image 찾기
Docker Hub에서 검색
https://hub.docker.com/search?q=redmine
2.2 Docker Container/Image 설치
Redmine은 Database를 사용하는데, MySql or Postgres로 설치하여 연결할 것이다.
docker run을 이용하여 새로운 Container에 이름을 할당하고, 상위에서 찾은 Image 이름으로 설치 와 동시에 실행해보자
-p 옵션을 통해 Redmine에 접속할수 있는 port를 변경이 가능하다.
http://localhost:3000 or http://host-ip:3000 으로 redmine 접속이 가능하다.
이 옵션이 없다면, 기본적으로 http://localhost:8080, or http://host-ip:8080 로 동작한다.
-e 옵션은 Environment Variables 부분 참조
마지막에 반드시 찾은 Image 이름
Redmine 설치방법
https://docs.docker.com/engine/reference/commandline/run/
2.3 Docker Container/Image 삭제
상위에서 Container와 Image를 생성했기 때문에, 관련사항들을 다 삭제해보자.
2.4 Docker Containers 실행/정지
현재 Ubuntu를 사용하고 있으며, 기본적으로 재부팅을 하면, Docker Engine도 멈추기 때문에, 다시 Container를 가동하여 Image를 동작해야한다.
2.5 Docker Container/Images 확인 및 동작확인
Docker에서 Container or Images의 상태를 각각 확인을 해보자.
2.6 Docker 설치 및 실행시 Network 상태확인
상위에서 Docker를 설치 한 후, Docker Image들을 설치하고 실행을 한 후 네트워크 상태를 확인해보면
아래와 같이 두 종류의 Link가 새로 생성되었다.
3. Redmine 설정 및 사용
브라우저에서 http://192.168.1.100:3000/login 로그인
ID: admin
PW: admin
내계정->비밀번호 바꾸기
PW변경
Atom 접근키 생성
현재 기본사용만 했을 뿐 다른 플러그인이나, 관련사항을 설치하지 않았다.
Redmine 설치 후 설정부분
http://www.whatwant.com/367
http://www.redmine.org/projects/redmine/wiki/RedmineInstall#Supported-database-back-ends
https://hub.docker.com/search?q=redmine
$ sudo docker search redmine NAME DESCRIPTION STARS OFFICIAL AUTOMATED redmine Redmine is a flexible project management w... 621 [OK] sameersbn/redmine 284 [OK] bitnami/redmine Bitnami Docker Image for Redmine 30 [OK] 74th/redmine-all-in-one Redmine includes hosting SVN & Git , backl... 9 [OK] inspiredgeek/redmine-alpine Simple Docker images to run Redmine tracke... 6 [OK] eeacms/redmine EEA Redmine docker setup 2 [OK] themill/redmine fork for redmine to add/test theming 1 [OK] fjudith/redmine Dockerized Redmine based on redmine:3.3 of... 1 [OK] minimaru/openshift-redmine A Debian8 based Redmine v3.2 image for use... 1 arm64v8/redmine Redmine is a flexible project management w... 1 tkeydll/docker-redmine-backlogs Redmine with backlogs plugin. 1 [OK] arm32v7/redmine Redmine is a flexible project management w... 1 commonms/redmine Docker image for Redmine. 1 [OK] sorintdev/redmine Redmine with custom theme 0 nitra/redmine_priority_tasks redmine_priority_tasks 0 [OK] robobeerun/redmine Redmine image that runs as non-privileged ... 0 [OK] togent2/redmine_ttdlx_enabled redmine_ttdlx_enabled 0 [OK] amd64/redmine Redmine is a flexible project management w... 0 stackbrew/redmine Deprecated; use 'redmine' from https://hub... 0 trollin/redmine 0 mikroways/redmine redmine passenger image 0 [OK] rubykube/redmine Redmine 4.0 container 0 [OK] honsiorovskyi/redmine Official Redmine + Git + Mercurial 0 [OK] dockerpicosoft/redminemisfat 0
$ sudo docker search mysql NAME DESCRIPTION STARS OFFICIAL AUTOMATED mysql MySQL is a widely used, open-source relati... 6972 [OK] mariadb MariaDB is a community-developed fork of M... 2226 [OK] mysql/mysql-server Optimized MySQL Server Docker images. Crea... 512 [OK] percona Percona Server is a fork of the MySQL rela... 369 [OK] zabbix/zabbix-server-mysql Zabbix Server with MySQL database support 126 [OK] hypriot/rpi-mysql RPi-compatible Docker Image with Mysql 96 zabbix/zabbix-web-nginx-mysql Zabbix frontend based on Nginx web-server ... 67 [OK] centurylink/mysql Image containing mysql. Optimized to be li... 59 [OK] 1and1internet/ubuntu-16-nginx-php-phpmyadmin-mysql-5 ubuntu-16-nginx-php-phpmyadmin-mysql-5 44 [OK] centos/mysql-57-centos7 MySQL 5.7 SQL database server 39 mysql/mysql-cluster Experimental MySQL Cluster Docker images. ... 34 tutum/mysql Base docker image to run a MySQL database ... 32 schickling/mysql-backup-s3 Backup MySQL to S3 (supports periodic back... 23 [OK] bitnami/mysql Bitnami MySQL Docker Image 19 [OK] zabbix/zabbix-proxy-mysql Zabbix proxy with MySQL database support 15 [OK] linuxserver/mysql A Mysql container, brought to you by Linux... 14 centos/mysql-56-centos7 MySQL 5.6 SQL database server 10 circleci/mysql MySQL is a widely used, open-source relati... 6 openshift/mysql-55-centos7 DEPRECATED: A Centos7 based MySQL v5.5 ima... 6 mysql/mysql-router MySQL Router provides transparent routing ... 4 jelastic/mysql An image of the MySQL database server main... 1 openzipkin/zipkin-mysql Mirror of https://quay.io/repository/openz... 1 cloudfoundry/cf-mysql-ci Image used in CI of cf-mysql-release 0 cloudposse/mysql Improved `mysql` service with support for ... 0 [OK] ansibleplaybookbundle/mysql-apb An APB which deploys RHSCL MySQL 0 [OK]
$ sudo docker search postgres NAME DESCRIPTION STARS OFFICIAL AUTOMATED postgres The PostgreSQL object-relational database ... 5498 [OK] sameersbn/postgresql 135 [OK] paintedfox/postgresql A docker image for running Postgresql. 77 [OK] orchardup/postgresql https://github.com/orchardup/docker-postgr... 48 [OK] kiasaki/alpine-postgres PostgreSQL docker image based on Alpine Linux 42 [OK] centos/postgresql-96-centos7 PostgreSQL is an advanced Object-Relationa... 29 bitnami/postgresql Bitnami PostgreSQL Docker Image 22 [OK] begriffs/postgrest Moved to https://hub.docker.com/r/postgres... 16 [OK] centos/postgresql-94-centos7 PostgreSQL is an advanced Object-Relationa... 15 schickling/postgres-backup-s3 Backup PostgresSQL to S3 (supports periodi... 13 [OK] crunchydata/crunchy-postgres Crunchy PostgreSQL is an open source, unmo... 12 circleci/postgres The PostgreSQL object-relational database ... 11 wrouesnel/postgres_exporter Postgres metrics exporter for Prometheus. 9 postdock/postgres PostgreSQL server image, can work in maste... 9 [OK] clkao/postgres-plv8 Docker image for running PLV8 1.4 on Postg... 8 [OK] centos/postgresql-95-centos7 PostgreSQL is an advanced Object-Relationa... 6 blacklabelops/postgres Postgres Image for Atlassian Applications 4 [OK] frodenas/postgresql A Docker Image for PostgreSQL 3 [OK] camptocamp/postgresql Camptocamp PostgreSQL Docker Image 3 [OK] fredboat/postgres PostgreSQL 10.0 used in FredBoat's docker-... 0 ansibleplaybookbundle/postgresql-apb An APB which deploys RHSCL PostgreSQL 0 [OK] cfcommunity/postgresql-base https://github.com/cloudfoundry-community/... 0 relatable/postgrest Nginx container to serve web requests to t... 0 [OK] cfcommunity/postgresql https://github.com/cloudfoundry-community/... 0 ansibleplaybookbundle/rds-postgres-apb An APB that deploys an RDS instance of Pos... 0 [OK]
2.2 Docker Container/Image 설치
Redmine은 Database를 사용하는데, MySql or Postgres로 설치하여 연결할 것이다.
docker run을 이용하여 새로운 Container에 이름을 할당하고, 상위에서 찾은 Image 이름으로 설치 와 동시에 실행해보자
Options | Description |
---|---|
--detach , -d | Run container in background and print container ID |
--name | Assign a name to the container |
--env , -e | Set environment variables |
--link | Add link to another container |
--publish , -p | Publish a container’s port(s) to the host |
-p 옵션을 통해 Redmine에 접속할수 있는 port를 변경이 가능하다.
http://localhost:3000 or http://host-ip:3000 으로 redmine 접속이 가능하다.
이 옵션이 없다면, 기본적으로 http://localhost:8080, or http://host-ip:8080 로 동작한다.
- MySql or Postgres Container / Image 설치 및 실행
$ sudo docker run -d --name mysql -e MYSQL_ROOT_PASSWORD=secret -e MYSQL_DATABASE=redmine mysql or $ sudo docker run -d --name postgres -e POSTGRES_PASSWORD=secret -e POSTGRES_USER=redmine postgres
-e 옵션은 Environment Variables 부분 참조
마지막에 반드시 찾은 Image 이름
- Redmine Container / Image 설치 및 실행
$ sudo docker run -d --name redmine -p 3000:3000 --link mysql:mysql redmine // Database: MySQL or $ sudo docker run -d --name redmine -p 3000:3000 --link postgres:postgres redmine // Database: Postgres
Redmine 설치방법
https://docs.docker.com/engine/reference/commandline/run/
2.3 Docker Container/Image 삭제
상위에서 Container와 Image를 생성했기 때문에, 관련사항들을 다 삭제해보자.
- Container/ Image 제거
$ sudo docker ps // 동작중인 Container 파악 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1fd4d477c23b redmine:latest "/docker-entrypoint. 4 months ago Up 3 minutes 0.0.0.0:3000->3000/tcp redmine 89d3dc20a51a mysql:latest "docker-entrypoint.s 4 months ago Up 3 minutes 3306/tcp mysql $ sudo docker stop mysql redmine // 동작중인 Container 멈춤, 상위 CONTAINER ID 가능 $ sudo docker rm mysql redmine // Containers 제거 $ sudo docker rmi mysql redmine // Images 제거 $ sudo docker images // 설치된 Image 재확인 REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
2.4 Docker Containers 실행/정지
현재 Ubuntu를 사용하고 있으며, 기본적으로 재부팅을 하면, Docker Engine도 멈추기 때문에, 다시 Container를 가동하여 Image를 동작해야한다.
- Docker-MySql 과 Redmine 동작실행
$ sudo docker start mysql redmine mysql redmine
- Docker-MySql 과 Redmine 동작멈춤
$ sudo docker stop mysql redmine mysql redmine
2.5 Docker Container/Images 확인 및 동작확인
Docker에서 Container or Images의 상태를 각각 확인을 해보자.
- 설치된 Docker-Images 확인
$ sudo docker images // MySQL 설치시 REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE redmine latest 1b5ebc39dc3e 4 months ago 662.5 MB mysql latest 08fa4e794b8b 5 months ago 371.4 MB $ sudo docker images //Postgres 설치시 REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE redmine latest e297148f3bd1 10 hours ago 687.2 MB postgres latest a283a33b6783 10 days ago 228.4 MB
- 동작 중인 Docker-Container/Images 확인
$ sudo docker ps // MySQL 사용시 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1fd4d477c23b redmine:latest "/docker-entrypoint. 4 months ago Up 3 minutes 0.0.0.0:3000->3000/tcp redmine 89d3dc20a51a mysql:latest "docker-entrypoint.s 4 months ago Up 3 minutes 3306/tcp mysql $ sudo docker ps // Postgres 사용시 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 33f9f499cef9 redmine:latest "/docker-entrypoint. 12 seconds ago Up 11 seconds 0.0.0.0:3000->3000/tcp redmine 0e33f82bb946 postgres:latest "docker-entrypoint.s 6 minutes ago Up 6 minutes 5432/tcp postgres
- Docker의 Container 상태 (CPU/MEM/NET 정보)
$ sudo docker stats mysql redmine // 각 container가 미동작 확인 CONTAINER CPU % MEM USAGE/LIMIT MEM % NET I/O mysql 0.00% 0 B/0 B 0.00% 0 B/0 B redmine 0.00% 0 B/0 B 0.00% 0 B/0 B $ sudo docker stats mysql redmine // 각 container 동작 Image 실행 CONTAINER CPU % MEM USAGE/LIMIT MEM % NET I/O mysql 0.10% 244.1 MiB/3.778 GiB 6.31% 55.03 KiB/282.5 KiB redmine 0.01% 124.5 MiB/3.778 GiB 3.22% 284.1 KiB/52.86 KiB
- Docker Container의 Log 파악
$ sudo docker logs redmine // redmine or mysql 각 Image 선택
........
- Docker 관련사항 찾아보기
$ sudo find / -name redmine // redmine image 찾기 /var/lib/docker/vfs/dir/06d0898d2ee8f722f5dbb5db412ec12f44ab8ca997398367612a442570f5b580/redmine /var/lib/docker/aufs/diff/07edb9d05a16af091a3eb354febfa11691632aba9faed3df2985aea033d5b06b/usr/src/redmine /var/lib/docker/aufs/diff/605d9552a2bf32d1ebda51db67c3ea87e235bcd0a07afa347688248481acbd44/usr/src/redmine /var/lib/docker/aufs/diff/605d9552a2bf32d1ebda51db67c3ea87e235bcd0a07afa347688248481acbd44/usr/src/redmine/lib/redmine /var/lib/docker/aufs/diff/605d9552a2bf32d1ebda51db67c3ea87e235bcd0a07afa347688248481acbd44/usr/src/redmine/test/unit/lib/redmine /var/lib/docker/aufs/diff/605d9552a2bf32d1ebda51db67c3ea87e235bcd0a07afa347688248481acbd44/usr/src/redmine/test/integration/lib/redmine /var/lib/docker/aufs/diff/716af2fdc4bfa300f02e52e3676615ee00faa82d2ffe011f5b8dc03f2edff416/usr/src/redmine /var/lib/docker/aufs/diff/1fd4d477c23b613b7d6c463f9548dc89b10cc11e5dfbf871390c5af34de5c80c/usr/src/redmine $ sudo find / -name mysql // mysql image 찾기 /etc/apparmor.d/abstractions/mysql /etc/apparmor.d/snap/abstractions/mysql /etc/init.d/mysql /etc/mysql /var/lib/docker/vfs/dir/06d0898d2ee8f722f5dbb5db412ec12f44ab8ca997398367612a442570f5b580/mysql /var/lib/docker/aufs/diff/9ca537d00bf27e382442900487f836aedb7f2eb4805e87fa6bca90921e840f49/etc/mysql /var/lib/docker/aufs/diff/e15d670277a7990e98ddeaeeba7ac34531c8db08d418a69330a4e886fa8aa768/etc/init.d/mysql /var/lib/docker/aufs/diff/e15d670277a7990e98ddeaeeba7ac34531c8db08d418a69330a4e886fa8aa768/etc/mysql /var/lib/docker/aufs/diff/e15d670277a7990e98ddeaeeba7ac34531c8db08d418a69330a4e886fa8aa768/var/lib/mysql /var/lib/docker/aufs/diff/e15d670277a7990e98ddeaeeba7ac34531c8db08d418a69330a4e886fa8aa768/var/log/mysql /var/lib/docker/aufs/diff/e15d670277a7990e98ddeaeeba7ac34531c8db08d418a69330a4e886fa8aa768/usr/lib/mysql /var/lib/docker/aufs/diff/e15d670277a7990e98ddeaeeba7ac34531c8db08d418a69330a4e886fa8aa768/usr/bin/mysql /var/lib/docker/aufs/diff/e15d670277a7990e98ddeaeeba7ac34531c8db08d418a69330a4e886fa8aa768/usr/share/mysql ... $ sudo ls /var/lib/docker/ aufs containerd graph init network plugins runtimes tmp vfs builder containers image linkgraph.db overlay2 repositories-aufs swarm trust volumes
2.6 Docker 설치 및 실행시 Network 상태확인
상위에서 Docker를 설치 한 후, Docker Image들을 설치하고 실행을 한 후 네트워크 상태를 확인해보면
아래와 같이 두 종류의 Link가 새로 생성되었다.
- docker0: docker 명령어 설치시 생성됨
- vethx : docker image 실행시 생성됨
$ ifconfig docker0 Link encap:Ethernet HWaddr 8e:12:bf:f6:e3:e5 inet addr:172.17.42.1 Bcast:0.0.0.0 Mask:255.255.0.0 inet6 addr: fe80::5c9b:24ff:fea2:322/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:17 errors:0 dropped:0 overruns:0 frame:0 TX packets:70 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:1100 (1.1 KB) TX bytes:10832 (10.8 KB) eth0 Link encap:Ethernet HWaddr 08:00:27:0f:63:43 inet addr:192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0 inet6 addr: fe80::a00:27ff:fe0f:6343/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:5777 errors:0 dropped:0 overruns:0 frame:0 TX packets:2116 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:7996724 (7.9 MB) TX bytes:192119 (192.1 KB) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:288 errors:0 dropped:0 overruns:0 frame:0 TX packets:288 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:23759 (23.7 KB) TX bytes:23759 (23.7 KB) veth15bcff9 Link encap:Ethernet HWaddr 8e:12:bf:f6:e3:e5 inet6 addr: fe80::8c12:bfff:fef6:e3e5/64 Scope:Link UP BROADCAST RUNNING MTU:1500 Metric:1 RX packets:348 errors:0 dropped:0 overruns:0 frame:0 TX packets:408 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:289303 (289.3 KB) TX bytes:56696 (56.6 KB) veth1c96ca0 Link encap:Ethernet HWaddr f6:bb:61:16:e3:09 inet6 addr: fe80::f4bb:61ff:fe16:e309/64 Scope:Link UP BROADCAST RUNNING MTU:1500 Metric:1 RX packets:390 errors:0 dropped:0 overruns:0 frame:0 TX packets:365 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:54193 (54.1 KB) TX bytes:291716 (291.7 KB)
3. Redmine 설정 및 사용
브라우저에서 http://192.168.1.100:3000/login 로그인
ID: admin
PW: admin
내계정->비밀번호 바꾸기
PW변경
Atom 접근키 생성
현재 기본사용만 했을 뿐 다른 플러그인이나, 관련사항을 설치하지 않았다.
Redmine 설치 후 설정부분
http://www.whatwant.com/367
http://www.redmine.org/projects/redmine/wiki/RedmineInstall#Supported-database-back-ends
7/17/2017
Camera 기본지식과 ISP(AE,AWB/AF) 이해 및 적외선 개념
1. 기본지식
카메라관련 지식이 다시 필요해서 관련지식을 다시 수집하며, 이전에 기억나는대로 CMOS의 Bayer Pattern 과 Interpolation 기능
추후 시간이 되면, 다시 CCD/CMOS의 차이 관련사항을 알아보자.
http://darkpgmr.tistory.com/97
http://cilab.knu.ac.kr/research/Color/Interpolation.htm
1.1 Camera의 ISP의 지식
일반적으로 Camera의 ISP 라고 하면 3A인 (AE/AWB/AF) 의 기능인 것 같다. 이 부분은 예전 TI Camera 관련문서를 통해서도 많이 접했지만,
관련기술에 대한 세부내용을 자세히 알지 못했다. 나의 목적의 CMOS Sensor 동작역할 및 Bayer Pattern 관련부분 설정 이었던 것 같다.
TI의 경우 아래의 부분을 HW에서 기본적으로 제공을 해주고 있지만, 이부분을 정확하게 이해하고 넘어가자
DM385와 DM8127은 공통사항이 많으며, 저가형으로 DM385를 이용을 한다.
http://www.ti.com/product/DM385
ISS
http://www.ti.com/lit/ug/spruhl6a/spruhl6a.pdf
HW Face detect
http://www.ti.com/lit/ug/spruhq3a/spruhq3a.pdf
https://www.ciscorp.co.jp/algorithm_3a_en.php
1.2 영상관련 필터 지식
1.3 적외선의 이해
적외선카메라를 다루기 때문에 관련부분에 대한 자료를 간단히 정리하자.
https://www.axis.com/files/whitepaper/wp_ir_in_surveillance_72295_ko_1808_lo.pdf
카메라관련 지식이 다시 필요해서 관련지식을 다시 수집하며, 이전에 기억나는대로 CMOS의 Bayer Pattern 과 Interpolation 기능
추후 시간이 되면, 다시 CCD/CMOS의 차이 관련사항을 알아보자.
- Bay Pattern과 Interpolation (보간법)
http://darkpgmr.tistory.com/97
http://cilab.knu.ac.kr/research/Color/Interpolation.htm
1.1 Camera의 ISP의 지식
일반적으로 Camera의 ISP 라고 하면 3A인 (AE/AWB/AF) 의 기능인 것 같다. 이 부분은 예전 TI Camera 관련문서를 통해서도 많이 접했지만,
관련기술에 대한 세부내용을 자세히 알지 못했다. 나의 목적의 CMOS Sensor 동작역할 및 Bayer Pattern 관련부분 설정 이었던 것 같다.
TI의 경우 아래의 부분을 HW에서 기본적으로 제공을 해주고 있지만, 이부분을 정확하게 이해하고 넘어가자
- AE(Auto Exposure)
- AWB(Auto White Balance)
- AF( Auto Focus)
DM385와 DM8127은 공통사항이 많으며, 저가형으로 DM385를 이용을 한다.
http://www.ti.com/product/DM385
ISS
http://www.ti.com/lit/ug/spruhl6a/spruhl6a.pdf
HW Face detect
http://www.ti.com/lit/ug/spruhq3a/spruhq3a.pdf
- ISP 관련전반 부분을 전부 설명
https://www.ciscorp.co.jp/algorithm_3a_en.php
- Gamma Correction
1.2 영상관련 필터 지식
- 영상처리 Filter
1.3 적외선의 이해
적외선카메라를 다루기 때문에 관련부분에 대한 자료를 간단히 정리하자.
- 적외선
https://www.axis.com/files/whitepaper/wp_ir_in_surveillance_72295_ko_1808_lo.pdf
- 적외선의 이해
7/16/2017
Docker 기본환경설치 및 기본용어
1. Docker 기본구조 이해
Virtual Machin 과 유사하게 아래처럼 각각의 Container 기반으로 Docker에서 동작되어지도록 구성되어진다.
자료
Virtual Machin 과 유사하게 아래처럼 각각의 Container 기반으로 Docker에서 동작되어지도록 구성되어진다.
자료
https://www.aquasec.com/wiki/display/containers/Docker+Architecture
Docker 기본 명령어 파악
https://docs.docker.com/engine/reference/commandline/docker/
Docker 기본용어
https://docs.docker.com/glossary/
Docker 제공하는 Sample들
https://docs.docker.com/samples/
Docker Hub
- Docker Engine: Container 구동 및 통신, 설정 Docker에 관련된 것을 관리
- Container : Image를 실행하며, 환경설정 및 통신가능
- Images : 상위 App/Bin/Libs 해당하며, 실행가능한 Image
Docker 기본 명령어 파악
https://docs.docker.com/engine/reference/commandline/docker/
Docker 기본용어
https://docs.docker.com/glossary/
Docker 제공하는 Sample들
https://docs.docker.com/samples/
Docker Hub
현재 나도 가입을 했으며, Docker 사용을 위해서 가입을 하도록하자.
https://hub.docker.com/
Docker Hub 의 기본사용법
https://docs.docker.com/get-started/#prepare-your-docker-environment
https://docs.docker.com/network/#network-driver-summary
https://docs.docker.com/engine/reference/commandline/stop/#options
https://docs.docker.com/engine/reference/builder/#expose
1.1 Docker Old Version 설치
Ubuntu 14.04_64bit LTS Version에서 설치 진행
내가 설치한 docker.io는 오래된 Version이며, 현재는 docker.ce로 변경이 되어 운영된다.
일단 이전 Version으로 한번 설치를 해본 후에 최신 Version으로도 다시 해보자.
Docker Command Line
https://docs.docker.com/engine/reference/commandline/cli/
1.2 Docker CE/EE 버전
docker.io 와 docker.ce 차이
https://stackoverflow.com/questions/45023363/what-is-docker-io-in-relation-to-docker-ce-and-docker-ee
https://docs.docker.com/install/linux/docker-ce/ubuntu/
https://hub.docker.com/
Docker Hub 의 기본사용법
https://docs.docker.com/get-started/#prepare-your-docker-environment
https://docs.docker.com/network/#network-driver-summary
https://docs.docker.com/engine/reference/commandline/stop/#options
https://docs.docker.com/engine/reference/builder/#expose
1.1 Docker Old Version 설치
Ubuntu 14.04_64bit LTS Version에서 설치 진행
- Docker Old version Engine 설치
$ sudo curl -sSL https://get.docker.com/ | sh $ sudo apt-get update && apt-get upgrade $ sudo apt-get install docker.io
- Docker Old version Engine 제거
$ sudo apt-get remove docker docker-engine docker.io
- Docker Version 및 위치확인
$ sudo docker version Client version: 1.6.2 Client API version: 1.18 Go version (client): go1.2.1 Git commit (client): 7c8fca2 OS/Arch (client): linux/amd64 Server version: 1.6.2 Server API version: 1.18 Go version (server): go1.2.1 Git commit (server): 7c8fca2 OS/Arch (server): linux/amd64
$ which docker // docker 설치위치 파악
/usr/bin/docker
- Docker 기본사용법
$ sudo docker --help // or man docker
[sudo] password for jhlee:
Usage: docker [OPTIONS] COMMAND [arg...]
A self-sufficient runtime for linux containers.
Options:
--api-cors-header= Set CORS headers in the remote API
-b, --bridge= Attach containers to a network bridge
--bip= Specify network bridge IP
-D, --debug=false Enable debug mode
-d, --daemon=false Enable daemon mode
--default-ulimit=[] Set default ulimits for containers
--dns=[] DNS server to use
--dns-search=[] DNS search domains to use
-e, --exec-driver=native Exec driver to use
--fixed-cidr= IPv4 subnet for fixed IPs
--fixed-cidr-v6= IPv6 subnet for fixed IPs
-G, --group=docker Group for the unix socket
-g, --graph=/var/lib/docker Root of the Docker runtime
-H, --host=[] Daemon socket(s) to connect to
-h, --help=false Print usage
--icc=true Enable inter-container communication
--insecure-registry=[] Enable insecure registry communication
--ip=0.0.0.0 Default IP when binding container ports
--ip-forward=true Enable net.ipv4.ip_forward
--ip-masq=true Enable IP masquerading
--iptables=true Enable addition of iptables rules
--ipv6=false Enable IPv6 networking
-l, --log-level=info Set the logging level
--label=[] Set key=value labels to the daemon
--log-driver=json-file Containers logging driver
--mtu=0 Set the containers network MTU
-p, --pidfile=/var/run/docker.pid Path to use for daemon PID file
--registry-mirror=[] Preferred Docker registry mirror
-s, --storage-driver= Storage driver to use
--selinux-enabled=false Enable selinux support
--storage-opt=[] Set storage driver options
--tls=false Use TLS; implied by --tlsverify
--tlscacert=~/.docker/ca.pem Trust certs signed only by this CA
--tlscert=~/.docker/cert.pem Path to TLS certificate file
--tlskey=~/.docker/key.pem Path to TLS key file
--tlsverify=false Use TLS and verify the remote
-v, --version=false Print version information and quit
Commands:
attach Attach to a running container
build Build an image from a Dockerfile
commit Create a new image from a container's changes
cp Copy files/folders from a container's filesystem to the host path
create Create a new container
diff Inspect changes on a container's filesystem
events Get real time events from the server
exec Run a command in a running container
export Stream the contents of a container as a tar archive
history Show the history of an image
images List images
import Create a new filesystem image from the contents of a tarball
info Display system-wide information
inspect Return low-level information on a container or image
kill Kill a running container
load Load an image from a tar archive
login Register or log in to a Docker registry server
logout Log out from a Docker registry server
logs Fetch the logs of a container
port Lookup the public-facing port that is NAT-ed to PRIVATE_PORT
pause Pause all processes within a container
ps List containers
pull Pull an image or a repository from a Docker registry server
push Push an image or a repository to a Docker registry server
rename Rename an existing container
restart Restart a running container
rm Remove one or more containers
rmi Remove one or more images
run Run a command in a new container
save Save an image to a tar archive
search Search for an image on the Docker Hub
start Start a stopped container
stats Display a stream of a containers' resource usage statistics
stop Stop a running container
tag Tag an image into a repository
top Lookup the running processes of a container
unpause Unpause a paused container
version Show the Docker version information
wait Block until a container stops, then print its exit code
Run 'docker COMMAND --help' for more information on a command.
- Docker run 사용법
$ docker run --help // or $ man docker run Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG...] Run a command in a new container -a, --attach=[] Attach to STDIN, STDOUT or STDERR --add-host=[] Add a custom host-to-IP mapping (host:ip) -c, --cpu-shares=0 CPU shares (relative weight) --cap-add=[] Add Linux capabilities --cap-drop=[] Drop Linux capabilities --cgroup-parent= Optional parent cgroup for the container --cidfile= Write the container ID to the file --cpuset-cpus= CPUs in which to allow execution (0-3, 0,1) -d, --detach=false Run container in background and print container ID --device=[] Add a host device to the container --dns=[] Set custom DNS servers --dns-search=[] Set custom DNS search domains -e, --env=[] Set environment variables --entrypoint= Overwrite the default ENTRYPOINT of the image --env-file=[] Read in a file of environment variables --expose=[] Expose a port or a range of ports -h, --hostname= Container host name --help=false Print usage -i, --interactive=false Keep STDIN open even if not attached --ipc= IPC namespace to use -l, --label=[] Set meta data on a container --label-file=[] Read in a line delimited file of labels --link=[] Add link to another container --log-driver= Logging driver for container --lxc-conf=[] Add custom lxc options -m, --memory= Memory limit --mac-address= Container MAC address (e.g. 92:d0:c6:0a:29:33) --memory-swap= Total memory (memory + swap), '-1' to disable swap --name= Assign a name to the container --net=bridge Set the Network mode for the container -P, --publish-all=false Publish all exposed ports to random ports -p, --publish=[] Publish a container's port(s) to the host --pid= PID namespace to use --privileged=false Give extended privileges to this container --read-only=false Mount the container's root filesystem as read only --restart=no Restart policy to apply when a container exits --rm=false Automatically remove the container when it exits --security-opt=[] Security Options --sig-proxy=true Proxy received signals to the process -t, --tty=false Allocate a pseudo-TTY -u, --user= Username or UID (format: <name uid="">[:<group gid="">]) --ulimit=[] Ulimit options -v, --volume=[] Bind mount a volume (e.g., from the host: -v /host:/container, from Docker: -v /container) --volumes-from=[] Mount volumes from the specified container(s) -w, --workdir= Working directory inside the container
내가 설치한 docker.io는 오래된 Version이며, 현재는 docker.ce로 변경이 되어 운영된다.
일단 이전 Version으로 한번 설치를 해본 후에 최신 Version으로도 다시 해보자.
Docker Command Line
https://docs.docker.com/engine/reference/commandline/cli/
1.2 Docker CE/EE 버전
docker.io 와 docker.ce 차이
https://stackoverflow.com/questions/45023363/what-is-docker-io-in-relation-to-docker-ce-and-docker-ee
https://docs.docker.com/install/linux/docker-ce/ubuntu/
- Uninstall old version
$ sudo apt-get remove docker docker-engine docker.io containerd runc
- Set up Repository
$ sudo apt-get update $ sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ gnupg-agent \ software-properties-common $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - $ sudo apt-key fingerprint 0EBFCD88 pub rsa4096 2017-02-22 [SCEA] 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88 uid [ unknown] Docker Release (CE deb)sub rsa4096 2017-02-22 [S] $ sudo add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable"
- Install Docker CE
$ sudo apt-get update $ sudo apt-get install docker-ce docker-ce-cli containerd.io
$ sudo docker version Client: Version: 18.09.3 API version: 1.39 Go version: go1.10.8 Git commit: 774a1f4 Built: Thu Feb 28 06:40:58 2019 OS/Arch: linux/amd64 Experimental: false Server: Docker Engine - Community Engine: Version: 18.09.3 API version: 1.39 (minimum version 1.12) Go version: go1.10.8 Git commit: 774a1f4 Built: Thu Feb 28 05:59:55 2019 OS/Arch: linux/amd64 Experimental: false
- Uninstall Docker CE
$ sudo apt-get purge docker-ce $ sudo rm -rf /var/lib/docker
피드 구독하기:
글
(
Atom
)