Notice: Trying to access array offset on value of type bool in /home1/freesand/public_html/wp-content/plugins/wiki-embed/WikiEmbed.php on line 112

Notice: Trying to access array offset on value of type bool in /home1/freesand/public_html/wp-content/plugins/wiki-embed/WikiEmbed.php on line 112

Notice: Trying to access array offset on value of type bool in /home1/freesand/public_html/wp-content/plugins/wiki-embed/WikiEmbed.php on line 116
FreeSandal | 輕。鬆。學。部落客 | 第 358 頁

天下一指、萬物一馬︰二進制

人們習以為常的語言、文字都是符號系統。當我們講到玫瑰花,是指「可以看、聞、摸的那種植物的花」,如果缺乏感官經驗,也許根本不能知道玫瑰花是什麼?或者正因為經驗的自然平常,以致於我們忘了玫瑰花只是個符號。有人說玫瑰花即使換個名字‥ Rose ,依然芬芳香甜,指的就是這個道理。如同月亮高掛天空,只能一指說月;天下廣大,當然也只能一指而知,所以說萬物雖然眾多,可以用像談馬一樣的東西去理解。在歷史上大數學家邱奇的 λ 演算,把數學的形式系統推上了高峰,同時加深了人們對『數是什麼?』的認識。

一朵花、一隻鳥、一座山、一片林…都是一,知道『』、又知道『加上一』,就可以知道數的無窮無盡。然而對於無窮無盡的數又該怎樣命名呢?古代中國發明了十倍為單位的記數法︰十十為百、十百為千、十千為萬…。初期用一、二、三、四、五、六、七、八、九、十來書寫,而後因為需要發展了大寫數字‥壹、貳、參、肆、伍、陸、柒、捌、玖、拾。至於說為什麼用十呢?也許因為人有十個手指頭,常用來數數指物。那為什麼沒有零呢?中國古代並沒有零的符號,在概念上『九章算術』用「無入」來表達,算盤上用「空位」去說明。現在所使用的阿拉伯記數法︰0、1、2、3、4、5、6、7、8、9,是在漫漫歷史長河中逐步變遷而來。由上述可知三百、參佰、300 雖然說的是同一個數,它的符號卻是不同的。同樣可以知道阿拉伯記數法用位置代表數量級,所以 0 的加入是必要的。

隨著對計數法的認識、算術的了解,阿拉伯記數法被稱為十進制,逢十進位,用 0、1、2、3、4、5、6、7、8、9 十個數表示數量級的數值。舉例來說︰

 362 = 3 * 10^2 + 6 * 10 + 2

 251 = 2 * 10^2 + 5 * 10 + 1

 362 + 251 = ( 3 * 10^2 + 6 * 10 + 2 ) + ( 2 * 10^2 + 5 * 10 + 1 )

 = (3 +2) * 10^2 + (6+5) * 10 + (2+1)

 = 5 * 10^2 + (10+1) * 10 + 3

 = 6 * 10^2 + 1 * 10 + 3

這也正是直式加法,位置對齊、逢十進位的原則。在這種表達裡,如果一個五位數記作 abcde ,0 <= a, b, c, d, e <= 9 ,它指的就是這一個數︰

 abcde = a * 10^4 + b * 10^3 + c * 10^2 + d * 10 + e

在數學裡,我們很容易理解  a * X^4 + b * X^3 + c * X^2 + d * X + e ,就是說所謂的 X 進位制正是指這樣表示一個數的,式中 0 <= a, b, c, d, e<= X – 1  。因此一個 二進制 的四位數 1010 = 1 * {2^3} + 0 * {2^2} + 1 * 2 + 0 就是十進制的 10。一般在計算機硬體設計上常用二進制,是因為電壓的高低、電流的有無、邏輯的真假…等等多半是兩個狀態之一。承上所述二進制記數只有兩個數字符號 0 和 1 ,將一個位置稱作一個位元 bit,通常最小的位置單元為八位元,稱為一個位元組 byte,一個位元組能表達的最大數值是︰

11111111 =  2^7 + 2^6 + 2^5 + 2^4 + 2^3 + 2^2 + 2 + 1 = 255

由於二進制記數需要很長的 1 和 0 符號串,表達大的數時並不方便,於是有了十六進制的出現,在 0、1、2、3、4、5、6、7、8、9 之外加上 A、B、C、D、E、F 代表 10、11、12、13、14、15 一共十六個數字符號用於記數,比方說︰

FFFF =  15 * 16^3 + 15 * 16^2 + 15 * 16 + 15 代表 65535 這個數 。

