请教串口UART1驱动的问题

发布于 2022-09-23 13:13:22 字数 1786 浏览 24 评论 0

基于S3c2410,linux2.6内核,自己写驱动模块实现UART1的简单通信(不要中断或DMA)。下面是我写的驱动模块中的write函数,val保存的是从UTRSTAT寄存器中读取的数据,while (!val & 0x4)意思是发送数据直到传输buffer寄存器为空。但是感觉我的数据发不出去呢,因为val的值一直是0(也就是传输buffer非空)。程序就一直在这个while()里循环,请问哪位前辈知道是什么原因吗?我的这个程序本身有没有问题?
ssize_t uart1_write(struct file *filp, const char __user *buff, size_t count, loff_t *offp)
{
        char kernel_buf;
        int val,i;
        struct scull_uart1_device *dev = (struct scull_uart1_device*)filp->private_data;

        printk(KERN_INFO"user buf: %d\n", *buff);
        val = __raw_readl(S3C2410_VA_UART1 + S3C2410_UTRSTAT);
       
        while (!val & 0x4){
                mdelay(500);
                if (copy_from_user(&kernel_buf, buff, count)) {
                        printk(KERN_ALERT "Copy from user error.\n");
                    return -EFAULT;
                }
                printk(KERN_INFO"val = %d\n", val);
                __raw_writel(kernel_buf, S3C2410_VA_UART1 + S3C2410_UTXH);
                val = __raw_readl(S3C2410_VA_UART1 + S3C2410_UTRSTAT);
                int i;
        }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

醉殇 2022-09-30 13:13:22

那个int i 忘了去掉了,没作用的

总攻大人 2022-09-30 13:13:22
  1. #define UFSTAT1                (*(volatile unsigned *)0x50004018)
  2. #define UTXH1                 (*(volatile unsigned char *)0x50004020)
  3. void uart1_write_char(char ch)
  4. {
  5.         // 等待发送缓冲区为空
  6.         while(UFSTAT1 & 0x200)
  7.         {
  8.                 ;
  9.         }
  10.         UTXH1 = ch;
  11. }
  12. ssize_t uart1_write(struct file *filp, const char __user *buff, size_t count, loff_t *offp)
  13. {
  14.         char* kb=kmalloc(count,GFP_KERNEL);
  15.         copy_from_user(kb,buff,count);
  16.         for(;count>0;count--)
  17.         {
  18.                 uart1_write_char(*kb++);
  19.         }
  20.         kfree(kb);
  21. }

复制代码

风轻花落早 2022-09-30 13:13:22

哎 搞懂了 程序都写错了!亏我想了一天班
不好意思啊

但可醉心 2022-09-30 13:13:22

呵呵,要从逻辑上进行验证

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文