使用 C 來編寫 Python 模組 – 以 jump consistent hash 為例

Extending Python with C – Jump Consistent Hash 本文的目標是以 C 完成 Jump Consistent Hash 的主體,接著透過 Python-C-API 轉為 Python 可以使用的套件。也就是說,模組的本體將會以 C 語言寫成,接著透過 setuptools 編譯為 so 檔,如此編成的模組將可以讓 Python 無縫接軌使用。 參

Continue Reading

ARM Semihosting 簡介與範例

前言 – What is semihosting? Semihosting 是 ARM 中的一個機制,使得 ARM target 可以藉由運行 debugger 的 host computer 的 Input/Output 裝置來進行溝通。 Semihost 的實作是透過使用定義好的軟體中斷 (SVCs),使程式在執行過程中產生中斷。一旦目標系統上的程式呼叫到對應的指令 (semihos

Continue Reading

10分鐘讀懂 linker scripts

背景知識: linker:  將多個 input files 輸出為一個 output file. output file 與 input files 的格式是一種特殊資料格式稱做 object file format (目的檔格式),每個檔案則稱做 object file (目的檔),輸出檔則常稱做 executable (可執行檔),當然也能稱為 object file。 每個 object f

Continue Reading

Debug f9-kernel make config 的 ncurses 按鈕顏色問題

黑白人生

今天要講的是修改 f9-kernel menu config 下排按鈕顏色跑掉的問題。 會發現這個問題是因為把 f9-kernel clone 下來想要編譯,在要做 config 的時候發現這個問題。可以從上圖左邊看到 Linux kernel 的 make menuconfig 下排的 button 是有對比顏色的 (<Select> tag active 是黃色的、<Exit&

Continue Reading

gdb 錦囊妙計

Wonderful / Amazing TUI in gdb (but what name?)   很少人知道,但是非常有用的  – TUI (Text User Interface) 這個東西可以讓原本很難用的 gdb 變得非常好用 (應該說比較直觀),開啟之後會將畫面切分為二,上層顯示 source code,下層輸入 gdb 指令。以下是 TUI 的相關示範。  

Continue Reading