태그 목록
전체보기 (134)Rust(100)programming(68)C(28)driver(23)windows(23)Kernel(18)npu(14)kmdf(14)algorithm(10)VIBE(9)Claude(9)binance(9)trait(8)linux(8)wdf(7)python(7)cpp(7)TPU(6)coral(6)tokio(6)trading(6)dll(6)OCR(5)server(5)bevy(4)google(4)db(4)ecs(4)Coding(4)windows driver(4)Windbg(4)quant(4)async(4)Pico(4)egui(4)code(4)await(3)API(3)websocket(3)static(3)AI(3)raspberry(3)tflite(3)tiberius(3)crypto(3)wdm(3)easyOCR(3)load(3)Azure(3)macro(3)docker(3)DDS(2)stack(2)opencv(2)Service Bus(2)Interrupt(2)TRIGGER(2)pcie(2)json(2)derive(2)Race(2)PNP(2)vendor(2)nextjs(2)candle(2)fastdds(2)poll(2)TimescaleDB(2)Azure Function(2)gasket(2)manager(2)model(2)descriptor(2)mqtt(2)Axum(2)ProC(2)crate(2)publish(2)lifetime(2)runtime(2)claude code(2)String(2)features(2)device(2)bulk(2)horse(2)Module(1)minidump(1)primitive(1)vector(1)input(1)parking(1)EvtDeviceAdd(1)32(1)dpdk(1)apt(1)linx(1)service(1)B+TREE(1)멀티캐스팅(1)Valid Anagram(1)tailscale(1)PostgreSQL(1)byte(1)bb8(1)센서(1)autocxx(1)usb(1)BTreeMap(1)paddle(1)MSI-X(1)class(1)for(1)network(1)XML(1)setting(1)safe(1)kmdf driver(1)Coherent(1)CDC(1)prelude(1)Start(1)ps(1)caffe(1)ip(1)tcp(1)attribute(1)method(1)stream(1)Zoo(1)hit(1)endpoint(1)feature(1)timer trigger(1)mpsc(1)iter(1)dump(1)connection(1)borrow(1)loop(1)interface(1)coding test(1)arrow(1)Buffer(1)infer(1)WMF(1)letters(1)스마트포인터(1)libedgetpu(1)serde_json(1)inf(1)PaddleOCR(1)trait bound(1)architecture(1)broker(1)bounded(1)str(1)region(1)apache(1)timer(1)pointer(1)box(1)Enum(1)tauri(1)channel(1)중복(1)TRACE(1)ABI(1)Sensor(1)topic(1)font(1)dependency(1)namevalue(1)PI(1)HashSet(1)전역변수(1)block(1)Undefined behavior(1)hardware(1)leetcode(1)HashMap(1)memory(1)win32(1)flatbuffer(1)name(1)mssql(1)IGMP(1)firmware(1)Backtest(1)shallow copy(1)VA(1)cdylib(1)super(1)Squeeze1(1)MFC(1)Configuration(1)Top K Frequent Elements(1)chip(1)MOD(1)main.rs(1)Bulk Insert(1)waker(1)dllmain(1)vm(1)attach(1)install(1)kline(1)EDA(1)debug(1)Deref(1)Ownership(1)hash(1)Driven(1)chart(1)온도(1)grid(1)vec(1)group-anagrams(1)Cryptotrading(1)deep copy(1)Adapter(1)vs2008(1)Karina(1)cost(1)RWEVERYTHING(1)FaaS(1)capture(1)gui(1)Bitstream(1)ring(1)parquet(1)vscode(1)x86(1)Pool(1)handle(1)test(1)zero(1)function(1)Event(1)serde(1)EMA(1)bot(1)lib.rs(1)destructuring(1)sudo(1)zip(1)Getting(1)miss(1)telegram(1)import(1)Workspace(1)struct(1)RP2040(1)UB(1)GET(1)POST(1)two sum(1)Space(1)MSI(1)library(1)INSERT(1)NeetCode(1)Restful(1)dma(1)Symbol(1)dyn(1)closer(1)http(1)convert_scores(1)inference(1)UNBOUNDED(1)Thread(1)queue(1)vibe coding(1)WinObj(1)heap(1)VS2022(1)future(1)BDF(1)FROM(1)x64(1)Cache(1)axu(1)config space(1)nat(1)dangling pointer(1)Hexagonal(1)no_mangle(1)arrow flight(1)project(1)try(1)PORT(1)send(1)추론(1)AddDevice(1)wake(1)
post-thumbnail

