분류 전체보기 416

[독서후기] 현업 시니어와 함께 하는 임베디드 소프트웨어 베이직 with 라즈베리파이

1. 책 선택 이유  다른 업무들로 인해 임베디드 소프트웨어 개발에 할당하는 시간이 부족해서 다시 차근히 읽어 볼거리가 없을까 찾다가 읽어 보았습니다.  2. 간략한 내용 소개  간략한 소개 내용이 부족한 것 같아, 목차일부를 같이 포함해 보았습니다.   이 책은 임베디드를 처음 접하는 독자들을 위한 책으로, 현업 시니어가 이론을 설명해 주고 주니어가 실습을 하는 방식으로 되어있습니다. 책의 앞부분은 하드웨어에 대한 내용을 다루고 그 후 소프트웨어 입문에 대한 내용을 다루고 있습니다. 그다음 실절적인 소프트웨어 개발 내용을 다루고 마지막으로 중급자를 위한 내용도 간략하게 소개하고 있습니다. 이 책 한 권이면 막연하게 느껴지던 임베디드 소프트웨어도 한층 가까워질 것입니다. PART 1 하드웨어를 이해하고 ..

Book Report 2025.01.19

자원을 공유하는 다중 쓰레드 실습 소스코드 (뮤텍스-mutex 적용)

안녕하세요.  "[도서]임베디드 소프트웨어 베이직, 13.1 자원을 공유하는 다중 쓰레드 실습" 중 마지막 내용에 전체 소스코드 내용이 없어서  공유합니다.  거의 마지막 실습이고 소스코드 내용을 요약하자면 이전 내용에서 다루었던 pthread를 이용을 하는데 있어 공유하는 변수 2~4개의 다른 쓰레드에서 접근했을 때 어떻게 처리해야 하는지 간략하게 알려줍니다.  세마포어, 뮤텍스 등 방법이 있지만 여기서는 뮤텍스(Mutex)를 활용해서 1씩 증가하고 감소하는 쓰레드와 값이 정상적으로 동작하는지 확인하는 코드입니다.   1. 뮤텍스 활성화 및 쓰레드 4개 테스트 소스코드  100,000번 1씩 증가, 감소하는 쓰레드 함수와 300,000번 1씩 증가, 감소하는 쓰레드를 실행하고, 공유자원으로 사용할 변수..

작은 기부 문화 만들기 12 - 지금, 아이들에게 따뜻한 온기를 전해주세요.

안녕하세요.  벌써 한 해가 시작하고 1월의 중반이 되었습니다. 그리고 며칠 뒤면 긴 연휴가 있어서 다들 설레는 마음이라 생각됩니다.  그러나 안타깝게도 이런 즐거움에 소외되어 명절을 보내야 하는 어린 친구들이 있어 이번에 작은 기부를 하였습니다. 정치적은 혼란한 상황 속이지만, 다음 시대를 주도할 어린 친구들에게 작지만 따뜻한 도움이 되었으면 합니다.  1. 모금함 소개   "함께하는 작은 나눔, 아이들에게 큰 행복" 대구아동복지센터는 가정의 보호가 어려운 아동 56명이 살아가고 있습니다.늘 다가오는 겨울. 크리스마스다 설날이다 하지만 가슴 한편엔 걱정부터 밀려옵니다.매년 추운 겨울이 돌아오면 시설 운영진과 선생님들은 어김없이 난방비 걱정을 해야 합니다 시설 내 아동들이 생활하는 7개의 생활공간 난방비..

[팝송으로 영어공부(186)] Nothing to Lose – Michael Learns to Rock

1. 노래 제목 : Nothing to Lose2. 가 수 : Michael Learns to Rock3. 노래 듣기 (Youtube)    4. 핵심표현  * Nothing to lose : 잃을 것이 없다, 위험이 없거나 시도할 가치가 있는 상황  I decided to apply for the job because I had nothing to lose.  나는 잃을 것이 없었기 때문에 그 직업에 지원하기로 결심했다.  Why not try it? You’ve got nothing to lose!  왜 시도해 보지 않니? 너는 잃을 게 없잖아! * Let me in : 나를 들여보내줘, 나를 받아들여줘  He knocked on the door and shouted, 'Please let me in..

