<?xml version="1.0" encoding="UTF-8"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:news="http://www.google.com/schemas/sitemap-news/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xmlns:video="http://www.google.com/schemas/sitemap-video/1.1"><url><loc>https://hawk90.dev/</loc></url><url><loc>https://hawk90.dev/about/</loc></url><url><loc>https://hawk90.dev/blog/</loc></url><url><loc>https://hawk90.dev/blog/embedded/</loc></url><url><loc>https://hawk90.dev/blog/embedded/bootloader/chapter01-boot-problem/</loc></url><url><loc>https://hawk90.dev/blog/embedded/bootloader/chapter02-u-boot-position/</loc></url><url><loc>https://hawk90.dev/blog/embedded/bootloader/chapter03-build-system/</loc></url><url><loc>https://hawk90.dev/blog/embedded/bootloader/chapter04-boot-stages/</loc></url><url><loc>https://hawk90.dev/blog/embedded/bootloader/chapter05-falcon-mode/</loc></url><url><loc>https://hawk90.dev/blog/embedded/bootloader/chapter06-device-tree/</loc></url><url><loc>https://hawk90.dev/blog/embedded/bootloader/chapter07-driver-model/</loc></url><url><loc>https://hawk90.dev/blog/embedded/bootloader/chapter08-board-init/</loc></url><url><loc>https://hawk90.dev/blog/embedded/bootloader/chapter09-dram-init/</loc></url><url><loc>https://hawk90.dev/blog/embedded/bootloader/chapter10-storage-boot/</loc></url><url><loc>https://hawk90.dev/blog/embedded/bootloader/chapter11-network-boot/</loc></url><url><loc>https://hawk90.dev/blog/embedded/bootloader/chapter12-usb-boot/</loc></url><url><loc>https://hawk90.dev/blog/embedded/bootloader/chapter13-env-bootcmd/</loc></url><url><loc>https://hawk90.dev/blog/embedded/bootloader/chapter14-bootflow-bootmeth/</loc></url><url><loc>https://hawk90.dev/blog/embedded/bootloader/chapter15-fit-image/</loc></url><url><loc>https://hawk90.dev/blog/embedded/bootloader/chapter16-verified-boot/</loc></url><url><loc>https://hawk90.dev/blog/embedded/bootloader/chapter17-ab-update/</loc></url><url><loc>https://hawk90.dev/blog/embedded/bootloader/chapter18-efi-in-uboot/</loc></url><url><loc>https://hawk90.dev/blog/embedded/bootloader/chapter19-kernel-handoff/</loc></url><url><loc>https://hawk90.dev/blog/embedded/bootloader/chapter20-rauc-swupdate/</loc></url><url><loc>https://hawk90.dev/blog/embedded/bootloader/chapter21-board-porting/</loc></url><url><loc>https://hawk90.dev/blog/embedded/bootloader/chapter22-debugging/</loc></url><url><loc>https://hawk90.dev/blog/embedded/bootloader/chapter23-bootrom-efuse-otp/</loc></url><url><loc>https://hawk90.dev/blog/embedded/bootloader/chapter24-spl-deep/</loc></url><url><loc>https://hawk90.dev/blog/embedded/bootloader/chapter25-tfa-optee/</loc></url><url><loc>https://hawk90.dev/blog/embedded/bootloader/chapter26-ddr-training/</loc></url><url><loc>https://hawk90.dev/blog/embedded/bootloader/chapter27-chain-of-trust/</loc></url><url><loc>https://hawk90.dev/blog/embedded/bootloader/chapter28-flash-layout/</loc></url><url><loc>https://hawk90.dev/blog/embedded/bootloader/chapter29-distro-boot/</loc></url><url><loc>https://hawk90.dev/blog/embedded/bootloader/chapter30-bootloader-ci/</loc></url><url><loc>https://hawk90.dev/blog/embedded/bootloader/chapter31-tfa-bl31-runtime/</loc></url><url><loc>https://hawk90.dev/blog/embedded/bootloader/chapter32-psci-smccc/</loc></url><url><loc>https://hawk90.dev/blog/embedded/bootloader/chapter33-smp-secondary-cpu-bringup/</loc></url><url><loc>https://hawk90.dev/blog/embedded/bootloader/chapter34-pcie-enumeration/</loc></url><url><loc>https://hawk90.dev/blog/embedded/bootloader/chapter35-uefi-cxl-init/</loc></url><url><loc>https://hawk90.dev/blog/embedded/bootloader/chapter36-boot-memory-topology/</loc></url><url><loc>https://hawk90.dev/blog/embedded/bootloader/chapter37-secureboot-cert-rollover/</loc></url><url><loc>https://hawk90.dev/blog/embedded/bsp/chapter01-what-is-bsp/</loc></url><url><loc>https://hawk90.dev/blog/embedded/bsp/chapter02-datasheet/</loc></url><url><loc>https://hawk90.dev/blog/embedded/bsp/chapter03-device-tree-design/</loc></url><url><loc>https://hawk90.dev/blog/embedded/bsp/chapter04-pinmux-clock/</loc></url><url><loc>https://hawk90.dev/blog/embedded/bsp/chapter05-ddr-params/</loc></url><url><loc>https://hawk90.dev/blog/embedded/bsp/chapter06-u-boot-porting/</loc></url><url><loc>https://hawk90.dev/blog/embedded/bsp/chapter07-tfa-trustzone/</loc></url><url><loc>https://hawk90.dev/blog/embedded/bsp/chapter08-kernel-config/</loc></url><url><loc>https://hawk90.dev/blog/embedded/bsp/chapter09-smp-bringup/</loc></url><url><loc>https://hawk90.dev/blog/embedded/bsp/chapter10-first-boot/</loc></url><url><loc>https://hawk90.dev/blog/embedded/bsp/chapter11-bootlog-debugging/</loc></url><url><loc>https://hawk90.dev/blog/embedded/bsp/chapter12-driver-add/</loc></url><url><loc>https://hawk90.dev/blog/embedded/bsp/chapter13-power-management/</loc></url><url><loc>https://hawk90.dev/blog/embedded/bsp/chapter14-thermal-watchdog/</loc></url><url><loc>https://hawk90.dev/blog/embedded/bsp/chapter15-boot-time-optimization/</loc></url><url><loc>https://hawk90.dev/blog/embedded/bsp/chapter16-rootfs/</loc></url><url><loc>https://hawk90.dev/blog/embedded/bsp/chapter17-image-packaging/</loc></url><url><loc>https://hawk90.dev/blog/embedded/bsp/chapter18-ota-recovery/</loc></url><url><loc>https://hawk90.dev/blog/embedded/bsp/chapter19-stability-testing/</loc></url><url><loc>https://hawk90.dev/blog/embedded/bsp/chapter20-production/</loc></url><url><loc>https://hawk90.dev/blog/embedded/bsp/chapter21-maintenance/</loc></url><url><loc>https://hawk90.dev/blog/embedded/buildroot/chapter01-problem/</loc></url><url><loc>https://hawk90.dev/blog/embedded/buildroot/chapter02-directory-structure/</loc></url><url><loc>https://hawk90.dev/blog/embedded/buildroot/chapter03-kconfig/</loc></url><url><loc>https://hawk90.dev/blog/embedded/buildroot/chapter04-first-build/</loc></url><url><loc>https://hawk90.dev/blog/embedded/buildroot/chapter05-package-system/</loc></url><url><loc>https://hawk90.dev/blog/embedded/buildroot/chapter06-br2-external/</loc></url><url><loc>https://hawk90.dev/blog/embedded/buildroot/chapter07-board-customize/</loc></url><url><loc>https://hawk90.dev/blog/embedded/buildroot/chapter08-filesystems/</loc></url><url><loc>https://hawk90.dev/blog/embedded/buildroot/chapter09-new-package/</loc></url><url><loc>https://hawk90.dev/blog/embedded/buildroot/chapter10-real-board/</loc></url><url><loc>https://hawk90.dev/blog/embedded/buildroot/chapter11-toolchain/</loc></url><url><loc>https://hawk90.dev/blog/embedded/buildroot/chapter12-kernel-customize/</loc></url><url><loc>https://hawk90.dev/blog/embedded/buildroot/chapter13-uboot-integration/</loc></url><url><loc>https://hawk90.dev/blog/embedded/buildroot/chapter14-build-caching/</loc></url><url><loc>https://hawk90.dev/blog/embedded/buildroot/chapter15-post-build-deep/</loc></url><url><loc>https://hawk90.dev/blog/embedded/buildroot/chapter16-ota/</loc></url><url><loc>https://hawk90.dev/blog/embedded/buildroot/chapter17-sdk/</loc></url><url><loc>https://hawk90.dev/blog/embedded/buildroot/chapter18-security-cve/</loc></url><url><loc>https://hawk90.dev/blog/embedded/buildroot/chapter19-cicd/</loc></url><url><loc>https://hawk90.dev/blog/embedded/buildroot/chapter20-yocto-migration/</loc></url><url><loc>https://hawk90.dev/blog/embedded/embedded-cpp/00-preface/</loc></url><url><loc>https://hawk90.dev/blog/embedded/embedded-cpp/part1-01-cpp-vs-c/</loc></url><url><loc>https://hawk90.dev/blog/embedded/embedded-cpp/part1-02-compiler-flags/</loc></url><url><loc>https://hawk90.dev/blog/embedded/embedded-cpp/part1-03-runtime-requirements/</loc></url><url><loc>https://hawk90.dev/blog/embedded/embedded-cpp/part1-04-code-size-analysis/</loc></url><url><loc>https://hawk90.dev/blog/embedded/embedded-cpp/part1-05-abi-compatibility/</loc></url><url><loc>https://hawk90.dev/blog/embedded/embedded-cpp/part1-06-startup-code/</loc></url><url><loc>https://hawk90.dev/blog/embedded/embedded-cpp/part1-07-linker-scripts/</loc></url><url><loc>https://hawk90.dev/blog/embedded/embedded-cpp/part1-08-cpp-standard-choice/</loc></url><url><loc>https://hawk90.dev/blog/embedded/embedded-cpp/part2-01-raii-basics/</loc></url><url><loc>https://hawk90.dev/blog/embedded/embedded-cpp/part2-02-raii-patterns/</loc></url><url><loc>https://hawk90.dev/blog/embedded/embedded-cpp/part2-03-constexpr-basics/</loc></url><url><loc>https://hawk90.dev/blog/embedded/embedded-cpp/part2-04-constexpr-advanced/</loc></url><url><loc>https://hawk90.dev/blog/embedded/embedded-cpp/part2-05-consteval-constinit/</loc></url><url><loc>https://hawk90.dev/blog/embedded/embedded-cpp/part2-06-templates-basics/</loc></url><url><loc>https://hawk90.dev/blog/embedded/embedded-cpp/part2-07-templates-cost/</loc></url><url><loc>https://hawk90.dev/blog/embedded/embedded-cpp/part2-08-static-polymorphism/</loc></url><url><loc>https://hawk90.dev/blog/embedded/embedded-cpp/part2-09-type-traits/</loc></url><url><loc>https://hawk90.dev/blog/embedded/embedded-cpp/part2-10-concepts/</loc></url><url><loc>https://hawk90.dev/blog/embedded/embedded-cpp/part3-01-no-dynamic-alloc/</loc></url><url><loc>https://hawk90.dev/blog/embedded/embedded-cpp/part3-02-custom-allocator-basics/</loc></url><url><loc>https://hawk90.dev/blog/embedded/embedded-cpp/part3-03-pool-allocator/</loc></url><url><loc>https://hawk90.dev/blog/embedded/embedded-cpp/part3-04-pmr/</loc></url><url><loc>https://hawk90.dev/blog/embedded/embedded-cpp/part3-05-no-exception-design/</loc></url><url><loc>https://hawk90.dev/blog/embedded/embedded-cpp/part3-06-error-handling-patterns/</loc></url><url><loc>https://hawk90.dev/blog/embedded/embedded-cpp/part3-07-expected/</loc></url><url><loc>https://hawk90.dev/blog/embedded/embedded-cpp/part3-08-no-rtti-design/</loc></url><url><loc>https://hawk90.dev/blog/embedded/embedded-cpp/part3-09-smart-pointer-choice/</loc></url><url><loc>https://hawk90.dev/blog/embedded/embedded-cpp/part3-10-ownership-model/</loc></url><url><loc>https://hawk90.dev/blog/embedded/embedded-cpp/part4-01-intrusive-containers/</loc></url><url><loc>https://hawk90.dev/blog/embedded/embedded-cpp/part4-02-etl-library/</loc></url><url><loc>https://hawk90.dev/blog/embedded/embedded-cpp/part4-03-lock-free-basics/</loc></url><url><loc>https://hawk90.dev/blog/embedded/embedded-cpp/part4-04-lock-free-container/</loc></url><url><loc>https://hawk90.dev/blog/embedded/embedded-cpp/part4-05-type-safe-flags/</loc></url><url><loc>https://hawk90.dev/blog/embedded/embedded-cpp/part4-06-state-machine/</loc></url><url><loc>https://hawk90.dev/blog/embedded/embedded-cpp/part4-07-compile-time-fsm/</loc></url><url><loc>https://hawk90.dev/blog/embedded/embedded-cpp/part4-08-singleton-alternatives/</loc></url><url><loc>https://hawk90.dev/blog/embedded/embedded-cpp/part5-01-register-abstraction/</loc></url><url><loc>https://hawk90.dev/blog/embedded/embedded-cpp/part5-02-gpio-abstraction/</loc></url><url><loc>https://hawk90.dev/blog/embedded/embedded-cpp/part5-03-peripheral-abstraction/</loc></url><url><loc>https://hawk90.dev/blog/embedded/embedded-cpp/part5-04-hal-design-patterns/</loc></url><url><loc>https://hawk90.dev/blog/embedded/embedded-security/chapter01-threat-model/</loc></url><url><loc>https://hawk90.dev/blog/embedded/embedded-security/chapter02-secure-boot/</loc></url><url><loc>https://hawk90.dev/blog/embedded/embedded-security/chapter03-mcu-crypto/</loc></url><url><loc>https://hawk90.dev/blog/embedded/embedded-security/chapter04-trustzone/</loc></url><url><loc>https://hawk90.dev/blog/embedded/embedded-security/chapter05-tee/</loc></url><url><loc>https://hawk90.dev/blog/embedded/embedded-security/chapter06-ota-update/</loc></url><url><loc>https://hawk90.dev/blog/embedded/embedded-security/chapter07-side-channel/</loc></url><url><loc>https://hawk90.dev/blog/embedded/embedded-security/chapter08-iot-standards/</loc></url><url><loc>https://hawk90.dev/blog/embedded/embedded-security/chapter09-firmware-analysis/</loc></url><url><loc>https://hawk90.dev/blog/embedded/embedded-security/chapter10-sdlc/</loc></url><url><loc>https://hawk90.dev/blog/embedded/embedded-security/chapter11-pcie-cxl-ide/</loc></url><url><loc>https://hawk90.dev/blog/embedded/embedded-security/chapter12-spdm-cma/</loc></url><url><loc>https://hawk90.dev/blog/embedded/embedded-security/chapter13-cxl-tee/</loc></url><url><loc>https://hawk90.dev/blog/embedded/hardware/</loc></url><url><loc>https://hawk90.dev/blog/embedded/hardware/cxl/chapter01-cxl-position/</loc></url><url><loc>https://hawk90.dev/blog/embedded/hardware/cxl/chapter02-system-architecture/</loc></url><url><loc>https://hawk90.dev/blog/embedded/hardware/cxl/chapter03-coherency-model/</loc></url><url><loc>https://hawk90.dev/blog/embedded/hardware/cxl/chapter04-pooling-gfam/</loc></url><url><loc>https://hawk90.dev/blog/embedded/hardware/cxl/chapter05-cxl-4-features/</loc></url><url><loc>https://hawk90.dev/blog/embedded/hardware/cxl/chapter06-cxl-io/</loc></url><url><loc>https://hawk90.dev/blog/embedded/hardware/cxl/chapter07-cxl-cache/</loc></url><url><loc>https://hawk90.dev/blog/embedded/hardware/cxl/chapter08-cxl-mem/</loc></url><url><loc>https://hawk90.dev/blog/embedded/hardware/cxl/chapter09-flit-format/</loc></url><url><loc>https://hawk90.dev/blog/embedded/hardware/cxl/chapter10-arb-mux/</loc></url><url><loc>https://hawk90.dev/blog/embedded/hardware/cxl/chapter11-linux-driver/</loc></url><url><loc>https://hawk90.dev/blog/embedded/hardware/cxl/chapter12-qemu-emulation/</loc></url><url><loc>https://hawk90.dev/blog/embedded/hardware/cxl/chapter13-switching-fabric/</loc></url><url><loc>https://hawk90.dev/blog/embedded/hardware/cxl/chapter14-security/</loc></url><url><loc>https://hawk90.dev/blog/embedded/hardware/cxl/chapter15-ras-performance/</loc></url><url><loc>https://hawk90.dev/blog/embedded/hardware/hbm/chapter01-overview/</loc></url><url><loc>https://hawk90.dev/blog/embedded/hardware/hbm/chapter02-hbm-stack/</loc></url><url><loc>https://hawk90.dev/blog/embedded/hardware/hbm/chapter03-hbm-generations/</loc></url><url><loc>https://hawk90.dev/blog/embedded/hardware/hbm/chapter04-gddr/</loc></url><url><loc>https://hawk90.dev/blog/embedded/hardware/hbm/chapter05-bandwidth-bottleneck/</loc></url><url><loc>https://hawk90.dev/blog/embedded/hardware/hbm/chapter06-thermal-power/</loc></url><url><loc>https://hawk90.dev/blog/embedded/hardware/hbm/chapter07-memory-controller/</loc></url><url><loc>https://hawk90.dev/blog/embedded/hardware/hbm/chapter08-npu-gpu-usage/</loc></url><url><loc>https://hawk90.dev/blog/embedded/hardware/hbm/chapter09-cxl-mem/</loc></url><url><loc>https://hawk90.dev/blog/embedded/hardware/hbm/chapter10-cxl-mem-protocol/</loc></url><url><loc>https://hawk90.dev/blog/embedded/hardware/hbm/chapter11-cxl-device-types/</loc></url><url><loc>https://hawk90.dev/blog/embedded/hardware/hbm/chapter12-cxl-pooling-fabric/</loc></url><url><loc>https://hawk90.dev/blog/embedded/hardware/pcie/chapter01-fundamentals/</loc></url><url><loc>https://hawk90.dev/blog/embedded/hardware/pcie/chapter02-tlp/</loc></url><url><loc>https://hawk90.dev/blog/embedded/hardware/pcie/chapter03-config-space/</loc></url><url><loc>https://hawk90.dev/blog/embedded/hardware/pcie/chapter04-bar-mmio/</loc></url><url><loc>https://hawk90.dev/blog/embedded/hardware/pcie/chapter05-interrupts/</loc></url><url><loc>https://hawk90.dev/blog/embedded/hardware/pcie/chapter06-power-management/</loc></url><url><loc>https://hawk90.dev/blog/embedded/hardware/pcie/chapter07-error-handling/</loc></url><url><loc>https://hawk90.dev/blog/embedded/hardware/pcie/chapter08-dllp/</loc></url><url><loc>https://hawk90.dev/blog/embedded/hardware/pcie/chapter09-physical-layer/</loc></url><url><loc>https://hawk90.dev/blog/embedded/hardware/pcie/chapter10-linux-basics/</loc></url><url><loc>https://hawk90.dev/blog/embedded/hardware/pcie/chapter11-linux-dma/</loc></url><url><loc>https://hawk90.dev/blog/embedded/hardware/pcie/chapter12-virtualization-1/</loc></url><url><loc>https://hawk90.dev/blog/embedded/hardware/pcie/chapter13-virtualization-2/</loc></url><url><loc>https://hawk90.dev/blog/embedded/hardware/pcie/chapter14-linux-operations/</loc></url><url><loc>https://hawk90.dev/blog/embedded/hardware/pcie/chapter15-tools/</loc></url><url><loc>https://hawk90.dev/blog/embedded/hardware/pcie/chapter16-troubleshooting/</loc></url><url><loc>https://hawk90.dev/blog/embedded/hardware/pcie/chapter17-performance/</loc></url><url><loc>https://hawk90.dev/blog/embedded/hardware/pcie/chapter18-register-maps/</loc></url><url><loc>https://hawk90.dev/blog/embedded/hardware/pcie/chapter19-advanced-features/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/00-preface/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part1-01-digital-signal-basics/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part1-02-clock-timing/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part1-03-gpio-internals/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part1-04-uart-hardware/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part1-05-spi-hardware/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part1-06-i2c-hardware/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part1-07-adc-principles/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part1-08-dac-principles/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part1-09-pwm-signal/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part1-10-can-electrical/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part1-11-rs485-rs422/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part1-12-lvds-differential/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part2-01-cortex-m-comparison/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part2-02-cortex-a-comparison/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part2-03-arm-registers/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part2-04-cortex-m-exceptions/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part2-05-arm-memory-map/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part2-06-arm-cache/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part2-07-arm-mpu/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part2-08-arm-mmu/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part2-09-trustzone-m/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part2-10-memory-barrier/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part3-01-cross-compiler/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part3-02-compile-pipeline/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part3-03-elf-format/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part3-04-linker-script-basics/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part3-05-linker-script-advanced/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part3-06-startup-code/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part3-07-c-runtime/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part3-08-memory-layout/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part3-09-compiler-optimization/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part3-10-map-file-analysis/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part3-11-make-cmake-cross/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part3-12-bootloader-chain/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part4-01-first-baremetal/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part4-02-mmio-access/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part4-03-gpio-driver/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part4-04-clock-setup/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part4-05-interrupt-handling/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part4-06-systick-timer/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part4-07-uart-driver/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part4-08-spi-driver/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part4-09-i2c-driver/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part4-10-dma-basics/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part4-11-low-power-modes/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part4-12-watchdog/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part4-13-flash-programming/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part4-14-ddr-init-failure/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part5-01-pwm-output/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part5-02-dc-motor/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part5-03-stepper-motor/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part5-04-servo-motor/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part5-05-character-lcd/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part5-06-spi-oled/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part5-07-tft-display/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part5-08-environmental-sensors/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part5-09-imu-sensor/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part5-10-can-communication/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part5-11-usb-device/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part5-12-ethernet-mac-phy/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part5-13-sd-card-fatfs/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part5-14-rtc-utilization/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part6-01-rtos-decision/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part6-02-task-design/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part6-03-scheduler-internals/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part6-04-semaphore-usage/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part6-05-mutex-usage/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part6-06-queue-usage/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part6-07-event-group/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part6-08-software-timer/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part6-09-isr-api/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part6-10-priority-inversion/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part6-11-timer-services/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part6-12-rtos-debugging/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part7-01-linux-boot-flow/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part7-02-uboot-usage/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part7-03-device-tree-basics/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part7-04-device-tree-overlay/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part7-05-kernel-build/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part7-06-kernel-module/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part7-07-char-driver/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part7-08-platform-driver/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part7-09-mmap/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part7-10-epoll/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part7-11-uio-vfio/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part7-12-sysfs/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part7-13-irq-affinity/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part7-14-rootfs-buildroot/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part8-01-dynamic-memory/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part8-02-memory-alignment/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part8-03-cache-alignment/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part8-04-dma-allocator/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part8-05-zero-copy/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part8-06-numa/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part8-07-simd/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part8-08-neon/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part8-09-stack-analysis/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part8-10-code-size-optimization/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part8-11-power-optimization/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part8-12-wcet-analysis/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part9-01-lock-free-ring/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part9-02-wait-free/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part9-03-rcu-basics/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part9-04-hazard-pointer/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part9-05-cas-patterns/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part9-06-atomic-cost/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part9-07-spinlock-vs-mutex/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part9-08-aba-problem/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part9-09-false-sharing/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part9-10-mpmc-queue/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part10-01-debug-mindset/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part10-02-jtag-swd/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part10-03-gdb-remote-debug/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part10-04-hardfault-analysis/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part10-05-uart-not-printing/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part10-06-boot-failure/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part10-07-interrupt-debugging/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part10-08-memory-corruption/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part10-09-timing-race-diag/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part10-10-protocol-analyzer/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part10-11-logging-system/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part10-12-postmortem-analysis/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part11-01-fpga-basics/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part11-02-vivado-usage/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part11-03-pcie-bar/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part11-04-axi/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part11-05-ps-pl-communication/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part11-06-mailbox/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part11-07-cq-sq/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part11-08-dma-completion/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part11-09-pcie-streaming/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part11-10-hls/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part11-11-hls-optimization/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part11-12-vitis-ai/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part11-13-opencl-fpga/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part11-14-intel-quartus/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part11-15-pcie-to-cxl/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part11-16-qemu-cxl-emulation/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part11-17-linux-cxl-driver/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part12-01-edge-inference/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part12-02-npu-architecture/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part12-03-quantization/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part12-04-tensorrt/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part12-05-tflite-micro/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part12-06-onnx-runtime/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part12-07-thermal/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part12-08-jetson/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part12-09-zero-copy-camera/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part12-10-on-device-llm/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part12-11-tfm-trustzone/</loc></url><url><loc>https://hawk90.dev/blog/embedded/modern-recipes/part12-12-matter-thread/</loc></url><url><loc>https://hawk90.dev/blog/embedded/performance-engineering/00-preface/</loc></url><url><loc>https://hawk90.dev/blog/embedded/performance-engineering/part1-01-methodology/</loc></url><url><loc>https://hawk90.dev/blog/embedded/performance-engineering/part1-02-metrics/</loc></url><url><loc>https://hawk90.dev/blog/embedded/performance-engineering/part1-03-measurement/</loc></url><url><loc>https://hawk90.dev/blog/embedded/performance-engineering/part1-04-statistics/</loc></url><url><loc>https://hawk90.dev/blog/embedded/performance-engineering/part1-05-realtime/</loc></url><url><loc>https://hawk90.dev/blog/embedded/performance-engineering/part1-06-benchmark/</loc></url><url><loc>https://hawk90.dev/blog/embedded/performance-engineering/part1-07-modeling/</loc></url><url><loc>https://hawk90.dev/blog/embedded/performance-engineering/part1-08-profiling-overview/</loc></url><url><loc>https://hawk90.dev/blog/embedded/performance-engineering/part2-01-pipeline/</loc></url><url><loc>https://hawk90.dev/blog/embedded/performance-engineering/part2-02-pipeline-stall/</loc></url><url><loc>https://hawk90.dev/blog/embedded/performance-engineering/part2-03-branch-prediction/</loc></url><url><loc>https://hawk90.dev/blog/embedded/performance-engineering/part2-04-speculative-execution/</loc></url><url><loc>https://hawk90.dev/blog/embedded/performance-engineering/part2-05-cache-basics/</loc></url><url><loc>https://hawk90.dev/blog/embedded/performance-engineering/part2-06-cache-miss/</loc></url><url><loc>https://hawk90.dev/blog/embedded/performance-engineering/part2-07-cache-line/</loc></url><url><loc>https://hawk90.dev/blog/embedded/performance-engineering/part2-08-memory-bandwidth/</loc></url><url><loc>https://hawk90.dev/blog/embedded/performance-engineering/part2-09-simd-neon/</loc></url><url><loc>https://hawk90.dev/blog/embedded/performance-engineering/part2-10-pmu/</loc></url><url><loc>https://hawk90.dev/blog/embedded/performance-engineering/part3-01-bus-architecture/</loc></url><url><loc>https://hawk90.dev/blog/embedded/performance-engineering/part3-02-bus-contention/</loc></url><url><loc>https://hawk90.dev/blog/embedded/performance-engineering/part3-03-dma-performance/</loc></url><url><loc>https://hawk90.dev/blog/embedded/performance-engineering/part3-04-dma-vs-cpu/</loc></url><url><loc>https://hawk90.dev/blog/embedded/performance-engineering/part3-05-interrupt-latency/</loc></url><url><loc>https://hawk90.dev/blog/embedded/performance-engineering/part3-06-interrupt-storm/</loc></url><url><loc>https://hawk90.dev/blog/embedded/performance-engineering/part3-07-mmio/</loc></url><url><loc>https://hawk90.dev/blog/embedded/performance-engineering/part3-08-peripheral-clock/</loc></url><url><loc>https://hawk90.dev/blog/embedded/performance-engineering/part3-09-power-vs-performance/</loc></url><url><loc>https://hawk90.dev/blog/embedded/performance-engineering/part3-10-thermal/</loc></url><url><loc>https://hawk90.dev/blog/embedded/performance-engineering/part3-11-cxl-interconnect/</loc></url><url><loc>https://hawk90.dev/blog/embedded/performance-engineering/part3-12-cxl-mem-latency/</loc></url><url><loc>https://hawk90.dev/blog/embedded/performance-engineering/part4-01-concurrency-basics/</loc></url><url><loc>https://hawk90.dev/blog/embedded/performance-engineering/part4-02-false-sharing/</loc></url><url><loc>https://hawk90.dev/blog/embedded/performance-engineering/part4-03-lock-contention/</loc></url><url><loc>https://hawk90.dev/blog/embedded/performance-engineering/part4-04-spinlock/</loc></url><url><loc>https://hawk90.dev/blog/embedded/performance-engineering/part4-05-mutex/</loc></url><url><loc>https://hawk90.dev/blog/embedded/performance-engineering/part4-06-rw-lock/</loc></url><url><loc>https://hawk90.dev/blog/embedded/performance-engineering/part4-07-lock-free/</loc></url><url><loc>https://hawk90.dev/blog/embedded/performance-engineering/part4-08-memory-ordering/</loc></url><url><loc>https://hawk90.dev/blog/embedded/performance-engineering/part4-09-cache-coherency/</loc></url><url><loc>https://hawk90.dev/blog/embedded/performance-engineering/part4-10-smp-analysis/</loc></url><url><loc>https://hawk90.dev/blog/embedded/performance-engineering/part5-01-perf-basics/</loc></url><url><loc>https://hawk90.dev/blog/embedded/performance-engineering/part5-02-perf-advanced/</loc></url><url><loc>https://hawk90.dev/blog/embedded/performance-engineering/part5-03-ftrace/</loc></url><url><loc>https://hawk90.dev/blog/embedded/performance-engineering/part5-04-ebpf/</loc></url><url><loc>https://hawk90.dev/blog/embedded/performance-engineering/part5-05-flamegraph/</loc></url><url><loc>https://hawk90.dev/blog/embedded/performance-engineering/part5-06-arm-ds-lauterbach/</loc></url><url><loc>https://hawk90.dev/blog/embedded/performance-engineering/part5-07-baremetal-profiling/</loc></url><url><loc>https://hawk90.dev/blog/embedded/performance-engineering/part5-08-nsight/</loc></url><url><loc>https://hawk90.dev/blog/embedded/performance-engineering/part5-09-tracy-hotspot/</loc></url><url><loc>https://hawk90.dev/blog/embedded/performance-engineering/part5-10-ebpf-continuous/</loc></url><url><loc>https://hawk90.dev/blog/embedded/performance-engineering/part5-11-cxl-profiling-tools/</loc></url><url><loc>https://hawk90.dev/blog/embedded/performance-engineering/part6-01-case-isr-latency/</loc></url><url><loc>https://hawk90.dev/blog/embedded/performance-engineering/part6-02-case-cache-thrashing/</loc></url><url><loc>https://hawk90.dev/blog/embedded/performance-engineering/part6-03-case-lock-contention/</loc></url><url><loc>https://hawk90.dev/blog/embedded/performance-engineering/part6-04-case-dma-tuning/</loc></url><url><loc>https://hawk90.dev/blog/embedded/performance-engineering/part6-05-case-cxl-llm-kv-cache/</loc></url><url><loc>https://hawk90.dev/blog/embedded/protocols/</loc></url><url><loc>https://hawk90.dev/blog/embedded/protocols/industrial-ethernet/chapter01-overview/</loc></url><url><loc>https://hawk90.dev/blog/embedded/protocols/industrial-ethernet/chapter02-realtime-requirements/</loc></url><url><loc>https://hawk90.dev/blog/embedded/protocols/industrial-ethernet/chapter03-ethercat-architecture/</loc></url><url><loc>https://hawk90.dev/blog/embedded/protocols/industrial-ethernet/chapter04-ethercat-frame/</loc></url><url><loc>https://hawk90.dev/blog/embedded/protocols/industrial-ethernet/chapter05-ethercat-master/</loc></url><url><loc>https://hawk90.dev/blog/embedded/protocols/industrial-ethernet/chapter06-profinet/</loc></url><url><loc>https://hawk90.dev/blog/embedded/protocols/industrial-ethernet/chapter07-profinet-io/</loc></url><url><loc>https://hawk90.dev/blog/embedded/protocols/industrial-ethernet/chapter08-tsn/</loc></url><url><loc>https://hawk90.dev/blog/embedded/protocols/industrial-ethernet/chapter09-tsn-scheduling/</loc></url><url><loc>https://hawk90.dev/blog/embedded/protocols/industrial-ethernet/chapter10-powerlink/</loc></url><url><loc>https://hawk90.dev/blog/embedded/protocols/industrial-ethernet/chapter11-linux-realtime/</loc></url><url><loc>https://hawk90.dev/blog/embedded/protocols/industrial-ethernet/chapter12-comparison/</loc></url><url><loc>https://hawk90.dev/blog/embedded/riscv/</loc></url><url><loc>https://hawk90.dev/blog/embedded/riscv/esp32-c3-mastering/chapter01-overview/</loc></url><url><loc>https://hawk90.dev/blog/embedded/riscv/esp32-c3-mastering/chapter02-riscv-core/</loc></url><url><loc>https://hawk90.dev/blog/embedded/riscv/esp32-c3-mastering/chapter03-memory-flash/</loc></url><url><loc>https://hawk90.dev/blog/embedded/riscv/esp32-c3-mastering/chapter04-gpio-ledc-pwm/</loc></url><url><loc>https://hawk90.dev/blog/embedded/riscv/esp32-c3-mastering/chapter05-uart-spi-i2c-i2s/</loc></url><url><loc>https://hawk90.dev/blog/embedded/riscv/esp32-c3-mastering/chapter06-adc-touch/</loc></url><url><loc>https://hawk90.dev/blog/embedded/riscv/esp32-c3-mastering/chapter07-wifi-stack/</loc></url><url><loc>https://hawk90.dev/blog/embedded/riscv/esp32-c3-mastering/chapter08-ble-gap-gatt/</loc></url><url><loc>https://hawk90.dev/blog/embedded/riscv/esp32-c3-mastering/chapter09-esp-idf-build/</loc></url><url><loc>https://hawk90.dev/blog/embedded/riscv/esp32-c3-mastering/chapter10-freertos/</loc></url><url><loc>https://hawk90.dev/blog/embedded/riscv/esp32-c3-mastering/chapter11-security/</loc></url><url><loc>https://hawk90.dev/blog/embedded/riscv/esp32-c3-mastering/chapter12-power-management/</loc></url><url><loc>https://hawk90.dev/blog/embedded/rtos/</loc></url><url><loc>https://hawk90.dev/blog/embedded/rtos/practical-internals/00-preface/</loc></url><url><loc>https://hawk90.dev/blog/embedded/rtos/practical-internals/part1-01-why-rtos/</loc></url><url><loc>https://hawk90.dev/blog/embedded/rtos/practical-internals/part1-02-task-thread/</loc></url><url><loc>https://hawk90.dev/blog/embedded/rtos/practical-internals/part1-03-scheduling-algorithms/</loc></url><url><loc>https://hawk90.dev/blog/embedded/rtos/practical-internals/part1-04-preemption/</loc></url><url><loc>https://hawk90.dev/blog/embedded/rtos/practical-internals/part1-05-interrupts-rtos/</loc></url><url><loc>https://hawk90.dev/blog/embedded/rtos/practical-internals/part1-06-sync-basics/</loc></url><url><loc>https://hawk90.dev/blog/embedded/rtos/practical-internals/part1-07-semaphore/</loc></url><url><loc>https://hawk90.dev/blog/embedded/rtos/practical-internals/part1-08-mutex/</loc></url><url><loc>https://hawk90.dev/blog/embedded/rtos/practical-internals/part1-09-queues/</loc></url><url><loc>https://hawk90.dev/blog/embedded/rtos/practical-internals/part1-10-realtime-analysis/</loc></url><url><loc>https://hawk90.dev/blog/embedded/rtos/practical-internals/part2-01-ready-list/</loc></url><url><loc>https://hawk90.dev/blog/embedded/rtos/practical-internals/part2-02-blocked-list/</loc></url><url><loc>https://hawk90.dev/blog/embedded/rtos/practical-internals/part2-03-scheduler-algorithm/</loc></url><url><loc>https://hawk90.dev/blog/embedded/rtos/practical-internals/part2-04-context-switch/</loc></url><url><loc>https://hawk90.dev/blog/embedded/rtos/practical-internals/part2-05-cortex-m-context/</loc></url><url><loc>https://hawk90.dev/blog/embedded/rtos/practical-internals/part2-06-cortex-a-context/</loc></url><url><loc>https://hawk90.dev/blog/embedded/rtos/practical-internals/part2-07-riscv-context/</loc></url><url><loc>https://hawk90.dev/blog/embedded/rtos/practical-internals/part2-08-tick-timer/</loc></url><url><loc>https://hawk90.dev/blog/embedded/rtos/practical-internals/part2-09-tickless/</loc></url><url><loc>https://hawk90.dev/blog/embedded/rtos/practical-internals/part2-10-scheduler-latency/</loc></url><url><loc>https://hawk90.dev/blog/embedded/rtos/practical-internals/part2-11-tracing-observability/</loc></url><url><loc>https://hawk90.dev/blog/embedded/rtos/practical-internals/part3-01-critical-section/</loc></url><url><loc>https://hawk90.dev/blog/embedded/rtos/practical-internals/part3-02-semaphore-impl/</loc></url><url><loc>https://hawk90.dev/blog/embedded/rtos/practical-internals/part3-03-mutex-impl/</loc></url><url><loc>https://hawk90.dev/blog/embedded/rtos/practical-internals/part3-04-priority-inversion/</loc></url><url><loc>https://hawk90.dev/blog/embedded/rtos/practical-internals/part3-05-priority-inheritance/</loc></url><url><loc>https://hawk90.dev/blog/embedded/rtos/practical-internals/part3-06-priority-ceiling/</loc></url><url><loc>https://hawk90.dev/blog/embedded/rtos/practical-internals/part3-07-queue-impl/</loc></url><url><loc>https://hawk90.dev/blog/embedded/rtos/practical-internals/part3-08-event-group/</loc></url><url><loc>https://hawk90.dev/blog/embedded/rtos/practical-internals/part3-09-isr-safe-api/</loc></url><url><loc>https://hawk90.dev/blog/embedded/rtos/practical-internals/part3-10-deadlock/</loc></url><url><loc>https://hawk90.dev/blog/embedded/rtos/practical-internals/part3-11-stream-message-buffer/</loc></url><url><loc>https://hawk90.dev/blog/embedded/rtos/practical-internals/part4-01-realtime-memory/</loc></url><url><loc>https://hawk90.dev/blog/embedded/rtos/practical-internals/part4-02-freertos-heap/</loc></url><url><loc>https://hawk90.dev/blog/embedded/rtos/practical-internals/part4-03-tlsf/</loc></url><url><loc>https://hawk90.dev/blog/embedded/rtos/practical-internals/part4-04-static-allocation/</loc></url><url><loc>https://hawk90.dev/blog/embedded/rtos/practical-internals/part4-05-memory-pool/</loc></url><url><loc>https://hawk90.dev/blog/embedded/rtos/practical-internals/part4-06-stack-overflow/</loc></url><url><loc>https://hawk90.dev/blog/embedded/rtos/practical-internals/part4-07-smp-rtos/</loc></url><url><loc>https://hawk90.dev/blog/embedded/rtos/practical-internals/part4-08-spinlock-smp/</loc></url><url><loc>https://hawk90.dev/blog/embedded/rtos/practical-internals/part4-09-software-timer/</loc></url><url><loc>https://hawk90.dev/blog/embedded/rtos/practical-internals/part4-10-syscall/</loc></url><url><loc>https://hawk90.dev/blog/embedded/rtos/practical-internals/part4-11-trustzone-tfm/</loc></url><url><loc>https://hawk90.dev/blog/embedded/rtos/practical-internals/part4-12-amp-openamp/</loc></url><url><loc>https://hawk90.dev/blog/embedded/rtos/practical-internals/part4-13-cpp-in-rtos/</loc></url><url><loc>https://hawk90.dev/blog/embedded/rtos/practical-internals/part5-01-freertos-source/</loc></url><url><loc>https://hawk90.dev/blog/embedded/rtos/practical-internals/part5-02-zephyr-source/</loc></url><url><loc>https://hawk90.dev/blog/embedded/rtos/practical-internals/part5-03-rt-thread/</loc></url><url><loc>https://hawk90.dev/blog/embedded/rtos/practical-internals/part5-04-porting/</loc></url><url><loc>https://hawk90.dev/blog/embedded/rtos/practical-internals/part5-05-selection-guide/</loc></url><url><loc>https://hawk90.dev/blog/embedded/rtos/practical-internals/part5-06-nuttx/</loc></url><url><loc>https://hawk90.dev/blog/embedded/rtos/practical-internals/part5-07-preempt-rt-linux/</loc></url><url><loc>https://hawk90.dev/blog/programming/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/abseil/00-preface/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/abseil/part1-01-overview/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/abseil/part1-02-design-philosophy/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/abseil/part1-03-build-dependency-bazel/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/abseil/part1-04-lts-vs-head-release/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/abseil/part1-05-versioning-abi/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/abseil/part2-01-abseil-macros/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/abseil/part2-02-predict-branch-hint/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/abseil/part2-03-log-severity/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/abseil/part2-04-type-traits/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/abseil/part2-05-conformance-policy/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/abseil/part2-06-memory-utilities/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/abseil/part2-07-raw-logging/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/abseil/part2-08-thread-annotations/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/abseil/part3-01-status/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/abseil/part3-02-status-or/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/abseil/part3-03-status-macros/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/abseil/part3-04-status-payload/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/abseil/part3-05-status-exception-conversion/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/abseil/part4-01-string-view/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/abseil/part4-02-string-view-pitfalls/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/abseil/part4-03-str-cat/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/abseil/part4-04-str-split/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/abseil/part4-05-str-join/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/abseil/part4-06-str-format/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/abseil/part4-07-ascii-functions/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/abseil/part4-08-escaping-base64/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/abseil/part5-01-flat-hash-map/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/abseil/part5-02-flat-hash-set/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/abseil/part5-03-node-hash-map/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/abseil/part5-04-btree-map/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/abseil/part5-05-fixed-array/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/abseil/part5-06-inlined-vector/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/abseil/part5-07-swiss-table-internals/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/abseil/part6-01-mutex/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/abseil/part6-02-conditional-critical-section/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/abseil/part6-03-notification/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/abseil/part6-04-blocking-counter-barrier/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/abseil/part6-05-mutex-annotations/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/abseil/part7-01-time-duration-overview/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/abseil/part7-02-format-parse/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/abseil/part7-03-civil-time/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/abseil/part7-04-time-zone/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/abseil/part7-05-time-mocking/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/abseil/part8-01-bit-gen/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/abseil/part8-02-distributions/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/abseil/part8-03-mocking-random/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/abseil/part8-04-seeding-entropy/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/abseil/part9-01-int128/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/abseil/part9-02-bits/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/abseil/part9-03-optional/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/abseil/part9-04-variant/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/abseil/part9-05-span/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/abseil/part9-06-any/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/abseil/part9-07-compare/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/abseil/part9-08-utility/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/abseil/part10-01-abseil-hash-value/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/abseil/part10-02-hash-state-chaining/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/abseil/part10-03-custom-hashable/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/abseil/part11-01-log-vlog-check/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/abseil/part11-02-log-sink/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/abseil/part11-03-log-entry-structured/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/abseil/part11-04-stack-trace-handler/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/abseil/part12-01-absl-flag-define/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/abseil/part12-02-parse-command-line/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/abseil/part12-03-flag-introspection/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/abseil/part13-01-google-style-patterns/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/abseil/part13-02-anti-patterns/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/abseil/part13-03-std-to-absl-migration/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/abseil/part14-01-cleanup/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/abseil/part14-02-algorithm-container-ext/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/abseil/part14-03-function-ref-any-invocable/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/abseil/part14-04-bind-front-overload/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/abseil/part15-01-cord/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/abseil/part15-02-charconv/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/abseil/part15-03-cord-vs-string/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/abseil/part16-01-stacktrace-symbolize/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/abseil/part16-02-crc32c/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/abseil/part16-03-periodic-sampler/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/folly/00-preface/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/folly/part1-01-overview/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/folly/part1-02-folly-vs-abseil-philosophy/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/folly/part1-03-build-fbcode/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/folly/part1-04-api-stability/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/folly/part1-05-production-validation/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/folly/part2-01-future-overview/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/folly/part2-02-promise-make-future/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/folly/part2-03-semi-future-vs-future/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/folly/part2-04-then-value-error/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/folly/part2-05-collect/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/folly/part2-06-retry-window-via/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/folly/part2-07-fibers/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/folly/part3-01-inline-executor/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/folly/part3-02-cpu-thread-pool-executor/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/folly/part3-03-io-thread-pool-executor/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/folly/part3-04-manual-executor/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/folly/part3-05-event-base/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/folly/part4-01-iobuf/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/folly/part4-02-iobuf-queue/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/folly/part4-03-cursor/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/folly/part4-04-zero-copy-patterns/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/folly/part4-05-iobuf-shared-semantics/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/folly/part5-01-fbstring/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/folly/part5-02-fmt-format-integration/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/folly/part5-03-string-piece/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/folly/part5-04-join-split/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/folly/part6-01-to-try-to/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/folly/part6-02-conv-customization/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/folly/part6-03-conv-performance/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/folly/part7-01-f14-value-map/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/folly/part7-02-f14-node-map/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/folly/part7-03-f14-vector-map/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/folly/part7-04-f14-fast-map/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/folly/part7-05-f14-internals/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/folly/part8-01-small-vector/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/folly/part8-02-fixed-string/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/folly/part8-03-atomic-hash-map/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/folly/part8-04-concurrent-hash-map/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/folly/part8-05-evicting-cache-map/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/folly/part9-01-synchronized/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/folly/part9-02-shared-mutex/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/folly/part9-03-baton/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/folly/part9-04-rw-spin-lock/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/folly/part9-05-pico-spin-lock/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/folly/part10-01-producer-consumer-queue/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/folly/part10-02-mpmc-queue/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/folly/part10-03-unbounded-queue/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/folly/part10-04-fibers-channel/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/folly/part11-01-dynamic/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/folly/part11-02-json-conversion/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/folly/part11-03-dynamic-struct/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/folly/part11-04-dynamic-visitor/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/folly/part12-01-singleton-vs-meyers/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/folly/part12-02-singleton-vault/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/folly/part12-03-try-get-fast/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/folly/part13-01-exception-wrapper/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/folly/part13-02-scope-guard/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/folly/part13-03-folly-optional/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/folly/part13-04-folly-function/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/folly/part13-05-lazy/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/folly/part14-01-meta-style-review/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/folly/part14-02-folly-anti-patterns/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/folly/part14-03-std-vs-folly-choice/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/folly/part15-01-coro-overview/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/folly/part15-02-coro-task/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/folly/part15-03-coro-async-generator/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/folly/part15-04-coro-blocking-wait/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/folly/part15-05-coro-baton-mutex/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/folly/part16-01-expected/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/folly/part16-02-try/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/folly/part16-03-try-vs-expected/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/folly/part17-01-range/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/folly/part17-02-uri/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/folly/part17-03-hash-fingerprint/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/folly/part17-04-spooky-hash/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/folly/part18-01-init/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/folly/part18-02-indestructible/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/folly/part18-03-micro-lock/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/folly/part18-04-micro-spin-lock/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/folly/part19-01-format-legacy/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/folly/part19-02-demangle/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/folly/part19-03-dynamic-converter/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/folly/part20-01-record-io/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/folly/part20-02-compression/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/folly/part20-03-async-io/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/folly/part20-04-cancellation-token/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/folly/part21-01-observer/</loc></url><url><loc>https://hawk90.dev/blog/programming/code-review/folly/part21-02-fbcode-patterns/</loc></url><url><loc>https://hawk90.dev/blog/tools/</loc></url><url><loc>https://hawk90.dev/blog/tools/build/</loc></url><url><loc>https://hawk90.dev/blog/tools/build/cmake/chapter01-intro/</loc></url><url><loc>https://hawk90.dev/blog/tools/build/cmake/chapter02-language/</loc></url><url><loc>https://hawk90.dev/blog/tools/build/cmake/chapter03-targets/</loc></url><url><loc>https://hawk90.dev/blog/tools/build/cmake/chapter04-options/</loc></url><url><loc>https://hawk90.dev/blog/tools/build/cmake/chapter05-find-package/</loc></url><url><loc>https://hawk90.dev/blog/tools/build/cmake/chapter06-testing/</loc></url><url><loc>https://hawk90.dev/blog/tools/build/cmake/chapter07-install/</loc></url><url><loc>https://hawk90.dev/blog/tools/build/cmake/chapter08-best-practices/</loc></url><url><loc>https://hawk90.dev/blog/tools/build/cmake/chapter09-modern-advanced/</loc></url><url><loc>https://hawk90.dev/blog/tools/build/gnu-make/chapter01-intro/</loc></url><url><loc>https://hawk90.dev/blog/tools/build/gnu-make/chapter02-rules/</loc></url><url><loc>https://hawk90.dev/blog/tools/build/gnu-make/chapter03-variables/</loc></url><url><loc>https://hawk90.dev/blog/tools/build/gnu-make/chapter04-pattern-rules/</loc></url><url><loc>https://hawk90.dev/blog/tools/build/gnu-make/chapter05-functions/</loc></url><url><loc>https://hawk90.dev/blog/tools/build/gnu-make/chapter06-conditionals/</loc></url><url><loc>https://hawk90.dev/blog/tools/build/gnu-make/chapter07-practical/</loc></url><url><loc>https://hawk90.dev/blog/tools/debugging/</loc></url><url><loc>https://hawk90.dev/blog/tools/debugging/dwarf-elf/chapter01-elf-overview/</loc></url><url><loc>https://hawk90.dev/blog/tools/debugging/dwarf-elf/chapter02-dwarf-overview/</loc></url><url><loc>https://hawk90.dev/blog/tools/debugging/dwarf-elf/chapter03-debug-line/</loc></url><url><loc>https://hawk90.dev/blog/tools/debugging/dwarf-elf/chapter04-debug-loc/</loc></url><url><loc>https://hawk90.dev/blog/tools/debugging/dwarf-elf/chapter05-cfi-eh-frame/</loc></url><url><loc>https://hawk90.dev/blog/tools/debugging/dwarf-elf/chapter06-split-dwarf-tools/</loc></url><url><loc>https://hawk90.dev/blog/tools/debugging/embedded/chapter01-rsp-protocol/</loc></url><url><loc>https://hawk90.dev/blog/tools/debugging/embedded/chapter02-jtag-swd-coresight/</loc></url><url><loc>https://hawk90.dev/blog/tools/debugging/embedded/chapter03-openocd/</loc></url><url><loc>https://hawk90.dev/blog/tools/debugging/embedded/chapter04-jlink/</loc></url><url><loc>https://hawk90.dev/blog/tools/debugging/embedded/chapter05-elf-map/</loc></url><url><loc>https://hawk90.dev/blog/tools/debugging/embedded/chapter06-trace/</loc></url><url><loc>https://hawk90.dev/blog/tools/debugging/embedded/chapter07-rtos-troubleshooting/</loc></url><url><loc>https://hawk90.dev/blog/tools/debugging/embedded/chapter08-cxl-link-debug/</loc></url><url><loc>https://hawk90.dev/blog/tools/debugging/embedded/chapter09-cxl-device-troubleshoot/</loc></url><url><loc>https://hawk90.dev/blog/tools/debugging/gdb-extension/chapter01-python-api-basics/</loc></url><url><loc>https://hawk90.dev/blog/tools/debugging/gdb-extension/chapter02-commands-events/</loc></url><url><loc>https://hawk90.dev/blog/tools/debugging/gdb-extension/chapter03-pretty-printers/</loc></url><url><loc>https://hawk90.dev/blog/tools/debugging/gdb-extension/chapter04-frame-unwinder/</loc></url><url><loc>https://hawk90.dev/blog/tools/debugging/gdb-extension/chapter05-mi-dap-protocol/</loc></url><url><loc>https://hawk90.dev/blog/tools/debugging/gdb-extension/chapter06-frontends/</loc></url><url><loc>https://hawk90.dev/blog/tools/debugging/gdb-lldb/chapter01-intro-and-install/</loc></url><url><loc>https://hawk90.dev/blog/tools/debugging/gdb-lldb/chapter02-basic-commands/</loc></url><url><loc>https://hawk90.dev/blog/tools/debugging/gdb-lldb/chapter03-inspecting-state/</loc></url><url><loc>https://hawk90.dev/blog/tools/debugging/gdb-lldb/chapter04-backtrace-frames/</loc></url><url><loc>https://hawk90.dev/blog/tools/debugging/gdb-lldb/chapter05-breakpoints-watchpoints/</loc></url><url><loc>https://hawk90.dev/blog/tools/debugging/gdb-lldb/chapter06-multithread-multiprocess/</loc></url><url><loc>https://hawk90.dev/blog/tools/debugging/gdb-lldb/chapter07-core-dump/</loc></url><url><loc>https://hawk90.dev/blog/tools/debugging/gdb-lldb/chapter08-remote-debugging/</loc></url><url><loc>https://hawk90.dev/blog/tools/debugging/gdb-lldb/chapter09-python-scripting/</loc></url><url><loc>https://hawk90.dev/blog/tools/debugging/gdb-lldb/chapter10-tui-frontends/</loc></url><url><loc>https://hawk90.dev/blog/tools/debugging/gdb-lldb/chapter11-practical-tips/</loc></url><url><loc>https://hawk90.dev/blog/tools/debugging/gdb-lldb/chapter12-dwarf/</loc></url><url><loc>https://hawk90.dev/blog/tools/debugging/kernel/chapter01-user-kernel-boundary/</loc></url><url><loc>https://hawk90.dev/blog/tools/debugging/kernel/chapter02-printk-dmesg/</loc></url><url><loc>https://hawk90.dev/blog/tools/debugging/kernel/chapter03-ftrace-tracepoints/</loc></url><url><loc>https://hawk90.dev/blog/tools/debugging/kernel/chapter04-ebpf-kernel/</loc></url><url><loc>https://hawk90.dev/blog/tools/debugging/kernel/chapter05-kdb-kgdb/</loc></url><url><loc>https://hawk90.dev/blog/tools/debugging/kernel/chapter06-crash-drgn/</loc></url><url><loc>https://hawk90.dev/blog/tools/debugging/kernel/chapter07-panic-oops/</loc></url><url><loc>https://hawk90.dev/blog/tools/debugging/kernel/chapter08-cxl-driver-debug/</loc></url><url><loc>https://hawk90.dev/blog/tools/debugging/kernel/chapter09-drivers-cxl-walkthrough/</loc></url><url><loc>https://hawk90.dev/blog/tools/debugging/memory/chapter01-memory-accounting/</loc></url><url><loc>https://hawk90.dev/blog/tools/debugging/memory/chapter02-heaptrack/</loc></url><url><loc>https://hawk90.dev/blog/tools/debugging/memory/chapter03-jemalloc-tcmalloc/</loc></url><url><loc>https://hawk90.dev/blog/tools/debugging/memory/chapter04-glibc-tools/</loc></url><url><loc>https://hawk90.dev/blog/tools/debugging/memory/chapter05-prod-leak-diagnosis/</loc></url><url><loc>https://hawk90.dev/blog/tools/debugging/memory/chapter06-cxl-memory-diagnostics/</loc></url><url><loc>https://hawk90.dev/blog/tools/debugging/memory/chapter07-tiered-memory-diagnostics/</loc></url><url><loc>https://hawk90.dev/blog/tools/debugging/postmortem/chapter01-core-generation/</loc></url><url><loc>https://hawk90.dev/blog/tools/debugging/postmortem/chapter02-elf-core-format/</loc></url><url><loc>https://hawk90.dev/blog/tools/debugging/postmortem/chapter03-gdb-core-analysis/</loc></url><url><loc>https://hawk90.dev/blog/tools/debugging/postmortem/chapter04-debuginfod-minidump-automation/</loc></url><url><loc>https://hawk90.dev/blog/tools/debugging/postmortem/chapter05-cxl-device-postmortem/</loc></url><url><loc>https://hawk90.dev/blog/tools/debugging/postmortem/chapter06-cxl-fabric-postmortem/</loc></url><url><loc>https://hawk90.dev/blog/tools/debugging/python/chapter01-pdb-basics/</loc></url><url><loc>https://hawk90.dev/blog/tools/debugging/python/chapter02-debugpy-ide/</loc></url><url><loc>https://hawk90.dev/blog/tools/debugging/python/chapter03-asyncio/</loc></url><url><loc>https://hawk90.dev/blog/tools/debugging/python/chapter04-py-spy/</loc></url><url><loc>https://hawk90.dev/blog/tools/debugging/python/chapter05-faulthandler-tracemalloc/</loc></url><url><loc>https://hawk90.dev/blog/tools/debugging/sanitizers/chapter01-intro/</loc></url><url><loc>https://hawk90.dev/blog/tools/debugging/sanitizers/chapter02-asan-ubsan/</loc></url><url><loc>https://hawk90.dev/blog/tools/debugging/sanitizers/chapter03-lsan-leaks/</loc></url><url><loc>https://hawk90.dev/blog/tools/debugging/sanitizers/chapter04-tsan/</loc></url><url><loc>https://hawk90.dev/blog/tools/debugging/sanitizers/chapter05-cmake-ci/</loc></url><url><loc>https://hawk90.dev/blog/tools/debugging/valgrind/chapter01-intro/</loc></url><url><loc>https://hawk90.dev/blog/tools/debugging/valgrind/chapter02-memcheck/</loc></url><url><loc>https://hawk90.dev/blog/tools/debugging/valgrind/chapter03-leak-report/</loc></url><url><loc>https://hawk90.dev/blog/tools/debugging/valgrind/chapter04-helgrind-drd/</loc></url><url><loc>https://hawk90.dev/blog/tools/debugging/valgrind/chapter05-suppressions/</loc></url><url><loc>https://hawk90.dev/blog/tools/emulation/</loc></url><url><loc>https://hawk90.dev/blog/tools/emulation/driver-cosim/chapter01-why-cosim/</loc></url><url><loc>https://hawk90.dev/blog/tools/emulation/driver-cosim/chapter02-dpi-c-basics/</loc></url><url><loc>https://hawk90.dev/blog/tools/emulation/driver-cosim/chapter03-verilator/</loc></url><url><loc>https://hawk90.dev/blog/tools/emulation/driver-cosim/chapter04-cocotb/</loc></url><url><loc>https://hawk90.dev/blog/tools/emulation/driver-cosim/chapter05-systemc-tlm/</loc></url><url><loc>https://hawk90.dev/blog/tools/emulation/driver-cosim/chapter06-bfm/</loc></url><url><loc>https://hawk90.dev/blog/tools/emulation/driver-cosim/chapter07-uvm-c-model/</loc></url><url><loc>https://hawk90.dev/blog/tools/emulation/driver-cosim/chapter08-end-to-end/</loc></url><url><loc>https://hawk90.dev/contact/</loc></url><url><loc>https://hawk90.dev/paths/</loc></url><url><loc>https://hawk90.dev/paths/arm-worldview/</loc></url><url><loc>https://hawk90.dev/paths/computer-from-scratch/</loc></url><url><loc>https://hawk90.dev/paths/concurrency-models/</loc></url><url><loc>https://hawk90.dev/paths/ml-accelerator-stack/</loc></url><url><loc>https://hawk90.dev/privacy/</loc></url><url><loc>https://hawk90.dev/resume/</loc></url><url><loc>https://hawk90.dev/settings/</loc></url></urlset>