2011年11月9日 星期三

I2C GPIO

PCA9555 TCA9555 TCA6416A GCA9555 GCA6416A

2011年10月7日 星期五

Solid Tantalum Capacitors 尺寸對照

常常會用到,留著參考,[來源]

2011年10月6日 星期四

2011年9月21日 星期三

解決 wordpress 自動 Update 的問題

Step.1 先到 FileServe.com 申請帳號,他會寄給你一個 FTP Account.
Step.2 到 Wrodpress 下設定 Auto Update 的 FTP 相關設定。

若看到:
Unable to locate WordPress Root directory.
Installation Failed

的錯誤訊息,則在 wp-config.php 檔案中加上以下幾行:
/* Fix Wordpress autoupgrades on Byethost.com */

putenv('TMPDIR=' . ini_get('upload_tmp_dir'));
if(is_admin()) {
add_filter('filesystem_method', create_function('$a', 'return "direct";' ));
define( 'FS_CHMOD_DIR', 0751 );
}


以上參考: Unable to locate WordPress Root directory. Installation Failed

另外,也要注意,wordpress 檔案目錄的權限設定是否正確。

2011年8月19日 星期五

安裝 MacPort 會卡住!?

剛才安裝 MacPort 2.0.1 時 居然一直卡住無法完成
顯示:『正在等待其他安裝完成』



最後只能強制結束

後來在網路上找到一個方法解決

Step.1 sudo rm /private/var/db/mds/system/mds.install.lock
Step.2 reboot

之後就正常了,真是奇怪!?

2011年8月9日 星期二

使用 DVD Decrypter 作 .dvdmedia 注意事項

在 Windows 下 用 DVD Decrypter 的 FIle Mode 作 DeCSS 後,
並將 目錄名稱 加上 .dvdmedia 在 Mac OS X 下 用 DVD 播放程式 播放,
卻出現 『不支援的媒體類型』的錯誤訊息,
後來才發現,必須要在 .dvdmedia 目錄下,手動建立 VIDEO_TS 的目錄,
並將 DVD Decrypter 所解出來的檔案放在 VIDEO_TS 目錄下,
就可正常在 Mac OS X DVD 播放程式 播放。
之前,在 Mac OS X 下使用 Ripit 解 DVD 建 .dvdmedia 時,
Ripit 會自動建立 VIDEO_TS 目錄,所以是 OK 的。

2011年8月6日 星期六

2010 Outback 2.5i 安裝 後車廂 12V 電源座

由於 Outback 無 後車廂 12V 電源座,
有時會造成不便,所以決定回廠加裝!

開始拆隔板


原廠已經有預留線路(紅色圈),加裝插座即可


原廠部品(價格還算便宜)





隔板鑽孔後,裝上插座


完工,搞定!



整個安裝過程,耗時約四十分鐘。

2011年8月5日 星期五

2010 Subaru Outback 2.5i 油耗統計

2010 Subaru Outback 2.5i 油耗統計

統計日期:2010/4/13 ~ 2010/11/4
儀表里程:3443 Km ~ 14187 Km

行駛里程:10744 km
總加油量:1092.79L
平均油價:NT$29.927/L

平均油耗:9.83 Km/L, NT$3.04/Km

汽油種類:
除了三次加到98汽油外,其餘均加95汽油。

行駛路況:
平日上下班都是 新竹 - 竹北 高速公路塞車來回(上班非常塞!下班還好),
週六、日,偶爾跑跑附近縣市(台北、桃園、苗栗、台中),很少跑山路。

2011年6月22日 星期三

2011年5月9日 星期一

gnuplot with aquaterm

自從 重新安裝的 Mac OS X 10.6 之後,一直忘了將 gnuplot 裝回去
可是用 macport 安裝了 gnuplot 卻發現 無法正常輸出到 aquaterm
輸出到 X11 是正常的,很奇怪。
gnuplot 安裝過程(aquaterm 會自動安裝):

$ sudo port install gnuplot

