5.30.2009

memo 一下:

姊的NB : Aspire 1621LC 的 display card 其實是 ATi Redan Mobile 5700.
付的CD (和 Acer website )提供的Driver 是 5600,還有"他自己也認為自己是 5600,
所以裝完會有'?' 號,要去download Ati 5700 的 driver,強制安裝。
才會OK.

備份在爸的PC. (和 gmail ?)

5.26.2009

Build - for WINCE5.0

所以如果是 follow MS 的 folder architecture :
  • CSP : 放在 PUBLIC\COMMON\OAK\CSP
  • PQOAL : 放在 PLATFORM\COMMON\SRC
  • BSP : 放在 PLATFORM\
分別有不同的 build 法:
  • CSP : 到 folder 去 build (with clean)
  • PQOAL : sysgen (with clean)
  • BSP : Build and sysgen current BSP

Worklog : iMX31 Demoboard, buid WINCE5.0

iMX31 3 STACK Debug board:
  • Nand : K9F2G08R0A - 256MB
  • DDR 128MB
Boot From Nand 的 Dip SW 設定:
  • SW5 : 0
  • SW6: 1
  • SW7: 0
  • SW8: 0
  • SW9: 0
  • SW10: 0

Demoboard 使用 iMX31 和 MC13783 (PMIC with Audio AMP)。
MC13783 的 size 幾乎和 iMX31 一樣大


CSP 放在 C:\WINCE500\PUBLIC\COMMON\OAK\CSP\FREESCALE
  • MX31 : MX31 相關
  • MXARM11 : 所有MX 系列中 arm11 相關
CE 的 PQOAL 架構,又把一些 oal 放在其他地方 C:\WINCE500\PLATFORM\COMMON\SRC\ARM\FREESCALE\


依照順序來..

Build CSP:

因為 CSP 不會 auto build (是因為在 public 的關係 ?),所以要手動 build。
到 file,favorite,CSP 按右鍵,check "clean before build" then do "build current project"
大概就是到 public\common\oak\csp\freescale 下面作 build -c
build 好的 lib 會在 C:\WINCE500\PUBLIC\COMMON\OAK\LIB\ARMV4I\DEBUG


接下來 build BSP (for the 1st time)
build OS menu :
  • clean before building : X
  • Copy Files to Release Directory After build : V
  • Make Run-Time Image After Build : V
然後就按下 "Sysgen"

要 Clean build 整個 BSP (CSP, PQOAL, BSP) 的話:
  • build CSP - follow 前面的步驟,按右鍵...
  • build PQOAL
    • Clean Before Building : V
    • Copy Files to Release Directory : V
    • Make Image After Build : X
    • 執行 Build OS - sysgen
  • build BSP
    • Clean Before Building : V
    • Copy Files to Release Directory : V
    • Make Image After Build : V
    • 執行 Build OS - Build and sysgen current BSP

如果只有某部份的 code 修改,可以只build 那部份的 code,然後 執行 Build and sysgen current BSP

到 Files :
  • CSP 有修改 : 到修改的 folder 按右鍵- check "Clean before Build" 然後 "Build and sysgen current BSP"
  • PQOAL : 一樣,到 PQOAL folre 按右鍵
然後:
  • Clean before Build : X
  • Copy Files to Release Directory After Build : V
  • Make Run time image after Build : V
  • 執行 : Build and Sysgen Current BSP

5.20.2009

CE Dialup to GPRS

首先要有PPP, Network and Dial-up Connections.

registry 要設定好系統存在的Modem。

現在系統是COM6 外接到 GPRS Modem,所以要自己建
奇怪,找不到 Hayes Modem 的 registry creater,在 platform.reg 里也沒有。

在registry中要設好一個使用COM6的Modem,Dial Up 設定才可以對COM6送command。

接上 GPRS Modem,先用 TXRX 程式測試一下GPRS Modem 對AT Command 是否OK。
ref Linux GPRS
  • AT+CGATT? 確認attach 到 network 後 (回 +CGATT:1 )
  • 先下好 AT+CDGCONT=1,"IP","INTERNET"
