Re: [問題] ARM板 RS232互傳問題請教~
※ 引述《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
01/11 17:17, 1F
→
01/11 17:18, , 2F
01/11 17:18, 2F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 3 篇):