發表文章

目前顯示的是 2013的文章

特殊MAC地址---官方保留

IEEE Std 802.1D and IEEE Std 802.1Q Reserved Addresses Group MAC address value Organization
using the value
Standard using the value Notes 01-80-C2-00-00-00 IEEE 802 IEEE Std 802.1D
IEEE Std 802.1Q IEEE Std 802.1D Bridge Group Address 01-80-C2-00-00-01 IEEE 802 " IEEE MAC-specific control protocols 01-80-C2-00-00-02 IEEE 802 " IEEE Std 802.3 Slow Protocols multicast address 01-80-C2-00-00-03 IEEE 802 " IEEE Std 802.1X PAE address 01-80-C2-00-00-04 IEEE 802 " IEEE MAC-specific control protocols 01-80-C2-00-00-05 IEEE 802 " Reserved for media access method specific use 01-80-C2-00-00-06 IEEE 802 " Reserved for future standardization 01-80-C2-00-00-07 IEEE 802 " Reserved for future standardization 01-80-C2-00-00-08 IEEE 802 " Provider Bridge group address 01-80-C2-00-00-09 IEEE 802 " Reserved for future standardization 01-80-C2-00-00-0A IEEE 802 " Reserved for future standardization 01-80-C2-00-00-0B IEEE 802 " Reserved for future standard…

Raspberri-Pi Debian Tuning

Speedup CPU:
we can easily modify the cpu work frequency modifying the config.txt file. Just edit /boot/config.txt
arm_freq=900
i always use this hack and my rpi run without problem
Change scheduler/elevator at boot time:
we use more responsive/less disk io usage scheduler:
modify the /boot/cmdline.txt 
dwc_otg.lpm_enable=0 root=/dev/mmcblk0p2 rootfstype=ext4 rootflags=commit=120,data=writeback elevator=deadline rootwait quiet
Tuning sysctl.conf:
as manual say, sysctl.conf is the “Configuration file for setting system variables”... well there are lot of variables you can put inside this file and for everyone we can write a book.
Our goal is to gain more speed and tell our system to use less io/ram. Let’s put in the /etc/sysctl.conf:
vm.dirty_background_ratio = 20
vm.dirty_expire_centisecs = 0
vm.dirty_ratio = 80
vm.dirty_writeback_centisecs = 1200
vm.overcommit_ratio = 2
vm.laptop_mode = 5
vm.swappiness = 10
Removing unused services:
Removing services is a must to do for every system or computer, i have…

libiconv: 字元集碼編轉換

from:http://www.jollen.org/blog/2006/09/libiconv_1.html

實作 Linux 系統程式時,常需要做「Unicode 與 Big5」間的字元編碼轉換;嵌入式 Linux 的應用也經常會遇到這樣的需求,例如我們原則上會將文件存成 Unicode,當程式執行時,再決定要輸出成 Unicode 或 Big5 (or GBxxxx),這時就要使用到 GNU 的 libiconv 專案。
GNU libiconv 用來做字元間的編碼轉換,已經廣泛被使用在 GNU/Linux 系統中,例如 PHP 的 iconv 系統即是使用 GNU libiconv。libiconv 要移植到 ARM9 平臺上也是非常容易的。GNU libiconv 的官方首頁是:http://www.gnu.org/software/libiconv/ 把 libiconv 套件解開並編譯後,可以在 src/ 目錄下找到 iconv 執行檔,這是 libiconv 為我們寫好的一個字元轉碼 (conversion) 工具,這個工具相當的實用,比如以 jollen 的網站來說,jollen.org 的網頁是以 unicode 儲存,但是我們發佈的頁面是以 big5 編碼為主,我們所使用的轉換工具便是 iconv。 iconv 的使用可以參考 http://www.gnu.org/software/libiconv/documentation/libiconv/iconv.1.html,我們舉一個例子來說明,比如我想把 big5.txt 文件 (Big5 encode) 轉換成 Unicode (UTF-8),那麼只要執行: $ iconv -f BIG5 -t UTF-8 big5.txt 就可以了,參數 -f 指定來源編碼,參數 -t 指定目的編碼,編碼後的字串會輸出到 stdout。字元集 BIG5 也可以寫成 BIG-5,或是 BIG-FIVE,或是 BIGFIVE;要怎麼知道 iconv 可以處理 (接受) 哪些字元集 (character set ),只要執行 'iconv -l' 就可以查詢了,輸出結果會是一大票的字元集列表。 這是使用 iconv 工具的方式,假如要自己寫程式的話也是非常簡單的,因為 libiconv 裡頭只有 …

