对话
|
嗨鲍里斯,感谢公关。 hostmot2-firmware repo 是否有一个匹配的分支来实现这个的 FPGA 端? |
|
我在 5i25 模式下使用 6i25,7i75 作为子板。 对于测试组件,只需要一个 PktUART 实例,实例步幅是“通常”的一个: 那我该怎么办?上传 |
|
我刚刚将我们的 hostmot2-firmware 推送到一个新的 github repo,请在那里做一个 PR: https ://github.com/LinuxCNC/hostmot2-firmware 另外,您能否大致描述一下此 PR 的作用、用例是什么以及为什么它是个好主意?帮助我们了解它的含义。 |
|
更新了我的第一条评论。 我是否应该首先证明https://github.com/LinuxCNC/hostmot2-firmware中描述的构建过程可以为我的引脚文件复制? |
| } | ||
| EXTRA_SETUP(){ // names 参数在 ‘prefix’ 中传递。你只需要知道这一点。 |
这让我很难过。让我们将改进 comp 的方式作为一个目标,使这种 hack 变得不必要,并注意当有更好的方法可用时,mesa_pktgyro_test 的这种行为可能会改变。基本上,修复 halcompile 以便例如字符串数组 loadrt 参数是合适的。
你是说这一行https://github.com/LinuxCNC/linuxcnc/pull/48/files#r57522689
EXTRA_SETUP(){ // the names parameters are passed in 'prefix'.吗?
这同样适用于我尝试遵循的模式的 mesa_uart 组件/驱动程序。
是的,那条线和紧随其后的几行。
我想我明白评论是在抱怨文档没有提到“前缀”是 EXTRA_SETUP 的隐式参数。如果是这样,更好的选择是改进文档,而不是散布文档不完整的评论!
我不明白为什么要禁止实例前缀的第一个字符是“m”。你能告诉我更多吗?听起来这是一种防止使用 count= 的粗暴方法,最终也会阻止合法使用。
2016 年 3 月 27 日 14:26,Jeff Epler notifications@github.com写道:
我想我明白评论是在抱怨文档没有
提到“前缀”是 EXTRA_SETUP 的隐式参数。如果是这样,
更好的选择是改进文档,而不是散布
文档不完整的评论!
这是我的错,Boris 刚刚从我原来的 UART
驱动程序中复制了它。
atp
2016 年 3 月 27 日 15:35,Jeff Epler notifications@github.com写道:
安迪,你能打开一个问题来解释为什么这是必要的吗
这是必要的,因为 HAL 与 Mesa UARTS 交互的方式。
在我编写模块时,我想不出一种方法让 hm2
驱动程序知道任何人想对
UART 或 BSPI hostmot2 模块中的任意串行数据做什么。
因此,您使用它们的方式是编写自定义 HAL 组件,
您可以在其中创建引脚并在串行数据和引脚数据之间进行转换。
.comp 需要获取指向 hm2->uart 数据结构的指针才能
与 hostmot2 函数交互。(即,一个 HAL 模块需要直接
访问另一个 HAL 模块的数据)为此,每个 uart 实例都被
赋予一个唯一的名称,其中包括它所在的 FPGA 卡的名称。
然后有一个从 hm2 导出的函数,它爬行通过 hm2_uart
实例尝试将这些实例与 names=
参数进行名称匹配。
名称类似于 hm2_5i25.0.uart.00。如果您使用 count,则
名称类似于 mycustomcomponent.0,因此不会匹配
任何 uart 实例。
我想可以删除字母“m”的测试,
如果 hm2_pktuart_find 函数返回错误,则会触发相同的错误消息
。
如果我再次做同样的事情,我会尝试像 SSI
编码器组件那样做。但是在我写 hm2_uart 的时候,我没有
可以重用的智能串行代码(智能串行代码使得有必要解决
“pin-names.types and counts only known at load time”的问题。)
atp
2016 年 3 月 27 日 14:26,Jeff Epler notifications@github.com写道:
我不明白为什么
要禁止实例前缀的第一个字符是“m”。你能告诉我更多吗?听起来
这是一种防止使用 count= 的粗暴方法,最终也会阻止
合法使用。进一步思考,该测试与其说是“笨手笨脚”,不如说是“粗制滥造”。“names=”的有效条目必须是由 此处
的代码创建的实际实例名称: https ://github.com/sirop/machinekit/blob/PktUART_LinuxCNC/src/hal/drivers/mesa-hostmot2/pktuart.c# L111 这些将始终采用“hm2_<board_name>.NN.pktuart.NN”形式,因此如果 名称==“mesa_pktuart.NN”,您就知道已使用 count= 格式。 不是 “hm2_…..” 形式的 names= 永远不会工作,因为 没有名称匹配。
我可以推荐采用此拉取请求吗?代码对我来说看起来不错,它只能用
包含
pktUART 函数的 Mesa 位文件来执行,目前还没有。
atp
|
我的审查比“彻底”更“快速”,但我没有发现代码有任何大问题。正如您在本期上面看到的那样,我确实附上了一些注释。特别感谢您为新 API 提供手册页文档! 我不认为我们需要在将它添加到 linuxcnc 和将支持代码添加到 hostmot2-firmware 之间获得特定的顺序,但最好是最后两者都有。 |
|
@sirop感谢您解决我的评论意见。我对修改后的版本很满意。 |
|
我刚刚注意到您分支上的提交不符合我们的政策。您必须在提交消息中提供签名行,以证明您是根据我们的许可 GPLv2+ 提交补丁的。有关详细信息, http: //linuxcnc.org/docs/2.7/html/code/contributing-to-linuxcnc.html#_signed_off_by_policy 如果您需要帮助(我的方法涉及使用“git rebase”),请告诉我,我会引导您完成。 完成此操作后,我看不出有任何其他因素阻止我们在我们的主分支中接受它。 感谢您抽出宝贵时间! |
|
是的,我想知道是否有一种优雅的方法可以为我的每个提交添加一个 signed-off-by 行。 |
|
我使用这样的东西:
假定您调用 linuxcnc.org 的 master 分支 origin/master。 在你下次推送到 sirop:PktUART_LinuxCNC 时,你将不得不使用“git push -f”,因为你已经用“git rebase”重写了历史。 |
|
好的,是的 |


签字人:Boris Skegin boris.skegin.de at gmail.com
PktUART aka Packet UART可以理解为一种缓冲的UART。
MESA 卡上的 Rx UART 只有 16 字节的 FIFO 深度,
而 PktUART 实例的 Rx 缓冲区的缓冲区大小为 1024 字节。
因此,最直接的用例是平均数据报大小大于 16 字节的 RS232/RS485 设备。
另一个用例/优势是不需要立即从缓冲区中读出帧/数据报,因为一次可以读取多个数据报/帧。这使得 PktUART 可以容忍与理想/假定线程周期时间的任何偏差。
包含的测试组件展示了 PktUART 驱动程序
与 RS232 设备(工业级陀螺仪)的基本功能。TTL 转换器用于将 RS232 信号转换为 UART。
与 P. Wallace 的一些讨论从https://forum.linuxcnc.org/forum/24-hal-components/30262-reading-uart-rx-count-register-on-mesa-5i25-6i25?limitstart=0#开始69272。