2020年12月29日 星期二

Raspberry Pi Zero W Project Part 0.5 - Documents

Documents

Before starting the project, to collect documents is an important things. 

It is important to study document before and during implementation.

The documents needed in the project are:

1. Raspberry Pi's Official Documents

2. Broadcom BCM2835 Peripheral specification

3. ARM1176

BCM2825 Address Space



It is important to know the address view of CPU and VPU/GPU. You have to know the difference between physical address and bus address of BCM2835. Otherwise you can't get hardware work correctly.

Why Raspberry Pi Zero WH?

The reasons of selecting RPi ZW as my project platform are:

  1. cheap, easy to get one, ARMv6 provides enough features of modern ARM Application processors.
  2. single core, simple & good for teaching / practice.
  3. low power, RPi ZW can be powered by almost any USB slot.
  4. RPi has a lot of documents / projects / implementations for reference.

What's in Next?

In next part, simple assembly programming on RPi Zero W will be introduced. We need to use assembly to implement some important parts of OS and bootloader.

2020年12月27日 星期日

Raspberry Pi Zero W Project Part 0 - u-boot building / testing

 1. Raspberry Pi (Pre-4B) Boot Sequence

Currently, loader.bin is not needed.

2. Boot from SD - from power-on to bootcode.bin


 

3. Toolchain 

GNU Arm Embedded Toolchain - Download

4. u-boot

$ sudo apt-get install flex bison

$ git clone https://github.com/u-boot/u-boot; cd u-boot

$ export PATH=PATH_TO_TOOLCHAIN/gcc-arm-none-eabi-10-2020-q4-major/bin/:$PATH

$ export CROSS_COMPILE=arm-none-eabi-

$ make rpi_0_w_defconfig

$ make -s -j4; cp ./u-boot.bin PATH_TO_SDCARD

5. booting

config.txt:

enable_uart=1
uart_2ndstage=1
kernel=u-boot.bin



2020年11月14日 星期六

正體中文資訊考古 - 21世紀多媒體英漢雙向辭典

 

今天分享的是一個相當有歷史意義的字典
"21世紀多媒體英漢雙向辭典"
比較可惜的地方是該辭典入手時反射層的 CD cover 已有無法挽救的刮痕
部份發音資料檔損毀, 因此 (c, d, i, m, p, y) 開頭的單字無發法發音
其歷史意義在許多現今"免費"字典軟體中
有個廣為流傳的一個字典檔是 "21世紀英漢漢英雙向辭典"
廣受歡迎的主要原因是字彙數目豐富, 許多人推薦是因為涵蓋 2X 萬單字, 勝過僅數萬字的其他字典
多年來經過了許多各方使用者的編修與補充
然而有近年許多人在考究該辭典出處究竟為何, 像是
該討論串有些資訊, 但是從 2015 年當時的翻譯比對是沒有意義的
原因是該字典檔已經流傳非常久
經過許多人依照偏好地自其他辭典合併/替換解釋內容與補充的字非常多
而結論的"新世紀英漢辭典"即便最新版本收錄詞彙也約莫十餘萬, 這是十分明顯的不相符, 也將成就歸錯他人
然而可以確認的是這辭典的流傳有直接關聯的,
是近 2000 年所推出的星際譯王 StarDict
然而該作者也沒有解釋這字典檔出處
這本辭典的條目的與其他辭典不同的特徵在於會把音節點納入
因此這篇有個特別的說明就是其他字典找不到的
這裡提供討論中出現的 abrupt 與 saguaro 的字義, 1994 年的辭典與此分毫不差
除了字彙的字義上的完全符合外("新世紀"很多不同)
當時也未有以"新世紀"為辭典內容的電腦辭典軟體
封面上的 "B"ictionary 並非錯字, 該辭典當時上市時發明的詞, 透過搜尋可以找到一個說明 "為微系電腦股份有限公司發展之超強功能電腦雙向辭典之註冊商標其囊括十六項業界第一: 1. 辭彙最多, 約二十萬字 2. 片語最多,約五千辭 3. 例句最多, 約六千句 4. 英漢漢 ...", 可以得知字彙數目是相符的
而星際譯王作者應沒有心力去建立這麼龐大的字典檔, 而應該完全是由現成軟體檔案的轉換
因而無論推出年份, 字彙的數目, 解釋的內容與名稱都只有這個辭典最為可能, 只是因為軟體是 1994 年推出, 完整版本流通數少而讓他人無法直接證明
微系電腦股份有限公司 1990/6 年成立, 2001/1 年解散
 
 





 