關於 gettext

TCP offload engine (TOE)

圖片
from:http://www.kernelchina.org/node/611
延伸閱讀:Competitive Comparison Intel® I/O Acceleration Technology vs. TCP Offload Engine

TCP減壓引擎,第一次聽說這個名詞,但是並不是一個新的概念了,若干年前聽說過設備廠商在研究在FPGA之中實現TCP Stack,但是後來沒有聽到任何的產品出來,應該是路由設備to host的traffic不多,而對於FW設備,中間的TCP Proxy實現過於復雜,工程上不可能實現。 現在的所謂TOE實現我理解主要用於host的interface之中,用於為Gbits以及10Gbits接口場景中為CPU減壓,例如部署在數據中心內部的服務器,CPU雖然越來越快,但是對於洶湧澎湃的Traffic來說,還是有些力不從心。 上面是TOE應用前後協議棧的差別,我覺得畫的有點絕對,TCP Stack不太可能完全實現在interface之中,其實TOE主要實現如下的offload: 1.TCP/IP Checksum offload CPU可以不用計算checksum而由網卡計算 2.CPU不用考慮數據的分段了,估計是直接將socket送過來的buf交給網卡。 如果是僅僅實現上述功能TOE是很可能工程化實現的。 在另一篇文檔中提到了TOE的一些優勢,但是我的分析,這個可能是要實現TOP替代整個TCP之後的優勢。 1.減少中斷:不用每個報文都產生中斷,如果10G接口這個對於CPU是很大的開銷。 2.減少memory拷貝次數,很多時候網卡的buffer和app的可以直接共享。 3.協議處理的節約,這個是當然的了。
http://en.wikipedia.org/wiki/TCP_offload_engine


Understanding UUID

圖片
通用唯一識別碼 (Universally Unique IDentifier, UUID) 或是全域唯一識別碼 (Globally Unique IDentifier, GUID) 是一個 128 bits 的整數,並保證其在時間與空間的分佈都是獨一無二的。UUID 由開放軟體基金會 (OSF) 標準化後用在他們的 DCE 系統上,後來在微軟的 COM 系統上發揚光大。除此之外在許多地方也都可以看到 UUID 的身影,如 Linux 上的分割表/區塊裝置就是以 UUID 來標示,或是 RSS 的  標籤也可以使用 UUID,實際上 UUID 是標準的 URN 表示法之一,你可以在任何需要標示單一物件的地方使用 UUID。 UUID 的文字形式為一個 8-4-4-4-12 的十六進位表示,共有 16 個 bytes,有人說使用 UUID 不方便人類辨識,但了解 UUID 的組成後你還是可以從這個表示法看出一些端倪來。本文參考的是 IETF 版本的 RFC 4122。 UUID 共有四個版本,第 13 個字元的位置就是表示版本號。第一種是以時間和網路卡號組成,時間是以一百奈秒為單位,網路卡號理論上是不會重複的,再加上 clock_seq 這個每次開機重設一次的亂數欄位,就算時間回朔了也不會重複,代號是 1。第二種和第四種是以命名空間加上一個 hash 組成的,分別可以使用MD5 或是 SHA1 演算法,算出來後就填到空位中,代號是 3 跟 5。第三種是全亂數組成,代號是 4。 因此我們可以在不同的情境選用不同的 UUID,也可以從 UUID 看出版本跟時間等資訊,如4ef17586-f187-11df-8xxx-xxxxxxxxxxxx 看到第三個區塊是 11df 就可以知道是最近產生的以時間卡號為基礎的 UUID,時間 1dff1874ef17586 解出來就是 2010-11-16 13:42:09.173031.0 UTC。而 7c0fdbe4-1b09-4278-9fc9-5f0c6a1f2ae2 就是純亂數的 UUID,沒有任何意義。