設定 dial ip network :
  • new 一個連線
  • 設定 baudrate 115200, 8N1, no flowcontrol.
  • 設定撥號 *99***1#
OK,可以connect!

連線完後,用 CE_Ping.exe 測試一下ping.

5.13.2009

openmoko - flash kernel and rootfs

安裝 usb 連線軟體: dfu-util。
Debian 直接用 apt 安裝就可以。

通常需要
  1. kernel - uImage
  2. rootfs
bootloader 不一定要重燒

rootfs 通常是有 jffs2 在檔名中,kernel 通常就有 uImage 在檔名中。

開機進入 nor boot (nand boot) ? 就可以接上 usb ,和 dfu-util 溝通。

按著hold key 開機,進入nor boot 畫面,插上 usb。dmesg..

[786627.436013] usb 2-3: new full speed USB device using ohci_hcd and address 2
[786627.654996] usb 2-3: configuration #1 chosen from 2 choices
[786627.677190] usb 2-3: New USB device found, idVendor=1d50, idProduct=5119
[786627.677198] usb 2-3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[786627.677202] usb 2-3: Product: Neo1973 Bootloader U-Boot 1.3.2-moko12
[786627.677205] usb 2-3: Manufacturer: OpenMoko, Inc
[786627.677207] usb 2-3: SerialNumber: 0000000
[786628.281641] cdc_acm: This device cannot do calls on its own. It is no modem.
[786628.281641] cdc_acm 2-3:1.0: ttyACM0: USB ACM device
[786628.288104] usbcore: registered new interface driver cdc_acm
[786628.288112] cdc_acm: v0.26:USB Abstract Control Model driver for USB modems and ISDN adapters
所以應該是有偵測到...

燒錄過程要注意的是...沒有操作30 sec 後,機器會自動 power off。
所以看到螢幕黑掉,就要重新 power on.

rootfs download 比較久。

重開機很花時間,約需要 2 min,約 1min 後才會出現splash screen.然後滅掉..

openmoko new freerunner - boot into nand and nor

Tony新買的Neo Freerunner 換OS後無法開機,停在 openmoko boot screen。
所以可以讓我玩一下..

先follow instruction,檢查一下nor boot 可不可以boot:
  1. .按左上角hold button不放
  2. 按右下角power button開機button不放,, 開機
  3. 放掉左上角hold button
  4. 放到右下角power button
這樣就開進 nor boot。可以看到 lcd 顯示 nor boot version 和 menu。


接著檢查 nand boot 可不可以 boot:
  1. 按著右下角 power button 不放
  2. 馬上按左上角 hold button,維持 5~8 sec,,開機
  3. 都可以放開了
這樣就開進 nand boot,可以看到 lcd 顯示 nand 和 menu

5.08.2009

open port in iptables

用iptables -L 列出目前所有的 rule:

[charles@test ~]$ sudo iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- 6X-7X-2XX-2XX.adsl.static.giga.net.tw anywhere
ACCEPT all -- 6X-2XX-1XX-1XX.hinet-ip.hinet.net anywhere
ACCEPT all -- 1XX.5X.4X.X anywhere
ACCEPT tcp -- anywhere anywhere tcp dpt:http
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
DROP all -- anywhere anywhere state INVALID,NEW
DROP all -- anywhere anywhere

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

Chain icmpfilter (0 references)
target prot opt source destination
DROP icmp -- anywhere anywhere icmp echo-request
ACCEPT icmp -- anywhere anywhere icmp echo-reply
ACCEPT icmp -- anywhere anywhere icmp destination-unreachable
ACCEPT icmp -- anywhere anywhere icmp fragmentation-needed
ACCEPT icmp -- anywhere anywhere icmp source-quench
ACCEPT icmp -- anywhere anywhere icmp time-exceeded
ACCEPT icmp -- anywhere anywhere icmp parameter-problem
ACCEPT icmp -- anywhere anywhere icmp timestamp-reply
ACCEPT icmp -- anywhere anywhere icmp type 16
ACCEPT icmp -- anywhere anywhere icmp address-mask-reply
[charles@test ~]$

