AT91RM9200新增串列埠驅動

2021-05-24 00:12:39 字數 2735 閱讀 4786

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處理器.以下...