頻譜儀多種內核通信機制的方案設計
4.1 HPI設備驅動(dòng)程序實(shí)現
4.1.1 物理地址到虛擬地址的映射
寫(xiě)Linux設備驅動(dòng)的第一步,是完善頭文件中的宏定義,除了各種參數的定義外,主要是實(shí)現硬件寄存器的物理地址到虛擬地址的映射。對于硬件寄存器的操作,其實(shí)就是對其物理地址進(jìn)行讀寫(xiě)操作。而Linux系統提供了一種內存管理機制,在這種機制下,程序可以使用比真實(shí)物理地址大得多的地址空間,稱(chēng)為虛擬地址。Linux系統中程序的操作部是使用虛擬地址,所以要完成物理地址到虛擬地址的映射。本課題采用ioremap函數的方法,如下:
#define AT91C_SMC_CSR2*(volatile unsigned long*)ioremap(0xFFFFFF78.4)
對于ioremap函數,就是將物理地址0xFFFFFF78開(kāi)始的4字節的地址映射到虛擬地址空間中,返回值即4字節虛擬地址的首地址,賦給宏定義的變量名AT91C_SMC_CSR2。對宏定義的操作即對物理地址的操作。
4.1.2 HPI驅動(dòng)的初始化
首先是對HPI硬件的初始化以及中斷初始化。對于HPI,主要是重置DSP,已完成時(shí)序的同步。設置SMC(靜態(tài)存儲控制器),因為ARM跟DSP的HPI通信是使用PIO線(xiàn)復用。最后向DSP發(fā)送握手信號,表示初始化完成。對于中斷的初始化,使用:
request_irq(AT91C_ID_IRQ0,handler,SA_INTERRUPT,”irqO”,NULL);

評論