linux內核串口
㈠ 請問如何將linux內核的調試串口設置成用USB轉換的串口輸出
首先,內核前期的輸出信息肯定不能被列印到USB轉的串口上,因為這時內核的USB驅動還沒有載入。等到載入完USB驅動,列印信息才能出來,這時候基本你可以在init文件中重定向到另外一個tty就可以了。具體可以發郵件到[email protected]
㈡ linux下怎麼檢查串口號
以fs2410為例,檢查以下工作
LINUX內核的啟動可分為三個階段:第一階段主要是進行cpu和體系結構的檢查、cpu本身的初始化以及頁表的建立等;第二階段主要是對系統中的一些基礎設施進行初始化;最後則是更高層次的初始化,如根設備和外部設備的初始化。
LINUX內核支持很多的硬體體系結構如X86、ARM、PowerPC、M68K等,但由於新的硬體平台不斷出現,根據新的硬體平台移植內核是嵌入式系統構建的必須工作。2.4.18內核對沒有s3c2410處理器的支持,因此移植過程中需要對新的硬體平台進行定義,添加內核對硬體平台的支持,這也是移植工作的難點。
以fs2410為例,檢查以下修改是否完成
移植LINUX內核到嵌入式POS系統硬體平台涉及的主要文件及目錄有:
Makefile 指定系統框架、交叉編譯工具鏈arch/ARM/config.in添加系統平台的選項以及處理器相關定義
arch/ARM/Makefile 添加系統平台編譯選項
arch/ARM/mm 初始化內存頁表內存映射
arch/ARM/mach-s3c2410/* 添加s3c2410平台的初始化函數
include/asm-ARM/arch-s3c2410/* 添加s3c2410寄存器和板子的定義
arch/ARM/kernel/ Makefile 添加對s3c2410處理器的支持
arch/ARM/kernel/debug-ARMv.S 定義串口列印函數
arch/ARM/kernel/entry-ARMv.S 定義中斷處理子程序
arch/ARM/kernel/head-ARMv.S 內核代碼入口
arch/ARM/tools/mach-types 定義系統號
arch/ARM/boot/compressed/head-s3c2410.S 添加引導代碼
arch/ARM/boot/compressed/Makefile 添加編譯選項
arch/ARM/boot/Makefile 添加內核映像生成選項
㈢ linux串口最高波特率
一般最大一一5二00,建議不要嘗試更高波特率,我曾經設置一個CDMAmodem波特率為一一5二00以上,好像是二三XXXX,結果再也無法連上,不得不返廠恢復,分析,可能是PC的串口硬體不支持那麼高波特率,雖然設備支持。怎麼說呢,傳統的9針是沒有辦法的,雖然可設定數值有很多,兩台計算機實現的是一一5.二K與工業通訊,通常最大達到一9.二K,工業非數據型,默認9陸00通用型,比較穩定,而且也是一些諧振設備比較推薦的波特率但如果是虛擬串口,則不不受此限制,可以設得更大,比如USB轉串口出來的,以及其他介面方式轉換在串列輸出,但看具體情況而定,USB轉出的,最大能達到T一標准,即一.5
㈣ Linux C 配置串口
配置串口需要包含頭文件
其中最核心的配置結構體為:
如何獲取該結構呢?我們操作串口跟操作文件一樣,也是調用 open() 函數來打開串口,
這樣我們就能夠得到一個文件描述符 fd ,然後就可以調用 tcgetattr() 函數來獲取上述配置結構體了。
Linux 串口默認的配置為:波特率 9600,數據位 8 位,無奇偶校驗,停止位 1 位,無 CTS/RTS 。
以下介紹一些常用的配置項:波特率、奇偶校驗、數據位、停止位、硬體控制流。
相關介面:
Linux 將串口的波特率分為了輸入波特率和輸出波特率,不過最常用的場景是將兩者設置成一樣。
cfgetispeed() 函數獲取輸入波特率, cfgetospeed() 函數獲取輸出波特率。 cfsetispeed() 函數設置輸入波特率, cfsetospeed() 函數用於設置輸出波特率,當然 cfsetspeed() 函數擴展為同時設置輸入和輸出波特率。
上述介面中的 speed_t 是一系列波特率的標志位,例如常用的 115200 波特率就為 B115200,參考下述選項:
設置奇偶校驗位可以通過修改 termios 結構體中的 c_cflag 成員來實現,若無校驗,則將 PARENB 位設為 0;若有校驗,則 PARENB 為 1。之後再根據 PARODD 來區分奇偶校驗, PARODD 為 1 表示奇校驗, PARODD 為 0 表示偶校驗。例如設置無奇偶校驗位:
設置數據位可以通過修改 termios 結構體中的 c_cflag 成員來實現,CS5、CS6、CS7 和 CS8 分別代表數據位 5、6、7 和 8。不過在設置數據位之前,需要先用 CSIZE 來做屏蔽欄位,清楚這幾個標志位,例如設置數據位為 8 位:
設置停止位可以通過修改 termios 結構體中的 c_cflag 成員來實現, CSTOPB 位為 1 表示 2 位停止位, CSTOPB 位為 0 標志 1 位停止位。例如設置停止位為 1 位:
設置硬體控制流可以通過修改 termios 結構體中的 c_cflag 成員來實現, CRTSCTS 為 1 表示使用硬體控制流,為 0 表示不使用硬體控制流。例如使能硬體控制流:
當然,最後還需要用 tcflush() 拋棄存儲在 fd 里的未接收的數據。
再利用介面 tcsetattr() 函數將配置信息寫入文件描述符 fd :
這樣整個串口最常用的用法就配置完成了。
具體的配置使用可以參考我的項目 HCI-Middleware 里的 hci_transport_uart_linux.c 文件。
參考:
㈤ linux內核串口輸出
系統啟動、初始化等信息是開機後在屏幕上顯示的,系統定義是標准輸出1或者stdout。你的串口輸出想說那些信息?
㈥ linux系統安裝綠聯串口驅動怎麼安裝
1、在控制台輸入lsmod,先看看能否檢測到這個設備,就看有沒有pl2303字眼可以了。如果有,則不需要再裝驅動。
2、另外如果有的話最好再用dmesg|grepusb查找如果看到:drivers/usb/serial/usb-serial.c:。就說明設備已被識別,然後往下看rivers/usb/serial/usb-serial.c:-2303,usb2-2:PL-(orusb/tts/0fordevfs)如果沒有則需要驅動程序,一般硬體廠商都會提供,如果真的沒有的話就只有到網上下載了,一般2.6內核以上的都支持。
3、安裝完畢後再輸入這個命令瞧瞧,是否安裝成功。lsmod|grepusbserial。如果有usbserial,說明系統支持USB轉串口。
4、驅動安裝完畢後,就需要安裝串口軟體,這里推薦cutecom和puttycutecom安裝sudoapt-getinstallcutecom。putty安裝sudoaptinstallputty或sudopacman-Sputty
5、然後啟動cutecom命令sudocutecom,之後你就可以看到哪些串口正在連接狀態。
6、當開發板啟動後,我們需要傳入elf或bin文件,此時需要用到tftp,在控制台輸入:sudoapt-getinstallxinetd,sudoapt-getinstalltftptftpd並等待安裝完成後,輸入:sudovi/etc/xinetd.d/tftp輸入i,進入插入模式,隨後按esc輸入wq。保存。
7、第一次啟動時和每次更換目錄時都要執行sudo/etc/init.d/xinetdrestart,不然會找不到文件。
8、喜歡用putty的可以在控制台輸入sudoputty運行程序。
㈦ 如何在linux內核模塊中對串口進行讀寫
是的,串口設備也是字元設備呀 但是一般serial 0會被當作console,也就是你在pc上通過超級終端等進去的那個
㈧ linux內核調試串口使用dma方式 是什麼配置
dma方式?
數據量大,速度快
才用這個!
串口用這個?
有些像鐵路上走馬車
㈨ linux 內核 配置串口
由於linux的內核參數信息都存在內存中,因此可以通過命令直接修改,並且修改後直接生效。但是,當系統重新啟動後,原來設置的參數值就會丟失,而系統每次啟動時都會自動去/etc/sysctl.conf文件中讀取內核參數,因此將內核的參數配置寫入這個文件中,是一個比較好的選擇。
首先打開/etc/sysctl.conf文件,查看如下兩行的設置值,這里是:
kernel.shmall = 2097152
kernel.shmmax = 4294967295 如果系統默認的配置比這里給出的值大,就不要修改原有配置。同時在/etc/sysctl.conf文件最後,添加以下內容:
fs.file-max = 6553600
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default = 4194304
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 262144
這里的「fs.file-max = 6553600」其實是由「fs.file-max = 512 * processes」得到的,我們指定processes的值為12800,即為「fs.file-max =512 *12800」。
sysctl.conf文件修改完畢後,接著執行「sysctl -p」使設置生效。
[root@localhost ~]# sysctl -p 常用的內核參數的含義如下。
kernel.shmmax:表示單個共享內存段的最大值,以位元組為單位,此值一般為物理內存的一半,不過大一點也沒關系,這里設定的為4gb,即「4294967295/1024/1024/1024=4g」。
kernel.shmmni:表示單個共享內存段的最小值,一般為4kb,即4096bit.
kernel.shmall:表示可用共享內存的總量,單位是頁,在32位系統上一頁等於4kb,也就是4096位元組。
fs.file-max:表示文件句柄的最大數量。文件句柄表示在linux系統中可以打開的文件數量。
ip_local_port_range:表示埠的范圍,為指定的內容。
kernel.sem:表示設置的信號量,這4個參數內容大小固定。
net.core.rmem_default:表示接收套接字緩沖區大小的預設值(以位元組為單位)。
net.core.rmem_max :表示接收套接字緩沖區大小的最大值(以位元組為單位)
net.core.wmem_default:表示發送套接字緩沖區大小的預設值(以位元組為單位)。
net.core.wmem_max:表示發送套接字緩沖區大小的最大值(以位元組為單位)。