Work Hard, Play Hard
-
Linked List 한번에 이해하기보통사람의 스터디로그/자료구조, 이젠 좀알자. 2025. 6. 6. 14:42
시작하며 — (Feat. 포인터, 구조체, 자료형 이젠 짚고 간다)Node* 이게 도대체 뭔데 ->를 쓰는 거지?create_node() 함수는 왜 Node*를 반환하는 걸까?구조체랑 포인터는 어떻게 연결되는 거야?main()에서는 그냥 int 넘기는데, 왜 갑자기 힙이고 malloc이고 그래?구조체 변수와 구조체 포인터는 뭐가 다른데?연결 리스트 구현은 왜 포인터를 꼭 써야 할까? 결론필요를 느끼자!직관적인 의문을 가지자! 내가 Node a;처럼 구조체를 선언하면,이건 메모리의 어떤 공간에 구조체 자체가 실제로 생긴 것이다.(※ 선언 방식에 따라 스택이 될 수도, 힙이 될 수도 있다) 그런데 이 구조체를 그냥 복사해서 쓰면?각각 완전히 독립된 메모리 덩어리다. 연결이 안 된다. right? 즉, 노드들..
-
임베디드 OS개발 프로젝트(CH6)Share/OS 2025. 5. 24. 23:36
Intro임베디드 시스템 개발에서 UART를 통한 입력/출력은 거의 필수다. 특히 인터럽트 기반으로 입력을 처리하면 불필요한 polling 없이 효율적인 시스템 운영이 가능하다.이 글에서는 ARM Cortex-A + GIC 기반의 베어메탈 환경에서, UART RX 인터럽트를 통해 입력을 처리하는 흐름을 함수, 구조체, 동작 순서 중심으로 정리한다. RTOS 없이 순수 bare-metal 환경에서 인터럽트를 어떻게 구성하는지, 시스템-장치 간 흐름을 이해하고 싶은 개발자라면 도움이 될 것이다.예를 들어, 두 개의 MCU가 UART를 통해 서로 데이터를 주고받는 상황을 생각해보자.이때 양쪽 모두 인터럽트 기반 통신 방식을 사용한다면 다음과 같은 흐름이 이뤄진다:UART RX 인터럽트를 활성화하고HAL 계층에..
-
OS 관련 개발을 할때 느낀점 feat.뇌피셜보통사람의 스터디로그/개발일기장 2025. 5. 20. 22:41
1. OS 개발 생태계에 대한 이해OS 개발을 둘러싼 생태계는 단순히 커널만을 이야기하는 게 아니다. BSP(Board Support Package), 커널 소스, 그리고 넓게는 QEMU나 실제 보드를 통한 시뮬레이션까지 포함된다. 너무나도 방대하다.Linux든 RTEMS든,어쨌든 QEMU 환경에서 구동할 수 있어야 하고,GDB로 붙어서 특정 심볼(함수나 변수)을 추적할 수 있어야 한다.그래서 뭐?단순히 돌아가는 걸 넘어서서,내가 만든 코드가 정확히 언제, 어떻게 호출되는지를 알아야 하고,거기서부터 시작이다. 2. 환경부터가 짜질구리? 복잡하다진짜 문제는 기능이 아니라 환경이다.빌드 시스템, 크로스 컴파일러, 툴체인 버전,하나라도 안 맞으면, 그냥 에러 지옥이다.빌드 에러? 링커 에러?그냥 흔한 하루..
-
24.12.17. 선택의 기로실험중인 삶/2024 생각의 기록 2024. 12. 17. 13:58
나는 지금 어떤 인생을 살 것인가에 대한 선택의 기로에 있다. 돈을 더 벌어서 기여코 건물주는 되어야 한다. 가족과 더 많이 함께보내는 시간이 최고다. 인생 다 필요없고, 새로운 경험 장소 다 가보자. 가장 큰 행복이다. 내가 부여 받은 삶은 나에서 끝난게 아니라, 다음세대와 누군가를 위해서 살아야한다. 나눔과 봉사의 삶 누군가를 돕든 말든, 일단 뭔가를 하려면 일단 내가 성공해야되. 내가 성공하는 방법에 올인하자. 그게 인생의 답이다. 일단 돈부터 벌어보고, 그다음에 무얼할지 생각해보자. 건강이 최고야. 그냥 건강하면 됬지 더바랄 것은 없어. 난 어느 길로 가고 있는가 .
-
ubuntu , VScode C환경 세팅Share 2024. 12. 4. 13:47
참고https://swiftcam.tistory.com/388 Ubuntu20.04에서 VSCode C/C++ 개발환경 구축하기참고자료 https://webnautes.tistory.com/1158 Visual Studio Code에서 C/C++ 프로그래밍( Windows / Ubuntu) Windows와 Ubuntu 환경에 설치된 Visual Studio Code에서 C/C++을 컴파일하고 실행시키는 방법에 대해 설명합니다. 테swiftcam.tistory.com1. 리눅스 필수 개발툴(컴파일도구등) 다운로드 sudo apt-get install build-essential gcc 컴파일러 세팅확인 2. vscode 에서, c/c++ 관련 컴파일러 설치 터미널 - 작업구성 - 탬플릿에서 tasks...
-
완벽해야된다는 착각실험중인 삶/2024 생각의 기록 2024. 11. 25. 21:55
실수를 두려워 하는 삶이 과연 삶의 묘미를 알 수 있을까? 간절히 바라는 시험이 있든, 바라던 직장에 들어가는 일이든, 원하는 것을 가지는 것이든, 이 모든 것은 그저 지나가는 과정일 뿐이지, 무언가 결과물이 아니다. 그러한 결과를 얻기 위해서는당연히 노력해야한다. 집중해야 한다. 힘을 쏟아야 한다. 그러나, 결과에 대한 무거운 마음이 결국은 완벽해야 한다는 착각을 불러 일으킨다. 가지고 싶은게 없는 사람이 어딨겠으며, 해보고싶은게 없는 사람이 있겠는가. 다만, 희망은 가벼워야 한다. 가볍게 살아야한다. 무거운 희망은 절망 혹은 허무만 있을 것이다. 가벼운 희망은실패도 실패한 것이 아니며, 성공을 하여도 이 또한 별게 아니다. 과정을 즐기는 묘미를 이제야 조금 알 것도 같다. 지금 이 순간이..
-
[error] arm-none-eabi-gdb install 설치에러Share/OS 2024. 9. 17. 15:14
Trial & Error sudo apt install gdb-arm-none-eabi Result >E: Unable to locate package gdb-arm-none-eabi Solution> 1. https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm/downloads Downloads | GNU Arm Embedded Toolchain Downloads – Arm DeveloperDownload the GNU Embedded Toolchain for ARM, an open-source suite of tools for C, C++, and Assembly p..
-
Minicom으로 디바이스 장치 연결 (tty)Share/STM32 2024. 6. 20. 11:34
Minicom설치 sudo apt-get install minicom -y 연결포트 확인 dmesg | grep tty minicom설정 Serail Device경로만 변경 참고https://velog.io/@wisdom_lee/%EC%9A%B0%EB%B6%84%ED%88%AC%EC%97%90%EC%84%9C-minicom%EC%9C%BC%EB%A1%9C-%EC%8B%9C%EB%A6%AC%EC%96%BC-%ED%86%B5%EC%8B%A0-%ED%95%98%EA%B8%B0 우분투에서 minicom으로 시리얼 통신 하기리눅스에서 minicom을 이용하여 시리얼 통신을 하는 과정velog.io