星期日, 8月 25, 2019

運用 memory mapped file 增進 I/O 效能之觀察

曾因工作需要撰寫程式處理資料大小達 gigabyte 以上的檔案,起初僅以傳統的 file stream 方式讀取檔案,但速度甚差以致影響後續的系統整體效能,當時改採以 memory mapped file (mmap) 方式讀檔後效能便獲得顯著的提昇。
mmap 是檔案資料被載入屬於 kernel space 的 cache buffer 後將其地址映射至 user space 的虛擬地址,不需將其複製至 user space 應用程式便可讀寫,一般認為可增進 I/O 的效能。

星期六, 3月 23, 2019

解除IBM PS/55Z的主機連線封印

來說一段過往有關 IBM 中文個人電腦的小故事~

回溯到 1980 年代末,IBM 中文個人電腦機型由 Multistation 5550 發展至 PS/55,索價不菲,印象中當時售價一套約在新台幣四十萬元上下,市場大宗在 IBM 各大小型主機系統的環境中做終端工作站用途。PS/55 與 PS/2 同樣採用當時 IBM 新定義的微通道架構 (Micro Channel Architecture,簡稱 MCA)。

同屬 MCA 架構的 PS/55Z (model 5530-S) 則發表於1989年,是一款一體機設計的小型桌上個人電腦,其原本欲設定以個人消費市場為目標故而相對「平價」,但又恐因此衝擊到既有的終端工作站市場,IBM 因而封印禁制了 PS/55Z 與主機連線的機能。儘管如此,依然阻擋不了經銷商將其以終端工作站售入主機環境市場的意圖,想來是個人消費市場難以打通的緣故。

星期四, 11月 29, 2018

使用 I2C SSD1306 0.96" OLED

手邊有一款 OLED 顯示器,尺寸大小僅 0.96",採用 SSD1306 晶片 (詳見技術文件) 做驅動控制,可顯示單色 128x64 點陣圖形。它不需要額外背光電源線路且以 I2C (IIC) 做資料傳輸,所以線路連結較曾經使用過的 LCD1602 或 LCD12864 要來得簡潔,在微控制器裝置輕巧的要求下是可考慮的選擇。

以 Raspberry Pi 的使用 (Python) 為例,可參考 Interfacing SSD1306 OLED Display with Raspberry Pi 的內容,該例引用了 Adafruit_SSD1306 程式模組。一般上,參照網路上的現有資源也就足夠,但本文興趣在如何綜合這些資源簡易的自訂一個驅動程式。

星期三, 3月 28, 2018

橋接自製配件設備至 Apple HomeKit

前言


在自製感測配件與設備的過程中,曾想是否能整合接入蘋果公司的 HomeKit 軟體框架中,讓 iOS 裝置如 iPhone 或 iPad 上的 App 能讀取其資訊甚或控制其動作。
稍微閱讀了蘋果官方在去年年中釋出的 HAP Specification (Non-Commercial Version) ,開始尋思若是獨自打造通信協定底層的實作有些費時,感謝廣博的網路資源,借重 HAP-python 於此可嘗試快速建一個簡單的 HomeKit Bridge 讓自製的配件設備橋接入 HomeKit。


星期二, 10月 31, 2017

電腦圖學之透視投影

畫家在繪畫時會使用透視 (Perspective) 的方法,將三維空間的形象表現在二維平面的畫布上,此法是設定畫面上有一條位在無限遠處的視平線,我們的視線焦點就落在視平線上某處,互相平行的線條也會靠攏交集在視平線上的某一點,如此形成近大遠小的視覺現象,讓我們在觀賞時會覺得平面畫面裡的景物之間拉出距離而變得立體了。
運用透視法的《最後的晚餐》

星期二, 2月 28, 2017

老電話的旋轉撥號盤

旋轉撥號與按鍵撥號
接收了前輩提供的一個舊型電話的旋轉撥號盤,這種機械結構的裝置雖然可能至少有三、四十年以上的歷史,但還堪用,此回用它接在 RPi 上當做輸入裝置來玩玩。

回顧早期電話系統的旋轉撥號,是使用旋轉撥號盤在局部迴路上送出不同數量的連續脈波信號表示撥號數字,而當今的電話系統的撥號應該皆改進為音頻撥號,使用按鈕鍵送出雙音多頻 (DTMF) 信號為之。

旋轉撥號的電話系統,可能現在需在博物館或電影裡才得一見,其最初的自動交換機和用戶撥號裝置是 Almon Brown Strowger 在十九世紀末時設計的,關於此有個趣聞是據說他原是一位殯葬業者,因為電話接線員竟然是他競爭對手的老婆,並將他顧客的來電轉接給他的競爭對手,促使他構思要發明一個免除人工插線的自動機器,並從此開展新的事業。(參考連結:https://en.wikipedia.org/wiki/Rotary_dial)

星期五, 6月 10, 2016

使用 SPI 介面的 LCD12864

先前曾用 LCD1602 當做自製操作面板的顯示元件,不過那只能顯示英文數字,這次因為有顯示中文字元的需要,所以尋找了這款 LCD12864 不但內建了 8192 個繁體中文字形 (Big5) 還可讓我們選擇以串列週邊介面 (Serial Peripheral Interface, SPI) 輸出指令及資料,如此省去我自製 I²C 介面或 SPI 的功夫了。