2017-02-28 97 views
0

所以我啓用了BBB上的UART-1。我已經嘗試通過termios & stty來設置它以使用標記/空格奇偶校驗。根據doc它支持這一點。BBB標記/空格奇偶校驗

termios的設置:

options.c_cflag &= ~CSTOPB;  
options.c_cflag &= ~CSIZE;   
options.c_cflag &= ~CRTSCTS;   

options.c_cflag |= CS8; 
options.c_cflag &= ~PARODD; 
options.c_cflag |= PARENB; 
options.c_cflag |= CMSPAR; 

options.c_oflag = 0; 
options.c_lflag = 0; 
options.c_iflag &= ~(IXON | IXOFF | IXANY | IGNBRK); 
options.c_iflag |= INPCK | PARMRK; 

stty的輸出:

speed 9600 baud; rows 0; columns 0; line = 48; 
intr = }; quit = ^A; erase = <undef>; kill = ^P; eof = M-4; eol = M-`; eol2 = <undef>; swtch = M-^X; 
start = E; stop = M-p; susp = M-6; rprnt = $; werase = M-6; lnext = 8; flush = M-^Y; 
min = 182; time = 174; 
parenb -parodd cmspar cs8 -hupcl -cstopb -cread clocal -crtscts 
-ignbrk -brkint -ignpar parmrk inpck -istrip -inlcr -igncr icrnl -ixon -ixoff iuclc -ixany -imaxbel 
-iutf8 
-opost -olcuc -ocrnl -onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0 
-isig -icanon -iexten -echo -echoe -echok -echonl -noflsh -xcase -tostop -echoprt -echoctl -echoke 

測試:

echo -e "\x30\x31\x30" > /dev/ttyO1 

個預計業績:

000110000 000110001 000110000 

實際結果:

000110000 100110001 000110000 

我似乎無法找出我要去哪裏錯了。就像我說的,文檔似乎說它應該工作,並且我知道如果我進入內核並且可以使用標記/空格奇偶校驗來映射omap-serial。我不想維護一個黑客攻擊的內核,但是這樣的事情很微不足道。

任何指針將不勝感激!

+0

*「我嘗試設置它以使用標記/空間奇偶校驗」* - 標記和空格是兩種不同的狀態。您只能選擇一個奇偶校驗配置。它是什麼?你的*「結果」*沒有意義,因爲你沒有描述兩端的實際串行配置。 *「就像我說的,文檔似乎說它應該工作」* - 你學習了* termios * ** man **頁面嗎?您是否滿足** _ BSD_SOURCE **或** _ SVID_SOURCE **要求?順便說一句,這是配置* termios *的低質量代碼。請參閱http://www.chemie.fu-berlin.de/chemnet/use/info/libc/libc_12.html#SEC237 – sawdust

+0

首先,通過標記/空格,我只是指棍子或cmspar。其次,我明確地給出了我的設置和預期結果......兩者都清楚地說明了空間平價。第三,我沒有使用邏輯分析儀的輔助設備,所以..yeah。第四,它的示例代碼來說明問題並詢問我是否錯過了配置掩碼。謝謝你的時間,但是你的評論是無用的,因爲如果你在硬件上可能的話,或者從termios的角度來看可能犯的錯誤,你真的沒有解決。 –

回答

0

從來沒有發現,爲什麼,奇偶不是從用戶空間的工作,所以不是擺弄的termios的黑客,試圖以支持9位UART,我只是跳過的PRU,一切都運行平穩。使用STICK奇偶校驗沒有問題。