後來,發現一個奇怪的現象與解法,
aquaterm 似乎是安裝在 /Applications/MacPorts/AquaTerm.app 的路徑下
似乎與一般 Mac Port 的安裝路徑不同,一般都是在 /opt/local 下
奇怪的解法:只要先手動執行過 aquaterm 之後,就正常了:

$ /Applications/MacPorts/AquaTerm.app/Contents/MacOS/AquaTerm

2011年5月6日 星期五

OpenSuSE 11.4 Smaba 不會動?

升級到 OpenSuSE 11.4 之後,Samba 就不通了,
goolge 一下之後,發現是 Novell AppArmor 與 Samba 不合,
Samba 被 AppArmor 給檔了,
最後把 AppArmor 關掉,並重起 Samba 之後就OK了。

2011年4月28日 星期四

Simulate Armber on Mac OS

The Amber processor core is an ARM-compatible 32-bit RISC processor. The Amber core is fully compatible with the ARM® v2a instruction set architecture (ISA) and is therefore supported by the GNU toolset.
I would like to try run on my Mac Mini, so, I install Armber, tools and do some modification...

1. Download the Amber project from the Opencores Subversion server

$ mkdir ~/AmberInstallPath
$ cd ~/AmberInstallPath
$ svn --username YOUR_NAME -password PASSWORD co http://opencores.org/ocsvn/amber/amber/trunk

2. Install the GNU cross compiler

$ sudo port install arm-none-linux-gnueabi-gcc
$ sudo port install gawk
$ cd /opt/local/bin
$ sudo ln -s gawk awk
$ sudo ln -s arm-none-linux-gnueabi-gcc-2005q3 arm-none-linux-gnueabi-gcc

3. Install Icarus Verilog Simulator

$ sudo port install iverilog

4. Edit ~/.profile and add the following

$ export AMBER_BASE=~/AmberInstallPath/trunk
$ export AMBER_CROSSTOOL=arm-none-linux-gnueabi

5. Make scripts executable and create a run link

