Dennis Liu

@dennis40816

Joined on Nov 3, 2023

  • contributed by <Dennis40816> 第一週 測驗 1 Solution AAAA : &l->head BBBB : before CCCC : &(*p)->next DDDD : item->next
     Like  Bookmark
  • What is cdev? Code Tracing main.c 重要的變數包含: kxo_init kxo 模組第一個被呼叫的函式,呼叫時機是在使用者使用 sudo insmod 時。流程圖如下: digraph g { rankdir=TD
     Like  Bookmark
  • contributed by <Dennis40816> 閱讀紀錄 [x] N04: kxo [ ] LKMPG WriteUp 初探 kxo [!Note] 模組應該和核心同版本,使用以下路徑中的編譯器:
     Like  Bookmark
  • Linux2025q1: Quiz 2 測驗 1 測驗 1 的重點在快速排序,故先回顧何為快速排序。 :::success 快速排序基於分治 (Divide and Conquer),係透過選定一個基準值 (pivot),將資料分成左右兩部分(陣列、鏈結串列...),再以遞迴呼叫 (recursive calls) 或迭代 (iterate) 形式依序對子部分進行相同操作。直至最後子部分的長度為 0 或 1。 接著進行合併操作,根據區分資料的方式 (位置交換或是移動到新開記憶體)會有不同方式,前者是就地 (in-place) 操作,因此不需要再進行合併,後者則需依照
     Like  Bookmark
  • contributed by <Dennis40816> 開發環境 $ uname -a Linux dennis-laptop 6.8.0-53-generic #55-Ubuntu SMP PREEMPT_DYNAMIC Fri Jan 17 15:37:52 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux $ gcc --version gcc (Ubuntu 13.3.0-6ubuntu2~24.04) 13.3.0 Copyright (C) 2023 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO
     Like 1 Bookmark
  • contributed by <Dennis40816> 依據 N02:ideas 之要求觀摩 Linux2024q1 期末專題、錄影上和錄影下。 雖然先前有接觸過嵌入式系統使用者層級的程式,但對於其核心函式庫及其核心都缺乏認知,想藉由這次的專題累積驅動裝置或嵌入式 Linux 核心相關經驗。 裝置驅動程式開發 Linux 核心專題: 打造具備網路連線的精簡虛擬機器 在開始前,我認為需要好好釐清在裝置驅動中使用到的術語 - 虛擬化相關的名詞。參考 KVM: Linux 虛擬化基礎建設。
     Like  Bookmark
  • gdb with python 透過 VSCode 的 launch.json 直接啟動 gdb 雖然很方便,但如果你想在 gdb 運行時對其功能進行更深入、更靈活的魔改,不論是直接在 gdb 中添加或修改命令,或者僅僅透過 launch.json 傳遞參數,都難以滿足需求。最有效率的方法是「寫程式」來包裝並啟動一個 gdb 進程,讓外部程式可以根據需求自定義與 gdb 之間的互動。Python 是實現這種包裝的理想語言,因為它具有非常豐富的 gdb 支持 (gdb Python API) 這篇文章不會教你如何配置 VSCode 中的 C/C++ extension 配置方法,而主要在描述如何在 gdb 不直接呼叫 source <xxx>.py 的情況下,使用 python 寫的函式,並且與 VSCode 的 launch.json 整合,讓使用者有能夠使用 VSCode 漂亮除錯介面的客製化 gdb。 我們透過下面的例子來看如何自己編寫一個透過 python 包裝的 gdb 吧! 牛刀小試 在開始前,你應該先你++安裝了 gdb++ 和確認 gdb 的組態 (config) 包含了 python 相關的功能。可以使用以下命令確認:
     Like  Bookmark
  • perf_events 即 Perf,可以記錄硬體效能計數器、中斷、Page Fault 等事件。 取樣時,理想取樣頻率應該比待測事件發生的頻率高,然而 perf 取樣頻率存在上限 (~10000 Hz),或者使用隨機取樣頻率 使用 perf 時,可以調整取樣頻率為如 97, 997, 9973 等質數,以避免取樣週期與事件發生週期一致,出現週期同調 (Lockstep),而有錯誤的統計結果。例如可能造成部分事件永遠無法被觀察到,或某事件頻繁出現導致被誤認為是瓶頸。 perf 測量事件時應盡可能精準,因為過多事件會導致通用效能計數器耗盡,會改成分時多工,可能使結果精確度下降。 :::warning :warning: 在 perf 中,週期和頻率的意義與平常所學不同,在運用 Perf 分析程式效能並改善提到: 週期指的是從「開始」到「記錄樣本」之間,事件的發生次數。
     Like  Bookmark
  • 本文摘錄自 CONTRIBUTING.md : :::danger 不要濫用「重點」一詞,原文沒幾行,你只是「摘錄」。 已修正。 ::: 格式 基於 K&R
     Like  Bookmark
  • 本文整理 C 字串操作常用的 API。 複製與串接 TODO...
     Like  Bookmark
  • Content Reference 2025q1 第 1 週測驗題 測驗 1 該題要求實現鏈結串列的插入功能,其中關鍵函式 list_insert_before 原型如下: /** * * ... *
     Like  Bookmark
  • signal - sighandler_t 打開 Linux manual page - signal(2) 可以看到以下定義: #include <signal.h> typedef typeof(void (int)) *sighandler_t; sighandler_t signal(int signum, sighandler_t handler); 其中,我們看到一個非常酷炫的用法 typeof(void (int)),這是什麼鬼?
     Like  Bookmark
  • 浮點數標準 大名鼎鼎的 IEEE 754 是定義 32-bit 浮點數的官方文件,於 1985 年由 發布第一個版本。 下圖^[1]^ 顯示 Float32 各位元的功能: image 位元可以劃分為三部分: sign bit (藍色): 31^th^ 位,1 表示負,共 1 位 exponent bits (綠色) : 23^th^ - 30^th^ 位,共 8 位
     Like  Bookmark
  • tags: ORB-SLAM3, ROS2, SLAM, Ubuntu 24, Jazzy 本文目的 目前網路上大部分的 ORB-SLAM3 安裝都是基於 Ubuntu 22 及更先前的版本教學文。然而對於已經升級成 Ubuntu 24.04 (Nobel Numbat) 的使用者而言,是否能夠使用 ORB-SLAM3 呢? 答案是肯定的,不過需要進行小部分的修改,本文的主旨是盡可能基於 Ubuntu 24.04 的預設工具鍊,幫助使用者在 Ubuntu 24.04 測試及使用 ORB-SLAM3,以及讓 ROS2 能夠使用 ORB-SLAM3,接下來就讓我們開始吧! :::info 本文假設使用者具備基礎 Linux 知識, e.g., vim/nano
     Like  Bookmark