라즈베리파이(Raspberry Pi)에서 스레드(pthread) 테스트

안녕하세요.  읽고 있는 책(하단 참고 도서 참고)에 내용 중 pthread 내용  조금 수정이 필요한 코드 부분이 있어 수정과 확인을 위해서 공유합니다.  1. POSIX Threads (pthread)란?POSIX Threads(pthreads)는 POSIX (Portable Operating System Interface) 표준을 따르는 멀티스레딩 API입니다.멀티스레딩(multi-threading)을 지원하여 하나의 프로세스 내에서 여러 스레드가 동시에 실행될 수 있도록 설계되었습니다.Unix 계열 시스템(Linux, macOS 등)에서 널리 사용되며, C 및 C++에서 멀티스레드를 구현하는 표준 방법입니다.2. 주요 특징경량 프로세스: 스레드는 동일한 프로세스 내에서 실행되므로 메모리 공간과 리..

라즈베리파이(Raspberry Pi) 리눅스 커널 구성 확인 및 빌드(build) 해보기

안녕하세요.   Rasbperry Pi를 사용하지만, 실질적으로 커널을 빌드해 볼 일을 많이 없을 것이라 생각됩니다. Device Driver 개발을 위해 커널 소스 혹은 해더를 다운로드하는 정도일 것입니다. 간단하게 커널 구성 내용과 빌드하는 방법 정도는 알아 두면 좋을 듯합니다.  언제 시점에서 테스트하느냐에 따라서 디렉터리 경로가 변경될 수 있으니 참고해서 따라 하시면 도움일 될 것입니다.  1. 커널 빌드를 위한 패키지 설치 git : 버전 관리 시스템으로, 소스 코드를 효율적으로 관리하고 공동 작업을 지원합니다. Git은 로컬과 원격 저장소 간의 코드 동기화를 가능하게 합니다. bc : 고급 계산기 언어로, 명령줄에서 수학적 계산을 수행할 수 있습니다. 특히, 스크립트에서 복잡한 계산을 처리할 ..

리눅스(Raspberry Pi)에서 램 디스크(RAMdisk) 장단점 확인 및 램 디스크 테스트 하기

