這個周末到新竹市孔廟前廣場看紙風車劇團表演,個人看過紙風車的三次表演,對於紙風車劇團的付出與用心深感敬佩。但這次表演對新竹以至於台灣的歷史描述,個人實在不敢領教。
基本上,就是你我都被教育過的國民黨史觀。
講到日本人就是只有欺壓台灣人,拿日本人蓋的新竹火車站照片跟劉銘傳做連結,事實上劉銘傳蓋的鐵路根本短得很,根本沒有到新竹。再加以路線品質差 ,日治時期早就拆掉重蓋了。
講到新竹動物園的建立年代是民國二十五年,其實還不是日本明治年間蓋的,跟國民黨年號竟也能這樣搭上線。
講到國民黨就是歌功頌德的,又是科學園區,又是經濟奇蹟,絕口不提兩蔣的高壓統治,更別說台灣人辛苦才掙來的解嚴與民主。
我失望了,這是為台灣孩子好,還是在欺騙天真的兒童?很明顯是充滿人工色素香料的汽水。不知道民進黨的林市議員到底知不知道自己贊助了什麼東西?與其老是打高空談動物園復興,倒不如先把自己的歷史學好再說吧。
2013年4月24日 星期三
Arduino Due
Arduino是著名的open source hardware project,在社群與眾多業餘人士的支持之下,衍生了眾多周邊硬體與軟體程式庫,成為有意研究嵌入式系統的同好的寶貴知識庫。
Arduino所採用的程式語言是C++,它有相當完整的程式庫,IO相關的函式相當齊全。而硬體線路方面則是採模組化設計,一個符合腳位規格的硬體模組叫做shield,只要照著圖例接線或是直接把shield對接上,即使是軟體工程師也可以輕鬆完成線路。
原本就有Arduino UNO R3的我,因為好奇而再度購入Arduino Due。Arduino Due採用Atmel的SAM3X8E,是採用32-bit ARM Cortex M3系列的核心,工作頻率是84MHz,SRAM有96k bytes,Flash有512k bytes,遠比原本8-bit AVR系列來得強大,經過測試後也的確是如此。
但是轉換到32-bit平台並不是完全無痛。首先就是被許多原本玩家抱怨的3.3V IO與原本5V IO無法相容的問題,雖然有部分shield有考慮到電壓準位的問題,但是大部分還是沒有辦法沿用。另一個問題是它的IDE,目前1.5.2版還是beta,穩定性欠佳,另外32-bit程式也變大了,燒錄速度慢了許多。
但是以先前Arduino的成功,個人還是滿懷希望。畢竟更高階多為Linux系統,對於業餘輕度玩家太過複雜。基於.Net Micro Framework的Netduino雖然性價比高,但是個人對.Net用於embedded system有疑慮。目前看來業餘玩家這一塊還是Arduino比較有看頭。
Arduino所採用的程式語言是C++,它有相當完整的程式庫,IO相關的函式相當齊全。而硬體線路方面則是採模組化設計,一個符合腳位規格的硬體模組叫做shield,只要照著圖例接線或是直接把shield對接上,即使是軟體工程師也可以輕鬆完成線路。
原本就有Arduino UNO R3的我,因為好奇而再度購入Arduino Due。Arduino Due採用Atmel的SAM3X8E,是採用32-bit ARM Cortex M3系列的核心,工作頻率是84MHz,SRAM有96k bytes,Flash有512k bytes,遠比原本8-bit AVR系列來得強大,經過測試後也的確是如此。
但是轉換到32-bit平台並不是完全無痛。首先就是被許多原本玩家抱怨的3.3V IO與原本5V IO無法相容的問題,雖然有部分shield有考慮到電壓準位的問題,但是大部分還是沒有辦法沿用。另一個問題是它的IDE,目前1.5.2版還是beta,穩定性欠佳,另外32-bit程式也變大了,燒錄速度慢了許多。
但是以先前Arduino的成功,個人還是滿懷希望。畢竟更高階多為Linux系統,對於業餘輕度玩家太過複雜。基於.Net Micro Framework的Netduino雖然性價比高,但是個人對.Net用於embedded system有疑慮。目前看來業餘玩家這一塊還是Arduino比較有看頭。
2013年1月27日 星期日
Inkscape SVG小小相容性問題
從三年前開始,我就開始以Inkscape繪製SVG圖檔,會採用SVG的主要原因是因為我需要畫的圖大多是簡單的方塊或流程圖,在不想動用肥大的office軟體的情況下,SVG變成我的最佳選擇。另一個優點是它的檔案相當小,當然是因為我的圖案多是方塊與文字。
然而,當我把這些SVG上傳到Mediawiki的時候,問題發生了,有的圖檔會rsvg被render出一些黑色的區域,有些圖檔呈現的是方塊,有些則是不規則的黑色區塊。經過一番的研究,終於解決了這個問題。
其實實際的問題原因與現象有二:
一是黑色方塊的問題,其實是肇因於Inkscape支援的一個非標準語法。更精確的來說,就是它支援了所謂的flowed text,一個曾經進到draft,但後來卻在正式標準1.2版中被改掉的一項功能。關於Flowed text的說明,在Inkscape的FAQ網頁有提到。
Flowed text的產生是因為在Inkscape中輸入文字之前,先用游標畫一個框。如果想要單純的text,正確的做法應該是直接以游標點擊一個點,就可以開始輸入文字 。解決的方法使以Inkscape打開檔案,選擇flowed text物件,在Text選單下選"Convert to Text"即可將它改成text,當然也可以直接刪除它再重新輸入。另一個解決的方法可以在找不到flowed text的時候採用(例如flowed text方框內沒有文字,或是夾雜在許多物件之間找不到),很簡單,以vim將flowRoot的部分改掉或刪除即可。
第二個問題的肇因並沒有完全確認,但應該不是Inkscape的問題,問題是出在rsvg。通常出現在圖形較複雜,背景有大片透明的時候。這樣的檔案在IE/Firefox/Chrome上面都是正常的,所以現在傾向懷疑rsvg。但是也有解決方式,就是畫一個大塊矩形當背景即可。
然而,當我把這些SVG上傳到Mediawiki的時候,問題發生了,有的圖檔會rsvg被render出一些黑色的區域,有些圖檔呈現的是方塊,有些則是不規則的黑色區塊。經過一番的研究,終於解決了這個問題。
其實實際的問題原因與現象有二:
一是黑色方塊的問題,其實是肇因於Inkscape支援的一個非標準語法。更精確的來說,就是它支援了所謂的flowed text,一個曾經進到draft,但後來卻在正式標準1.2版中被改掉的一項功能。關於Flowed text的說明,在Inkscape的FAQ網頁有提到。
Flowed text的產生是因為在Inkscape中輸入文字之前,先用游標畫一個框。如果想要單純的text,正確的做法應該是直接以游標點擊一個點,就可以開始輸入文字 。解決的方法使以Inkscape打開檔案,選擇flowed text物件,在Text選單下選"Convert to Text"即可將它改成text,當然也可以直接刪除它再重新輸入。另一個解決的方法可以在找不到flowed text的時候採用(例如flowed text方框內沒有文字,或是夾雜在許多物件之間找不到),很簡單,以vim將flowRoot的部分改掉或刪除即可。
第二個問題的肇因並沒有完全確認,但應該不是Inkscape的問題,問題是出在rsvg。通常出現在圖形較複雜,背景有大片透明的時候。這樣的檔案在IE/Firefox/Chrome上面都是正常的,所以現在傾向懷疑rsvg。但是也有解決方式,就是畫一個大塊矩形當背景即可。
2012年11月16日 星期五
不能對美國心存幻想
美國雖然是民主國家,嘴裡也口口聲聲說要支持民主,但是在國家利益之下,只要不是美國人,都是可以犧牲的。其實這樣做也很正常,美國人也常常把國家利益掛在嘴邊,只是就台派來說,司法部針對扁家在美資產逕自沒入還是很誇張。
我想中國的高官貪官在美國置產入籍多不勝數,也不曾聽說美國司法部沒入哪個貪官的資產。國民黨藏汙納垢那麼多年,落跑的人一堆,以及興票案之類不明不白的資產,都不曾被沒入。
美國司法部的新聞稿稱這是"alleged bribe",只是alleged就可以這樣搞,要說不是政治事件還真令人難以相信。我相信美國司法部會用alleged,其實也心知肚明KMT在搞什麼。
可憐的台灣人只有靠自己了,美國為了自身利益隨時可以把你給賣了。 還有,這該不會是給小金子的見面禮吧?
我想中國的高官貪官在美國置產入籍多不勝數,也不曾聽說美國司法部沒入哪個貪官的資產。國民黨藏汙納垢那麼多年,落跑的人一堆,以及興票案之類不明不白的資產,都不曾被沒入。
美國司法部的新聞稿稱這是"alleged bribe",只是alleged就可以這樣搞,要說不是政治事件還真令人難以相信。我相信美國司法部會用alleged,其實也心知肚明KMT在搞什麼。
可憐的台灣人只有靠自己了,美國為了自身利益隨時可以把你給賣了。 還有,這該不會是給小金子的見面禮吧?
QEMU and ARM Linux
我是以Ububtu Linux上的qemu-system-arm來進行實驗,先要安裝qemu-system-arm
sudo apt-get install qemu-user-static qemu-system
想知道支援的CPU型號列表:
qemu-system-arm -cpu ?
想知道支援的系統列表:
qemu-system-arm -machine ?
這裡用的是ARM Versatile這個系統當範例,這塊板子的CPU是ARM926EJ-S
首先要解決的是toolchain,這裡是直接下載現成的CodeSourcery CodeBench Lite 2012.03-57 for ARM GNU/Linux.
假設解開到~/test-qemu-arm/, 這時就需要把它的路徑加到PATH
export PATH=$PATH:~/test-qemu-arm/arm-2012.03/bin
寫個小程式來試試看QEMU, 這裡我用個老掉牙的Hello world C程式做測試
qemu-arm-static -L ~/test-qemu-arm/arm-2012.03/arm-none-linux-gnueabi/libc/ ./hello_world
寫個script來設定編譯Linux kernel所需的環境變數:
export PATH=$PATH:/home/victor/test_qemu-arm/arm-2012.03/bin
export ARCH=arm
export CROSS_COMPILE=arm-none-linux-gnueabi-
根據我們使用的平台,載入default config:
make versatile_defconfig
接著做個小修改:
make menuconfig
在"Kernel Features"這一頁,打開"Use the ARM EABI to compile the kernel"
離開前記得要存下設定。
接著就可以開始編譯,這個會稍微花點時間,但以現今PC的能力來說,其實才幾分鐘而已。
make uImage
檢視一下這個uImage file:
file arch/arm/boot/uImage
大致上會看到這樣的輸出:
arch/arm/boot/uImage: u-boot legacy uImage, Linux-3.6.3, Linux/ARM, OS Kernel Image (Not
compressed), 1986896 bytes, Mon Oct 22 17:52:05 2012, Load Address: 0x00008000, Entry Point:
0x00008000, Header CRC: 0x7EF0365B, Data CRC: 0xAE2513DE
現在可以用QEMU來測試kernel:
qemu-system-arm -M versatilepb -m 128M -kernel arch/arm/boot/uImage
我們借助於buildroot來建立所需要的root filesystem。
我下載的是buildroot-2012.08.tar.bz2
網址是 http://buildroot.uclibc.org/
下面是在編譯前需要做的設定:
有些套件可能需要安裝才能順利編過
編出來的root filesystem是在output/images/rootfs.cpio.gz
現在把kernel跟root filesystem放在一起跑:
qemu-system-arm -M versatilepb -m 128M -kernel uImage -initrd rootfs.cpio.gz -serial stdio
這套系統可以用root登入
下面是我參考的網頁:
http://www.linuxforu.com/2011/06/qemu-for-embedded-systems-development-part-1/
http://www.linuxforu.com/2011/07/qemu-for-embedded-systems-development-part-2/
http://www.linuxforu.com/2011/08/qemu-for-embedded-systems-development-part-3/
http://elasticsheep.com/2011/01/building-and-emulating-a-basic-arm-linux-system/
sudo apt-get install qemu-user-static qemu-system
想知道支援的CPU型號列表:
qemu-system-arm -cpu ?
想知道支援的系統列表:
qemu-system-arm -machine ?
這裡用的是ARM Versatile這個系統當範例,這塊板子的CPU是ARM926EJ-S
Toolchain
首先要解決的是toolchain,這裡是直接下載現成的CodeSourcery CodeBench Lite 2012.03-57 for ARM GNU/Linux.
假設解開到~/test-qemu-arm/, 這時就需要把它的路徑加到PATH
export PATH=$PATH:~/test-qemu-arm/arm-2012.03/bin
寫個小程式來試試看QEMU, 這裡我用個老掉牙的Hello world C程式做測試
qemu-arm-static -L ~/test-qemu-arm/arm-2012.03/arm-none-linux-gnueabi/libc/ ./hello_world
Kernel
寫個script來設定編譯Linux kernel所需的環境變數:
export PATH=$PATH:/home/victor/test_qemu-arm/arm-2012.03/bin
export ARCH=arm
export CROSS_COMPILE=arm-none-linux-gnueabi-
根據我們使用的平台,載入default config:
make versatile_defconfig
接著做個小修改:
make menuconfig
在"Kernel Features"這一頁,打開"Use the ARM EABI to compile the kernel"
離開前記得要存下設定。
接著就可以開始編譯,這個會稍微花點時間,但以現今PC的能力來說,其實才幾分鐘而已。
make uImage
檢視一下這個uImage file:
file arch/arm/boot/uImage
大致上會看到這樣的輸出:
arch/arm/boot/uImage: u-boot legacy uImage, Linux-3.6.3, Linux/ARM, OS Kernel Image (Not
compressed), 1986896 bytes, Mon Oct 22 17:52:05 2012, Load Address: 0x00008000, Entry Point:
0x00008000, Header CRC: 0x7EF0365B, Data CRC: 0xAE2513DE
現在可以用QEMU來測試kernel:
qemu-system-arm -M versatilepb -m 128M -kernel arch/arm/boot/uImage
Root Filesystem
我們借助於buildroot來建立所需要的root filesystem。
我下載的是buildroot-2012.08.tar.bz2
網址是 http://buildroot.uclibc.org/
下面是在編譯前需要做的設定:
- Set toolchain as an External, Custom, Pre-installed toolchain.
- Set toolchain path = ~/test_qemu-arm/arm-2012.03/
- Set toolchain prefix = arm-none-linux-gnueabi
- Set serial port from ttyS0 to ttyAMA0
- Enable "cpio the root filesystem"
- And set "Compress method" to gzip.
有些套件可能需要安裝才能順利編過
- bison
- flex
- texinfo(for makeinfo)
編出來的root filesystem是在output/images/rootfs.cpio.gz
現在把kernel跟root filesystem放在一起跑:
qemu-system-arm -M versatilepb -m 128M -kernel uImage -initrd rootfs.cpio.gz -serial stdio
這套系統可以用root登入
下面是我參考的網頁:
http://www.linuxforu.com/2011/06/qemu-for-embedded-systems-development-part-1/
http://www.linuxforu.com/2011/07/qemu-for-embedded-systems-development-part-2/
http://www.linuxforu.com/2011/08/qemu-for-embedded-systems-development-part-3/
http://elasticsheep.com/2011/01/building-and-emulating-a-basic-arm-linux-system/
2012年9月29日 星期六
Sometimes the Truth Just Socks
幾天前看著公共電視台播放的怪醫豪斯,Park重擊House的後腦杓,說了這句話:
"You’ve spent your whole life looking for truth, but sometimes the truth just sucks."
是的,sometimes the truth just socks. 了解了這個世界是這麼的現實與殘酷,這就是我現在的心情。
"You’ve spent your whole life looking for truth, but sometimes the truth just sucks."
是的,sometimes the truth just socks. 了解了這個世界是這麼的現實與殘酷,這就是我現在的心情。
2012年9月8日 星期六
四不像
這個中國自製的processor是在Jserv的部落格看到的,就computer architecture的角度,我想要評評這個core。
很顯然UniCore32是ARM與MIPS架構的混合,就指令集來看,它的架構應該比較貼近MIPS(不要看mnemonic code就以為它像ARM),而且還是比較陽春的MIPS。東抄西抄的結果,不小心也把缺點抄進來了。
一是register number。register多固然對於compiler optimization有幫助,但是也代表了contex switching代價高,interrupt反應時間長。另外,大的register file也比較耗電。32 registers太多了,常寫底層程式的人應該會懂。
一是code density。ARM創造了Thumb/Thumb-2,MIPS創造了MIPS16,都是為了改進code density,code density代表的是cost and performance,UniCore32竟然直接放棄。
當年凌陽自己搞了一個S+Core,君正搞了個MIPS。現在晶心搞了Andes,北大眾志搞了個UniCore32。每次都是在自吹自擂說是可以自製CPU,其實以現在技術做個CPU有何難?真的難處在於跟市場上的架構比有沒有競爭力。說難聽一點,華人世界缺乏對軟體工程師的尊重,沒有軟硬體互相激盪配合的話,是做不出個能存活的產品來的。
以前在北京跟某個科技公司的總經理碰面,一開始就吹噓其產品是在人民大會堂高調發表,某法院院長某黨校校長某某機關首長都來了。草泥馬的,這些腦滿腸肥的官懂個屁。
也難怪東西作不好只好牽拖其他的有的沒的來騙人了。
很顯然UniCore32是ARM與MIPS架構的混合,就指令集來看,它的架構應該比較貼近MIPS(不要看mnemonic code就以為它像ARM),而且還是比較陽春的MIPS。東抄西抄的結果,不小心也把缺點抄進來了。
一是register number。register多固然對於compiler optimization有幫助,但是也代表了contex switching代價高,interrupt反應時間長。另外,大的register file也比較耗電。32 registers太多了,常寫底層程式的人應該會懂。
一是code density。ARM創造了Thumb/Thumb-2,MIPS創造了MIPS16,都是為了改進code density,code density代表的是cost and performance,UniCore32竟然直接放棄。
當年凌陽自己搞了一個S+Core,君正搞了個MIPS。現在晶心搞了Andes,北大眾志搞了個UniCore32。每次都是在自吹自擂說是可以自製CPU,其實以現在技術做個CPU有何難?真的難處在於跟市場上的架構比有沒有競爭力。說難聽一點,華人世界缺乏對軟體工程師的尊重,沒有軟硬體互相激盪配合的話,是做不出個能存活的產品來的。
以前在北京跟某個科技公司的總經理碰面,一開始就吹噓其產品是在人民大會堂高調發表,某法院院長某黨校校長某某機關首長都來了。草泥馬的,這些腦滿腸肥的官懂個屁。
也難怪東西作不好只好牽拖其他的有的沒的來騙人了。
訂閱:
文章 (Atom)
