Re: [問題] ARM板 RS232互傳問題請教~

看板LinuxDev作者 (林約翰)時間15年前 (2009/01/09 09:15), 編輯推噓1(101)
留言2則, 1人參與, 最新討論串3/3 (看更多)
※ 引述《JohnLinq (林約翰)》之銘言: : ※ 引述《a910937 (skura)》之銘言: : 你是在Linux kernel裡面作編程嗎? : -- : ※ 發信站: 批踢踢實業坊(ptt.cc) : ◆ From: 61.221.140.178 : → TroyLee:不同家出的 ARM 的 Register 不一定是一樣的喔~ 12/18 14:43 : 推 a910937:我不是在kernel下的,我的是s3c2410的版子 12/25 14:27 : → JohnLinq:那你的板子上面是跑Linux嗎? 12/29 13:27 : → JohnLinq:如果是跑Linux,你的程式又不在Kernel裡面 12/29 13:28 : → JohnLinq:那你是怎麼存取Register的? 12/29 13:29 : 推 a910937:我的是LINUX系統,s3c2410規格裡面有寫到有UART有fifo暫存 01/07 15:38 : → a910937:他寫UART各有16byte FIFOs,這樣應該可以儲存資料吧??^^" 01/07 15:40 我對這些東西也不是很懂啦, 我簡單說明一下,以求拋磚引玉。 請參考:http://www.jollen.org/blog/2006/12/linux_device_driver_io_3.html [開始轉錄] Linux 驅動程式的 I/O, : kernel-space 與 user-space 的「I/O」 ^^^^^^^^^^^^^^^^^^^^^^^^^^ 任何作業系統底下的「驅動程式」,都需要分二個層面來討論所謂的「I/O 處理」: 1. 實體層:驅動程式 v.s. 硬體。 2. 虛擬層:驅動程式 v.s. user process 1. 驅動程式與 user process 的 I/O;等於 2. 驅動程式與 user process 間的 data communication;等於 3. kernel-space 與 user-space 間的 data communication。 1. user-space 無法「直接」存取 kernel-space 的記憶體。 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2. 「Linux device driver」與「user-space」間的 I/O 會與 fops->read、 fops->write 與 fops->ioctl 共三個 system call 有關。 [轉錄結束] 你寫的是user process,無法直接存取硬體。 (無法直接存取UART相關的位址/暫存器) (這是一種作業系統所提供的保護機制) 當然,我聽說.近幾年.有一些User-Space的driver出現, 這些User-Space-driver主要是用在'XWindow顯示驅動'以及'USB-Device'。 另外,UART硬體上的16bytes FIFO,不是給軟體使用的,那是硬體本身的緩衝。 你可以改用無需作業系統的方式,來使用你的S3C2410, 用KEIL-C之類的工具來開發你的軟體,不要透過Linux。 XD -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.221.140.178

01/11 17:17, , 1F
謝謝您,原來這就是我一直無法控制UART暫存器的主因@@
01/11 17:17, 1F

01/11 17:18, , 2F
我會再想辦法看能否用read write方式來讀寫資料,謝謝您^^
01/11 17:18, 2F
文章代碼(AID): #19PgKhLY (LinuxDev)
文章代碼(AID): #19PgKhLY (LinuxDev)