$ cd $AMBER_BASE
$ chmod +x hw/tools/*.sh sw/tools/*.sh
$ ln -s ../tools/run.sh hw/sim/run


6. Create $AMBER_BASE/hw/tools/runIV.patch by following

--- run.sh 2011-04-29 08:47:23.000000000 +0800
+++ runIV.sh 2011-04-29 09:14:21.000000000 +0800
@@ -46,12 +46,9 @@
AMBER_LOAD_MAIN_MEM=" "
AMBER_TIMEOUT=0
AMBER_LOG_FILE="tests.log"
-SET_G=0
SET_M=0
SET_D=0
SET_T=0
-SET_S=0
-SET_V=0
SET_A=0
SET_5=0

@@ -59,14 +56,11 @@ SET_5=0
# show program usage
show_usage() {
echo "Usage:"
- echo "run [-a] [-g] [-d] [-t] [-s] [-v]"
+ echo "run [-a] [-d] [-t]"
echo " -h : Help"
echo " -a : Run hardware tests (all tests in \$AMBER_BASE/hw/tests)"
- echo " -g : Use Modelsim GUI"
echo " -d : Create vcd file"
echo " -t : Create vcd file and terminate"
- echo " -s : Use Xilinx Spatran6 Libraries (slower sim)"
- echo " -v : Use Xilinx Virtex6 Libraries (slower sim)"
echo " -5 : Use Amber25 core instead of Amber23 core"
echo ""
exit
@@ -103,14 +97,8 @@ do
case $1 in
-a) SET_A=1 # all tests
shift ;;
- -s) SET_S=1 # Xilinx libs
- shift ;;
- -v) SET_V=1 # Xilinx libs
- shift ;;
-5) SET_5=1 # Xilinx libs
shift ;;
- -g) SET_G=1 # Bring up GUI
- shift ;;
-d) SET_D=1
DUMP_START=$2
shift 2;;
@@ -135,24 +123,7 @@ done
# Set comfiguration based on command-line options
#--------------------------------------------------------

-if [ $SET_G == 1 ]; then
- RUN_OPTIONS="-do cmd.do"
-else
- RUN_OPTIONS="${RUN_OPTIONS} -c -do run.do"
-fi
-
-if [ $SET_S == 1 ]; then
- FPGA="+define+XILINX_SPARTAN6_FPGA +define+XILINX_FPGA"
- RUN_OPTIONS="${RUN_OPTIONS} -t ps +notimingchecks -L unisims_ver -L secureip"
-else
- if [ $SET_V == 1 ]; then
- FPGA="+define+XILINX_VIRTEX6_FPGA +define+XILINX_FPGA"
- RUN_OPTIONS="${RUN_OPTIONS} -t ps +notimingchecks"
- else
- FPGA=" "
- fi
-fi
-
+RUN_OPTIONS="-f iverilog.f"

if [ $SET_D == 1 ]; then
AMBER_DUMP_VCD="+define+AMBER_DUMP_VCD +define+AMBER_DUMP_START=$DUMP_START"
@@ -173,13 +144,8 @@ else
fi

if [ $SET_A == 1 ]; then
- if [ $SET_S == 1 ]; then
- TECH="-s"
- elif [ $SET_V == 1 ]; then
- TECH="-v"
- else
- TECH=" "
- fi
+
+ TECH=" "

if [ $SET_5 == 1 ]; then
CORE="-5"
@@ -273,54 +239,42 @@ fi


#--------------------------------------------------------
-# Modelsim
+# iVerilog
#--------------------------------------------------------
-if [ $MAKE_STATUS == 0 ]; then
- if [ ! -d work ]; then
- vlib work
- fi
-
- if [ $? == 0 ]; then
- vlog +libext+.v \
- +incdir+../vlog/amber23+../vlog/amber25+../vlog/system+../vlog/tb+../vlog/ethmac \
- +incdir+../vlog/lib+../vlog/xs6_ddr3+../vlog/xv6_ddr3 \
- -y ../vlog/amber23 -y ../vlog/amber25 -y ../vlog/system -y ../vlog/tb -y ../vlog/ethmac \
- -y ../vlog/lib -y ../vlog/xs6_ddr3 -y ../vlog/xv6_ddr3 \
- -y $XILINX/verilog/src/unisims \
- -y $XILINX/verilog/src \
- ../vlog/tb/tb.v \
- $XILINX/verilog/src/glbl.v \
- +define+BOOT_MEM_FILE=\"$BOOT_MEM_FILE\" \
- +define+BOOT_MEM_PARAMS_FILE=\"$BOOT_MEM_PARAMS_FILE\" \
- +define+MAIN_MEM_FILE=\"$MAIN_MEM_FILE\" \
- +define+AMBER_LOG_FILE=\"$AMBER_LOG_FILE\" \
- +define+AMBER_TEST_NAME=\"$AMBER_TEST_NAME\" \
- +define+AMBER_SIM_CTRL=$TEST_TYPE \
- +define+AMBER_TIMEOUT=$AMBER_TIMEOUT \
- ${FPGA} \
- $AMBER_CORE \
- $AMBER_DUMP_VCD \
- $AMBER_TERMINATE \
- $AMBER_LOAD_MAIN_MEM
-
- if [ $? == 0 ]; then
- vsim -voptargs="+acc=rnpc" tb ${RUN_OPTIONS}
-
- # Set a timeout value for the test if it passed
- if [ $TEST_TYPE == 1 ]; then
- tail -1 /dev/null
- if [ $? == 0 ]; then
- TICKS=`tail -1 > $AMBER_LOG_FILE
-fi
+ echo "+libext+.v" > iverilog.f
+ echo "+incdir+../vlog/amber23" >> iverilog.f
+ echo "+incdir+../vlog/amber25" >> iverilog.f
+ echo "+incdir+../vlog/system" >> iverilog.f
+ echo "+incdir+../vlog/tb" >> iverilog.f
+ echo "+incdir+../vlog/ethmac" >> iverilog.f
+ echo "+incdir+../vlog/lib" >> iverilog.f
+ echo "+incdir+../vlog/xs6_ddr3" >> iverilog.f
+ echo "+incdir+../vlog/xv6_ddr3" >> iverilog.f
+ echo "-y../vlog/amber23" >> iverilog.f
+ echo "-y../vlog/amber25" >> iverilog.f
+ echo "-y../vlog/system" >> iverilog.f
+ echo "-y../vlog/tb" >> iverilog.f
+ echo "-y../vlog/ethmac" >> iverilog.f
+ echo "-y../vlog/lib" >> iverilog.f
+ echo "-y../vlog/xs6_ddr3" >> iverilog.f
+ echo "-y../vlog/xv6_ddr" >> iverilog.f
+ echo "+define+BOOT_MEM_FILE=\"$BOOT_MEM_FILE\"" >> iverilog.f
+ echo "+define+BOOT_MEM_PARAMS_FILE=\"$BOOT_MEM_PARAMS_FILE\"" >> iverilog.f
+ echo "+define+MAIN_MEM_FILE=\"$MAIN_MEM_FILE\"" >> iverilog.f
+ echo "+define+AMBER_LOG_FILE=\"$AMBER_LOG_FILE\"" >> iverilog.f
+ echo "+define+AMBER_TEST_NAME=\"$AMBER_TEST_NAME\"" >> iverilog.f
+ echo "+define+AMBER_SIM_CTRL=$TEST_TYPE" >> iverilog.f
+ echo "+define+AMBER_TIMEOUT=$AMBER_TIMEOUT" >> iverilog.f
+ echo "$AMBER_CORE" >> iverilog.f
+ echo "$AMBER_DUMP_VCD" >> iverilog.f
+ echo "$AMBER_TERMINATE" >> iverilog.f
+ echo "$AMBER_LOAD_MAIN_MEM" >> iverilog.f
+ echo "../vlog/tb/tb.v" >> iverilog.f
+
+ rm -rf ./armber
+ iverilog -f iverilog.f -o armber
+ ./armber



7. Create runIV script for iverilog simulator

$ cd $AMBER_BASE/hw/tools
$ patch -o runIV.sh -i runIV.patch
$ chmod +x runIV.sh
$ cd $AMBER_BASE/hw/sim
$ ln -s ../tools/runIV.sh runIV

8. If you see the iverilog compile error message for log2 function in next step, you could replace log2 by $clog2 to solve the problem.

9. Run a Hello-World Test with Amber 25

$ cd $AMBER_BASE/hw/sim
$ runIV -5 hello-world

10. Hello-World simulation Result

Amber Boot Loader v20110202130047
Hello, World!

----------------------------------------------------------------------------
Amber Core
> User FIRQ IRQ SVC
r0 0x00000010
r1 0x16000000
r2 0x00000000
r3 0x00000000
r4 0x0c80e403
r5 0x00000000
r6 0x00000000
r7 0x00000000
r8 0xdeadbeef 0xdeadbeef
r9 0xdeadbeef 0xdeadbeef
r10 0x00000011 0xdeadbeef
r11 0xf0000000 0xdeadbeef
r12 0x00000000 0xdeadbeef
r13 0x08000000 0xdeadbeef 0xdeadbeef 0x01ffffb8
r14 (lr) 0x0080e420 0xdeadbeef 0xdeadbeef 0x20000787
r15 (pc) 0x0080e960

Status Bits: N=0, Z=1, C=1, V=0, IRQ Mask 0, FIRQ Mask 0, Mode = User
----------------------------------------------------------------------------

++++++++++++++++++++
Passed hello-world 29320 ticks
++++++++++++++++++++

2011年4月25日 星期一

MacPort selfupdate fail ?

剛才突然發現,做 MacPort 的 selfupdate 時會失敗,
上次做還 OK 啊..?

$sudo port -f selfupdate
Warning: No index(es) found! Have you synced your source indexes?
---> Updating the ports tree
Error: Synchronization of the local ports tree failed doing rsync
Error: /opt/local/bin/port: port selfupdate failed: Couldn't sync the ports tree: Synchronization of 1 source(s) failed

測試一下公司網路:

$ telnet rsync.macports.org 873
Trying 17.254.20.244...

嗯,Port 873 出不去!
沒想到,公司 MIS 連 rsync 的 port 也給封了!真是麻煩,
費了一番功夫後,
終於可以做 selfupdate 了:

$ sudo port selfupdate
Warning: No index(es) found! Have you synced your source indexes?
---> Updating the ports tree
---> Updating MacPorts base sources using rsync
MacPorts base version 1.9.2 installed,
MacPorts base version 1.9.2 downloaded.
---> MacPorts base is already the latest version

The ports tree has been updated. To upgrade your installed ports, you should run
port upgrade outdated

2011年4月17日 星期日

奇怪的問題,無法理解!?

家裡有三台 Mac,分別是 Mac Mini, iMac and Macbook
但 Mac Mini 最近發生了一件怪事:

用 iTunes 在看朋友分享的『棋靈王』卡通時,
突然發現『只有影像卻沒有聲音』的現象,
可是以前看過啊,沒問題啊....
且看其他影片卻是正常,
反覆實驗,確認只有『棋靈王』系列影片(全集)有問題,
其他的影片完全正常!

難道是,檔案故障?
立刻將檔案複製到其他電腦 iMac and Macbook
結果一切正常:檔案沒壞!

在 Mac Mini 反覆做了一些實驗:
1. Safari 看 Youtube,影像聲音正常。
2. 用 Quicktime 看影片, 影像聲音正常。
3. 用 iTunes 看其他影片,影像聲音正常。
4. 用 iTunes 看『棋靈王』,只有影像,沒有聲音。
5. iTunes 砍掉重裝,沒用!
6. 用 QuickTime 看『棋靈王』,一樣,只有影像,沒有聲音。
7. 用 VLC 看『棋靈王』,一樣,只有影像,沒有聲音。
8. 用 MPlayer 看『棋靈王』,一樣,只有影像,沒有聲音。
9. 磁碟工具程式->修復權限,沒用!

難掉是 Mac OS 系統內部 某個 Audio Codec 掛了,
而這 Audio Codec 恰巧只有『棋靈王』用到?
這麼巧?
在 Google 不到有用的資訊下,
只好使出絕招:OS重灌!

一個半小時後...
暈倒!完全沒用,結果一樣!
WHY?WHY?WHY?WHY?

難道我的 Mac Mini 被 佐為 附身了?

就當我看著無聲影片,絕望沮喪之時,
手一不小心碰到外接喇叭的音源線,
突然,聲音出現了!!!
好像是,音源線接頭 與 MacMini 的耳機插孔 接觸不良,
碰一下 OK,再碰一下 聲音又會消失

不對!
要真是真是『音源線接頭 與 MacMini 的耳機插孔 接觸不良』
怎會只有『棋靈王』會有問題,其他的都OK
奇怪,不合理啊.....

將『音源線接頭』拔下,用橡皮擦,用力的擦一擦,
再裝回去後,『棋靈王』影音 就 穩定正常了。

嗯,很怪,得好好研究研究了.....

2011年4月14日 星期四

衝破封鎖線

由於公司將 MSN 給封鎖了,所以決定要自行突圍

Step.1 Download Tor for Mac OS Vidalia

    將 Vidalia 拖到 Application目錄後執行,到 控制面板 去 "啟動 Tor"
    這時 Vidalia 的狀態 會顯示:『已連線到 Tor 網路!』



Step. 2 Test Tor

    到 系統偏好設定-網路-進階-代理伺服器
    設定 HTTP and HTTPS Proxy = localhost:8188

    接著,用 Safari 訪問 Are you using Tor?
    看到

    就知道 Tor 網路使已經建立...

    若看到

    就知道 Tor 連線有問題,要先解決 Tor 的問題。
    測試完成後,記得將系統的 HTTP Proxy 改回來。


Step. 3 MSN Proxy Setting

    到 Messenger-Preference-Account 設定 Socks Proxy = localhost:9050

    這樣就可衝破封鎖線了!


PS1. 不知為何 Messenger Proxy Type 選 HTTP 的話,是衝不出去的,可能公司防火牆比較厲害。
PS2. Vidalia 控制面板 的 語系要到 Vidalia-Preference-外觀-語系 去變更, 可是卻是要選擇『簡體字』才會出現 繁體中文,這應該是打錯字了。

2011年3月20日 星期日

在 Mac OS 10.6 下安裝 SID Simulator

寫了一個 Makefile 來編譯並安裝 SID Simulator 在 Mac OS 10.6
[sourcecode language="php"]
#
# Build and Install SID
#

TAR_FILE = $(CURDIR)/sid-20110301.tar.bz2
BUILD_DIR = $(CURDIR)/SID_BUILD
SRC_DIR = $(CURDIR)/SID_SRC
INSTALL_DIR = $(CURDIR)/SID_INSTALL

info:
@echo "Current DIR is $(CURDIR)"
@echo "make extract ; Extraction Compressed File"
@echo "make config ; Build Makefile"
@echo "make compile ; Compile Source Code"
@echo "make installe ; Install SID"

all: extract config compile install

extract: $(SRC_DIR)
(cd $(SRC_DIR); tar -jxvf $(TAR_FILE))

config: $(BUILD_DIR) $(INSTRALL_DIR)
(cd $(BUILD_DIR); $(SRC_DIR)/src/configure --prefix=$(INSTALL_DIR) LDFLAGS=-L/usr/X11/lib)

compile: $(BUILD_DIR)
(cd $(BUILD_DIR); make)

install: $(BUILD_DIR) $(INSTALL_DIR)
(cd $(BUILD_DIR); make install)

$(SRC_DIR):
@echo [INFO] Create $@
mkdir $@

$(BUILD_DIR):
@echo [INFO] Create $@
mkdir $@

$(INSTALL_DIR):
@echo [INFO] Create $@
mkdir $@

clean:
rm -rf $(SRC_DIR)
rm -rf $(BUILD_DIR)
[/sourcecode]

2011年3月19日 星期六

使用 Mac OS TimeMachine 來轉移系統 的注意事項

最近因為 Macbook 的 350GB HDD 容量已滿
所以買了 750GB 的新 HDD 來換
這次 因為 手邊剛好沒有 2.5inch HDD USB 外接盒
所以沒辦法直接用『復原』來做系統移轉
所以這次改用 TimeMachine 的備份來轉移資料

Step.1 換上 new 750GB new HDD
Step.2 Install Snow Leopard on new HDD
Step.3 Transfer User Data, System Setting and Application from Time Machine Backup.

雖然轉移過程一次順利,User Data 似乎也都順利轉移
但是,有一些問題:

1. 原系統有安裝 SVN+http Server,但 TimeMachine 似乎未將相關設定一併復原。
2. 原來放在 /User/SVN-ROOT 的 svn repository 也沒轉移到 new HDD。

解決方法:

1. SVN+http Server 的相關設定 似乎沒有備份在 Time Machine,所以只好自已重新建立。
2. SVN Repository 雖然有備份在 Time Machine 可是卻沒有自動復原,可能是我放在 /User 目錄下的關係,所以只好手動回復。

未來,換HDD時,還是使用 磁碟工具中的『復原』,比較沒問題。

2011年1月11日 星期二

影片字幕檔的編碼

在觀看友人分享的影片時,
最常遇到的麻煩事:『字幕都是亂碼!』
原因十之八九都是編碼問題,
由於友人大都是 Windows 環境,
所以文字檔大都沿用 BIG5 編碼,
可是 BIG5 在 Mac OS 下卻是行不通的,
一個簡單指令可以迅速完成編碼轉換:

$ iconv -f BIG5-2003 -t UTF-8 BIG5.srt > UTF8.srt