펌웨어/임베디드 소프트웨어 개발, 잘 안 풀릴 때 읽어볼 만한 글
펌웨어 및 임베디드 소프트웨어 개발은 일반 소프트웨어 개발 과정과 만나게 될 이슈의 성향이 다릅니다. 새로 개발된 PCB(Printed Circuit Board) , 사용해보지 못한 Chip 등, 다양한 변수가 존재하기 때문입니다. 또한, 상대적으로 적은 유저가 사용하는 프로그램을 활용하다보면 더더욱 이슈의 원인을 찾기가 어렵죠. 답답할 때, 다시 되돌아보기 위해서 정리해보았습니다. 꼭, 정답은 아니지만 펌웨어/임베디드 소프트웨어 개발 시, 이러한 문제들이 있었으니 참고하셔도 좋을 것 같습니다. PCB 전원 불량 문제 최근에는 하드웨어 개발자들도 기본적으로 전원단을 체크하고, 소프트웨어 개발자에게 넘기기 때문에 이런 일은 거의 없습니다. 그래도 간혹 전원 불량이 생길 수 있는데, MCU에 프로그램 다운로..
2022.06.15
Floating과 Node-Locekd License(플로팅과 노드락 라이선스)
유료 소프트웨어의 경우, 비용을 지불하고 라이센스를 구입하는 것이 일반적입니다. 이 때, 여러 유형의 라이센스가 존재하며, 아래와 같은 종류의 라이센스들이 존재합니다. 플로팅 라이선스(Floating License) 최근에 가장 많이 활용되는 라이선스라고 생각합니다. 사내의 서버 컴퓨터에 라이선스를 등록하고, 유저들이 해당 프로그램을 사용할 때 라이선스를 빌려가는 형태입니다. 개인당 모든 라이선스를 구매하면, 개개인적으로는 불편함이 없지만 금액이 그만큼 부담되어 인기가 많습니다. 하지만, 사용량이 많은 프로그램의 경우 적절한 개수를 체크하여 구매하는 것이 좋습니다. 사용량이 적은 프로그램들은 라이선스 순환이 잘 되지만, 사용량이 많은 프로그램의 경우 개개인들이 업무를 볼 때, 문제가 있을 수 있습니다. ..
2022.06.15
no image
Python PDF 추출 / 분할 / 병합 / 암호화 / 복호화 커맨드 버전
Python으로 PDF 추출, 분할, 병합, 암호화, 복호화 커맨드 버전의 예제 코드입니다. 각 기능은 다음과 같습니다. - 추출 : 특정 페이지만 추출 - 분할 : 특정 페이지마다 분리 - 병합 : 여러 PDF 파일 합치기 - 암호화/복호화 : PDF 파일 암호 설정 및 해제 참고로, PDF 추출/분할/병합은 PyPDF2 라이브러리 위주로 동작하고 PDF 암호화/복호화는 pikepdf 라이브러리 위주로 동작합니다. PyPDF2도 암호화가 가능하긴 한데 생각보다 원하는대로 동작하지 않았습니다. 그래서 부득이하게 암호화 및 복호화는 pikepdf 라이브러리 위주로 동작하게끔 구성했습니다. 전체코드 import os from glob import glob from PyPDF2 import PdfFileRea..
2022.04.04
no image
Github Repository 생성, 삭제 Sourcetree 연동, 클론&푸쉬, 커밋 예제
Github에서 Repository를 생성 및 삭제하는 방법과 생성한 Repository를 Sourctree에서 연동 및 클론한 후 커밋하는 방법을 설명드리겠습니다. 순서는 Github Repository 생성 Sourcetree 연동 Sourcetree 클론 Sourcetree 커밋&푸쉬 Github Repository 삭제 순으로 진행하겠습니다. Github Repository 생성 먼저, Github에서 Repository를 생성 및 삭제해보겠습니다. Github에서 로그인 하시면, 좌측 상단에 아래와 같은 화면이 보일텐데, New 버튼을 클릭합니다. 이제 아래와 같은 화면 보일겁니다. 상단 그리고 좌측 순으로 하나씩 설명드리겠습니다. # Owner Owner는 특별한 경우가 아니라면, 자신의 아이..
2022.04.04
no image
Jira Issue Links 추가
Jira에 Issue에서 다른 Issue들을 Link 걸어둘 수 있습니다. Link된 이슈들의 상태가 보이기 때문에, 프로세스상 이전 Issue들의 Link를 걸어두면 관련 담당자에게 묻지 않아도 한 눈에 확인이 가능합니다. 아래의 화면에서 이슈설명 1 부분에 1개의 이슈가 링크되어 있고 이슈설명 2 부분에도 1개의 이슈가 링크되어 있습니다. 붉은색 버튼을 클릭하면... 아래와 같은 팝업이 뜨는데요. 3개의 이슈를 추가하도록 해보겠습니다. 다음과 같이 3개의 이슈가 되었습니다.
2022.03.24
no image
Jira Issue 리스트 View 설정 변경
Jira에서 Issue 리스트의 View 설정을 변경할 수 있습니다. 개인적으로, 경우에 따라서 Issue 리스트 View를 변경하면서 보고 있습니다. 찾고자 하는 방식과 목적에 따라, 활용중이네요. 먼저, Detail View입니다. Detail View는 좌측에 리스트들이 간략히 설명되어 있고 우측에 이슈 내용들이 함께 정리되어 있습니다. 그리고 우측 상단의 빨간색 네모박스를 클릭하면, View를 선택할 수 있습니다. 이번에는 List View로 보겠습니다. List View는 상대적으로 내용은 적지만, 잡다한 내용이 없어서 전체를 훑는 느낌으로 보고 싶을 때, 유용합니다.
2022.03.24
no image
JIRA Attachments(첨부파일) 수정 및 삭제
JIRA에서 Attachments에 첨부된 파일이 삭제가 안되는 경우가 있습니다. 권한이 없어서 발생되는 문제인데, 자신에게 권한이 없다면 권한이 있는 분에게 요청해야 하고 자신에게 권한이 있다면 JIRA 이슈 상태를 변경해야합니다. 운영하는 회사마다 조금씩 명칭이 다를 수도 있는데, Re Open일 가능성이 큽니다. Re Open일지, 다른 형태일지 확신할 순 없지만, Attachments에 마우스를 올리면 휴지통 모양이 활성화되는 것을 볼 수 있습니다. 이후에 새로운 팝업이 뜨는데 Delete 버튼을 클릭하시면 됩니다.
2022.03.20
no image
Sourcetree Git Commit/Tag/Branch 검색
Sourcetree에서 Git Commit 번호, Tag, Branch 등을 검색할 수 있습니다. 우측, 상단에 건너뛰기 를 클릭하시면 커밋… 과 TAG 및 Branch들이 보입니다. 커밋...을 클릭하시면 아래와 같이 화면이 나오는데 검색하고자 하는 Commit 번호와 확인 버튼을 클릭하시면 됩니다.
2022.03.11
C언어 배열 복사하기 배열 / memcpy / 포인터
C언어에서 배열을 복사하는 여러 방법이 있습니다. 배열의 값을 직접 대입하거나, memcpy를 사용할 수도 있습니다. 임베디드 환경에서는 간혹 memcpy를 지원하지 않거나, 원하는 동작을 안하는 경우가 있어서 포인터를 이용해서 활용하기도 했습니다. 기호에 맞게 사용하시면 됩니다. 전체코드 Option 1 : 배열값 직접 대인 Option 2 : memcpy 함수 활용 Option 3 : 포인터 활용 #include #include int main(void) { int i; unsigned char myBuf[100]; unsigned char cpyBuf[100]; for(i=0; i
2022.03.11