- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
运行 Linux (linaro) 的 Snapdragon 410c ttyMSM1 (msm_serial) 是否能够原生提供 DMX 协议(protocol) 250,000 波特率?
root@linaro-developer:~# stty -F /dev/ttyMSM1 cs8 -parenb cstopb 250000
stty: invalid argument ‘250000’
Try 'stty --help' for more information.
250000 不在 kernel/drivers/tty/tty_ioctl.c:baud_table[] 中支持的波特率列表中,setserial 自定义 38400 波特率命令没有正确覆盖波特率。
root@linaro-developer:~# setserial -av /dev/ttyMSM1 spd_cust
[ 491.312449] msm_serial 78af000.serial: setserial sets custom speed on ttyMSM1. This is deprecated.
在此处交叉发布(在我努力寻找答案时,我会保持两个版 block 同步): http://www.96boards.org/forums/topic/linaro-ttymsm1-uart0-dmx-250000-baudrate/#post-17264
最佳答案
我遇到了类似的问题,无法为我的案例找到正确的工具,所以我决定自己编写代码会更快。下一段代码使用 termios2
API(和 BOTHER
标志,Andy Shevchenko 在他的评论中提到)为串行端口设置自定义波特率。
从未查看过您的串行驱动程序代码,但您可以先尝试这段代码:
main.c:
#include "termios2.h"
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <errno.h>
#include <unistd.h>
#include <sys/ioctl.h>
int main(int argc, char *argv[])
{
struct termios2 tio;
int fd, ret, speed;
if (argc != 3) {
printf("%s device speed\n\n"
"Set speed for a serial device.\n"
"For instance:\n %s /dev/ttyUSB0 75000\n",
argv[0], argv[0]);
return EXIT_FAILURE;
}
fd = open(argv[1], O_RDONLY);
if (fd == -1) {
perror("open() error");
return EXIT_FAILURE;
}
speed = atoi(argv[2]);
ret = ioctl(fd, TCGETS2, &tio);
if (ret == -1) {
perror("TCFETS2 error");
close(fd);
return EXIT_FAILURE;
}
/* Speed settings */
tio.c_cflag &= ~CBAUD;
tio.c_cflag |= BOTHER;
tio.c_ispeed = speed;
tio.c_ospeed = speed;
/* Ignore CR (\r) characters */
tio.c_iflag |= IGNCR;
ret = ioctl(fd, TCSETS2, &tio);
if (ret == -1) {
perror("TCSETS2 error");
close(fd);
return EXIT_FAILURE;
}
close(fd);
return 0;
}
termios2.h:
/* The content for this file was borrowed from:
* /usr/include/asm-generic/termbits.h
*
* We can't just include <asm/termios.h>, because it will interfere with
* regular <termios.h> (compiler will give some errors).
* So it's better to copy needed stuff here instead.
*/
#ifndef TERMIOS2_H
#define TERMIOS2_H
#include <termios.h>
/* termios.h defines NCCS as 32, but for termios2 we need it to be 19 */
#undef NCCS
#define NCCS 19
#define BOTHER 0010000
struct termios2 {
tcflag_t c_iflag; /* input mode flags */
tcflag_t c_oflag; /* output mode flags */
tcflag_t c_cflag; /* control mode flags */
tcflag_t c_lflag; /* local mode flags */
cc_t c_line; /* line discipline */
cc_t c_cc[NCCS]; /* control characters */
speed_t c_ispeed; /* input speed */
speed_t c_ospeed; /* output speed */
};
#endif /* TERMIOS2_H */
构建:
$ gcc -Wall -O2 main.c -o set-tty-speed
用法:
$ ./set-tty-speed /dev/ttyMSM1 250000
关于linux - APQ-8016 骁龙 410c : non-standard UART baudrate in Linaro,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39430035/
我正在尝试使用 Linaro 6 进行编译,但我收到了这个错误,我认为这与 GCC 6 有什么关系?我在编译内核或编码方面非常业余,但即使搜索类似的术语我也无法弄清楚: CC drive
我无法让 CMake 找到带有 Linaro ARM 工具链的线程(我尝试了几种不同的工具)。这是我所做的: 已下载 gcc-linaro-4.9-2015.05-x86_64_arm-linux-g
我想知道OPTEE项目的调度器是哪部分代码 https://github.com/OP-TEE 。 更具体地说,代码决定多核架构的安全世界和普通字进程在哪个 CPU 上运行。 真诚地感谢任何建议。 最
我试图建立和创建一个Yocto环境,在这里我遇到了元开放嵌入式,元linaro和poky。我的理解是: Yocto:创建一个定制的linux环境,该环境要求: 单板的BSP。 工具类 编译器和许多其他
我必须使用 linaro 为 odroidxu4 创建一个 hwpack。 目前我正在关注这个link创建一个 hwpack。 我在/temp 中有 uboot、linux、uboot 和 first
我正在使用 ARM arch64 的 linaro g++ 来编译一个简单的 cpp 文件: int main() { char *helloMain = "main module
我有一台 Ubuntu 14.04 Trusty 64 位机器。我的操作系统和内核都是 64 位的 uname -a Linux --- 3.13.0-43-generic #72-Ubuntu S
我正在尝试在运行 Linaro Ubuntu 变体的 Chipsee 平板电脑上实现信息亭式启动。 我想关闭出现的四个企鹅,然后是通常的一长串启动消息。 Grub 不存在,引导加载程序是 U-Boot
我有一个带有一个 thumb2 (T32) 指令的简单汇编文件 (temp.S)。例如: 或 R4,R7,R8 我想用 linaro 汇编器组装它,但我找不到合适的标志来做到这一点。 如果我尝试: a
大家好我正在使用 Linux linaro 版本 3.1 启动 pandaboard。 一切正常,但以太网无法工作。 我该如何解决这个问题? 当我启动时,这里有一些输出,以便我们可以更好地解释情况。
我正在尝试在 32 位 Ubuntu 10.04 虚拟机上使用 Linaro 工具链为 ARM 构建带有调试符号的 glibc-2.13。根据我的研究,执行此操作的步骤(以及我已采取的步骤)如下所示:
我正在使用 GCC Linaro编译我的代码的编译器。它从 libio.h 中抛出错误 unknown type name size_t。它包含在 stdio.h 中。在我的代码中,我只包含 stdi
我从 https://launchpad.net/gdb-linaro/ 下载了 gdb 源代码. 我想为 aarch64 构建 gdb。 如 README 文件中所述,我将 CC 设置为我拥有的交叉
我想获取带有源代码行和文件名的反汇编二进制文件。我添加了选项-g作为编译选项,以下是cmake文件中的设置。 SET(CMAKE_CXX_COMPILER "/home/desword/gcc-lin
我正在尝试使用 2012.06 版的 Linaro 工具链 Windows 二进制文件 (https://launchpad.net/linaro-toolchain-binaries/trunk/)
运行 Linux (linaro) 的 Snapdragon 410c ttyMSM1 (msm_serial) 是否能够原生提供 DMX 协议(protocol) 250,000 波特率?
我使用的选项: -O3 -march=armv7-a -mtune=cortex-a8 -ftree-vectorize -mfloat-abi=softfp -fsigned-char -Wall
我正在为 SBC Pine64 开发一个 bsp 层,我的图像已成功生成,但在启动 init 时出现“FATAL: kernel too old”来自 busybox。我检查了我的 busybox 二
在我看来完全有效的代码中出现了段错误。 这是一个最小的重新创建示例: #include #include void func() { /* do nothing; thread conte
我在 Ubuntu 10.04 主机上使用以下命令与 Linaro 工具链交叉编译了适用于 ARM 的 Valgrind (http://valgrind.org/downloads/valgrind
我是一名优秀的程序员,十分优秀!