現在要把 tcp port 2030 打開,下:

iptables -A INPUT -p tcp --dport 2030 -j ACCEPT
這樣的話,還是沒效,因為rule被 "append" 到後面。
再list一次:

Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- 6X-7X-2XX-2XX.adsl.static.giga.net.tw anywhere
ACCEPT all -- 6X-2XX-1XX-1XX.hinet-ip.hinet.net anywhere
ACCEPT all -- 1XX.5X.4X.X anywhere
ACCEPT tcp -- anywhere anywhere tcp dpt:http
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
DROP all -- anywhere anywhere state INVALID,NEW
DROP all -- anywhere anywhere
ACCEPT tcp -- anywhere anywhere tcp dpt:device2
可以看到,是在 DROP all 之後。所以沒效。
要用 "insert" 才有效:

$ sudo iptables -I INPUT 6 -p TCP --dport 2030 -j ACCEPT

這樣,list出來:

Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- 6X-7X-2XX-2XX.adsl.static.giga.net.tw anywhere
ACCEPT all -- 6X-2XX-1XX-1XX.hinet-ip.hinet.net anywhere
ACCEPT all -- 1XX.5X.4X.X anywhere
ACCEPT tcp -- anywhere anywhere tcp dpt:http
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT tcp -- anywhere anywhere tcp dpt:device2
DROP all -- anywhere anywhere state INVALID,NEW
DROP all -- anywhere anywhere
可以看到,被插到DROP之前了 (實際上是第6個)。

這樣就打開port 2030 了

5.06.2009

centos log

CentOS 裝完

visudo 把自己加入 ALL(ALL)=ALL

改 .bashrc 把 /sbin 加到 PATH。
用ifconfig 看網路

設定 proxy - 用 UI

設定 yum 使用 proxy:
設定檔是 /etc/yum.conf
加一行:
 proxy=http:\\ip:port
然後 run yum update (要有 root 權限)...等等等..

run 在 virtualbox 的話,follow 這一篇 ( http://forums.virtualbox.org/viewtopic.php?t=4960&highlight=install+guest+addition) 安裝VBoxAddition。

Debian 的 Service 用 /etc/init.d/xxx start| stop
CentOS 提供一個 command 叫 service: service httpd restart

django 可以配合python 2.3~2.6的版本,python 2.5 以後的版本內涵SQLit,可以不必額外在裝database。

5.05.2009

CE: Disk cluster size for FAT

FAT的 資料存取單位是 cluster,cluster 是由 sector (disk 最小存取單位) 組成的。

Disk 在 format 的時候,決定 cluster 的大小。

Cluster size 的決定,CE 有自己的作法。在 msdn 有提到:
1GB-8GB  4KB
8GB-16GB 8KB
16GB-32GB 16KB
32GB 32KB
在 CE 的 source code 中,這段算法的位置在 fatutil.dll
C:\WINCE500\PUBLIC\COMMON\OAK\DRIVERS\FSD\FATUTIL\MAIN\formatdisk.h:
FAT12,16,32 各有不同,FAT32 是:
total sector 數,cluster 應該用的 sector 數:
{
{ 66600, 0}, /* disks up to 32.5 MB, the 0 value for SecPerClusVal trips an error */
{ 532480, 1}, /* disks up to 260 MB, .5k cluster */
{ 16777216, 8}, /* disks up to 8 GB, 4k cluster */
{ 33554432, 16}, /* disks up to 16 GB, 8k cluster */
{ 67108864, 32}, /* disks up to 32 GB, 16k cluster */
{ 0xFFFFFFFF, 64} /* disks greater than 32GB, 32k cluster */
};