from:http://kanru.info/blog/archives/2010/11/16/uuid-el/Ref:http://en.wikipedia.org/wiki/Universally_unique_ident…

LCP, Authentication, and NCP Stage

圖片
Within some of the PPP phases described previously, PPP also goes into specific stages such as LCP negotiation, authentication, and NCP negotiation. For more information, refer to RFC 1548 and RFC 1661. LCP (Mandatory Phase) LCP is a phase in which parameters to establish, configure, and test the data-link connection are negotiated. An LCP state of open means that LCP was successfully completed, while an LCP state of closed indicates an LCP failure. This diagram shows a conceptual view of an LCP handshake: The LCP negotiation also uses a parameter called MagicNumber, which is used to determine if the link is looped back. A random string is sent across the link and, if the same value is returned, then the router determines that the link is looped back. Authentication (Optional Phase by Default) In this stage, the authentication is performed with the authentication protocol (CHAP or PAP) agreed upon in LCP negotiation. For PAP related information, refer to Configuring and Troubleshooting…

ADSL Wiki

SED單行腳本快速參考 (USEFUL ONE-LINE SCRIPTS FOR SED)

在以下地址可找到本文檔的最新(英文)版本: http://sed.sourceforge.net/sed1line.txt http://www.pement.org/sed/sed1line.txt 文本間隔: -------- # 在每一行後面增加一空行 sed G # 將原來的所有空行刪除並在每一行後面增加一空行。 # 這樣在輸出的文本中每一行後面將有且只有一空行。 sed '/^$/d;G' # 在每一行後面增加兩行空行 sed 'G;G' # 將第一個腳本所產生的所有空行刪除(即刪除所有偶數行) sed 'n;d' # 在匹配式樣“regex”的行之前插入一空行 sed '/regex/{x;p;x;}' # 在匹配式樣“regex”的行之後插入一空行 sed '/regex/G' # 在匹配式樣“regex”的行之前和之後各插入一空行 sed '/regex/{x;p;x;G;}' 編號: -------- # 為文件中的每一行進行編號(簡單的左對齊方式)。這裡使用了“製表符” # (tab,見本文末尾關於'\t'的用法的描述)而不是空格來對齊邊緣。 sed = filename | sed 'N;s/\n/\t/' # 對文件中的所有行編號(行號在左,文字右端對齊)。 sed = filename | sed 'N; s/^/ /; s/ *\(.\{6,\}\)\n/\1 /' # 對文件中的所有行編號,但只顯示非空白行的行號。 sed '/./=' filename | sed '/./N; s/\n/ /' # 計算行數(模擬"wc -l") sed -n '$=' 文本轉換和替代: -------- # Unix環境:轉換DOS的新行符(CR/LF)為Unix格式。 sed 's/.$//' # 假設所有行以CR/LF結束 sed 's/^M$//' # 在bash/tcsh中,將按Ctrl-M改為按Ctrl-V …

VLAN: IVL vs SVL

圖片
網上有很多說到關於IVL和SVL的東西,但是對於一點基礎都沒有的人估計不能看得很明白。我這裡從Switch收到packet開始講兩種情況Switch的行為。 IVL(independent vlan learning): 是以每個vlan建一個表,看起來好像有很多表,其實這裡所說的表是指邏輯上的表,實際上在交換機中還是只有一個表,如果將VID相同的記錄都提取出來組成一個表,那麼就一個物理上的表在邏輯上就可以認為是多個表了。
在MAC表中以MAC+VID為主鍵進行儲存。這樣,同一個MAC就可能由於VID的不同而在MAC表中存在多條記錄。
1.根據MAC+VID在MAC表中尋找,找不到轉3
2.向找到的port轉發packet,OK.
3.向packet攜帶的vid對應的整個VLAN的port轉發.

SVL(shared valn learning):
在MAC表中以MAC為主進行儲存,也就是說同一個MAC在SVL模式下只能存在一個記錄在MAC表中。
1.在MAC中先根據MAC尋找相應的記錄,找不到轉4
2.記錄中的VID與packet中攜帶的VID一樣,得到相應的port;不一樣轉5
3.將packet轉發到相應的port,OK.
4.向packet攜帶的vid對應的整個VLAN的port轉發.
5.drop.