안녕하세요. 기존 HDD에서 처리하다 보면 시간이 오래 걸리기 때문에 RAM에 필요한 코드 부분을 올려놓고 사용하는데요. 원하는 임의의 디스크를 만들어서 HDD에서 하는 것처럼 작동시켜 얼마나 빨리 처리되는지 확인해 보겠습니다.  1. Ramdisk란  시스템의 RAM(주기억장치)을 디스크 드라이브처럼 사용하는 가상 저장 장치를 의미합니다. 쉽게 말해, 메모리(RAM)를 파일 시스템처럼 활용하는 기술입니다. 이 디스크는 실제 물리적 디스크(HDD, SSD)가 아닌 메모리의 일부를 할당해 동작합니다.  운영 체제에서는 이를 임시 파일 시스템으로 다루며, Linux에서는 tmpfs나 ramfs 명령어로  파일 시스템이 RAMDisk로 구현하는 데 사용합니다.  2. 작동 방식   할당 : 시스템 메모리(RA..

파일(assets)을 안드로이드 앱에 넣고 사용하기(webview와 txt파일 연동)

안녕하세요.  안드로이드 앱에서 HTML 파일을 앱(App) 안에 저장하고 저장한 HTML 파일을 Webview와 연동하는 방법을 확인해 보았습니다.  우선 assets에 파일을 넣는 경우,New 해서 만들 수도 있겠지만, 간단하게 자신의 프로젝트 소스 폴더(...\app\src\main\)에 assets라고 만들고 파일들을 넣어두면 스튜디오에 나타납니다.  그리고 앱에서 접근하는 방법은 여러 좋은 사이트들이 있어서 저는 간단한 내용 설명들만 하겠습니다.  사이트에 나온 것처럼 파일을AssetManager assetMgr = this.getAssets(); 해서 assets 안에 있는 파일들을 검색할 수 있습니다.  그런데 여기서 조금 주의할 것이  assets = asssetMgr.list("/") 과..

Programming/Android 2025.01.07

임베디드 프로그래밍에서 알아야 할 volatile 키워드

임베디드 소스코드를 보다 보면 가끔 변수 타입 앞에 단어 volatile 하나가 더 붙어 있는 경우를 볼 수 있습니다. 뭐 특별한 기능을 하고 있는 것 같지도 않은데 말이죠.  1. volatile의 정의  영어 단어로서 volatile 의미는 휘발성의, 불안정한, 휘발하는 뜻을 가지고 있습니다. 이런 의미로 프로그래밍에서 volatile은 컴파일러에게 특정 변수의 값이 프로그램 흐름에 의해 예측할 수 없으므로, 항상 메모리에서 직접 읽고 쓰도록 지시하는 키워드입니다.  최적화 과정에서 해당 변수의 값이 캐시 되지 않도록 보장하고 주로 하드웨어 레지스터, 멀티스레드 환경의 공유 변수, 인터럽트 핸들러에서 사용되는 변수에 적용됩니다.  2. 하드웨어 코드 예시  변수의 값을 최적화하지 말고 메모리에서 직접..

Embedded 2025.01.06

[독서후기] FREE WAY 프리웨이

1. 책 선택 이유   일에 지쳐있다 보니, 다른 사람들의 삶의 방식 혹은 어떻게 살아가고 있는지 궁금하기도 했는데, 프리 웨이라고 말하며 자신의 사람의 방식은 이렇게 하고 있다 이야기해 주는 것 같아 읽어 보았습니다.  2. 간략한 내용 소개  20대의 대부분을 해외에서 보내며 겪은 다양한 인생 경험을 바탕으로 끊임없이 자신을 업그레이드시키는 방법과 실용적인 인생 조언, 동기부여 콘텐츠를 만들고 있는 드로우앤드류는 ‘MZ 세대의 성장 멘토’라는 수식어에 가장 걸맞은 사람이다. “앤드류 님처럼 살고 싶어요”라고 댓글을 남기며 그의 현실 조언에 귀 기울이는 69만 구독자가 이를 뒷받침한다. 수많은 자기 계발 크리에이터들 사이에서 특히 MZ 세대가 드로우앤드류에게 주목하는 이유는 무엇일까? 저자는 그 답을 ..

Book Report 2025.01.05

[팝송으로 영어공부(185)] Nothing Compares to You – Prince

1. 노래 제목 : Nothing Compares to You2. 가 수 : Prince3. 노래 듣기 (Youtube)   4. 핵심표현   * take away : 제거하다, 없애다  The painkillers took away my headache.  진통제가 내 두통을 없애줬어.  Can you take away the dishes from the table?  식탁에서 접시 좀 치워줄래요? * go wrong : 잘못되다, 문제가 생기다  Something went wrong with the machine, and it stopped working.  기계에 문제가 생겨서 작동이 멈췄다.  If you follow the instructions, nothing will go wrong.  설명..

gstreamer 1.19.2 버전 소스 컴파일 방법과 gstreamer Plugin 엘리먼트 컴파일 방법

안녕하세요.    gstreamer를 사용함에 있어서 문제는 없지만, 제공해 주는 라이브러리 말고 필요한 기능을 추가해서 플러그인 라이브러리를 만들어 보고 싶었습니다. 그리고 현재 gstreamer 개념에 대해서 완벽하게 이해하지는 못해서 상세한 설명은 가능하지 않지만, Plugin개발은 가능하지 않을까를 우선 확인해 보았습니다.   인터넷에서도 자료가 있지만 이전 컴파일 방법이거나 gstreamer doc 파일에도 최종 실행까지 상세하게 설명이 되어 있지 않아서 결과를 볼 수가 없었습니다. 그래서 조금 내용을 찾아보았습니다. (테스트하는 시점에 따라 버전이 다를 수 있습니다.)  1. 테스트 환경   - OS : ubuntu 20.04 LTS 64bit  - gstreamer설치 전 필요한 프로그램  ..

플래그먼트 갱신, 새로고침 하는 방법 (fragment refresh)

안녕하세요.  조금 오래된 안드로이드 버전에서 플래그먼트 갱신하는 방법을 공유해보고자 합니다. 별것 아닐 수 있는데, 몇 곳 사이트에 알려주는 방법들을 사용해 보니 작동하지 않아서 저와 같은 방법으로 할 경우 될 수도 있지 않을까 해서 공유합니다. 우선 구글에 플래그먼트 새로고침이라고 검색하면 답변들이 주로 아래와 같은 코드로 알려주었습니다. 방법 1)  방법 2)// Reload current fragment Fragment frg = null;frg = getSupportFragmentManager().findFragmentByTag("Your_Fragment_TAG");final FragmentTransaction ft = getSupportFragmentManager().beginTransacti..

