Posts in 2023

  • 마디 보드 개발 여정

    Sunday, April 09, 2023 in 블로그

    2022년 9월 21일 기획부터 2023년 4월 6일 출시까지의 기록을 남깁니다. 계기 전 직장 동료 결혼식에서 만난 전 직장 동료와 짝짜꿍이 맞아 마이크로컨트롤러 개발 보드를 만들기로 했다. 개발 보드 자체만으로는 사업성이 있을 것 같지 않았지만, 계획하고 있던 IoT 향 클라우드 서비스와 연동해 부가가치를 만들 수 있을 것 같았다. 무엇보다 나만의 조그만 보드가 갖고 싶었다. 나의 개발 프레임워크를, 나의 세계를 구축하고 싶었다. 대개발시대 …

    더 읽기

Posts in 2022

  • 인라인 어셈블리

    Friday, November 25, 2022 in 블로그

    C, C++ 그리고 Rust 와 같은 언어에서는 소스 코드 내에서 어셈블리 명령어를 사용할 수 있는 인라인 어셈블리를 지원합니다. 인라인 어셈블리는 다음과 같은 경우에 유용할 수 있습니다: 인터럽트 활성/비활성화와 같은 특수한 하드웨어 기능을 실행해야 할 때 컴파일러에서 유발하는 오버헤드를 피하고자 할 때 컴파일러에서 생성하는 함수 프롤로그나 에필로그 생성을 피하고 싶을 때 최적화 방지를 위한 메모리 배리어를 삽입하고자 할 때 Info 적당한 …

    더 읽기

  • 정렬되지 않은 메모리 접근

    Tuesday, September 06, 2022 in 블로그

    Introduction Zephyr 코드를 살펴보던 중 다음 코드를 만났습니다: #define UNALIGNED_GET(p) \ __extension__ ({ \ struct __attribute__((__packed__)) { \ __typeof__(*(p)) __v; \ } *__p = (__typeof__(__p)) (p); \ __p->__v; \ }) 위 코드를 분해하면서, 메모리 주소가 접근 크기로 정렬되어 있지 않은 경우 어떻 …

    더 읽기

  • CBOR 바이너리 인코딩

    Thursday, August 18, 2022 in 블로그

    들어가기 Concise Binary Object Representation(CBOR) 의 목적과 특징은 다음 세 가지로 요약할 수 있습니다. 인터넷 표준으로 정의된 기본 데이터 타입과 자료구조를 바이너리 포맷으로 명확하게 표현합니다 제한된 메모리와 프로세서 자원을 가진 시스템에서도 원활히 동작하도록 인코더와 디코더를 경량 하게 구현합니다 데이터를 스키마schema description 없이 디코딩 합니다 문자열로 이루어진 JSON 의 가독성을 …

    더 읽기

Posts in 2021

  • 메모리 배리어

    Tuesday, October 19, 2021 in 블로그

    우선 compiler reordering 과 processor reordering 을 구분해야 할 것 같은데요. 이 글에서는 processor reodering 만 다룹니다. 코드가 실제 CPU 코어에서 동작하기 이전에 컴파일러에 의해 코드가 재배치되는 것을 막는 컴파일러 메모리 배리어에 대해서는 따로 언급하지 않습니다. 이 글에서 reodering 은 한글로 재배치라 표현하고 있습니다. 기본적인 메모리 타입과 속성을 알아보고, ARM 아키텍처 …

    더 읽기