MAC表中主要的參數︰
MAC VID PORT

from:http://sangchiu.blogspot.tw/2008/07/ivl-vs-svl.html

--------------------------------------------------------------------------------------------------------------------------------

所謂「共享式虛擬網路學習模式」(Shared VLAN Learning, 簡稱SVL) 是指一個虛擬網路所學習到的MA位址可以給其他虛擬網路所使用。而所謂「獨立式虛擬網路學習模式」(Independent VLAN Learning, 簡稱IVL) 則是指一個虛擬網路所學習到的MAC位址不可以給其他虛擬網路所使用。 在大部份的情況下,橋接器採用SVL或IVL所得到的效果是相同的。但是在某些特殊的網路組態下,為了避免訊框轉送氾濫,我們必須對橋接器的學習模式加以規範。基本上有三種情…

Network Data Flow through the Linux Kernel

圖片

Network Troubleshooting Tools, IPv4 and IPv6

A summary of various troubleshooting commands for common client operating systems for both IPv4 and IPv6.
Apple OS X, *BSDPing for IPv4/sbin/pingPing for IPv6/sbin/ping6Traceroute for IPv4/usr/sbin/tracerouteTraceroute for IPv6/usr/sbin/traceroute6Interface Info/sbin/ifconfigIPv4 Route table/usr/sbin/netstat -f inet -rnIPv6 Route table/usr/sbin/netstat -f inet6 -rnIPv4 arp table/usr/sbin/arp -anIPv6 ndp table/usr/sbin/ndp -an Windows: Vista, 7, Server 2008 and higherPing for IPv4ping -4Ping for IPv6ping -6Traceroute for IPv4tracert -4Traceroute for IPv6tracert -6Interface Infoipconfig /allIPv4 Route tablenetsh interface ipv4 show routeIPv6 Route tablenetsh interface ipv6 show routeIPv4 arp tablearp -aIPv6 ndp tablenetsh interface ipv6 show neighbors LinuxPing for IPv4pingPing for IPv6ping6Traceroute for IPv4traceroute -4Traceroute for IPv6traceroute -6Interface Infoip address showIPv4 Route tablenetstat -A inet -rnIPv6 Route tablenetstat -A inet6 -rnIPv4 arp tablearp -anIPv6 ndp tabl…

在MAC OS上開啟su 最高權限設定

啟動root作法如下:

1.在$後鍵入sudo passwd root
按下

2.看到提示 Password:
輸入你個人的管理者密碼

3.接著看到
Changing password for root.
New password:
輸入root要使用的新密碼,然後在驗證一次

4.已經啟動root帳號了

往後只需輸入su再輸入password,就可登入root

T428 官方韌體更新 刷機教學說明

圖片
刷機工具 Flash tool: http://www.mediafire.com/download/b9ckxat6t4cw5qc/Rockchip_Batch_Tool_v1.6.rar RK3188 驅動程式 USB drivers: http://www.mediafire.com/download/yqxz3wnqi2hpmcm/Rockusb_v3.5.rar
最新版韌體 5/30 釋出
https://www.dropbox.com/s/bfhkjk8ift9c3ti/TRONSMART%20T428%20ANDROID%204.2%20STOCK%20ROM.rar 5/28 釋出 http://www.mediafire.com/download/9gsgaa6w89c2sbb/update_5.21.rar
1.首先先按住T428側邊的按鈕,

2.MicroUSB接上T428, USB接上PC

3.此時PC上會發現到新裝置後,裝上上面連結所提供的RK3188 USB驅動程式.


4.安裝驅動程式完畢後,打開下載回來刷機工具(flash tool),並選擇欲刷入之韌體檔案(update.img) 5.若有RK3188 USB成功驅動時,刷機工具程式下方Connected Devices 出現下圖綠色狀態   .
6.執行"Restroe" ,則自動開始刷機流程
8.等待出現下圖即刷機完成.

PS.(首次開機會比較久)