科學研究員指出,人們要在某個領域出類拔萃,無論是腦部手術或是銷售電腦,至少得花上10年的時間。
前提是,如果你在這10年當中投入1萬小時認真練習的話。簡單計算一下,10年跟1萬小時約等同於1年1,000小時(1星期19小時),或是1天要花2.7小時認真練習,才能夠贏過別人。
只要你每天投入3小時,而你所做的這份努力,也許是你為了達成目標所採取的行動當中成效最好的一個。
科學研究員指出,人們要在某個領域出類拔萃,無論是腦部手術或是銷售電腦,至少得花上10年的時間。
前提是,如果你在這10年當中投入1萬小時認真練習的話。簡單計算一下,10年跟1萬小時約等同於1年1,000小時(1星期19小時),或是1天要花2.7小時認真練習,才能夠贏過別人。
只要你每天投入3小時,而你所做的這份努力,也許是你為了達成目標所採取的行動當中成效最好的一個。
= =...做這個移植一開始因為粗心沒注意到害我浪費了一些時間。
這篇文章是我本人在網路上找的相關資料並且有實際做過才發出來的文章,絕對不是巴樂文,以下是我所做的內容。
一、核心修改
1-1、下載核心
http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.14.1.tar.bz2
Linux Device Drivers ─
使用/proc檔案系統
/proc是核心模擬出來的軟體檔案系統,它是核心對於外界的資訊窗口。在/proc下的每一個檔案,各自連繫到核心裡的專屬函式,當user-process讀取/proc下的檔案時,對應的函式便會即時(real-time)產生檔案的“內容”。以/proc/modules為例,它總是會告訴你核心當已載入哪些模組。
Linux Device Drivers ─
節制printk訊息產生速率
一般而言,正常運作狀態下不應該產生任何訊息,只有在發生了須要注意的異常狀態時,才可使用printk()。
但是printk()也是有被包含在無窮回圈裡的可能而導致嚴重的後果。對於需要偶爾輸出提醒訊息的情況,最好的解法是設立一個有調節作用的工具函式。
Linux Device Drivers ─
Debug 訊息開關
在研發驅動程式的初期,printk()是輔助測試、偵錯新程式碼的好工具。到了正式釋出驅動程式的階段,就該拿掉這些無謂的printk()敘述或至少讓它們失效。
以下的範例提供一個簡便的方式,讓你可以一口氣拿掉所有偵測用途的printk()。
ARM架構為(Advanced RISC machine),採用的是RISC(精簡指令集)運算架構,運用層面廣泛,從可攜式的手機、PDA,至硬碟控制器、汽車、甚至飛彈控制器等,均有採用該 架構的處理器,因智慧型手機、平板電腦掀起風潮,ARM架構成為PC業新寵兒。
相較於英特爾採用的x86架構,為CISC(複雜指令集)運算架構,再不斷加入指令集後,功能龐大;ARM架構讓處理器卻強調簡化,低功耗、小體積為其特色,也讓ARM架構在行動通訊產品市佔率居高不下,在平板電腦後,ARM架構也將進軍NB領域。
ARM 於1991年成立,該公司前身為Acorn Computer,出售IP(技術知識產權),授權廠家依照其IP,設計製造處理器,到1993年,TI、Cirrus Logic等知名業者採用該技術後,ARM在市場建立起知名度,受惠於手機應用,該公司ARM9核心已擁有超過200家的授權業者、ARM7也有150多 家的公司採用。
Linux Device Drivers ─
Register Character Device
要讓核心能提調你的驅動程式提供的作業方法,你必須配置並註冊一或多個struct cdev。用於配置struct cdev的函式是cdev_alloc(),你可再執行其配置一個獨立的cdev結構,然後將其ops欄位指向你的file_operations結構:
Struct cdev *my_cdev = cdev_alloc();
Linux Device Drivers ─
Device Number
裝置的存取,是透過它們在檔案系統裡的名稱;這些名稱可成為特殊檔(special file)、裝置檔(device file)或檔案系統是的節點(node),但不管哪些說法意義都一樣。裝置檔一般來說都集中在/dev/目錄下。字元裝置會出現c字樣而區塊裝置則被標示為b。
在日期欄位之前兩個以逗號隔開的數值,由左而右,依序是裝置檔的(major number)和(minor number)。
這幾天有位朋友問我,為什麼在智慧型手機中要使用到NAND FLASH?
我對智慧型手機的硬體實際做法或許不是很全面了解,但我可以以嵌入式系統的角度來說明。
一塊開發版需要幾個必備的要素,
1. CPU(ARM、MIPS...等)
2. RAM
這是一篇很早之前就一直想寫的文章,寫我一路走來所學過的與整理的資訊。
我會盡量以實作的方式來表達shell script、Makefiler及驅動程式等。
畢竟,用實作的方式才能讓人更加容易去理解,我所要表達的意涵,也讓想學習嵌入式系統的朋友能夠更容易去學習。
CGI
CGI (Common Gateway Interface,共用閘道介面)不是一種語言,而是一種象徵性的名稱。規定了 Http server 和 CGI程式之間 傳遞參數和結果的方法。
今天剛安裝好fedora9後,馬上要來開始測試上網連線是否沒問題。
但隨即就發現,不能上網,也不能更新軟體。
於是,馬上就來Ping看看是哪裡的問題,ping lan裡面的其他電腦沒問題,ping router沒問題,ping DNS也沒問題。
Fedora 9在架設samba時比之前的版本還多了些問題,按照以前的方式設定好之後還是會有問題,顯示的錯誤訊息在"setroubleshoot browser"。
Summary:
SELinux is preventing the samba daemon from serving r/o local files to remote
話說,今天第一次在玩router時看到了,一個之前比較不會用到的選項"Static DHCP",當下看到愣了ㄧ下,知道Static IP及DHCP,那Static DHCP到底是啥@@?,看了ㄧ下它網頁上的說明,有看還是不太了解,GOOGLE搜尋找了ㄧ下,才知道這個功能原來這是為了讓某些裝置可以透過它的MAC位址,再使用DHCP功能時可以每次都得到那一個固定的IP。就如DHCP的前身BOOTPㄧ樣。
那為什麼要這麼麻煩,還要用這個功能,不直接就設定一個static ip就好了?那是因為如果某些裝置本身並沒有儲存裝置來設定它的IP位址等等的資訊,那就只能透過它裝置的MAC位址,來給router分配IP,這也就是早期BOOTP所提供的功能了。
參考資料:
@@...開始上班了,今天第一天首先要熟悉一下環境(當然是工作週遭,還有linux的作業環境啦)。
話說,由於工作上會用到redhat9,首先當然是安裝系統,之後在來設定一下東西啦。在ubuntu上很容易建立起來的samba,今天安裝redhat9後按照之前的設定卻出了問題@@。
那後來找些資料去試試看,終於解決了問題。
[1]把cs8900.c,cs8900.h 拷貝到drivers/net/arm 目錄下
修改cs8900.c中函數int __init cs8900_probe (struct net_device *dev){}
在memset (&priv,0,sizeof (cs8900_t)); 下面新增
這是一個網友所遇到問題,解決之後,我順便將解決的方法記錄下來。剛好又多了一篇可以PO的文章。
首先在下圖中他出現了【no g++ found】的訊息,那通常這類的訊息出現,表示著缺少了某樣東西,所以,為了解決下面的問題。我們必須要將g++更新安裝。
一般來說,更新的話只需要下面的命令即可
好一段時間沒有上來PO一些資料,終於畢業了,好高興阿。(其實最近都在摸魚= =+)
終於開始進入另一個人生的階段。
雖然在這兩年沒交到女友 T.T ,哈哈。
但我相信,不管未來在辛苦,也能有個美好的結局。
正面的想法,帶來的必將是好的回應。
本文以採用磁耦合和CMOS製程的RFID產品為例,簡要介紹了此類晶片的構成,在列舉各種破壞性/非破壞性攻擊方法的基礎上,從軟/硬體角度分析現有的各種安全措施如何在設計階段應對這些攻擊,或使攻擊變得難以實施,以及如何避免不良的設計。
...
詳全文:http://www.eettaiwan.com/ART_8800336228_480102_TA_4b07ded9.HTM
STM32F103ZE於Keil C中對USART的應用
ㄧ般來說當Keil C安裝好之後可在他的資料夾中找到相對應的CPU範例,而我所用的是STM32F103ZE,所以就針對這棵CPU來找他的範例,如C:\Keil\ARM\Boards\Keil\MCBSTM32E。
ActiveSync設備與PC端的同步
1、在設備端點選 開始→設定→網路和撥號連接→建立新連線→直接連線→下一步→(下拉)S3C2410 USB Cable→完成
(囧rz...我的LCD有點小再加上沒有調整解析度所以看到的畫面是最下面被切了)
由於這學期都在幫老師上課,所以也準備了一些上課用的講義之類的文件。嘿嘿...順便就PO上來了。
WinCE桌面遠端控制
Windows Mobile Developer Power Toys下載網址為:
QQ...隔了一個月的時間,終於又發文了,前段時間都在準備研討會的報告,真是令人緊張到爆阿,還好順利的結束了。
在ARM版中利用RTC時間設定linux系統時間
在 Linux 系統中的時鐘,可分為硬體時鐘及系統時鐘。硬體時鐘可以依賴輔助電源(電池)持續累計時間;而系統時鐘則每次重新啟動就會重置,所以一般 Linux 在開機時會做個和硬體時鐘同步的動作(hwclock -s),但是在 Embedded Linux 中是要手動操作的(如果沒有設定CONFIG_RTC_HCTOSYS=y)。
QStringList是一個擁有多個QString對象的QValueList,它不同於QStrList,QStrList儲存的是一個字符集指標,而QStringList儲存的是一個真實的QString對象集。
像QString一樣,QStringList對象之間是隱含共享的,它們透過圍繞一個值參來達到快速安全的目的。
使用範例:
QStringList fonts;
這是參考GOOGLE搜尋找出的範例,所做的修改。
由於int的範圍為-2,147,483,648 to 2,147,483,647,因此buf字串長度設定為11。
#include <iostream.h>
在QT程式設計中,有時需要將QString型態的變數中某個字元取出,又因為程式的需求不使用QT中特有的QChar型態,而使用char型態。
在此有個方法可以使用,先將QString型態的字串,透過QByteArray將字串轉換成字元陣列。
QString str;
這個Function製作的緣由,是因為讀取GPRS的簡訊時他會以unicode的編碼顯示,為了在QT中還原為中文字,因此有需要用到將unicode的編碼4bytes字串轉換成整數,這樣才能獲得正確的編碼位置,以讀取到正確的中文字。
//include在此只引入C/C++需要的QT的部份就不多說明
#include <stdio.h>
#include <string.h>
What is tty?
終端是一種字元裝置(Char Device),它有多種類型,通常使用tty(Teletype)來簡稱各種類型的終端設備。Teletype是最早出現的一種終端設備,很象電傳打字機(或者說就是),是由Teletype公司生產的。設備名放在特殊檔案目錄/dev/下,終端特殊設備檔案一般有以下幾種︰
1.串行端口終端(/dev/ttySn)
串行端口終端(Serial Port Terminal)是使用計算機串行端口連接的終端設備。計算機把每個串行端口都看作是一個字符設備。有段時間這些串行端口設備通常被稱為終端設備,因為 那時它的最大用途就是用來連接終端。這些串行端口所對應的設備名稱是/dev/tts/0(或/dev/ttyS0)、/dev/tts/1(或/dev /ttyS1)等,設備號分別是(4,0)、(4,1)等,分別對應於DOS系統下的COM1、COM2等。若要向一個端口發送數據,可以在命令行上把標 準輸出重定向到這些特殊檔案名上即可。例如,在命令行提示符下鍵入︰echo test > /dev/ttyS1會把單字”test”發送到連接在ttyS1(COM2)端口的設備上。
What is kernel?
kernel是作業系統的核心元件,負責處理應用程式和硬體之間的溝通[1]。在Linux系統中kernel是主要組成部分,它的功能幾乎表示整個系統的功能,它支援全部系統裝置、S/W 協定和整個系統管理,然而有限記憶體空間不能允許我們把全部的kernel功能放入系統內,幸好GCC提供一種聰明的編譯方法來建立必要的功能,如果在編譯之前,不要選取不需要的項目,便會將這些項目忽略而不進行編譯。
建立Linux檔案系統
檔案系統是Linux不可缺少的一部份,不過在Embedded System上資源有限,不可能建立像PC那麼大的檔案系統,系統工具程式必須經過精簡化將檔案縮小這樣才可節省Embedded System資源。
現在在Embedded Linux上最常用的檔案系統為 "Busybox", "Buzybox"整合的各種系統工具程式(ex: ls, mkdir, rmdir, mount, ifconfig, kill ...)成為一個單一執行檔,大大縮減了系統使用容量。以下介紹 使用 "Busybox" 來建立檔案系統。
RS-232的每一支腳位都有它的功用,也有它訊號流動的方向;原來的RS-232設計之初是用來連接數據機作傳輸之用的,也因此它的腳位意義通常也和數據機傳輸有關,以下是這9支腳位的相關說明:
(1) CD腳位
此腳位是由數據機控制,當傳送的訊號是載在載波訊號上面,數據機利用此腳位通知電腦有載波被偵測到;而當載波被偵測到時才可保證是處於連線狀態。
(2) RXD腳位
此腳位會將遠端所傳送過來的資料接收進來;在接收的過程中,由於資料是以數位(Digit)型式傳送,所以可以在Modem的RXD燈號上看到明滅交錯,此既為0、1交替所產生的現象,也就是電位高低所產生的現象。
[1]好好規劃自己的路,不要跟著感覺走!
根 據個人的理想決策安排,絕大部分人並不指望成為什麼院士或教授,而是希望活得滋潤一些,爽一些。那麼,就需要慎重安排自己的軌跡。從哪個行業入手,逐漸對 該行業深入瞭解,不要頻繁跳槽,特別是不要為了一點工資而轉移陣地,從長遠看,這點錢根本不算什麼,當你對一個行業有那麼幾年的體會,以後錢根本不是問 題。頻繁地動盪不是上策,最後你對哪個行業都沒有摸透,永遠是新手!
[2]可以做技術,切不可沉湎於技術。
千萬不可一門心思鑽研技術!給自己很大壓力,如果你的心思全部放在這上面,那麼註定你將成為孔乙己一類的人物!適可而止為之,因為技術只不過是你今後前途的支柱之一,而且還不是最大的支柱,除非你只願意到
(本來沒有想寫這麼長的,哪知道一下手後欲罷不能…。看來這系列文章會變成長連載了。)
在升上高中前,我因緣際會透過一個國中的同班同學認識了他的哥哥YJL。YJL比我大三年,我要進中一中時他剛好畢業,很巧的是他很會寫程式,一直都是中一中的資訊能力競賽代表隊成員。剛認識他時,他就demo給我看他用QBASIC自己寫的橫向捲軸射擊遊戲,當時看得我目瞪口呆,我完全沒法想像QBASIC竟然能寫出這麼順暢且華麗的遊戲。這個demo如果不說,我一定會以為這是市面上在賣的商業遊戲(我那時還以為一定要學C才能寫出這種遊戲)。
透過YJL我也得知原來高中還有資訊能力競賽和奧林匹亞這種比賽,聽他述說跟全國的高手一起比賽寫程式時,讓我不知不覺也熱血沸騰起來。我把他高中時留下的各種參考資料全帶回家,並透過他認識了更多還在中一中的強者學長們,就這樣在踏進高中校門的同時也決定了我這三年的方向。
這裡我先介紹一下對於高中生最重要的資訊比賽。高中的學科能力競賽是教育部主辦的比賽,包括數學、物理、化學、生物、地球科學、資訊,每間高中通常會先辦個校內初賽來選出代表選手,再由這些選手參加各區域的能力競賽,最後各區的前N名(每科的人數不同)才能參加全國競賽。以資訊科來說,我記得是校內取6名,中區再取6名進全國決賽。到了全國決賽能拿到前10名,還能直接保送進資訊奧林匹亞的培訓營,不用再另外參加培訓營的入營考。至於資訊奧林匹亞(International Olympiad in Informatics, IOI)則是國際性的資訊比賽,參加的人是從每個國家挑選出來的頂尖高中生,每年輪流由一個參賽國舉辦,選手要進行兩天每次連續五個小時的頭腦比賽,其中只有一半的人可以得到獎牌。
這些比賽和一般的程式比賽其實很不一樣。這種比賽比的是解決問題的能力,不是比賽軟體實做的能力。題目比較像數學問題,只是除了紙筆外,還得用某種程式語言實做出能解出正確答案的程式,也就是說參賽者必須想出問題的解法(演算法),再透過自己擅長的程式語言寫進電腦,讓電腦執行後輸出問題的答案。這種解題比賽主要考驗的是運用資料結構和演算法以有效率的方法解決問題,並寫出正確程式的能力。大學有個類似的比賽是ACM ICPC,問題類型和IOI很類似,但比賽的模式和方法則有很大差異,有興趣的人可以自行尋找相關資料。雖然IOI是給高中生參加的比賽,但IOI題目的水準其實非常高,如果你能輕易解出IOI的問題,那… 我跟你打賭去Google面試也有99%的機率會通過。順便一提,Google Code Jam就是一個開放給所有人參加的解題比賽,題目類型就跟IOI和ACM ICPC差不多,前一百名就有獎金,還能免費去Google Mountain View總部玩一玩喔。
有好一段時間沒來貼文章啦,最近找資料剛好有看到一篇還不錯的,在此奉上。
最近有讀者問到我學寫程式的方法和經驗,讓我一下掉入時光隧道回想起當初用VB寫出自己第一個遊戲時的成就感,但當初沒料到的是我真的就此迷上了電腦和寫程式的快感,不知不覺也過了10年的光陰…。在這篇文章中,我想寫出我對程式設計的看法和我一路學習上來的歷程和經驗。寫程式是一條無止境的道路,不只是科學和工程,更是一種藝術。而我還在追求「神乎其技」的半路上,雖然還有很多要學的,但我也希望能讓初學者更容易看清楚這條路是什麼樣子,避免陷入盲目追求新技術的死巷中。
如果是從DOS時代開始玩電腦的玩家,應該都知道當初DOS有兩個內建的QBASIC小遊戲:貪食蛇和猩猩丟香蕉。這兩個小遊戲是許多人兒時共同的回憶,我還記得我國小時曾有幾堂電腦課,當時老師在台上嘰哩瓜啦的不知道在教什麼,而台下每台電腦都是貪食蛇或丟香蕉的畫面(老師對不起,其實我就是帶頭做亂的罪魁禍首…)。
最近在搞ARM板上LCD的中文顯示,找了一下,有鄉民建議先了解 i18n 和 unicode 之後才比較容易去找出問題所在。所以在此發一些我找到的有用資料。之後還會陸續的繼續上發相關問題直到完成LCD的中文顯示。
轉載來源:http://cle.linux.org.tw/xcin/i18n/slat/i18n.html
以下是我這次所出現的問題
.obj/release-shared/mainwindows.o(.text+0x5d34): In function `MainWindows::MainWindows(QWidget*)':
: undefined reference to `GPRSATCmd::GPRSATCmd(QObject*)'
在linux中如何讀取並修改系統時間?
[root@linux ~]# date MMDDhhmmYYYY
參數:
MM:月份
DD:日期
hh:小時
mm:分鐘
YYYY:西元年
1. 修改時間成為 1 小時後的時間該如何是好?
[root@linux ~]# date
Thu Dec 7 15:36:45 CST 2006
[root@linux ~]# date 120716362006
Thu Dec 7 16:36:00 CST 2006
# 瞧!時間立刻就修改過來了!
[root@linux ~]# hwclock [-rw]
參數:
-r :亦即 read ,讀出目前 BIOS 內的時間參數;
-w :亦即 write ,將目前的 Linux 系統時間寫入 BIOS 當中啊!
2. 查閱 BIOS 時間,並且寫入更改過的時間囉!
[root@linux ~]# hwclock -r
Thu Dec 7 15:37:44 2006 -0.627128 seconds
# 看一看,是否剛好差異約一個小時啊!這就是 BIOS 時間!
[root@linux ~]# hwclock -w
# 這樣就寫入囉~很簡單吧!
Linux程式設計-時間處理
UNIX及Linux的時間系統是由「新紀元時間」Epoch開始計算起,單位為秒,Epoch則是指定為1970年一月一日凌晨零點零分零秒,格林威治時間。
# ./hello
-sh: ./hello: not found
這個問題是因為沒有lib的關係
struct Date
{
int day;
int month;
};
其次,在讀有關Linux的核心程式碼的時候,看到許多宣告成 static 的函數,為什麼要宣告成 static 的函數呢?這樣的宣告和一般沒有宣告成 static 的函數有什麼不同?
這個static 的意義是代表此函數不能夠在runtime 時被作業系統在記憶體中swap out,因此核心程式碼大部分都是static
ASCII 碼大致可以分作三部分組成。
第一部分由 00H 到 1FH 共 32 個,一般用來通訊或作為控制之用,有些字元可顯示於螢幕,有些則無法顯示在螢幕上,但能看到其效果(例如換行字元、歸位字元)。如下表:
第二部分是由 20H 到 7FH 共 96 個,這 95 個字元是用來表示阿拉伯數字、英文字母大小寫和底線、括號等符號,都可以顯示在螢幕上。如下表:
會放這篇文章上來,主要也是因為最近作研究時有用到Unicode,需要它的編碼表,偶然間看到這篇文章覺得還不錯,雖然是舊文了,但裡面的一些知識,還是能讓人對於字元編碼有更多的了解。
--簡要解釋UCS、UTF、BMP、BOM等名詞 作者:fmddlmyy