개발 블로그를 다시 시작하며...

도입 초심을 잃고 나태해진 자신을 반성하며 블로그를 다시 써보려고 합니다.. 예전에 썼던 글들을 보면서, 그래도 열심히 정리하고 노력했던게 뿌듯하기도 했고, 무엇보다 그동안 계속 속썩이던 구글 검색엔진이 드디어 내 블로그를 크롤링해서 미약하나마 트래픽이 발생했고, 다시 블로깅을 할 의지가 조금 생겼습니다! 그동안의 행보 싸피를 수료하고, 운좋게도 바로 취업이 되어 8월부터 입사를 하게 되었습니다. 입사 후에는 그래도 첫 회사라고 나름 의욕도 있었고, 열심히 다니다보니 어느새 블로그 생각은 점점 머릿속에서 사라지고 있었습니다.. 회사까지 출퇴근 거리도 꽤나 멀었고(왕복 4시간…) 회사에 적응하면서 나름 보탬이 되고자 열심히 배우다보니 조금 현실에 안주했던 것 같습니다. ...

2024. 11. 3. · 3 분 · 513 단어 · Leaf

블로그를 쓰게 된 계기와 앞으로의 방향성

도입 미루고 미루던 블로그를 이제야 만들었다. 사실 내가 블로그를 쓰게 될 것이라고는 전혀 생각지도 못했지만, 이왕 시작한거 열심히 써보려고 한다. 첫 협업과 위키페이지 작성 블로그를 쓰게 된 가장 큰 계기는 첫 프로젝트에서 처음으로 협업을 하면서 느꼈던 생각들이었다. 같은 팀원들끼리 공유해야 할 것도 많았고, 팀장으로서 소통의 창구가 필요한 것도 느끼고 있었기에 처음에는 짧은 지식으로나마 직접 위키페이지를 만들었다. (Vue.js로 로컬에서 라이브 서버를 띄워놓음…) 처음에는 나름 잘 만들었다고 뿌듯해 했지만, 로컬에서만 작동하는 부분(같은 네트워크 대역을 쓸때만 접속이 가능) 수정사항이나 새로운 요구사항이 발생할 때마다 변경이 힘듦 팀원들도 사실 많이 이용하지는 않았는지 별로 피드백이 없었음 위의 이유(핑계)들로 프로젝트가 바빠지면서 점차 소홀히 관리하게 되었다. ...

2024. 2. 28. · 4 분 · 701 단어 · Leaf

임베디드 리눅스에서 커널 시스템 콜과 디바이스 트리 동작원리 이해하기

개요 Zynq 보드와 같은 SoC 기반 시스템에서 사용자 애플리케이션(App) 이 FPGA 디바이스를 제어하기 위해서는 커널(Kernel) 과 디바이스(Device) 간의 메모리 접근 메커니즘을 이해하는 것이 중요합니다. 이번 글에서는 디바이스 트리(Device Tree) 와 비트스트림(Bitstream) 을 기반으로 커널과 유저 영역에서 디바이스를 읽고 쓰는 전체 구조를 살펴보겠습니다. 전체 그림 전체 아키텍처는 다음과 같습니다. 위와 같이 device, kernel, user 가 상호작용하여 프로그램을 수행합니다. 징크보드로 전체 구조를 살펴보면 위와 같습니다. ...

2026. 3. 26. · 5 분 · 921 단어 · Leaf

Context Switch 중 Bus Fault 발생 원인 분석(STM32F429 + FreeRTOS)

상황 Windows11 CubeIDE STM32F429 + FreeRTOS 포팅 context switch(이하 문맥전환) 수업 시간에 각 태스크에서 led를 켜고, delay 시 led를 끄도록 위 코드와 같이 작성함 디버깅 시 첫번째, 두번째 문맥 전환에서는 정상 동작 세번째 문맥 전환 발생 시 Bus Fault 발생 소스 코드 void xPortPendSVHandler( void ) { /* This is a naked function. */ ledoff(); __asm volatile ( " mrs r0, psp \n" " isb \n" " \n" " ldr r3, pxCurrentTCBConst \n" /* Get the location of the current TCB. */ " ldr r2, [r3] \n" " \n" " tst r14, #0x10 \n" /* Is the task using the FPU context? If so, push high vfp registers. */ " it eq \n" " vstmdbeq r0!, {s16-s31} \n" " \n" " stmdb r0!, {r4-r11, r14} \n" /* Save the core registers. */ " str r0, [r2] \n" /* Save the new top of stack into the first member of the TCB. */ " \n" " stmdb sp!, {r0, r3} \n" " mov r0, %0 \n" " msr basepri, r0 \n" " dsb \n" " isb \n" " bl vTaskSwitchContext \n" " mov r0, #0 \n" " msr basepri, r0 \n" " ldmia sp!, {r0, r3} \n" " \n" " ldr r1, [r3] \n" /* The first item in pxCurrentTCB is the task top of stack. */ " ldr r0, [r1] \n" " \n" " ldmia r0!, {r4-r11, r14} \n" /* Pop the core registers. */ " \n" " tst r14, #0x10 \n" /* Is the task using the FPU context? If so, pop the high vfp registers too. */ " it eq \n" " vldmiaeq r0!, {s16-s31} \n" " \n" " msr psp, r0 \n" " isb \n" " \n" #ifdef WORKAROUND_PMU_CM001 /* XMC4000 specific errata workaround. */ #if WORKAROUND_PMU_CM001 == 1 " push { r14 } \n" " pop { pc } \n" #endif #endif " \n" " bx r14 \n" " \n" " .align 4 \n" "pxCurrentTCBConst: .word pxCurrentTCB \n" ::"i"(configMAX_SYSCALL_INTERRUPT_PRIORITY) ); } /*-----------------------------------------------------------*/ 원인(요약) xPortPendSVHandler()는 naked 함수로 선언되어 있음 ...

2026. 2. 11. · 4 분 · 815 단어 · map[email:spearoad15@gmail.com name:Sangyeop Nam]
blog cover image

Spring Security 파헤치기

2024. 11. 6. · Leaf
database duplication

[MySQL, Java]Spring CQRS 패턴 구현을 위한 DB 이중화

DB 이중화 및 CQRS 패턴의 중요성 MySQL Replication Database 구현 SpringBoot DataSource 이중화(CQRS 패턴) 구현

2024. 3. 10. · Leaf
blog cover image

좌충우돌 깃허브 블로그 생성기

2024. 2. 29. · Leaf