最後回到數量級的概念,一般在科技上用 K 代表 10 的三次方   10^3 、M = KK 是10 的六次方  10^6 、G = KM 是10 的九次方  10^9 、T = KG  是10 的十二次方 10^{12} 。電腦上也使用這些數量級符號,只不過 K 不是取 1000 而是取 2 的 十次方1024。也就是說二進制使用的 1 K 比十進制的大了 2.4%,1 M 大了約 4.9%, 1 G 大了約 7.4%,1 T 大了約 10%。然而某些電腦儲存裝置、媒體廠商卻故意混亂數量級的用法,以少報多不實的標記容量大小。

樹莓派配粽子!

明天端午佳節就到了,在吃粽子之餘反思它的由來,別有一番意義。其實樹莓派的出現,為的是基礎教育的變革,這事目前在英國已然展開。事實上正由於高速的發展,科技何止日新月異。加上全球國家太專注經濟成長追求的結果,也許已使得學校多成了學店。面對這樣的困境,英國劍橋大學的一些有志之士發起了回歸樂趣於程式,把 STEM 帶進校園、走入家庭,於是才有了 Raspberry Pi。那 STEM 是什麼呢?

科學 S 的基礎在數學 M;工程 E 的基石在科技 T。

或者說國富民強總在教育。

驚鴻一瞥;啟動過程與燈號

觀察一個電腦系統的開機過程,是理解那個系統的重要一步。事實上從供電啟動之後,電腦總是在執行指令‥即使是錯誤的亂碼,以致於當機。這是一個程序啟動另一個程序的過程,一直持續到作業系統的啟動階段,一般稱作靴帶式啟動。其後由作業系統接手,初始化裝置設備,直到使用者登錄畫面,完成整個開機過程。當然一個簡單的算術計算機,也許一步到位,然而過程上的理解卻是相同的。

在靴帶式啟動過程中,一般使用簡單的聲音、燈號表示系統的狀態或錯誤。目前樹莓派的設計上只使用燈號。樹莓派上有五個 LED 燈號,其中一個標示為 ACT 的發綠色光 LED 正用於啟動過程,開機後的功能依使用的作業環境而異,一般表示為 SD 卡在讀寫動作中。所以關機時最好等到 ACT LED 完全熄滅,再抽拔 SD 卡,以免可能的檔案損毀。下表簡短說明這五個 LED 燈號︰

LED
標示
發光顏色功能一般狀態及說明
ACT綠色SD 卡讀寫狀態開機時表示啟動過程,一般開機後用於 SD 卡的讀寫動作中的指示。
PWR紅色供電供電後維持紅色。
FDX綠色全雙工
乙太網
如果連上全雙工乙太網就亮。
LNK綠色連上
乙太網
如果連上乙太網就亮。
100橘色網速
100 Mbps
如果網速 100 Mbps 以上就亮。

現在簡略談談樹莓派官網版 Raspbian 的靴帶式啟動過程,供電後 PWR LED 紅燈亮起,GPU 繪圖處理器啟動,執行 IC ROM 中的起始程序。此程序嘗試讀取 SD 卡上的 fat 分割區塊,尋找 bootcode.bin 檔案,這時 ACT LED 是熄滅的,找到載入後把控制權交給它,展開第二階段。bootcode.bin 嘗試讀取 SD 卡上的 start.elf 。這時如果 start.elf  找不到,ACT LED 閃三次;如果 start.elf  能找到、不能載入,ACT LED 閃四次;假使一切正常,start.elf 將在螢幕上顯示

Debug-screen

之後 start.elf 嘗試讀取 SD 卡上的 config.txt 、cmdline.txt 以及kernel.img,如果此時 kernel.img 找不到,ACT LED 將閃七次;最後將控制權交給 kernel.img 完成靴帶式啟動。特別說明這裡的描述都是假裝系統的 SDRAM 工作正常,如果不是 ACT LED 會閃八次。

最後開始 了通常 Linux Kernel  核心的開機過程。

哪裡找資料?

學習新事物, 解決面臨問題, 參考資料書籍是很重要的. 目前國外有關樹莓派的書已有十數本, 中文的書也已經有了一些, 如果合宜拿來拜讀, 可以是一個很好的開始. 本文主要介紹的是網路上分享的資源, 也許也是一個不錯的起頭. 月前在樹莓派基金會網頁更新後, 有關軟體,硬體,系統等等文件日益充實, 你可以到 這裡 瀏覽. 教育資源方面可以到 這裡 看看. 如果你對樹莓派某些話題有興趣, 千萬不要錯過 論壇 . 其實樹莓派最早共創文件的集結是在 這裡 , 現今依然活躍. 假使你想找一些共享的書籍,文件,其他資源等等, 這是一個 方便的去處 .

輕。鬆。學。部落客