嵌入式Linux中UART上的9位协议

2024-03-16

我正在尝试在嵌入式 Linux 中的 UART 上强制使用 9 位协议。目前我正在 am335x_evm 板上对此进行测试。我计划使用坚持平价来做到这一点。理想情况下,我希望不需要实际修改 omap-serial.c 驱动程序的任何代码。

9 位协议的原因是为了支持一些使用它的传统硬件。对于消息的地址部分,奇偶校验位需要为 1,对于数据部分,奇偶校验位需要为 0,对于终止字节,奇偶校验位需要再次为 1。

我计划在用户空间中运行一个进程,通过标准系统调用(打开、写入、读取、ioctl、tcsetattr 等)与 UART 交互。我将配置 UART 以启用奇偶校验并设置棒奇偶校验。然后我将奇偶校验设置为偶数并调用 write() 发送我的地址数据。然后我将奇偶校验设置为 0 并发送数据。我关心的是,如果我将奇偶校验从 1 更改为 0,什么时候会生效?如果 UART 尚未发送完所有地址数据,奇偶校验的更改是否会应用于所有未发送的数据?


最终编写了我自己的 9 位 uart 驱动程序。是最简单、最有效的解决方案。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

嵌入式Linux中UART上的9位协议 的相关文章

  • simple_read_from_buffer/simple_write_to_buffer 与 copy_to_user/copy_from_user

    我最近编写了一个实现这些功能的模块 两者有什么区别 据我了解 copy user功能更加安全 如果我错了 请纠正我 此外 将这两个功能混合在一个程序中是不是一个坏主意 例如 我用过simple read from buffer在我的杂项开发
  • Android 版 usbmon

    我想分析我的设备的 USB 通信 SGS4 我到处都看到需要配置 usbmon 并将其编译到内核中 Afaik 这个模块没有内置在android linux系统中 我在编译内核方面没有太多经验 但如果有必要 我会这样做 您能说出这样做的步骤
  • 如何使 HSQL 驱动程序正常工作?

    我目前正在学习 Java 中的一些数据库技巧 我发现我正在读的这本好书 在某些时候 它鼓励我尝试与以下类进行手动数据库连接 import java sql DriverManager import java sql Connection i
  • 如何避免来自mongodb的transparent_hugepage/defrag警告?

    我从 mongodb 收到以下关于 THP 的警告 2015 03 06T21 01 15 526 0800 I CONTROL initandlisten WARNING sys kernel mm transparent hugepag
  • 加载linux内核的基地址

    我对内核如何加载到内存有一些疑问 检查后 proc kallsyms我能够找到内核中各种符号的地址 cat proc kallsyms head n 10 00000000 t vectors start 80008240 T asm do
  • 加载内核模块时出现未知符号

    我需要帮助理解为什么在插入模块时出现错误 我努力了this http www linuxforums org forum kernel 56497 unkown symbol module error while insmodding bu
  • Linux用户空间线程、内核线程、轻量级进程

    我对所有这些实体以及它们在 Linux 中如何互连感到有点困惑 Unix 内部原理 一书指出lightweight process LWP 是内核支持的用户线程 并且该内核看不到进程内的线程 对于 Linux 来说仍然如此吗 据我了解 用户
  • syn队列和accept队列的混淆

    在阅读TCP源码时 我发现一个困惑的事情 我知道 TCP 在 3 次握手中有两个队列 第一个队列存储服务器收到的连接SYN并发回ACK SYN 我们称之为同步队列 第二个队列存储3WHS成功并建立连接的连接 我们称之为接受队列 但在阅读代码
  • Linux 内核线程没有地址空间

    为什么Linux内核线程没有地址空间 对于任何要执行的任务 它都应该有一个内存区域 对吗 内核线程的文本和数据去了哪里 内核线程确实有一个地址空间 只是他们都有同一个 这并不妨碍它们各自拥有不同的堆栈 文本和数据放置在内核地址空间 由所有线
  • 如何在Linux内核中启用CONFIG_PREEMPT选项?

    我是 Linux 内核编程的新手 尝试在 x86 64 上使用旧内核 Linux 2 6 32 我想启用其中的 CONFIG PREEMPT 选项 但找不到有关如何执行此操作的信息 我可以使用我的首选选项编译新内核 但不知道在这种情况下我需
  • USB 端口速度 Linux [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 如何以编程方式确定运行 Linux 内核的嵌入式设备中的 USB 端口速度 你可以阅读 sys bus usb devices usb s
  • 套接字对和一对无名管道有什么区别吗?

    我不仅想知道用户端的差异 还想知道 Linux 内核实现中的差异 共同部分 管道是单向的 因此需要两个管道才能进行双向通信 而套接字对是双向的 管道始终是面向流的 而套接字对可以是面向数据报的 套接字对正常AF UNIX套接字 这意味着辅助
  • 在内核模块中执行shell命令

    是否可以在内核模块中执行shell命令 我知道我们可以在用户空间 C 代码中使用system子程序 我正在调试一个存在内存泄漏问题的内核模块 在无限循环中执行 insmod 和 rmmod module ko 后 8G RAM 的系统在几分
  • x86 平台中的 KVM 影子页表处理

    据我了解 在没有硬件支持来宾虚拟到主机物理地址转换的处理器上 KVM 使用影子页表 当来宾操作系统修改其页表时 会构建和更新影子页表 硬件中有没有专门的指令 以x86为参考 来修改页表 除非有特殊说明 否则不会对VMM 造成陷阱 Linux
  • 使用Linux虚拟鼠标驱动

    我正在尝试实施一个虚拟鼠标驱动程序根据基本 Linux 设备驱动程序书 有一个用户空间应用程序 它生成坐标以及内核模块 See 虚拟鼠标驱动程序和用户空间应用程序代码 http www embeddedlinux org cn Essent
  • Linux 源代码中的哪个位置会识别特定的 USB 设备?

    我有一个特定的 USB 设备 我想检查其 Linux 驱动程序源代码 我的理解是 USB 驱动程序执行的第一步是注册自己能够处理具有特定供应商 ID 和产品 ID 的设备 就我而言 供应商 ID 是0BDA产品 ID 是8187 有了这些信
  • 尝试映射大页面 (1GB) 时 mmap 失败

    我做了什么 使用 root 启用大页 我的系统支持 1MB 大页 echo 20 gt proc sys vm nr hugepages 将大页文件系统挂载到 mnt hugepages mount t hugetlbfs nodev mn
  • 从内核空间中的块设备读取

    我正在编写一个内核模块 需要从现有的块设备执行读取 dev 东西 有谁知道有任何其他模块可以执行这些操作 我可以用作参考吗 欢迎任何指点 Linux 2 6 30 如果你真的绝对必须那么使用filp open filp close vfs
  • Linux、ARM:为什么仅当启动时存在 I2C GPIO 扩展器时才创建 gpiochip

    在 imx6sx 硬件平台 NXP 嵌入式 ARM 上使用 Linux 3 14 52 问题是设备树中指定的 PCF8575 I2C GPIO 扩展器不会实例化为 sys class gpio 结构中的设备 除非它们在内核启动期间存在 这些
  • org.postgresql.util.PSQLException:协议错误。会话设置失败

    我知道这些类型的问题已经存在 但提供的解决方案对我不起作用 在我的应用程序中 没有版本不匹配的黑白驱动程序和 PostgreSQL 服务器 我还没有找到任何其他解决方案 我正在使用 PostgreSQL 服务器 9 4 和 postgres

随机推荐

  • 如何在 CollapsingToolbarLayout 内滚动 Recyclerview

    我在 CollapsingToolbarLayout 中有 recyclerview 我希望它可以滚动 但事实并非如此 当我滚动时 appbar 正在滚动 但 recyclerview 却没有滚动 我尝试了不同的方法 但它不起作用 这是我的
  • C#:指定 Dll 引用的位置

    在C 控制台应用程序中 我们可以通过 解决方案资源管理器 引用 然后添加reqd dll的引用 来添加dll引用 在这种情况下 应用程序期望 dll 存在于同一文件夹中 如果没有 那么应用程序将无法工作 抛出异常 是否有可能 如果 dll
  • 对 -finstrument-functions 的未定义引用

    我正在尝试跟踪内核函数并且我正在使用 finstrument functions这样做 但我收到未定义的参考错误 如下所示 arch arm kernel elf c 9 undefined reference to cyg profile
  • 使用 PHP 打乱多个字符串值

    大家好 我每个问题有 4 个选项 每个字符串都带有冗长的句子 我的变量将类似于 option1 option2 option3 option4 我想像 3 2 1 4 一样随机排列这个变量顺序 或者类似地它会像随机一样随机排列函数 我以多种
  • 是否可以使用 npm / package.json 内的环境变量?

    我正在尝试构建一个 package json 以便在 Heroku 上运行 NodeJS 应用程序时 它将使用环境变量运行 script postinstall 步骤 例如 scripts postinstall command ENV V
  • Visual Studio 2017 无法打开源文件

    我是 C 新手 刚刚安装了 Visual Studio Community 2017 我不太知道要使用什么工作流程 所以我凭自己的直觉 当我尝试包括windows h using include
  • FontAwesome Icons 仅在鼠标悬停时旋转?

    在很棒的字体中 我如何使用此代码 i class fa fa spinner fa spin i 仅适用于鼠标悬停 您也可以创建另一个仅用于悬停的类 而不是覆盖该类 fa spin hover hover webkit animation
  • TypeScript 中的扩展如何工作?

    以下 TypeScript 代码 class BaseClassWithConstructor private id number constructor id number this id id class DerivedClassWit
  • 随机数,Math.floor(...) 与 Math.ceil(...)

    我见过很多生成随机数的代码 例如 random integers in the interval 1 10 Math floor Math random 10 1 无论如何 我感觉我失去了一些东西 为什么人们不使用更简洁的方式 Math c
  • 是否可以用符合特定条件的行号填充数组而不循环?

    我想用仅满足特定条件的行的行号填充VBA中的数组 我想要尽可能最快的方法 例如 类似RowArray index valRange valMatch row 下面是 慢速 范围循环的代码 Current Code Sub get row n
  • 构建带有递归函数的.so

    在处理一些项目期间 我遇到了无法构建so库的问题 我收到如下错误 创建共享对象时 不能使用针对符号 的重定位 R X86 64 PC32 使用 fPIC 重新编译最终我设法找到了根本原因 这是库中的递归函数 例如 我有以下众所周知的例子 s
  • Django Channels 错误:您不能在与异步事件循环相同的线程中使用 AsyncToSync

    我试图复制 Django Channels Documentation 中的教程 但我有错误 它说 您不能在与异步事件循环相同的线程中使用 AsyncToSync 只需直接等待异步函数 信息 WebSocket 握手 ws notifica
  • 与从 Cloud Console 创建的项目相比,从 App Engine 控制台创建的项目的功能较少

    当我从 App Engine 控制台创建新应用程序时https appengine google com https appengine google com 该应用程序也会出现在 Cloud Console 上https cloud go
  • 通过套接字获取线路

    是否有一个 libc 函数可以执行与 getline 相同的操作 但可以使用连接的套接字而不是 FILE 流 解决方法是在套接字上调用 fdopen 这样做的时候需要注意哪些事项 这样做 不这样做的理由是什么 这样做的一个明显原因是调用 g
  • 判断表单输入是否有焦点

    我正在 AngularJS 中进行验证 如果有 3 种类型的错误 我会显示一个 div 对于必需的 我只想在页面以空值提交时才显示错误消息 div class error div 对于正则表达式验证 我希望它标记实时的默认行为 div cl
  • jquery onclick 添加左边距

    我正在尝试用 JS 做一些非常简单的事情 但我无法让它工作 我想当点击div添加一个负数margin left到另一个div 但我希望每次点击时都会发生div 而不是像现在这样一次 每次我点击我的 next nav 我想要 nav移动自 1
  • 使用 Devise 注销所有用户

    我在 ruby on rails 应用程序中使用 devise 我有一个使用设备的 User 类和 AdminUser 类 在我的管理面板中 我想注销所有用户 但不注销管理员用户 执行此操作的最佳方法是使用范围级别的注销方法 因此 如果您想
  • TransactionAttribute 注释 (@REQUIRES_NEW) 被忽略

    我遇到了两个单独的事务的问题 这些事务以与实际执行的顺序相反的顺序刷新到数据库 这是业务案例 存在 RemoteJob RemoteJobEvent 一对多关系 每次创建新事件时 都会获取一个时间戳 并将其设置在RemoteJob和Remo
  • 编译器如何知道在哪里可以找到#include

    我想知道 Mac OS X Windows 和 Linux 上的编译器如何知道在哪里可以找到 C 头文件 具体来说 我想知道它如何知道在哪里可以找到带有 lt gt 括号 include Users Brock Desktop Myfile
  • 嵌入式Linux中UART上的9位协议

    我正在尝试在嵌入式 Linux 中的 UART 上强制使用 9 位协议 目前我正在 am335x evm 板上对此进行测试 我计划使用坚持平价来做到这一点 理想情况下 我希望不需要实际修改 omap serial c 驱动程序的任何代码 9