Programming/Android 2024.12.28

exposed beyond app through ClipData.Item.getUri() 에러 발생시

안녕하세요.  아직 LG G2 폰과 같은 오래된 폰 대응이 있어서 낮은 버전에서 카메라 작동되면 상위버전은 잘 될 거야 생각했는데, 그렇지 않았습니다.  카메라 촬영하는 소스를 만들고 안드로이드 5버전에서는 문제가 없었는데 7이상 최신 폰에서는 카메라가 작동을 하지 않았습니다.  에러 메시지를 보면 "exposed beyond app through ClipData.Item.getUri()" 에러가 나왔습니다.좀 더 자세한 내용은 아래의 참고 사이트 링크를 참고하시면 됩니다.  간단히 말해서 "Android 7.0 이상부터 파일공유 정책이 변경되었습니다. 그렇기에 File Provider에 대해 알아두셔야 합니다. 파일에 일반 경로인  file://~ 을 참조하면 Fileuriexposedexception..

Programming/Android 2024.12.26

루나랩 스탠다드 싱글 모니터 암 2개 설치 후기 (듀얼 모니터를 위해 싱글 2개 구입)

"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."   안녕하세요  프로그램 개발하는데 효율(?)을 높이고 책상정리 겸 모니터를 활용을 높이기 위해서 모니터암을 검색했습니다. 피봇 기능을 활용해서 코드 창 혹은 문서를 길게 볼 수 있게 하고 모니터도 조금 큰 것으로 변경하고자 무게도 감당하는 것 등을 고려했습니다.  모니터 암 제품이 많이 있었는데 그중에 가성비 있는 것으로 고민을 했습니다.노스바유, 카멜, 루나랩 등  고가는 처음 사용하기에 무리가 있고 대충 사용하지는 의미로 2만 원대 고려를 했지만, 장단점이 보여서 조금 더 오래 사용 및 AS 등 생각해서 루나랩 제품을 한 번 사용해 보기로 했습니다.   유튜브와 후기도 보는데 처음 생각한 것보다 생각해야 할 ..

안드로이드 앱에서 오버레이 화면 사용하는 방법

안녕하세요.   조금 지난 내용이긴 한데 정리하면서 남겨 놓습니다.   - 앱에서 지속적으로 화면이 나타나도록 하는 방법을 말합니다. 기본 방법은 아래의 링크를 참고해서 코딩하면 됩니다. https://milkissboy.tistory.com/46  그러나 이전 버전에서는 코딩을 하면 퍼미션 관련해서 오류가 발생합니다. (AndroidStudio 3.5).앱 위에서 실행하는 것을 허용해도 에러가 나는 경우에는 버전에 맞게 작성해주어야 합니다. - 25 버전보다 상위 버전 경우  TYPE_SYSTEM_ALERT -> LayoutParams.TYPE_APPLICATION_OVERLAY로 설정해주어야 합니다. https://stackoverflow.com/questions/32224452/android-una..

Programming/Android 2024.12.23