2020年11月7日 星期六

正體中文資訊考古 - Living Books 中文版 - 龜兔賽跑與展示片

 對 Living Books 有印象的人會說這不是英文軟體嗎, 怎符合"中文軟體"這個特性?

事實上 憶弘資訊/憶弘國際 在 1997 年代理與中文化
再談談 Living Books
當年家中買第二台 80486 DX33 的電腦時
店家使用了 Win 3.1 展示了 "Just Grandma and Me"(祖母與我) 這個互動軟體
那時覺得挺有趣的, 每一頁的一些地方都有令人莞爾一笑的創意
後續才知道這是電子化一個有名兒童繪本作家的書
並成為一套有 12 本的電子書軟體
"Just Grandma and Me" 是該系列的第一個作品
或許受到這些軟體的啟發, 後續也有本土廠商的嘗試
如今無從得知"憶弘國際"一共中文化了幾個作品
而從找到的資訊看來, 至少有七個
由於英文原始版本都是在 Windows 3.1 上可運作
(因為那時還沒有 Win 95)
而中文化版本也同樣如此,
使用中的畫面有黑邊其原因是當年軟體解析度固定在 640x480
本次上傳的是低價入手的"龜兔賽跑"與當年內附5個展示的雜誌附贈光碟
而"憶弘國際"公司 - 憶弘資訊股份有限公司已於 2007 年廢止
 







 

2020年10月31日 星期六

正體中文資訊考古 - 倚天忘形輸入法 for Windows 3.1

這週分享的是"倚天忘形輸入法 for Windows 3.1"

這並非後續的 ET2000, 而是 ET3 時期販售俱備支援 Win 3.1 的版本

也耗費了相當時間抽絲剝繭找出些

基本上光知道檔名或是資訊並無助於找出這些檔案

倚天忘形輸入法 for Windows 3.1

可以說是倚天在 Windows 上第一套智慧輸入法

由於智慧注音輸入法一直深受台灣地區使用者喜愛

後續這個輸入法還有推出 ETAI98 / ETAI99 兩個版本

在之後倚天轉型到股票機/PDA系統

2008年3月 倚天資訊被宏碁集團所併購

關於倚天中文的官方資訊可能僅剩下列網頁, 但似乎倚天目前網站入口沒任何連結會導向至此

2020年10月24日 星期六

正體中文資訊考古 - 網際金點 2.0 LITE

本週的軟體是網際金點 Roboword 2.0 Lite 

這是個人珍藏多年的軟體光碟, 大學時期用它來查字典看文件 

現在談及或尋問 PC 平台的英漢辭典 多數人毫無疑問會聯想到 譯典通 Dr.Eye 

但是在 Windows 3.1 ~ Windows 95 這段期間

其實很多軟體投入其中 

像是介紹過的 萊思康電腦辭典 與 遠東超時代百科大辭典 

除此之外在當時還有很多軟體像是網際譯龍, 網際護照, 靈譯世界, 譯經.. etc

這階段除了基本字典之外, 各種電腦英漢辭典投入特殊功能 

像是整句翻譯, 全文翻譯與網頁翻譯 

而網際金點特別地方是它是早期實作出即時翻譯功能辭典之一 

雖然查詢功能相當陽春也沒有其他附加的功能 

但因為即時翻譯這功能在當時因此也受到相當多人的喜愛 

是當時網路廣為流傳的軟體之一 

這個 Lite 版是低價的推廣版本 

在當時因為 199 or 99 這種價格 加上很想要的即時翻譯功能而買入 