windows driver MSI-X 고찰

windows에서는 별다른 설정을 해주지 않으면 기본으로 레거시 인터럽트를 사용한다. 따라서 MSI-X 인터럽트를 사용하기 위해서는 INF파일에 추가로 설정해 줘야 한다. INF 파일에 \[npu_driver_HW_Reg]섹션에 위처럼 설정하였다. 레지스트리의 컴퓨터\

2026년 6월 26일
·
1개의 댓글
·

windows driver EvtDeviceAdd 탐구

inf 등록 과정 포스팅에서 다루었던 과정 이후, I/O 매니저가 실제로 driver를 메모리에 로드하게 된다. DriverEntry가 호출이 되면서 WDF Driver 객체를 만들어준다. 그때 Config로 EvtDeviceAdd를 등록해 준다. 언제 그리고 누가 E

2026년 6월 24일
·
0개의 댓글
·
post-thumbnail

windows driver inf 파일 탐구

windows에서 드라이버를 설치하기 위해서는 필수 파일인 inf 파일에 대해서 좀 더 자세히 알아보려고 한다. %SystemRoot% -> C:\\Windows를 의미사용자가 장치 관리자에서 드라이버 업데이트를 누르거나, CLI에서 pnputil /add-driver

2026년 6월 22일
·
0개의 댓글
·
post-thumbnail

windows driver PCIe에 대한 고찰

PCIe에 대해서 조금 더 자세히 공부해 보고자 한다. BDF에 대해서 간략히 설명하겠다. Bus -> 도시Device -> 건물Function -> 층으로 간단하게 이해하면 된다. Bus는 총 256개, 버스당 최대 Device 32개, 디바이스당 최대 8개의 Fun

2026년 6월 5일
·
0개의 댓글
·
post-thumbnail

windows driver npu bitstream va 에 대한 고찰

추론 성공 후, 결과 영상을 기록하고 NPU 내부 구조를 깊게 파고드느라 바쁜 시간을 보냈습니다. 현재 NPU 드라이버 프로젝트는 유저 모드 런타임에서 ioctl을 통해 명령을 내리면, 커널 드라이버가 NPU 레지스터를 조작해 추론을 시작하는 구조입니다.하지만 매 추론

2026년 5월 29일
·
0개의 댓글
·
post-thumbnail

windows driver npu hardware 온도 읽어오기

google coral tpu의 온도 값을 읽어오는 기능을 구현했다. 어떤 흐름으로 구현했는지에 대해서 포스팅할 예정이다.npu_driver에 ioctl handler, hardware register offset, init 을 해준다. npu runtime dll에서

2026년 5월 19일
·
0개의 댓글
·
post-thumbnail

windows driver npu runtime dll 만들기

기존에는 console application에 mvp로 개발을 하였다. dll로 만들어서 여러 언어에서 사용할 수 있도록 개발할 예정이다. dll 개발 경험이 있어서 수월하게 만들 수 있었다. runtime dll의 가장 큰 역할은 npu_driver와의 통신을 래핑

2026년 5월 19일
·
0개의 댓글
·
post-thumbnail

windows driver npu convert_scores 버그가 아니었다

이전 포스팅에서 추론 버그라고 했던 convert_scores의 충격적인 사실을 발견했다. 아무리 Byte-identical로 바이트 단위로 정말 많은 CSR을 비교했다. input data의 CRC32

2026년 5월 18일
·
0개의 댓글
·
post-thumbnail

windows npu driver descriptor ring / status block 을 dma-coherent 메모리로 교체

