小組成員:201452114張寧、20145219宋歌
linux
將實驗所需代碼拷貝到bc共享文件夾中ios
實驗代碼在老師提供的02_pthread
和03_tty
文件夾中
緩存
編譯pthread.c
安全
編譯term.c
bash
在超級終端中運行可執行文件pthread
多線程
在超級終端中運行可執行文件term
函數
armv4l-unknown-linux-gcc pthread.c -o pthread -lpthread
命令編譯pthread.c文件時出錯,提示bash:armv4l-unknown-linux-gcc:command not found
解決方法:通過理解錯誤提示,發現是環境變量沒有配置成功,進入/root/.bash_profile
從新配置後便可編譯成功(先開始hello.c也沒編譯經過,咱們一時沒有想到解決方法就繼續向後作了,後來改正這個錯誤後都編譯成功了)
線程
term
時出錯,提示/dev/ttyS0: No such file or directory
解決方法:老師給的實驗指導書中說:這個問題是由於在 Linux 下串口文件位於/dev 下,通常在老版本的內核中串口一爲/dev/ttyS0 ,串口二爲 /dev/ttyS1, 在咱們的開發板中串口設備位於/dev/tts/下,由於開發板中沒有ttyS0這個設備,因此咱們要創建一個鏈接。解決方法就是按照實驗指導書說的在超級終端中進入/dev文件夾中,輸入命令ln –sf /dev/tts/0 ttyS0
(注意空格與字母l、數字0。)
設計
pthread.c分析3d
先設置一個整數的圓形緩衝區,並初始化緩衝區(初始化緩存指針信息(信號量)),再向緩衝區中寫入一個整數,接着從緩衝區中讀出一個整數(此步驟與寫入相似),而後實現一個生產者程序:生產者線程不斷順序地將0到1000的數字寫入共享的循環緩衝區,當生產-1時,程序終止;或者消費掉緩存中生產出來的數據:消費者線程不斷地從共享的循環緩衝區讀取數據,當消費-1時,程序終止。最後,等待生產者、消費者進程結束。
這個代碼是生產者-消費者問題模型
的實現。
term.c分析
先經過標準的文件打開函數打開串口,接着設置串口,包括:波特率設置、效驗位和中止位設置(串口的設置主要是設置struct termios結構體的各成員值),而後把串口看成文件讀寫,最後關閉串口。
本次實驗是《實驗二:固件開發》,從實驗的操做流程上看,此次實驗與實驗一的步驟基本相同,惟一的不一樣就是編譯.c文件時的命令加了參數-lpthread
,這是由於本次實驗的兩個代碼是與多線程相關的代碼,編譯時須要加-lpthread 的庫。我以爲此次實驗的重點應該是在實驗一的基礎上熟練掌握開發流程,並讀懂實驗示例代碼。這兩個代碼明顯比咱們第一次實驗的hello.c複雜了n倍,其中所包含的知識點也有不少,須要花時間去理解和體會。實驗課堂上可能缺少充足的時間和安靜的環境讓咱們理解代碼,所以,咱們要利用課下的時間把這方面完成。