在光碟封面上廠商寫著"廣藝多媒體" 

但是如果有注意的話會發現 Roboword is a Trademark of TechnoCraft Company" 字樣 

這個 TechnoCraft 事實上是一件日本公司 

Roboword 在日本持續開發到 v8.2 

TechnoCraft Co. Ltd. 在 2015 年公司解散 

廣藝多媒體也已於 1999 年初解散

 

網際金點 Roboword 2.0 Lite

 







 

 

 

2020年10月17日 星期六

正體中文資訊考古 - Lotus SmartSuite 4.0

這款軟體也是個人收藏 - Lotus SmartSuite 4.0 中文版

基本上這是 OS/2 T3.0 校園菁英方案中所附贈的軟體

小弟在大學時期的作業報告跟簡報相當多使用 SmartSuite 4.0 來製作

這是 Lotus 在被 IBM 以 35 億美元併購那年 1995 所推出的產品

但是因為 Lotus 已太晚(1994)切入 Windows 平台

Lotus 因而將 DOS 時代打下市場讓給了 Microsoft Office

(Microsoft Office 在 1990 年當時是開發用來推廣 Windows 3.0 的附加產物)

而在 2002 年推出最後一代產品 SmartSuite 9.8

最後 IBM 於 2018 年底將 Lotus 以 15 億美元賣給了 HCL

SmartSuite 具有正體中文化的版本共有3個:

  • SmartSuite 4.0
  • SmartSuite 96
  • SmartSuite 97

Lotus SmartSuite 4.0 正體中文版

 

 item image #1 

item image #2 

item image #3

item image #4

item image #5

item image #6

item image #7

item image #8

item image #9

item image #10

item image #11



2020年10月16日 星期五

Linux Developer 都應該學習的 Container 工具 - Apptainer / Singularity

現今對於 Daily Linux Developer / User 面對不同程式/開發版本環境感到很頭疼, 常常疲於

  • 執行舊版程式需要安裝舊版本 Library, 設定 RPATH / LD_LIBRARY_PATH 
  • 開發需求建立不同的版本 SDK 開發/執行環境, 在較舊系統上需要新軟體, 或是新系統上需要舊軟體工具(基於驗證或是綁定版本等等需求)
  • 短暫需要的工具, 安裝了一堆套件一一全部移除相當麻煩
  • 嘗鮮希望測試實驗性版本軟體

面對這些林林總總開發上的需求, 但是 ... 卻一定不希望弄亂/髒平日使用的主要系統環境

而在接觸到 Singularity 之前

個人認為 python 的 Virtual Environment (VENV) 是很酷的東西

因為可以很快的在同路徑與環境下直接切換不同版本的開發環境

而儘管 docker / VM 也能夠提供多種版本的開發環境

但是 docker / VM 也著一些相對不便的缺點: 

  • 需要 root 才會有比較方便的使用體驗
  • 需要登入 / 切換使用者環境, 不是開發者既有的 Home
  • isolation 對 service 是優點, 但對開發完全成為一個重大缺點
  • 目錄資料需要複製 / 轉移 / 同步

本文談到的 rootless 與環境功能相信 docker 都能提供, 但是流程相對煩雜非常非常多

相關工具也並非官方提供, 會有版本造成無法運作的問題

而透過使用 Singularity 可以很輕鬆達成完整環境類似 VENV 的效果

Singularity  的好處很多, 對於開發者而言:

  • 是 container 技術, 不像 VM 有效能減損問題
  • 基本的設定與使用非常簡單
  • 能直接在既有的 Home 目錄下切換環境, 無同步上的困擾
  • 可使用 docker hub 的資源
  • 簡單的 image / sandbox 概念設計
  • 透過 fakeroot 就可以建立/修改自己需要的 image 環境, 無需 root
  • 符合 OCI 標準,  能提供 Docker 那類 service 導向的 instance 環境

Singularity 因為無需 root 權限的特性廣受 HPC 相關應用服務的歡迎與採用

但是 Singularity 的文件數量並不像 Docker 那樣豐富, 但還是有相當不錯的介紹

個人推薦瑞士University of Bern 中 Science IT 單位提供的 Singularity Container 指引

當然還是推薦官方網站官方文件中的 User GuideAdmin Guide

本文單純是以 Developer 角度的推薦說明文

包含安裝過程與詳細的操作與進階功能請參考上述文件連結


建立基本 SIF image, 基本操作

安裝 Singularity 後, 當然立刻會想要抓個環境來試試看

$ singularity build ubuntu_18.04.sif docker://ubuntu:18.04

接著你會看到類似下列的畫面


大小約 26MB 左右, 可想而知環境是相當陽春的, 但接著嘗試用看看吧

$ singularity shell ubuntu_18.04.sif


從截圖中可以看到主系統是 Ubuntu 20.10 但 SIF 環境是 18.04, 此外還可以比較一些工具

完全是不同的世界! 更棒的是第一張截圖顯示了還是在同一個路徑下

這時候好奇嘗試 apt-get update,  或是 sudo apt-get update 會發現完全無法執行

那麼該怎麼安裝想要的套件呢?

這時候你需要建立 sandbox (也就是 image 的 rootfs)

再透過調整好的 sandbox 來建立 sif image


建立 Sandbox

在 University of Bern 的投影片中絕大多數需要 sudo 的操作都可以透過 --fakeroot 參數取代

像是建立 sandbox 原本的指令會是:

$ sudo singularity build --sandbox ubuntu_18.04 docker://ubuntu:18.04

但是透過 fakeroot 特性, 現在只需要:

 $ singularity build --fakeroot --sandbox ubuntu_18.04 docker://ubuntu:18.04

如此你就建立了可以修改的 sandbox, sandbox 的功能與 SIF image 相同

但最大的不同是它可以 writable! 所以可以用來修改與建立想要的環境

接著讓我們以安裝 gcc 與 clang 為例

首先透過 fakeroot 以 writable 方式開啟 ubuntu_18.04 環境, 並 apt-get update

$ singularity shell --fakeroot --writable ubuntu_18.04

接著來以 apt-get install gcc clang 指令試試看安裝 gcc & clang


要安裝的是 gcc-7 與 clang-6.0 完全就是  ubuntu 18.04 的套件版本

透過 sandbox 建立 SIF image 檔案

安裝完後當然可以直接使用 gcc / clang, 但這裡我們先離開 sandbox 環境

接著要把修改好的 sandbox 封裝成方便轉移與可供他人使用的 SIF image 檔案

將 sandbox 轉為 sif 的指令為:

$ singularity build --fakeroot ubuntu_18.04_dev.sif ubuntu_18.04

是的, build 的來源不僅只能是 docker hub, 還能由客製的 sandbox 與 singularity hub

在此觀察了 sif 檔案大小, 發現大小增加到 210MB 上下

這個新建立的 ubuntu_18.04_dev.sif 就可以提供給任何人來使用


編譯測試

這裡建立了一個 test/test.c 作為切換的展示

而 test/test.c 內容為:

#include <stdio.h>

int main(void)
{
    printf("This is a singularity test.\n");
}

這個測試是展示在相同的目錄下切換不同系統環境

清除 sandbox 目錄

由於 sandbox 是透過 fakeroot 身份建立的, 因此可能會有無法用自身帳號移除部份檔案/目錄的情況

這時候請執行 fakeroot 指令轉換為 (fake) root

雖然顯示為 root, 但是事實上並不是真的 root 也無法執行實際系統上需要 root 的指令 (這裡嘗試執行 apt-get update)

這時用此方式就可以順利移除產生的 sandbox


如何? Singularity 是不是簡單好吃不黏牙?


UPDATE - 由於 Sylabs 的公司化與透過 Singularity 與營利, 然而又並沒有改名, 因此原本社群版本在 2021 年 11 月時更名為 Apptainer


2020年10月14日 星期三

正體中文資訊考古 - CLE 0.8

 這不是今日入手, 這算是個人珍藏