convert scores가 계속 쓰레기로 나오는 문제, 이번에는 input도 아니고 weight도 아닌 descriptor ring / status block의 cache coherency 를 의심해봤다. libedgetpu (정상 동작)와 우리 driver (비정상

2026년 5월 17일
·
0개의 댓글
·
post-thumbnail

windows driver npu input data crc 검증

추론 output 데이터 중 convert_scores가 계속 잘못된 값으로 나와서 상당히 쉽지 않다. 이번 포스팅에서는 정상으로 추론되는 libedgetpu에서 실제 input buffer를 bin파일로 만들어서 만들어진 파일을 개발 중인 npu driver에서 사용

2026년 5월 15일
·
0개의 댓글
·

windows npu driver infer input problem

libedgetpu의 face detection은 정상이다. 직접 만든 npu driver로는 모든 anchor score가 균일하게 나오는 버그가 있다. 이번에는 input dump를 통해서 비교해 볼 예정이다. 분석하기 전에 아래와 같은 내용을 알아야 하는 것 같다

2026년 5월 14일
·
0개의 댓글
·
post-thumbnail

windows driver npu infer garbage output

개발을 진행하며 문제가 발생했다. param cache와 infer descriptor를 정상적으로 submit 한다고 생각했는데 기존 libedgetpu처럼 정상적으로 추론이 되지 않고 garbage 값이 나오는 현상이 있다. 위 사진은 추론 값이다. 이전에 발생했던

2026년 5월 14일
·
0개의 댓글
·
post-thumbnail

windows driver npu 진행상황

windows driver를 계속해서 개발을 하고 있는데, 유의미한 추론 값이 나오고 나서 블로그를 정리해야지 하고 있었다. 너무나 어렵고 생각보다 프로젝트가 길어지고 있다. 그래서 지금부터는 만나는 문제에 대해서 조금씩 포스팅을 해보려고 한다. 진행 상황 전체적인

2026년 5월 13일
·
0개의 댓글
·
post-thumbnail

windows driver npu tflite flatbuffer

tflite 모델은 내부가 FlatBuffers로 되어있다고 한다. google coral tpu에서 모델을 사용하기 위해서는 model 내부 구조의 bitstream을 뽑아서 맵핑을 시켜줘야 한다. google에서 제공해주는 libedgetpu를 사용하면 자동으로 해

2026년 5월 5일
·
0개의 댓글
·
post-thumbnail

windows driver NPU Project settings

이전 Windows Driver 시리즈에 이어서 실제 NPU를 컨트롤하는 windows driver를 만들예정이다. mcu와 하드웨어 가속기의 구조적 차이로 인해 실제 가속기 처럼 동작시키지는 못했다. 또한 usb를 활용했기때문에 PCIe 방식으로 구현해볼 예정이다.

2026년 4월 22일
·
0개의 댓글
·
post-thumbnail

windows driver interrupt continuous read 사용하기

전편에서 interrupt endpoint를 추가하였다. 온도 센서값을 읽어서 kmdf driver와 통신은 성공하였다. application level에서 실시간으로 값을 읽는 것을 구현하였다. 구조 어플리케이션 레벨의 동작을 간략히 설명하겠다. OnInitDia

2026년 4월 14일
·
0개의 댓글
·
post-thumbnail

windows driver interrupt endpoint 추가하기

pico의 온도 값을 application level에서 반복적으로 요청해도 되지만 interrupt 방식으로 처리해보고 싶어 endpoint를 추가하였다. vendor specific interface에 interrupt endpoint를 추가한 뒤, 다시 장치 인식

2026년 4월 14일
·
0개의 댓글
·
post-thumbnail

windows driver pico USB Composite Device로 사용하기

pico를 미니 NPU로 사용하는 프로젝트를 진행하며 어려웠던 내용과 해결한 방법에 대해 작성하겠다. 현재 pico에 tinyusb를 사용하여 vendor specific interface로 driver와 통신하고 있다. 개발을 진행하며 너무나 불편한 점이 많았다. p

2026년 4월 13일
·
0개의 댓글
·
post-thumbnail

windows driver kernel dump 분석하기

driver개발 중 bosd가 발생하여 분석하는 내용에 대해서 작성해본다. Dump 설정 방법 VM에서 bosd가 발생했다. 별다른 설정한적 없었지만 C:\windows를 확인하니 MiniDump 폴더에 미니 덤프가 생성된 것을 확인할 수 있다. 레지스트리에서 HK

2026년 4월 11일
·
0개의 댓글
·

Windows Driver USB Endpoint Bulk 통신 오류 해결

pico 펌웨어 올리기 여기서 pico에 펌웨어를 올렸기 때문에 KMDF로 USB Vendor Interface가 호환되는 드라이버를 만들어서 올렸다. 드라이버 올리는 것은 문제가 없었지만 endpoint로 write 하는 과정에서 문제가 발생하고 해결한 내용에 대해 포스팅하겠다. pico driver 개발 흐름 1단계: Device 생성 PnP 매니저...

2026년 4월 9일
·
0개의 댓글
·