發表文章

目前顯示的是有「程式應用」標籤的文章

如何在 rename() 過後持續使用 inotify 來監控文件?

由於工作上遇到此問題,請教了咕狗大神半天也找不太到合適的答案,只好自己研究了。 平常使用 inotify() 可以拿來監控文件的變更,最常見的就是透過 IN_CLOSE_WRITE 這個 mask 來監視,範例如下:

如何在 Linux Kernel 下偵測網路的連線狀態?

借用一下參考資料的標題。 今天如果想要在 Linux Kernel 內得知實體網路的 Link Status,只需要去 /sys/class/net/ 然後直接去 cat 這兩個 node,以 eth0 來當範例。 這是網路線有插入的狀況: eth0/carrier:1 eth0/operstate:unknown 這是網路線拔除的狀況: eth0/carrier:0 eth0/operstate:down 當再次插入時,原本的 carrier 會從 unknown 變成 1: eth0/operstate:up eth0/carrier:1 不然直接去 grep eth0/ 底下的東西也可以: grep "" eth0/* 很遺憾的是,在 user level 內支援的 inotify,在 kernel level 是不能用的, 所以要借助 socket 的力量,直接在 ethernet driver 內使用 sock_create_kern 來 create socket, 然後透過 connect 與 sock_sendmsg 將要傳的資料填寫在 buf 內就好。(如果要傳 struct 就 &struct) 參考資料: http://stackoverflow.com/questions/808560/how-to-detect-the-physical-connected-state-of-a-network-cable-connector http://stackoverflow.com/questions/10340145/get-event-for-nic-ethernet-card-link-status-on-linux

Net-Snmp 5.7.2.1 Porting and Testing Commands

由於工作需求...呃應該不用什麼前言了。 本篇主要介紹如何將 net-snmp 5.7.2.1 (LTS) 做完 CROSS-Compile 並 Porting 到 Embedded 平台上。 以下將以 Ti 的 DM368 平台來做示範。

[Patch] TLV320AIC3X Driver Patch Code with MICBIAS

由於工作需求,因此需要針對 tlv320aic3x 的 driver 做 MICBIAS 的修改 (官方到了新版這部份還是沒改...) 然後在網路上找到了這份 Patch,趁著這個機會來記錄 & 說明一下: 這份 Patch 主要在新增 320AIC driver 內,提供 MICBIAS 的 voltage widget, 並且設定在 target board 內。這樣就可以有效的調整 MICBIAS 的值了! 完整 Patch Code 如下,有需要的就自行取用吧:

[Iperf] Iperf Porting and Testing Bandwidth Commands

這篇主要介紹的是 Iperf 要如何透過 cross-compile 來 porting 到不同的平台上。 Iperf 下載網址: http://iperf.fr/ 第一個範例是 Porting 到 Cavium 的 ECONA 平台上,第二個是 Porting 到 Ti 的系列平台上, 在文章最後並會介紹 Iperf 的簡單用法,現介紹如下: == Porting == ** ECONA Platform ** 1. get iperf-2.0.5.tar.gz from http://sourceforge.net/projects/iperf/ 2. tar zxvf iperf-2.0.5.tar.gz 3. cd iperf-2.0.5$ 4. export PATH=$PATH:/opt/cnstools/arm-linux-le-uclibc-gcc-4.3.3-2010.05/usr/bin 5. chmod 777 configure 6. chmod 777 config.h 7. ./configure –host=arm-linux CC=arm-linux-gcc” 8. comment “#define malloc rpl_malloc” in config.h (if you have ac_cv_func_malloc_0_nonnull=yes in previous line, you don’t need to do this) 9. make 10. you can find binary “iperf” in directory “src” ** Ti Platform ** 1. Download and un-pack the source code. 2. ./configure --host=arm-arago-linux-gnueabi CC=arm-arago-linux-gnueabi-gcc CXX=arm-arago-linux-gnueabi-g++ CXXCPP="arm-arago-linux-gnueabi-g++ -E" 3. make 4. comment “#define malloc rpl_malloc” in config.h ...

在 Linux 底下,如何讓 CPU 使用率達到 100% (使用 md5sum 與 gzip)

在工作上,由於 HW 要做溫度的相關測試, 因此要想辦法讓 CPU 使用率拉到 100%,藉此來提高整體溫度。 這邊有個很簡單的方法,分享給大家: 簡單。好用,提供給大家做參考!

建立 git repository 時,要如何找出空目錄,以避免 build code 失敗?

在過去的經驗裡,使用 git 管理 project source code 最討厭遇到空目錄 (empty directory),偏偏我們在 build firmware image 時,常常會需要這樣的目錄,例如 root filesystem 的 /etc, /var, /dev 等等這些目錄。 假如 Makefile 沒有寫好的話,會假設這些目錄是存在的,但是因為 git 並不會儲存空的目錄,這會導致當我們將 project 從 git server clone 下來後,空目錄消失,然後 compile 就 fail 了。 多半這時候的解法就是透過 directory comparison 的工具,例如 Araxis Merge, Beyond Compare,或是 meld 等等,找出空目錄,touch 一個檔案,把檔案加入 git 管理,這樣就可以避免這樣的問題了。 過去我是這樣解決的: 在 project 目錄下,我會執行以下的指令: find 這個指令大家多少都用過,就不多做解釋 -type d 就是找出目錄,man page 說明如下: -empty 就是空檔案或是空目錄的,man page說明如下: -exec find 指令產生的 output,可以有幾種針對 output 做後續處理的方法,其中一種比較直覺的就是透過 exec,將 output 作為新指令的輸入,有點類似 pipeline ( | ) 的概念;exec 的參數必須以 " ; " 結尾,又因為在 shell 下,這個符號有其他用途,所以必須用反斜線標記 (\),然後 " { } " 是代表前面 find 指令的 output string。man page 說明如下: 最後, .gitignore 是 open source community 中,滿常被用來解決這問題的空檔案,而且同時又是 git 本身會 check 的特殊檔案,所以我都是拿這個檔案作為保留空目錄使用。 附註:在搜尋的過程中,也有人建議:如果在空目錄內新增一個 README 之類的檔案,藉以說明這個目錄是用來做什麼的,也是一個不錯的好選擇。

PPS手動去廣告方法 (Win 7 可用)

我用的是官網最新下載的版本 (V2.7.0.1512) 然後根據這篇的方法來操作的 (Under Windows 7),懶得看的人可以直接看這篇: 對岸網站: http://blog.163.com/zhulangtianya@126/blog/static/12675033020103634350549/ 在這邊簡單說一下我的操作方法: 1. 關閉 PPS 加速器: 工具 -> 選項 -> 點播服務,然後把「允許 PPS 運行加速器...」(什麼的)給關掉, 這樣就不會使用快取來佔用你的硬碟空間(PPS會預先讀取影片資料 & 把快取檔存 放到你的硬碟上) 2. 去廣告(記得先關閉 PPS): XP用戶在:C:\Documents and Settings\Administrator\Application Data\PPStream\ Win7用戶在:C:\Users\用户名\AppData\Roaming\PPStream\ 然後把 adsys 底下的資料全清空,然後限制資料夾的存取權限。以 Win 7 為例,對著 資料夾按右鍵 -> 內容 -> 安全性 -> 然後點選到 Everone -> 在拒絕那邊全打勾 最後不免碎碎念一下,MAC 版的竟然本身就沒有廣告...真是坑爹阿

用批次檔來管理 add or delete route

公司的網路需要額外做一些設定,因此寫了個批次檔來 add 與 delete route route delete 0.0.0.0 route ADD 172.0.0.0 MASK 255.0.0.0 172.21.32.254 route ADD 0.0.0.0 MASK 0.0.0.0 192.168.99.1 要注意的是:檔名不能取成 route.bat ,否則 route 本身會不斷 call 本身而造成無限循環。 當發生此狀況時,改存成 route_change_bat 即可避免此一現象。

[筆記] 個人覺得好用的程式清單

此篇簡單整理一下我平時在用的程式, 包括工作用與日常生活用的(免得以後忘記)。 如果有什麼推薦的也請大家不吝分享:)

BOA Web Server Porting

整理一下之前Porting的紀錄 1. http://www.uclinux.org/pub/uClinux/archive/4292.html Compiling BOA for ARM 2. uClinux中boa web server的配置 http://mcuos.com/thread-60-1-1.html 3. Docs: 3.1. http://www.boa.org/0.92/readme-0.91.txt http://www.boa.org/0.92/details.html http://www.boa.org/documentation/boa.html#toc1

SourceInsight外掛: Artistic Style 自動格式化

Source Insight 外掛 Artistic Style 程式碼自動格式化 這裡有教你如何安裝的方法,原文請參考: http://archerworks.blogspot.com/2010/04/source-insight-artistic-style.html

透過NAT,把VMWare的Host與Guest端連起來

VMware有個缺點,在Host端的網路斷線時,Guest端的網路也會一起斷掉(廢話) 而且變成也沒辦法跟Host端連線。 這裡有一種方法,可以改善這種狀況:

如何不輸入密碼就能移除OfficeScan

相信大家對PC-CilliXX所推出的Office有點感冒...咳 如果想要移除掉,卻發現移除的時候需要密碼,在不知道密碼的情況下怎麼辦呢?