發表文章

目前顯示的是 9月, 2010的文章

Bose wave music system .....

圖片
我終於買了!!!!想買很久了,因為很貴。所以一直買不下手。 在微風逛街的時候,不小心又看到了,讓我的心又蠢蠢欲動。 而且剛好是週年慶。可以便宜兩千。愛買東西的人,總會有理由說服自己。 就買了!!NT$22500。還是好貴啊!!! 不過我想是值得的。嘿嘿。。。

ttysnoop

ttysnoop-0.12d.k26 1. cross compile 後,會有 ttysnoop 和 ttysnoops ( client 和 server )。 PS:LIBS = -lcrypt。 build 不過,請加上這行。 2. 在 target 建立資料夾 /var/spool/ttysnoop 。 3. 將 "snooptab.dist" 改名為 snooptab 並 copy 到 /etc/ 下。修改內容如下: # # /etc/snooptab # # tty snoopdev type execpgm # #ttyS1 /dev/tty7 login /bin/login #ttyS2 /dev/tty8 login /bin/login # # remember to inform your gettys on the above lines # that /etc/ttysnoops is the login program now # # the 'socket' snoop-device is for use with the # ttysnoop client # (any tty not listed above will match the wildcard) # * socket login /bin/login # # remember to inform your telnetd that /etc/ttysnoops # is the login program now 4. 將 tysnoops 和 ttysnoop 上傳到 target board。 5. 先執行ttysnoops,會出現:login[575]: root login on 'ttyp0' 可知 console 的訊息會被導到 ttyp0 6. 遠端 telnet 到本機。可用 who 觀看 ~ # who USER       TTY      IDLE      TIME            HOST root       pts/0    

static 用在 function上會有什麼效果?

在 C 中, function  加上   static   modifier 的意義在於限制該 function  只有在其所在的程式檔案中才能被認得。 其最主要的目的在於,當你的程式愈寫愈大,或是由多個人 協同寫一個專案時,為了避免在不同的程式檔案中,不小心 取了相同名稱的  function ,會造成 link fail 甚至是引用到非 自己預期的   function  而不自知。

Linux RS-232 程式設計

Linux RS-232 程式設計 6-1 終端機介面 終端機介面又稱為TTY介面,用來讓Linux系統透過RS-232串列埠連接數據機,通過電話線路與遠端的電腦系統相連接。終端機介面有二種模式:正規(canonical)模式和非正規(non-canonical)模式。 模式 說明 正規模式 又稱為cooked模式。在這種模式中,終端設備會處理特殊字元,且會以一次一列的方式將輸入傳給應用程式。例如Linux的shell指令。 非正規模式 又稱為raw模式。在這種模式中,終端設備不會處理特殊字元,且會以一次一個字元的方式將輸入傳給應用程式。例如在Linux使用vim編輯程式。 串列埠檔案 在Linux中針對所有的周邊裝置都提供了[裝置檔案]供使用者存取。若要存取TTY串列埠只要開啟相關的[裝置檔案]即可。 在Linux中,每一個TTY串列埠都會對應到一個或多個[裝置檔案],[裝置檔案]放在[/dev]目錄中。相關的裝置檔案如下: 裝置檔案 說明 /dev/ttyS0 串列埠的COM1 /dev/typS1 串列埠的COM2 開啟通訊埠 在Linux中將串列埠視為一個檔案,可以使用open()函數來開啟串列埠。底下的程式用來開啟PC的COM1串列通訊埠。   #include #include #include #include #include #include int open_port(void) { int fd; fd=open("/dev/ttyS0",O_RDWR|O_NOCTTY|O_NDELAY); if(fd == -1){ perror("open error"); } retuen(fd); } 其中 O_NOCTTY:告訴Linux這個程式不想控制TTY介面,如果不設定這個旗標,有些輸入(例如鍵盤的abort)信號可能影響程式。 O_NDELAY:告訴Linux這個程式不介意RS-232的DCD信號的狀態。如果不設定這個旗標,程式會處於speep狀態,直到RS-232有DCD信號進來。 6-2 Termios結構 在Linux中設定串列埠的參數,例如鮑率、字元長度等,可以透過POSIX標準終端介面,

即時作業系統是如何演進的

圖片
即時作業系統是如何演進的 在小型MCU上面用的工作排程(Task Schedule)Bee整理了一下。 發現從使用硬體中斷,到即時作業系統(RTOS)之間有演進的程序。 1.Round-Robin :不使用中斷,只使用輪詢方式,做為排程。 2.Foreground/Background :只使用中斷,利用硬體排程。 3.Round-Robin with Interrupt :使用中斷及輪詢混合式排程。 4.Coroutine :將輪詢方式的排程改為經由軟體呼叫方式切換。並加入排程工作鏈,管理工作加入及移除。 5.Real-Time Operating System :現代即時作業系統,函式一下子增加了許多。工作切換可以利用設定事件(Event)方式,設定排程的條件。 前三種及RTOS在uCOS的書中有介紹,但Bee認為奇怪的是為何工作排程一下子變的如此複雜。 在使用中斷管理及現代作業系統之間,一定存在軟體可以管理,但又沒有強制切換的管理系統。 不幸的是,中間型式就像物種進化中的失落環節一樣,幾乎找不到資料。 後來才從Forth語言及Lua語言上找到Coroutine,Bee才確定有Coroutine這型排程管理系統存在。 以下就功能特性做一個比較: 1.Round-Robin:     特性:這是最簡單的排程系統,但時間控制不精準。     Task Control : Pulling     Time Function : Depend on assemble code or instruction delay     Data Exchange : Global variable     State Machine : Run on open loop,state control by data 2.Foreground/Background:     特性:將需要精準時間控制的工作放入中斷。     Task Control : Interrupt     Time Function : In interrupt using counter control function call     Data Exchange : User control with protected global var