본문 바로가기

전체 글143

MCU / ALU / Register 용어 설명 MCU / ALU / Register MCU (Micro Controller Unit) - CPU, ROM, RAM, I/O Port(직렬, 병렬), Timer/Counter, Interrupt 처리기가 하나의 반도체 칩에 직접 기계의 제어를 목적으로 하는 제어기이다. - 인터럽트에 실시간 응답해야 하는 분야에 많이 사용된다. - MCU는 칩 위의 컴퓨터를 말한다. PC에서 쓰이는 일반 목적의 마이크로프로세서와는 반대로 높은 직접, 낮은 전력 소비, 비용 절감, 자동 처리를 강조하는 마이크로 프로세서의 일종이다. - 일반 목적의 마이크로프로세서의 일반 산술, 논리 요소뿐 아니라 데이터 저장을 위한 읽기 쓰기 메모리, 코드 저장을 위한 플래시와 같은 읽기 전용 메모리, 계속적인 데이터 저장을 위한 EEPR.. 2021. 12. 22.
시스템 분석과 설계 문서 정의 시스템 분석 / 설계 문서 시스템 개발의 전 과정에서 산출되는 개발 문서들은 소프트웨어의 비가시성을 고려할 때 매우 중요한 가치가 있다. 제안 요청서 - 개발기간, 개발에 소요되는 예산규모, 개발의 범위 등을 검토한 후 정리하여 작성. - 구성요소 : 사업 명, 사업기간, 사업목적, 사업범위, 예산규모, 개발환경, 제안서 작성 시 고려사항, 제안서 작성기준, 제출기한 및 제출방법, 제안서 평가기준. 제안서 - 개발 업체의 사업수행 능력을 간접적으로 보여줄 수 있는 기회가 되는 만큼 충분히 제안요청서를 검토한 후 요구되는 시스템 개발에 대한 전반적인 사항을 상세히 기술함. - 구성요소 : 제안업체의 일반사항(회사명, 대표자, 회사연혁, 자본금), 제안목적, 사업 명, 사업기간, 사업목적, 사업범위, 사업추.. 2021. 12. 22.
linux wget 을 사용한 간단한 web server alive check 예제와 공유 wget 을 사용한 간단한 web server alive check 이번 wget 을 사용한 alive check 의 대상으로 google.com 을 써본다. wget --timeout=1 --tries=1 --spider http://google.com 2>&1 | grep -c '200 OK' wget 옵션을 살펴보자. --timeout=1 타임아웃을 지정한다. 응답까지 1초만 대기한다. --tries=1 시도횟수를 지정한다. 1회만 시도한다. --spider http://google.com 대상을 다운로드하지 않고 체크만 한다. 대상 URL 의 상태를 체크한다. | grep 을 제외한 명령문의 결과부터 확인하자. wget --timeout=1 --tries=1 --spider http://googl.. 2021. 12. 22.
golang/go언어 프로그램의 구조 설명과 예제 golang/go언어 프로그램의 구조 go의 구조를 이해할 수 있도록 작은 프로그램을 하나 짜보았다. package main import "fmt" func add(a, b int) int { return a + b } var a, b int = 1, 2 func main() { result := add(a, b) fmt.Printf("Result=%d = add(%d + %d)", result, a, b) } 문장 구성의 특이사항으로 line 끝에 ;(semicolon)을 사용하지 않는다. 이는 line의 끝을 알릴 때 사용하지 않고 line의 구분을 나타낼 때 사용하며 go formatter 가 자동으로 정렬해준다. ex) var a = 1 int ; var name = "test" string → .. 2021. 12. 22.
[C/C++] C언어 main 함수 전/후에 함수를 실행 하는 방법 C언어 main 함수 전/후에 함수를 실행 하는 방법 10년 전쯤에 이런 질문을 받은 적이 있다. C언어에서 main 함수 전/후에 뭔가 print를 찍는다거나 함수 등을 실행하는 행위를 할 수 있냐고. 나는 안될거다고 얘기했다. C의 entry function 이 main이라 stack의 시작과 끝은 main 함수이기 때문이라 생각하기 때문이다. 근데 물어보신 분은 맞는지 틀리는지 대답을 해주지 않으셨고 어느날 불현듯 그 질문이 생각나서 찾다 보니 가능하다는 글을 보아 갈무리를 하였다. 갈무리 역시 6년 전이지만 정리하는 습관을 기르기 위해 남겨본다. 출처와 내용은 다음과 같다. http://www.geeksforgeeks.org/functions-that-are-executed-before-and-a.. 2021. 12. 21.
POST 시 수신 측에서 데이터 짤려서 받을 때 POST 시 수신 측에서 데이터 짤려서 받을 때 웹 페이지에서 새로운 윈도 팝업을 띄우면서 post를 하는 간단한 동작을 만들었다. 현재 프로토 타입이라 json 데이터는 약 8만 바이트를 약간 넘는 작은 사이즈임에도 불구하고 데이터 일부가 유실되는 상황이 발생하였다. 처음에는 보내는 쪽을 console.log 및 F12 개발도구에서 request / response 데이터를 살펴보았지만 request 데이터는 정상적으로 송신하였고 response는 받은 만큼만 처리해서 응답하는 것을 확인하였다. 그래서 다른 해결 방법을 찾으려 linux 내에서 apache2 error 로그를 확인하다보니 재미있는 문장을 발견하였다. tail -f /var/log/apache2/error.log [Tue Dec 21 0.. 2021. 12. 21.
go언어 개요와 배경 설명 golang/go언어 개요 최근에 golang 관련하여 keti에서 진행하는 수업을 들었다. 여러 언어들을 다룰 수 있지만 지금까지의 개발언어와 golang 은 같은 듯 다른 듯 많이 신선했다. 그래서 앞으로 시간이 되고 체력이 허락하면 이따금씩 정리를 해볼까 한다. # 배경 1) golang은 구글이 2009년에 개발한 프로그래밍 언어로 빠른속도, 안정성, 간단한 문법을 특징으로 한다. 2) C언어 기반 언어지만 python, js, php 등 인터프리터 언어와 비슷한 문법과 서술적 문장(syntax) 구성을 사용한다. 하지만 golang은 컴파일러를 사용하는 컴파일 언어이다. # 특징 1) C언어와 유사한 점이 많지만 do, do while, while, for 의 여러 반복문을 for 하나로 간략화.. 2021. 12. 20.
리눅스 부팅 시 date 가 맞지 않을 때 해결 방법 리눅스 부팅 시 date 가 맞지 않을 때 임베디드 리눅스 장치에서 sntp를 사용하지 않고 date 및 hwclock을 사용하여 시간을 설정하였으나 물리 리셋(전원을 내렸다 올림)을 하면 2000년 1월 1일 xx시 xx분 xx초로 변경이 되는 상황이 발생하였다. 하지만 소프트웨어 리셋(reboot)을 통하여 재부팅을 하면 유지가 되었다. 원인을 찾기 위해 자사 템플릿 내부에서 시간을 제어하는 모듈을 모두 비활성하였고 dmesg 명령을 실행하여 time, date, rtc 같이 시간과 관련 있는 항목을 찾다 보니 아래 화면 같은 rtc 같은 현상을 발견하였다. 그럼 rtc 드라이버의 문제인가? 라고 생각했지만 동일한 빌드 환경과 펌웨어를 사용하는 다른 장치에서는 똑같이 "setting system cl.. 2021. 12. 20.