OsalTimerScheduler 採 round-robin 設計, 並沒有偏重於哪一個 timerId. 它以 TIMER ISR 為主, 然而 Timer Callback 函數並不是由 ISR 呼叫, 而是由 Main 主程序 呼叫; Timer ISR 只是做 ++ -- 之類的. 套用這樣的架構, 程式設計師可以專注於 Timer Callback 函數的設計. 以本案例而言, 專注於 ProbeTimer() / CalibTimer() / InitWeightTimer() / SetWeightLevel() 等等Callback 函數的實做. 這樣的設計已經有一點兒接近 `微作業系統` (Tiny OS) 的概念了. 本篇文章介紹的 code 是經過驗證的.
- Apr 02 Sat 2016 21:53
■ 好用的 OSALTimerScheduler
- Apr 28 Wed 2021 13:34
■ 無法從 PDF 檔案拷貝文字至剪貼板, 怎麼辦?
常常碰到 pdf 文件 禁止內容複製. 對於經常需要拷貝/貼上在 terminal console 輸入的我實在是有點兒困擾. 剛好今天心血來潮, 想找解決的方式. 於是我在網路 google 了一下. 還真的被我找到了簡單的方式, 讓我能夠對禁 "止內容複製" 的 PDF 文件進行拷貝/貼上. 這個答案就是 Gostscript
- Sep 15 Tue 2020 17:18
■ A Png file into linux-renesas HDMI DRM buffer
最近有機會接觸到 linux DRM. 在閱讀了 "最簡單的DRM應用程序" (single-buffer) , https://blog.csdn.net/hexiaolong2009/article/details/83721242 這篇文章後, 自己實做看看, 有了一點兒心得, 因此寫了這篇文章. 原始的 source code 是源自於 https://github.com/dvdhrm/docs/blob/master/drm-howto/modeset.c , 筆者試著將它的 function 做了改寫, 並且結合了 PNG Library 將之應用於 Renesas-Linux 平台上.
- Aug 20 Thu 2020 13:10
■ Linux inter-process communication using sigtimedwait() / sigqueue()
筆者使用 Linux SIGUSR1 訊號 [ sigtimedwait() / sigqueue() ] 寫了一組簡單的行程間通訊範例 sigw.c / sigq.c .
- Aug 04 Tue 2020 16:47
■ Decode jpeg to linux framebuffer
最近在處理 embedded linux system 開機直屏/橫屏 logo, 想來想去, 最後決定在 user-space 處理 logo, 而非 kernel. 我在網路上 google 搜尋/測試了半天, 好像只有 fbv 比較好用. 但我最後卻選擇不用 fbv ... 等等 utilities, 自己寫一個 jepg2fb.c (Jpeg to Framebuffer) 程式. Why? 原因在於 fbv ... 等等 utilities 使用 memory-map IO 處理 framebuffer, 但是在 qt-app 使用 eglfs 開啟之後, framebuffer 的 memory-map IO 就失效了. 因此我只好自己寫一個 jepg2fb.c, 使用 read/write system call.
- Aug 13 Tue 2019 22:38
■ 機率分配 - Probability Distributions
- Jun 09 Sun 2019 05:29
■ 數據彙總: 位置量數 - Measures of Location
- Jun 08 Sat 2019 21:53
■ 數據彙總: 頻率分佈 - Frequency Distributions
頻率分佈 - Frequency distributions
當我們處理大數據時, 一個普遍的做法是, 把資料或數據依據種類, 間距或類別群組資料. 譬如, 1983 年美國有線電視系統訂閱人數彙總如下表:
- May 25 Sat 2019 16:44
■ 機率, 條件機率以及貝氏定理 - Probability
- Apr 07 Sun 2019 23:24
■ 排列與組合 - Permutations and Combinations
- Mar 24 Sun 2019 01:20
■ 餘弦定理 - Cosine Theorem
- Feb 09 Sat 2019 13:11
■ Linux Kernel 之 List.h 應用
Linux Kernel 原始碼有一個 list.h , 它位於 linux/list.h . 它不只是在 kernel 可以使用, 在 linux user space 下也可以使用, 甚至於是 windows programming 也可以使用. 因為蠻好用的, 所以我把它介紹出來. 筆者會提供一個不錯的範例程式來介紹 list.h 裡面的 inline 函式 (巨集) 的使用方法; 這些 inline 函式 (巨集) 包括了:
- Jan 06 Sun 2019 20:09
■ Build a Linux Rootfs with Busybox for arm926ej-s in the Ubuntu 14/16 environment
BusyBox是一個遵循GPL協定, 以自由軟體形式發行的應用程式. Busybox在單一的可執行檔中提供了精簡的Unix工具集,可執行於多款POSIX環境的作業系統, 例如Linux (包括Android[6]) , Hurd[7], FreeBSD[8][9]等等. 由於BusyBox執行檔的檔案大小比較小, 並通常使用Linux內核, 這使得它非常適合使用於嵌入式系統。作者將BusyBox稱為 "嵌入式Linux的瑞士軍刀" .
- Dec 02 Sun 2018 10:06
■ Firefly Roc-Rk3328-Cc Linux Yocto Build
Yocto計劃 (英語:Yocto Project™) , 一個自由軟體專案計劃, 由Linux基金會於2010年宣布, 這個計劃的目標在於創造出可以提供嵌入式linux發行版的軟體工具,以改善軟體發展流程. 2011年3月, 這個計劃與OpenEmbedded計劃結合, 以OpenEmbedded-Core計劃作為計劃的另一個名稱. 它提供跨平台工具, 元資料以及流程以利於快速和可複製的開發Linux嵌入式系統.
- Nov 10 Sat 2018 11:30
■ How to Build External Kernel Modules
- Oct 14 Sun 2018 14:41
■ Bug Fix on Ubuntu Installer-armhf Fail-Probing SATA Port
"無法抓到 SATA port" !! 這似乎是 Ubuntu Arm Net-Installer 的一個重大 BUG, Ubuntu Arm Net-Installer 裡面的 InitRamFs 似乎是少了關於 SATA port Device Map 之 Module. 本人把它的 InitRamFs / Vmlinuxz 修改, 解決此一問題. 呵呵, Ubuntu 是不是該頒個獎給我?
- Sep 22 Sat 2018 10:43
■ Ubuntu 14 Samba Sharing
- Aug 25 Sat 2018 14:44
■ Build a Nand Flash Boot Image for Rk3066 Linux from Scratch
Rockchip Linux 的 boot.img, 跟 initrd 很像. 它是 initrd 嗎? 應該不完全是, 因為我在 /dev/ram0 裡看不到 init file system.
- May 12 Sat 2018 14:10
■ Pack/Unpack RK30 Resource.img
不知道從何時 Linux Kernel 開始使用 Device Tree Blob. 在 Rockchip Project 裡 Device Tree Blob 被打包於 resource.img . 筆者這篇文章在此介紹如何打包/解包這 Rockchip 之 resource.img.
- Feb 25 Sun 2018 07:01
■ VNC (Virtual Network Computing) on CentOS
第一次接觸到 VNC, 還蠻好玩的. 接觸到 VNC 這個 Project 當初是我和公司的 MIS 一起為協力廠商在機房建置的. 使用了 CentOS, 我重新編譯了 Kernel, 使它擁有了 4GB 的 Ram-Disk. VNC 和 4GB 的 Ram-Disk 對我而言都是一個新體驗.