(會留著也是提醒自己的一些起點)
看過這張光碟的, 應該都超過 40 了
現在好像也不太好找到當時的 ISO files
個人是 CLE 0.8 這時期前後開始從 OS/2 認真跨入 Linux
(升大一時小小玩過 Slackware / FreeBSD)
發文同時正在上傳 archive.org
除了 Wiki 留下一筆 CLE 0.8 是 Linux 中文化的里程碑之外
是不是讓後進看看當時使用環境實際情況來得有意義?

這裡有篇如何使用 VirtualBox 安裝舊時代 Linux 指引
 
啟動 X window 需要 XFree86_FBDev 可以自此連結下載, 安裝完系統後將 tarball 在 / 解開

https://ia801405.us.archive.org/15/items/CLE_0.8/CLE0.8_0.png

https://ia801405.us.archive.org/15/items/CLE_0.8/CLE0.8_1.png

https://ia801405.us.archive.org/15/items/CLE_0.8/CLE0.8_2.png

2020年10月12日 星期一

正體中文資訊考古 - 遠東超時代百科大辭典 v2.0 / v2.1

雖然不貴(60元)
但這原版光碟花了相當力氣入手(主要是原本唯一賣家已找不到光碟)
遠東超時代百科大辭典 2.1 (雖然上面寫著 2.0, 原因後述)
雖然這個版本年代相當久遠
但跟小弟當年把玩的版本略有不同
最大的不同點是在說明文件中提及了 Windows 95
在小弟使用這字典軟體的年代的當時應尚未推出
近日返家剛好發現這片當時附上的非正版光碟
(是商家那時用的片子好, 還是當時的讀取技術不好需要的 SNR 較高?)
一併製作 ISO file 上傳
也剛好可以做個對比, 因而發現當時的版本確實比較舊
v2.0 的說明檔的確沒有提及 Windows 95
另外在 Win 3.1 大字型模式下介面會有錯誤的情況
一些狀況在 v2.1 版都修正了
(為何知道是 2.1 是因為 CD Label 寫著 NEWAGE210)
 
此辭典軟體在 2006 還有推出 3.0 版本
並在 2018 年推出 Windows X 版, 可以說是長賣軟體
 
這辭典就是介紹萊思康時提到的軟體
推出時間在 1994~1996 間
有相當不錯的介面與字彙發音
但是當年的這些採用光碟讀取的軟體有著幾個缺點
1. 高延遲時間 (包含因為馬達待機)
2. 讀取速度慢 (那時還是 2~4X 光碟機的時代)
3. 高馬達噪音
無法免除光碟的使用是當時這類軟體的大缺點
(在燒錄機高價的時代軟體商把這當一種 DRM)
在當時的如此的實用性也大減
然而在現在的虛擬化方式反而感覺不錯
質感反而超越後來市場成為主流的辭典軟體
後續會介紹一個當時有時代意義的字典軟體
這篇是本系列第 10 篇
後續會降低頻率為一週一篇 ( Win 3.1 軟體應該可以寫到年底?)

https://ia801403.us.archive.org/32/items/NewAge_v2.1/NewAge210_0.png

https://ia801403.us.archive.org/32/items/NewAge_v2.1/NewAge210_1.png

https://ia801403.us.archive.org/32/items/NewAge_v2.1/NewAge210_3.png

https://ia801403.us.archive.org/32/items/NewAge_v2.1/NewAge210_4.png

https://ia801403.us.archive.org/32/items/NewAge_v2.1/NewAge210_5.png

item image #6

https://ia801403.us.archive.org/32/items/NewAge_v2.1/NewAge210_7.png

https://ia601403.us.archive.org/32/items/NewAge_v2.1/NewAge210_8.png


在 ARM 平台上使用 Function Multi-Versioning (FMV) - 以使用 Android NDK 為例

Function Multi-Versioning (FMV) 過往的 CPU 發展歷程中, x86 平台由於因應各種應用需求的提出, 而陸陸續續加入了不同的指令集, 此外也可能因為針對市場做等級區隔, 支援的數量與種類也不等. 在 Linux 平台上這些 CPU 資訊可以透過...