星期二, 12月 18, 2007
當有錢人有什麼好?
稍微查了一下,果真如此!不過,看起來是態度的問題,有錢並不是壞事,壞就壞在人有了錢之後,對錢財的態度有問題。
財主
太 19:23 於是耶穌對門徒說,我實在告訴你們,財主進諸天的國是難的。
太 19:24 我又告訴你們,駱駝穿過鍼的眼,比財主進神的國還容易。
可 10:25 駱駝穿過鍼的眼,比財主進神的國還容易。
路 18:25 駱駝穿過鍼的眼,比財主進神的國還容易。
有錢財的人
可 10:23 耶穌周圍一看,對門徒說,有錢財的人要進神的國,是何等的難!
路 18:24 耶穌見他甚是憂愁,就說,有錢財的人要進神的國,是何等的難!
瑪門
太 6:24 沒有人能事奉兩個主;因為他不是恨這個愛那個,就是忠於這個輕視那個。你們不能事奉神,又事奉瑪門。
路 16:13 沒有一個家僕能事奉兩個主;因為他不是恨這個愛那個,就是忠於這個輕視那個。你們不能事奉神,又事奉瑪門。
富足
路 6:24 但你們富足的人有禍了,因為你們充分的受了你們的安慰。
路 12:21 那為自己積財,對神卻不富足的,也是這樣。
提前 6:17 你要囑咐那些今世富足的人,不要心思高傲,也不要寄望於無定的錢財,只要寄望於那將百物豐富的供給我們享受的神;
雅 1:11 太陽升起,熱氣薰烤,草就枯乾,花也凋謝,美容就消沒了;那富足的人在他所行的事上,也要這樣衰殘。
雅 2:6 你們反倒羞辱貧窮的人。那富足的人豈不是欺壓你們,拉你們到法庭去麼?
雅 5:1 嗐,你們富足的人,應當為那將要臨到你們的悲慘哭泣號咷。
啟 3:17 因為你說,我是富足,已經發了財,一樣都不缺;卻不知道你是那困苦、可憐、貧窮、瞎眼、赤身的。
財寶
太 6:19 不要為自己積蓄財寶在地上,地上有蟲蛀、鏽蝕,也有賊挖洞偷竊;
太 6:20 只要為自己積蓄財寶在天上,天上沒有蟲蛀、鏽蝕,也沒有賊挖洞偷竊。
太 6:21 因為你的財寶在那裏,你的心也必在那裏。
太 19:21 耶穌對他說,你若想要完全,就要去變賣你的家業,分給窮人,就必有財寶在諸天之上,你還要來跟從我。
可 10:21 耶穌看著他,就愛他,對他說,你還缺少一件:去變賣你所有的,分給窮人,就必有財寶在天上,你還要來跟從我。
路 12:33 要變賣你們的家業,施捨給人;為自己豫備永不舊的錢袋,用不盡的財寶在諸天之上,就是賊不能近,蟲不能蛀的地方。
路 12:34 因為你們的財寶在那裏,你們的心也必在那裏。
路 18:22 耶穌聽見了,就對他說,你還缺少一件:要變賣你一切所有的,分給窮人,就必有財寶在諸天之上,你還要來跟從我。
雅 5:3 你們的金銀都鏽蝕了,這鏽要作見證,定你們的罪,又要像火一樣,喫你們的肉。你們在末後的日子積蓄財寶。
星期五, 12月 14, 2007
ELF檔中的special section
此區塊置放未初始化的資料。通常在程式開始執行時,此區塊會被清為零。此區塊並不佔位置。
.comment
此區塊存放版本訊息。
.data和.data1
此區塊置放已初始化的資料。
.debug
此區塊存放除錯訊息。任何.debug開頭的區塊都被保留,為著未來的使用。
.dynamic
此區塊存放動態鏈結資訊。
.hash
此區塊存放符號雜湊表。
.line
此區塊存放行號資訊,以便在除錯時使用。所謂行號資訊指的是機器碼與程式原始碼的對應關系。
.note
.rodata和.rodata1
此區塊存放惟讀訊息。
.shstrtab
此區塊存放區塊名稱。
.strtab
.symtab
此區塊存放符號表。
.text
此區塊存放程式的可執行部分,主要是指令。
星期一, 12月 10, 2007
星期五, 12月 07, 2007
Linker Script概觀
原文在此
==========================================================
Linker Script概觀
為了要介紹linker script語言,我們必需先定義一些基本觀念和我們所用到的字彙
Linker作的事情就是把許多輸入給linker的檔案結合成一
這些輸入的檔案和輸出的檔案都具有特殊的資料格式
每一個區塊在目的檔中,都有自己的名字跟大小。大多數的區塊都有一
每一個"可載入的"輸出區塊或"可配置的"輸出區塊都有兩種位址
我們可以使用objdump -h來看一個目的檔中有多少區塊。
每一個目的檔中也都有一連串的"符號",就是我們常聽見的"符號表"。一個符號可以是已定義的,或是未定義的。每一個符號都有一個名字,而每一個已定義的符號除了名字之外還有位址和其他資訊。如果你把一個c或c++的檔案編譯成目的檔,你會發現每一個已定義的全域變數、靜態變數和函式都有一個已定義的符號。任何在輸入檔案中所參照(reference)的未定義全域變數跟函式即為未定義符號。
我們可以使用一個目的檔的工具nm或objdump -t來看目的檔中的符號。
星期四, 11月 29, 2007
星期一, 8月 20, 2007
Virtual address和virtual memory
特別是cache、write buffer、TLB、mmu、physical memoyy、logical memory…等名詞突然放在一起的時候。所以以前大學的時候碰到考試就是把圖背起來,然後把一些經典考題練習的滾瓜爛熟,去考試都還算ok。
直到開始工作後,玩了一些架構(mips跟arm)後,這些觀念才比較清楚。
簡言之,最單純的系統就是cpu只看的到physical address的系統,缺點就是每一個process在memory的address都要算的很精準,彼此不會overlap,不然系統可能會crash。為了避免這種缺點,有人認為可以在physical address之外另外建立一個虛擬的address,然後程式在cpu執行的時候只認這個address,可以把這個address叫作logical address或是virtual address。這樣一來,就需要有一個角色來轉換這兩種address,把virtual address轉換成physical address或是把physical address轉換成virtual address。這個角色通常是一個硬體(我還沒看過軟體的)的relocation register。這樣一來,我們還是可以像之前所提的那個最單純的系統一樣,在physical address放了不同process彼此不會互相影響,但是cpu在執行這三個process時,他們可能都有相同的virtual address(但是每個process都有不同的physical address,比如說是:0x604000、0x804000、0xA04000),比如說是0x004000。這一來就會有一個好處,在執行一個process時,cpu跟本就不知道其他process是在physical address space的哪個位置。這樣對其他未被執行,但存在在physical memory裡面的process反而是一種保護。因為你不去查relocation register的值,跟本就不知道其他process實際的physical address是什麼。
這就是virtual address的由來,因為多了一個virtual address space對process的管理有一些額外的好處。
至於virtual memory,則是一種技術,讓你的process可以超過你所擁有的的實際記憶體大小。
需要file system嗎?
這樣看來,一個embedded system,可能只需要一個簡單的file system,甚至不需要file system。
如果從這個角度來看,似乎許多unix-like的系統,都不太適合拿來當embedded system的os。
因為很多從multi-user的角度來設計的地方,用在embedded system上,似乎都顯得多餘了。
星期五, 8月 17, 2007
驚奇的演出
至於第二首歌(起初的愛),還是免不了有一點生澀,因為練習的還不夠。比較特別的是跟施孝榮大哥的合作。他是快到節目開始的時候才來,而且在正式演出前,我們還沒有一起合過。所以也不知道兩個人要怎麼一起來唱這首歌。
到我們要開始上台表演前,我們大概只有不到半小時的時間一起討論,前前後後也就是合過兩次左右就上台去了。
這不合還好,一合之後我就嚇到了,這個時候才知道專業跟業餘的差別,我們大概才把和弦講完,開始合奏的時候,他已經可以配上伴奏了。真是~太強了啦~~
我覺得我還在驚訝於施大哥專業的實力時,就已經上台了。
Anyway,這真的是一次驚奇的演出!
能夠跟施弟兄一起唱馬弟兄的歌曲,Praise Lord!
看來我這種難登大雅之堂的歌聲和技術,還有的練習咧!
星期四, 8月 09, 2007
青職問題一籮筐-家電篇(修正版)
現在租別人的房子沒什麼感覺,因為會用到的家具大概房東都有預備了。
最近在想買了房子以後還有什麼東西要買,這不想還好,這一想就覺得怎麼這麼多東西要花錢…
如果分成食衣住行來看,我們需要什麼家電,大概是這樣看:
食:
都是一些廚房用品,包括炊具跟碗盤。瓦斯爐:一萬。烘碗機:五千(也許不需要)。洗碗機:五萬(是我想太多了…)。調理機(馬力強的果汁機,已經有了)。 烤箱(已經有人送了~感謝主)。麵包機(已有)。抽油煙機:一萬(這個很重要!)。碗盤(已經有人送了~感謝主)。鍋具(不齊,可能還要買快鍋、炒鍋、大 湯鍋…):算個二萬好了。還有冰箱:用480升來算大概是五萬。
衣:
要買個洗衣機,想買好一點的,買個滾筒式的,日韓系的大概二~三萬,歐美系的好像要四~五萬,我原本還以為不到一萬就解決了,沒想到…是我太天真了。
其他的應該是一些雜項吧~像是衣架、曬衣架…之類的。
住:(主要是空調)
以冷氣為例~大多是用分離式冷氣,因為窗型的實在滿吵的。至於要裝哪一種的,還要考慮到房子的格局,跟大小。以3 房兩廳為例,每一間房間加客廳都要裝冷氣如果買兩台一對二的,這樣十萬就沒了。
吸塵器+電扇:3萬。熱水器:一萬五。
沙發、桌子之類的就歸在家具類了。
行:
行的話應該不在家裡面,不予計算…
整個算一下大概是34萬,可以全部買齊,而且是最高級。如果扣掉一些可能不需要的東西,大概是23.5萬,所以整個購屋成本裡面,家電可能將近佔十分之一的比例,不能小看啊!
少算了這一塊可能買了房子之後有一年要睡地版吧…
星期三, 8月 08, 2007
MINIX與我
基於MINIX的設計精神-「Simplicity is beautiful」,在摒除效能至上,程式碼精簡這些有礙學習的因素外,MINIX的出現的確對CS的莘莘學子來說是一大福音。畢竟,在學校上的os多半只是理論跟原則,沒有自己親自設計、撰寫一個系統,老實說,還真的搞不太清楚,老師講的這些東西到底要怎麼用。
離開學校數年後,有些機會跟一些學弟妹聊聊,發現現在的狀況好像還是差不多,不知道是不是因為這樣教學環境的關系,台灣cs畢業的學生,對os一知半解的情況下,也很難寫出幾個有名的os。
過了數年後的今天,由於對OS的熱誠依然不減的情況下,選擇MINIX來當作一個入門的地方實在是一件令人興奮的事。畢竟,Linus也是走過相同的一段路呢!
星期二, 8月 07, 2007
The MINIX book
剛開始的時候,我實在是搞不清楚,為什麼在美國教科書排行榜上常常是屬一屬二的教科書,怎麼在台灣卻有點名不見經傳的感覺。
後來在我開始讀他的書的時候,我大概就有點了解了。
(為什麼這樣講,其實買書前我是大概看了看,覺得內容還滿不錯的就買了。就好像Knuth的書一樣,先不用管看不看的懂,先買一套回家在說。)
我發現我的英文單字量是一個很大的問題!!
因為,他的英文語句的變化滿大的,用的詞彙又很豐富,對美國人來說,大概會認為這個教授用詞活潑,很貼近他們,但我們這些外國佬就看的滿吃力了。其實,讀原文書也好幾年了,也有好些書是不太需要查字典了。沒想到碰上Tanenbaum之後,我就投降了…
以我最近開始讀的The MINIX book為例,才讀第一章的導論而已,就有將近四成的時間在查字典跟揣摩語意。這大大降低閱讀的速度。我在想,如果大學的時候用這種書來當教科書,那可能會有一票人放棄os…
Anyway,我不認為這個「缺點」會影響這本書的價值。
畢竟,以os的「實作」來寫書的書在市場上實在是太少了。
青職問題一籮筐-房事篇
而且,剛成家時,手邊能用的錢實在是不多,不過還好我們租了一層公寓有自己的廚房,不常外食,而且加上分租給其他弟兄的關系,食、住的花費就沒這麼大了。
但隨著週圍的弟兄們一個接著一個的成家,跟我們住的單身弟兄也將在近日成家,還有三不五時,閃過「太晚懷孕將導致胎兒xx」的新聞,將購屋的念頭成功地往上拉了好幾個順位。
因為很多人都不想在懷孕的時候搬家。而且,對於我們現在住的公寓實在有些許的不滿,包括格局的配置,東西的擺設…等等。但是畢竟不是自己的房子,有些地方亂,也只能讓它亂了,因為不是自己的房子,所以也沒辦法作整體的歸畫,想新購一些家具,又怕日後搬家,又要在搞一次,勞民傷財,實在是划不來。
但是開始找房子後,考慮的東西就又更多了。
首先是價格,當然最重要的也是價格。
我不想說太多,總之,我們想買的房子,買不起!我們有的錢,只能買到我們不想買的房子。
在來,是格局、樓層、地點、週邊環境…等等。總之,考慮的東西很多啦~
無論如何,還是擺在禱告中。看主怎麼開路。
星期四, 5月 03, 2007
星期四, 3月 22, 2007
結婚聚會、喜宴網路邀請卡
星期三, 3月 07, 2007
Cross compiler
簡單說,要build一個cross compiler,必需對gcc、binutils有相當程度的了解。
還有,要編譯前可不是打一個make下去就好了。make前的configure也是很麻煩。不管是binutils還是gcc,組態的參數超多,只能抱著網上的文件,慢慢k了。
在來就是make的問題了,在make前許多事前的準備工作都要作好,尤其是configure時設的選項一定要懂,不然make到一半才知道問題,那幾乎就要重來。
不過呢?重來倒也還好,重點是「時間」。
編譯binutils大概十來分鐘,但是,編譯gcc就不是十來分鐘就解決的事情。我只要c,c++的compiler編譯時間大概就要3個半小時,約200分鐘。漫長的等待是無所謂,怕就怕編譯到一半,突然停了,make error在去debug或是找patch那就真的麻煩了。
我的心得是,要善用google跟mailing list,通常比較容易找的到答案。
舉例來說,在編譯gcc時,我參考別人configure的參數--with-newlib,其實我一開始也不知道是什麼,而且gcc的文件說明我看了等於沒看,因為上面給的訊息太少了。經過幾次make error之後(我的數十個小時啊…),我開始懷疑是newlib的問題,這時去找才發現,原來newlib是一個給embedded system用的standard c library。但是問題並沒有完全解決。因為在編譯gcc 4.1.2+newlib 1.15.0時,居然make不下去。還好用google找到newlib的mailing list,也有人有同樣的問題,需要patch gcc的Makefile.in才行。
Anyway,問題已經解決了。
在我還沒有找到適合的網路空間時,我就先把解決方法貼上來好了。
====README================================================
This directory contains source code of cross compiler tool-chain.
The following verisions we used:
GCC 4.1.2
Binutils 2.17
Newlib 1.15.0
Directory Structure
===================
README: This document
build.script: Toolchain building script, use --help to get help information.
src/: Source code directory
binutils/: Symbolic link to binutils' source directory
gcc/: Symbolic link to gcc's source directory
Toolchain building steps:(gcc 4.1.2, binutils 2.17, newlib 1.15.0)
Step 1: Fecth source from the internet
You can use following commands to get the source code.
wget ftp://ftp.gnu.org/pub/gnu/binutils/binutils-2.17.tar.bz2
wget ftp://ftp.gnu.org/pub/gnu/gcc/gcc-4.1.2/gcc-4.1.2.tar.bz2
wget ftp://sourceware.org/pub/newlib/newlib-1.15.0.tar.gz
Step 2: Uncompress tarball
You can use following commands to uncompress source code tarball.
cd src
tar zxvf filename.gz or tar jxvf filename.bz2
Step 3: Establish symbolic link for each feather under directory src.
ln -s gcc-4.1.2/ gcc
ln -s binutils-2.17 binutils
Step 4: Deal with newlib's related things...
When we compile gcc we will enable option '--with-newlib', we shall add two
symbolic link under gcc directory.
cd gcc
ln -s ../newlib-1.15.0/newlib newlib
ln -s ../newlib-1.15.0/libgloss libgloss
Step 5: Patch gcc's Makefile.in
If we don't modify the Makefile.in, error occurs when we compile newlib.
-CFLAGS_FOR_TARGET = -O2 $(CFLAGS) $(SYSROOT_CFLAGS_FOR_TARGET)
+CFLAGS_FOR_TARGET = $(strip -O2 $(CFLAGS) $(SYSROOT_CFLAGS_FOR_TARGET))
-CXXFLAGS_FOR_TARGET = $(CXXFLAGS) $(SYSROOT_CFLAGS_FOR_TARGET)
+CXXFLAGS_FOR_TARGET = $(strip $(CXXFLAGS) $(SYSROOT_CFLAGS_FOR_TARGET))
Step 6: Build the toolchain
It will cost 12 minutes for binutils and 3 and a half hours for gcc and newlib.
Of cource, it depends on your machine's speed.
./build.script
==build.script======================================================
# Parameter settings
LANG=en
export LANG
TARGET=mips-elf
PREFIX=/opt/mycrosstools/mips
PROJDIR=$PWD
CONFIGBINLOG=configbin.log
MAKEBINLOG=makebin.log
CONFIGGCCLOG=configgcc.log
MAKEGCCLOG=makegcc.log
mkdir -p tmp/build/binutils
mkdir -p tmp/build/gcc
echo "Building Binutils Starts..."
cd tmp/build/binutils
date>$MAKEBINLOG
$PROJDIR/src/binutils/configure --target=$TARGET --prefix=$PREFIX 2>&1|tee $CONFIGBINLOG
make all install 2>&1| tee $MAKEBINLOG
date>>$MAKEBINLOG
cd $PROJDIR/tmp/build/gcc
PATH=$PREFIX/bin:$PATH
export PATH
date>$MAKEGCCLOG
$PROJDIR/src/gcc/configure --target=$TARGET --prefix=$PREFIX --disable-shared --enable-languages=c,c++ --with-gnu-as --with-gnu-ld --with-newlib --with-gxx-include-dir=$PREFIX/mips-elf/include 2>&1|tee $CONFIGGCCLOG
make all install 2>&1| tee $MAKEGCCLOG
date>>$MAKEGCCLOG
echo "DONE!!"
星期五, 3月 02, 2007
人數破千之後…
上次發文的時候,距今也四個多月了。
這四個月難道都沒有事情發生嗎?
不,其實不是沒有,而且都是發生重要的事情。
惟一講的過去的理由是,因為都是發生重要的事情,所以因為忙著處理重要的事情,而沒有時間停下來記錄生活的點滴。
所以我先來列表一下,看有什麼事情是值得寫的。
Co-work with hardware RD
platform porting
年終考核
海外就職!?
學另一種語言??
加薪
英文面試
結婚!YA!
年夜飯
回娘家…
前途:去?留?
星期一, 10月 30, 2006
Million Voices
【Hotel Rwanda:Million Voices】
Ni dyar'izuba, Rizagaruka, Hejuru yacu,
Ni nduzaricyeza ricyeza.
什麼時候,太陽才會重新現身照耀著我們?
又是誰,最後將為我們揭示這一切?
Rwanda, Rwanda,
Yeah Rwanda, Rwanda.
盧安達,盧安達
唉,盧安達啊,盧安達
They said: "Many are called and few are chosen,"
聖經上說:「被召的人多,但被選上的人少。」
But I wish some wasn't chosen
for the blood spilling of Rwanda.
但是我希望被選中的
不是這血跡斑斑的盧安達
They said: "Meshach, Shadrack and Abednego,
Thrown in the fire but you never get burned,"
他們說:「Meshach, Shadrack 和 Abednego,
就算被丟進火中也不會有絲毫傷痕」
but I wish that I didn't get burned in Rwanda.
但我多希望,盧安達那沒有在我心中烙印下這些記憶
They said: "The man is judged according to his works,"
大家都說:「一個人的價值,在於他的成就」
so tell me Africa, what's your worth?
那告訴我,非洲啊,你的價值在哪裡?
There's no money, no diamonds, no fortunes
on this planet that can replace Rwanda…
這世界上,沒有任何的金錢、鑽石、財富
可以取代盧安達。
These are the cry of the children
小孩子們的哭喊
Anybody hear my cry?
有人聽見了嗎?
If America, is the United States of America,
如果說美國,可以成為「美利堅合眾國」
Then why can't Africa, be the United States of Africa?
那非洲啊,為什麼我們不能和平相處,成為「非洲合眾國」?
And if England, is the United Kingdom,
如果說英國,可以成為「大英聯合王國」
Then why can't Africa unite all the kingdoms
and become United Kingdom of Africa?
那非洲啊,為什麼我們各國不能團結,成為「非洲聯合王國」?
These are the cries of the children, yeah.
孩童們的哭喊,我們的呼喊
Can anybody out there hear our cries?
有人聽見了嗎?
Yeah, heavens cry ... Jesus cry.
有人聽見,天國與主耶穌的哭泣了嗎?
Lord, did you hear us calling you?
主啊,你有聽見我們的呼喚嗎?
Yeah, Rwanda Rwanda,
Lord, did you hear us calling?
主啊,你有聽見我們的盧安達的呼喚嗎?
Can you do something in Rwanda?
你可以幫幫盧安達嗎?
I'm talkin' 'bout Jesus; talkin' 'bout
這首歌談著主耶穌
談論著盧安達
Rwanda Rwanda Rwanda
盧安達啊,盧安達
Talkin' 'bout … talk'n 'bout ...
Talkin' 'bout … talk'n 'bout ...
I wanna play my guitar for Rwanda...



