如果你想要實做一個週期是1ms的periodic timer,那麼os中的timer的精確度應該是多少?
這個問題就好像是問如果你想用一隻尺去量一根頭髮的粗細,請問這隻尺的刻度應該為多少?
這個問題困擾了我一陣子
我想要在Windows XP上的實做一個period為1ms的periodic timer,我是用的是CreatTimerQueueTimer API。當我設定periodic為1ms, 10ms, 15ms時,得到的平均period都是15ms。
換句話說,更改了period卻沒有任何效果,1ms, 10ms and 15ms得到的都是15ms period,上網查了一下發現了windows的timer resoulstion約在10~25ms間(depends on different computer)
( http://www.lucashale.com/timer-resolution/ )
也就是說當你希望用一個最小刻度為15cm的尺去量1cm的昆蟲時,不管你怎麼量,量到的都會是15cm (minimum resolution)。
這個事實告訴我們,如果你要使用高精確度的timer,首先必須使將系統的timer變成高精確的timer(至少resolution 要跟你所需要的resolution一樣),以我的case為例,我需要將系統的timer resolution改成1ms。
查詢了msdn發現可以用timeBeginPeriod(resolution)和timeEndPeriod(resolutoin)來修改作業系統中的timer resolution。
根據msdn的說法,在使用timer之前,先使用timeBeginPeriod(resolution)來改變作業系統中的timer resolution,呼叫完之後就可以使用timer service。
由於這個改變會globally change timer,也就是會改變整個作業系統中的timer,所以當使用完你所需要的timer service中應該再呼叫timeEndPeriod(resolution)來復原原先的timer resolution。
有一段話值得注意:
"Setting a higher resolution can improve the accuracy of time-out intervals in wait functions. However, it can also reduce overall system performance, because the thread scheduler switches tasks more often. High resolutions can also prevent the CPU power management system from entering power-saving modes. Setting a higher resolution does not improve the accuracy of the high-resolution performance counter."
中文:
設定高精度的resolution可以改善wait function中的time-out interval的準確度。然而,這樣做可能會降低系統的笑同,因為thread scheduler會切換的更頻繁。
高精確度的resolution可以是CPU的電源管理不要進入省電模式。
設定高精確的resoution不會改善high-resolution performance counter的準確度(accuracy)。
所以,使用timer時,如果發現量測出的period和所預期不同,有可能是你沒有改變os中的timer resolution所導致。
記得在使用timer service之前和之後,使用timeBeginPeriod和timeEndPeriod來改變timer resolution。
Saturday, May 7, 2011
改變Windows中的timer精確度--使用timeBeginPeriod(uPeriod) and timeEndPeriod(uPeriod)
Friday, April 29, 2011
Excel中的 Histogram問題!
在Excel中,如果我們使用"資料分析"來分析資料,例如製作Histogram(直方圖)
會需要選定"組界"
這個字讓我搞混了一陣子
例如: 1.98
應該是歸在那一組呢?
假設組距(Width)是0.5從一開始
1, 1.5, 2.0, 2.5, 3.0
原本我以為1.98應該是規在1.5
因為1.5~2.0為一組
不過試了幾次發現是算在2.0裡面
因為在Excel的說明文件中有提到
"決定分組的組數,並在另一行輸入每一組的上限值"
也就是說如果有一組是2.0則2.0裡面的那組的所有資料皆小於等於2.0
data <= 2.0(小於等於), for all data in 2.0 group
如果data = 2.01則會計算至 2.5那組!
會需要選定"組界"
這個字讓我搞混了一陣子
例如: 1.98
應該是歸在那一組呢?
假設組距(Width)是0.5從一開始
1, 1.5, 2.0, 2.5, 3.0
原本我以為1.98應該是規在1.5
因為1.5~2.0為一組
不過試了幾次發現是算在2.0裡面
因為在Excel的說明文件中有提到
"決定分組的組數,並在另一行輸入每一組的上限值"
也就是說如果有一組是2.0則2.0裡面的那組的所有資料皆小於等於2.0
data <= 2.0(小於等於), for all data in 2.0 group
如果data = 2.01則會計算至 2.5那組!
Wednesday, April 13, 2011
在Windowx XP上利用SSH連線Ubuntu碰到亂碼該怎麼處理?
因為putty內建的編碼方式,和ubuntu用的UTF8不同,所以無法顯示中文(會有亂碼)
解決方式:
打開putty > 左邊選Windows > Translation > 第一個下拉選單選擇UTF-8 > 再按open就可以囉!
解決方式:
打開putty > 左邊選Windows > Translation > 第一個下拉選單選擇UTF-8 > 再按open就可以囉!
Wednesday, March 23, 2011
多重系統開機 Windows XP, Windows7, Windows Server 2008 R2
前幾天在我已灌好Windows7, Windows Server 2008 R2的桌機上想要在安裝Windows XP, 沒想到XP灌好之後竟然將Windows7, Windows Server 2008 R2的MBR洗掉
變成開機後會直接進入XP 而且也不會出現XP舊版的開機選單來選擇OS
找了網路上幾種解決方式都無法解決
最後嘗試了一個方法後竟然可以順利解決!以下是我的環境設定與解決方法:
硬碟分割:兩個硬碟,各分割成兩個partition
Hard Disk 0
Partition C:\ 安裝 Windows 7
Partition D:\ 安裝 Windows Server 2008 R2
Hard Disk 1
Partition E:\ 安裝 Windows XP
Partition F:\ 無安裝OS
解決方法:
1.放入 Windows 7 使用光碟開機
2.進入 Windows 7 的光碟之後選擇修復Win7(不要選重新安裝)
3.這時應該會看到光碟問你想要修復什麼東西,選擇第一個選項(應該是修復啟動。。。)
4.重新開機之後,應該會看見MBR回復了! 可選擇的OS有Windows7, Windows Server 2008 R2,但是Win XP還是看不到! 選擇進入Windows 7
5.進入windows 7後上網下載 EasyBCD 網址 檔案
6.打開EasyBCD, 在左邊選擇 Add Entry
Windows:
Type:Windows NT\2K\XP\2K3
Name: Windows XP(自行輸入)
Drive:選擇你所安裝的XP位置硬碟代號
7.接著重開機之後應該就可以在開機的MBR中看到XP了!
變成開機後會直接進入XP 而且也不會出現XP舊版的開機選單來選擇OS
找了網路上幾種解決方式都無法解決
最後嘗試了一個方法後竟然可以順利解決!以下是我的環境設定與解決方法:
硬碟分割:兩個硬碟,各分割成兩個partition
Hard Disk 0
Partition C:\ 安裝 Windows 7
Partition D:\ 安裝 Windows Server 2008 R2
Hard Disk 1
Partition E:\ 安裝 Windows XP
Partition F:\ 無安裝OS
解決方法:
1.放入 Windows 7 使用光碟開機
2.進入 Windows 7 的光碟之後選擇修復Win7(不要選重新安裝)
3.這時應該會看到光碟問你想要修復什麼東西,選擇第一個選項(應該是修復啟動。。。)
4.重新開機之後,應該會看見MBR回復了! 可選擇的OS有Windows7, Windows Server 2008 R2,但是Win XP還是看不到! 選擇進入Windows 7
5.進入windows 7後上網下載 EasyBCD 網址 檔案
6.打開EasyBCD, 在左邊選擇 Add Entry
Windows:
Type:Windows NT\2K\XP\2K3
Name: Windows XP(自行輸入)
Drive:選擇你所安裝的XP位置硬碟代號
7.接著重開機之後應該就可以在開機的MBR中看到XP了!
分享至FaceBook
Labels:
Win7,
Windows 7,
Windows Server 2008 R2,
Windows XP,
多重開機
Saturday, March 19, 2011
[Embedded OS] HyperTerminal 無法中斷 U-Boot
問題
當把pxa270連上電腦後,原本的null cable是接在com2,可市在uboot倒數5秒時接無法由鍵盤書輸入字元去中斷uboot開機程式
com2 port的皆正常
解法
將null cable 接上com1 port重新開機即可
當把pxa270連上電腦後,原本的null cable是接在com2,可市在uboot倒數5秒時接無法由鍵盤書輸入字元去中斷uboot開機程式
com2 port的皆正常
解法
將null cable 接上com1 port重新開機即可
Tuesday, October 5, 2010
Digital television is the system of broadcasting television ...
Check out this SlideShare Presentation:
Saturday, August 7, 2010
E-Ink Brett Comiskey 演講心得
星期六(8/7)是好人網辦的第三次課程!
今天請到的這位講者很有意思。最近一直在講得電子書,跟這位講著有著不可分割的關係。他就是e-Ink電子墨水的共同創辦人 Brett Comiskey
聽完演講後我的心得是:
1. 創業的過程中,如果是全新的點子,有些時候該領域的專家不一定能夠想樣。他們可能跟你說這樣是不可能的!但是創業這件事本來就不是有一定的規則的,如果你覺得有可能那就應該去做(姑且不論有沒有市場)。
2. 當公司成長的時候就要開始面臨文化的改變,如果有些人才是因為好得願景、好的文化才加入公司。此時如果核心的文化改變了,往往這些人才也會很快的流失。所以在聘請新加入的人的時候,一定要謹慎的考慮文化。
3. 當你想僱用有經驗的人才時,他的有經驗可能是帶著包袱的。在融入現有的團體中不一定會很平順。而且有經驗的人,通常所要負擔薪資較高,對於START-UP來說,要謹慎的評估這個人才是否是真的可以為公司帶來效益。
4. 雖然創辦人不一定是CEO,不一定有決定權。但是如果公司的願景跟方相簿一定跟當初創辦人的理想是一致時,可能創辦人會是第一個走得員工。
5. Start-up is all about survival. 創業第一件重要的事就是存活下來。你可以有很多想做的事、偉大的夢想,但是第一件事就是要先生存下來,其他的才有機會可以談。這點跟何飛鵬先生說的「開門第一天就要賺錢」是一樣的。
這次的演講真的很棒!你可以想像一個創辦人用哈佛大學商學院的教材親自為我們上了一次個案研討。有誰比創辦人本人更瞭解自己的公司呢?
感謝時代基金會的大家舉辦這次活動!
今天請到的這位講者很有意思。最近一直在講得電子書,跟這位講著有著不可分割的關係。他就是e-Ink電子墨水的共同創辦人 Brett Comiskey
聽完演講後我的心得是:
1. 創業的過程中,如果是全新的點子,有些時候該領域的專家不一定能夠想樣。他們可能跟你說這樣是不可能的!但是創業這件事本來就不是有一定的規則的,如果你覺得有可能那就應該去做(姑且不論有沒有市場)。
2. 當公司成長的時候就要開始面臨文化的改變,如果有些人才是因為好得願景、好的文化才加入公司。此時如果核心的文化改變了,往往這些人才也會很快的流失。所以在聘請新加入的人的時候,一定要謹慎的考慮文化。
3. 當你想僱用有經驗的人才時,他的有經驗可能是帶著包袱的。在融入現有的團體中不一定會很平順。而且有經驗的人,通常所要負擔薪資較高,對於START-UP來說,要謹慎的評估這個人才是否是真的可以為公司帶來效益。
4. 雖然創辦人不一定是CEO,不一定有決定權。但是如果公司的願景跟方相簿一定跟當初創辦人的理想是一致時,可能創辦人會是第一個走得員工。
5. Start-up is all about survival. 創業第一件重要的事就是存活下來。你可以有很多想做的事、偉大的夢想,但是第一件事就是要先生存下來,其他的才有機會可以談。這點跟何飛鵬先生說的「開門第一天就要賺錢」是一樣的。
這次的演講真的很棒!你可以想像一個創辦人用哈佛大學商學院的教材親自為我們上了一次個案研討。有誰比創辦人本人更瞭解自己的公司呢?
感謝時代基金會的大家舉辦這次活動!
Subscribe to:
Comments (Atom)