?? readme.cn
字號(hào):
串口調(diào)試器(Serial Debugger: SDB)版本:0.0.6版權(quán):yfy001,2001-2002說明:本軟件屬于自由軟件,您可以自由地拷貝、分發(fā)本軟件的二進(jìn)制及原始代碼。如果在您的軟件或項(xiàng)目中使用了本軟件中的部分或者全部源代碼或者可執(zhí)行代碼,請(qǐng)保留原始作者的版權(quán)聲明。編譯及安裝:請(qǐng)參見INSTALL文檔注:自述文檔及安裝文檔的后綴名為國(guó)家或地區(qū)名的英文國(guó)際域名縮寫。例如,中華人民共和國(guó)為CN,則相應(yīng)的自述文檔及安裝文檔的后綴名為CN;即相應(yīng)的文件名為README.CN及INSTALL.CN。項(xiàng)目起源: 之所以有了編寫這個(gè)串口調(diào)試器的想法,緣于以前的一個(gè)項(xiàng)目。當(dāng)時(shí)為了給公司編寫一個(gè)Linux下IC卡讀寫卡的程序,找了許多關(guān)于linux平臺(tái)的串口編程方面的資料,包括《serial-programming-howto》,以及《Serial Programming Guide for POSIX Operaing Systems》第五版。但是發(fā)現(xiàn)都不是很完整,相對(duì)而言后者要更完備一些。與Windows平臺(tái)一大堆串口調(diào)試工具相比,Linux下的串口調(diào)試工具在網(wǎng)上幾乎找不到。只有一個(gè)不太相關(guān)的項(xiàng)目。 于是,當(dāng)時(shí)就下決心要寫一個(gè)串口的程序供后來的程序員參考。這里簡(jiǎn)單說明一下,現(xiàn)在的這部分代碼與當(dāng)初為公司寫的程序已經(jīng)毫不相干。所以不用提心版權(quán)的問題。大家盡可以放心下載,如果對(duì)你的編程能有所幫助,那也是對(duì)作者辛勤勞作最大的回報(bào)。問題報(bào)告: 如果您在使用這部分代碼或者可執(zhí)行代碼的時(shí)候發(fā)現(xiàn)存在一些明顯的錯(cuò)誤或者疑問,請(qǐng)發(fā)送電子郵件到如下地址:yfy002@21cn.com。作者不敢保證會(huì)為每一封來信都及時(shí)作復(fù),但是在這里還是要首先感謝那里關(guān)心支持本項(xiàng)目的朋友。組成: 串口調(diào)試器0.0.6版由兩個(gè)可執(zhí)行文件組成:sdb(serial debugger)及ssf(serial send file),即串口調(diào)試器及串口文件發(fā)送程序。程序架構(gòu): 本軟件源代碼由以下幾個(gè)文件組成:1. types.h2. args.c3. args.h4. cmd.c5. cmd.h6. prompt.c7. prompt.h8. strings.c9. strings.h10. sdb.c11. ssf.c12. tty.c13. tty.h以下分別就上述文件逐一進(jìn)行說明:1. types.h 該文件是整個(gè)項(xiàng)目文件類型說明的頭文件;對(duì)INT32, INT16, INT8, UINT32, UINT16, UNIT8, BYTE, WORD, DWORD等數(shù)據(jù)類型進(jìn)行了定義。不同的編譯器對(duì)int類型的大小定義不一,如:gcc定義為4字節(jié),而bc3.1及ms c/c++ 7則定義為2字節(jié)。同時(shí)還定義了整個(gè)項(xiàng)目都要用到的一個(gè)數(shù)據(jù)類型args_t,用于保存各種信息。2. args.c 該文件用于處理命令行參數(shù)以及打印幫助及版本信息。由以下三個(gè)函數(shù)組成:args_parse,args_usage以及args_version。本項(xiàng)目各文件中的函數(shù)(sdb.c及ssf.c除外)一般以其文件名帶一個(gè)下劃線為前綴。如:args.c文件中的函數(shù)前綴名為args_。cmd.c文件中的函數(shù)前綴名為:cmd_;tty.c文件中的函數(shù)前綴名為tty_;這里還有兩個(gè)例外:一是strings.c中的basename函數(shù);二是prompt.c中的prompt函數(shù);原因我想在這里就不必多說。3. args.h 該文件為args.c相應(yīng)的頭文件。4. cmd.c 該文件是sdb的控制臺(tái)程序,用于接收用戶輸入的命令并作出相應(yīng)判斷,執(zhí)行適當(dāng)?shù)牧鞒獭T撐募幸粋€(gè)結(jié)構(gòu)非常有用:struct cmds_t;用于保存命令名及其對(duì)應(yīng)的函數(shù)指針。該文件的框架已經(jīng)很好,可以在此基礎(chǔ)上不斷補(bǔ)充新的命令。5. cmd.h 該文件為cmd.c相應(yīng)的頭文件。6. prompt.c 該文件非常簡(jiǎn)單,僅僅打印提示符信息。如sdb調(diào)用prompt函數(shù)打印“sdb> ”提示符。7. prompt.h 該文件為prompt.c相應(yīng)的頭文件。8. strings.c 該文件也非常簡(jiǎn)單,只有兩個(gè)函數(shù),一個(gè)是glibc中有的basename函數(shù),另一個(gè)是自定義的查找第一個(gè)非空白字符的str_fnws函數(shù)。之所以將basenmae函數(shù)在這里定義出來,主要是為減少對(duì)glibc的依賴性,在這里看起來好像沒有必要。但是在將來需要再次用到dirname函數(shù)的時(shí)候就能明白為什么將這種函數(shù)單獨(dú)拿出來。細(xì)心的朋友可能會(huì)發(fā)現(xiàn)內(nèi)核中將glibc中大量的庫函數(shù)都重新進(jìn)行了定義,原因何在??jī)?nèi)核需要使用靜態(tài)連接而不能使用動(dòng)態(tài)連接,因?yàn)樵趦?nèi)核啟動(dòng)之前是無法利用到任何動(dòng)態(tài)連接庫的。這樣只將需要的函數(shù)單獨(dú)拿出來可以減小可執(zhí)行代碼。9. strings.h 該文件是strings.c相應(yīng)的頭文件。10. tty.c 這是本項(xiàng)目最重要的文件,它將串口編程進(jìn)行了封裝。定義了tty_open, tty_read, tty_write, tty_close等幾個(gè)非常重要的函數(shù)。為了發(fā)送文件,它還定義了tty_send_file函數(shù)。11. tty.h 該文件是tty.c相應(yīng)的頭文件。12. sdb.c 該文件是sdb的主文件。13. ssf.c 該文件是ssf的主文件。
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -