首页 > 其他分享 >Zephyr重定向日志打印到USB串口

Zephyr重定向日志打印到USB串口

时间:2023-10-24 10:57:50浏览次数:34  
标签:使能 USB Zephyr 打印 zephyr 串口 CONFIG

nRF52840DK开发板的例程大多数是从硬件串口打印日志,然后硬件串口在开发板上通过Jlink转换为USB串口,最后打印到电脑上。
这里给出通过52840自己的USB串口打印日志的方法。

zephyr/samples/hello_world例程为例:

修改config

# 使能串口驱动
CONFIG_SERIAL=y

# 使能串口的中断模式(除此之外,还有阻塞、异步两种模式)
# CONFIG_UART_INTERRUPT_DRIVEN=y

# 使能串口流控
# CONFIG_UART_LINE_CTRL=y

# 使能USB协议栈
CONFIG_USB_DEVICE_STACK=y
CONFIG_USB_DEVICE_PRODUCT="Hello world sample"
CONFIG_USB_DEVICE_PID=0x0001

# 使能USB串口
CONFIG_USB_CDC_ACM=y


# 使能Zephyr终端
CONFIG_CONSOLE=y

# 使终端为串口
CONFIG_UART_CONSOLE=y
CONFIG_STDOUT_CONSOLE=y

CONFIG_USB_DEVICE_INITIALIZE_AT_BOOT=y

修改设备树

新建app.overlayboards/<板子名称>.overlay

/* zephyr的系统代码是从chosen节点的`zephyr,console`属性来找串口device的,因此这里修改为我们新建的USB串口 */
/ {
	chosen {
		zephyr,console = &cdc_acm_uart1;
	};
};

/* 在52840的USB设备下新增一个cdc_acm节点,即虚拟串口 */
&zephyr_udc0 {
	cdc_acm_uart1: cdc_acm_uart1 {
		compatible = "zephyr,cdc-acm-uart";
        status = "okay";
	};
};

测试运行

原始的hello world只打印了一次,我们插上USB然后打开串口就会错过日志打印,因此改成循环打印

void main(void)
{   
    int i = 0;
    while(1) {
        k_sleep(K_MSEC(2000));
        printk("Hello World! %s %d\n", CONFIG_BOARD, i++);
    }
}

最后用115200波特率打开串口:

标签:使能,USB,Zephyr,打印,zephyr,串口,CONFIG
From: https://www.cnblogs.com/jayant97/p/17784156.html

相关文章

  • uboot配置usbhost及代码初步分析--Apple的学习笔记
    一,前言之前uboot没配置过usb,但是现在uboot基于DM模型基本和linuxdriver类似了。那么为了学习linuxdriver,我可以先学习uboot来做技术储备也是一样的。而且usb在uboot上应该也有用武之地,所以有必要进行刻意练习。二,分析1,之前对发现driver用了wraper的方式来打包进行绑定,我理解唯一......
  • 解决Linux非root用户读写串口权限问题
    查看串口和基本设置查看串口:ls/dev/ttyUSB*查看参数:stty-F/dev/ttyUSB0设置波特率:stty-F/dev/ttyUSB0speed9600收发数据先打开后台接收:cat/dev/ttyUSB0&发送:echohello>/dev/ttyUSB0可以使用printf做更精确的控制:printf'hello\r'>/dev/ttyUSB0解决"P......
  • 小明哥学linux驱动之USB-OTG(基于gadget框架)【转】
    转自:https://blog.csdn.net/silence3039/article/details/100187666一、简介OTG是On-The-Go的缩写。其设计的初衷是为了两个“外设”在没有PC(Host)的情况下,也可以通过USB进行数据传输。可以理解为,拥有OTG功能的USB设备(OTG设备)既可以做host,也可以做peripheral。二、OTG基本结构2......
  • 无涯教程-Arduino - 外围串口
    串行外围设备接口(SPI)总线是用于串行通信的系统,它最多使用四根导线,通常为三根,一根导线用于数据接收,一根导线用于数据发送,一根导线用于同步,另一根导线用于选择要与之通信的设备,这是全双工连接,这意味着将同时发送和接收数据,最大波特率高于I2C通信系统中的波特率。BoardSPIPins......
  • 关闭小米手机的USB安装提示弹窗(及开发者模式找不到MIUI优化的解决办法)
    结论: 1.设置-更多设置-开发者选项(划到最底部)-关闭“MIUI优化”2.如果没有这个选项,在开发者选项界面底部,找一个重置默认设置之类的按钮,多点几次就出来了。(或执行 adbshellsettingsandputsecuremiui_optimization0 Source:https://xiaomilive.com/how-to-dis......
  • 修改串口节点名称
    需求:3368的老主板更换为3568的新主板,为了app兼容两款主板,要求串口号一致。有个ttyS0的口,需要对应改为ttySWK0跟踪驱动代码:dw8250_probe(drivers\tty\serial\8250\8250_dw.c)-->serial8250_register_8250_port(drivers\tty\serial\8250\8250_core.c)-......
  • 计算机出现鼠标出现乱跳问题(USB485模块识别为鼠标设备)
    原因:计算机把USB485模块识别成“串口鼠标设备”,先给485上电。由于串口上一直有485数据,系统启动时候,误认为串口发送的数据是鼠标数据,从而把串口设备识别成了鼠标设备。解决方法:禁用注册表中sermouse的启动项。具体步骤:1、键盘(win+R),出现运行窗口,输入regedit,回车进入注册表编辑器......
  • FreeRTOS qemu mps2-an385 bsp 移植制作 :串口打印篇
    开发环境Win1064位+VSCode,ssh远程连接ubuntuVMwareWorkstationPro16+Ubuntu20.04FreeRTOSv202212.01(备注:可以在github获取最新版本)qemuqemu-system-armmps2-an385开发板,qemu版本QEMUemulatorversion4.2.1或更高armgcc交叉编译工具链:当前使用gcc编译环境......
  • 2、串口通信
    通信就是各种设备之间的交流,如电脑连接键盘、鼠标、打印机之类的。计算机领域中的通信有两种:串行通信、并行通信。并行通信  -传输原理:数据各个位同时传输。  -优点:速度快  -缺点:占用引脚资源多串行通信  -传输原理:数据按位顺序传输。  -优点:占用引脚......
  • 关于CH32V307 PA6、7引脚复用为串口1和串口7配置方法
    1、复用为串口1配置方法关于PA6和PA7,重映射串口1时,最后下标为3,如下图。换算成二进制为11,重映射对应的就是PA6、PA7,如下图。由于库中没有直接定义该位,因此将PA6、PA7复用为USART1时,需要进行如下操作,如下图。可直接调用GPIO_PinRemapConfig函数,先调用该函数复用为USART1高位,再......