uart串列埠驅動程式移植
uart串列埠驅動程式移植
仇潔婷,陳儒軍
在嵌入式控制系統採集站的設計方案中,需要用到
at91rm9200的5
個uart
串列埠,就會涉及到多個中斷的優先順序分配問題,而且也可能造成序列通訊的中斷不能及時響應,從而造成資料丟失。在
linux2.6.21
核心中,
uart
驅動程式成功地解決了這個問題,它採用了
dma傳輸的序列通訊方式。
dma(
direct memory access
)是一種高速的資料傳輸操作,在外部裝置和儲存器之間直接讀
/寫資料,提高了通訊的可靠性。
linux
對串列埠驅動支援很完善,具有統一的程式設計介面。包含3
層:tty
核心、tty
線路規範和
tty驅動。
tty核心層向上提供統一的訪問介面,使得使用者不必關注具體終端的型別。
tty線路規範指定資料互動的形式。
tty驅動層用來操作硬體。一般只需針對不同的串列埠功能在
tty驅動層中新增相應的配置巨集即可。本系統將
linux-2.6.21
打上at91rm9200dk
體系結構的補丁後,基本上就能夠使用
uart
裝置驅動。
根據本系統的硬體設計要求,還需進行如下修改:
一、
註冊串列埠次裝置號
在linux2.6
核心中,就只引出了
2個串列埠的驅動註冊資訊,需要增加其他
3個串列埠。可以在
linux2.6.21/arch/mach-at91/board-dk.c
檔案中只定義了
debug uart
和uart1
,因此要改為
.nr_tty = 5,
.tty_map =
uart0
、uart1
、uart2
、uart3
和debug uart
這些串列埠和裝置名稱、裝置號、次裝置號的對應關係如下表:
串列埠
裝置名稱
裝置號次裝置號
uart0
/dev/ttys1 4
1uart1
/dev/ttys2 4
2uart2
/dev/ttys3 4
3uart3
/dev/ttys4 4
4debug uart
/dev/ttys0 4
0 在本方案中,需要用到
uart0
和uart2
串列埠的時鐘訊號
sck,但是在
linux2.6
核心的串列埠驅動程式中,並沒有引出
uart0
~uart3
所帶有的時鐘訊號,所以需要進行修改。
二、
註冊時鐘訊號sck引腳
在at91rm9200
晶元的定義中,
uart0
和uart2
串列埠的時鐘訊號
sck分別是
pa19
和pa24
管腳中的外設
a功能,因此,需要用
at91_set_a_periph
函式把pa19
和pa24
引腳賦予
periph a。
在linux-2.6.21/arch/arm/mach-at91/at91rm9200_devices.c
檔案中的
configure_ usart0_pins
和configure_usart2_pins
函式中增加:
at91_set_a_periph(at91_pin_pa19, 0);
at91_set_a_periph(at91_pin_pa24, 0);
三、設定uart模式暫存器的clko
uart
模式暫存器
us_mr
中提供了
uart
時鐘的設定位
clko
。若clko
設定位為0,
uart
不驅動sck
引腳;clko
設定位為
1,如果
us_mr
暫存器的
usclks
設定位(時鐘選擇)沒有選擇外部時鐘
sck,則
uart
驅動sck
引腳。在
/linux-2.6.21/drivers/serial/atmel_serial.c
檔案中,
usclks
設定位沒有選擇外部時鐘
sck,則只需要在
atmel_set_termios
函式中設定
clko
位即可。
uart_put_mr(port, mode | atmel_us_clko);
uart 串列埠,驅動,移植
因為要用到at91rm9200的串列埠功能,所以搜尋到這篇文章,寫得很簡潔易懂。專案還沒做完,先將資料放到這裡,等做好專案再總結具體串列埠的使用過程
AT91RM9200 啟動過程詳解
最近,一直在做ramdisk,把arm linux的啟動過程完整的看了一遍,收穫不少,心想可以寫點原創了。考慮到網上的文件雖然有介紹arm linux的啟動過程的,但是一般沒有給出流程圖,也講的十分零星,沒有乙個全貌,我就主要以流程圖的方式給出,再一點一點的詳解每個過程,剛剛接觸嵌入式arm lin...
AT91RM9200的啟動過程
系統上電,檢測bms,選擇系統的啟動方式,如果bms為高電平,則系統從片內rom啟動。at91rm9200的rom上電後被對映到了0x0和0x100000處,在這兩個位址處都可以訪問到rom。由於9200的rom中固化了乙個bootloaer程式。所以pc從0x0處開始執行這個bootloaer 準...
AT91RM9200啟動機制簡析
at91rm9200啟動機制簡析 本文以h9200m開發板為例,簡單分析一下at91rm9200處理器的啟動機制 一 h9200m開發板簡介 at91rm9200晶元的pa31 bms引腳的電平高低來決定選擇哪種啟動模式 at91rm9200 atmel 公司生產的基於arm9核的soc處理器.以下...