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波特率打开串口:

Zephyr重定向日志打印到USB串口的更多相关文章

  1. linux下USB串口,minicom

    [一].驱动相关说明: 如果直接使用串口线,而没有用到USB转串口设备,就不需要安装驱动. 如果使用了USB转串口,一般情况下也不需要安装驱动了,目前linux系统已经包含了该驱动,可以自动识别,亦可 ...

  2. linux内核打印数据到串口控制台,printk数据不打印问题

    linux内核打印数据到串口控制台问题 原文来源:http://i.cnblogs.com/EditPosts.aspx?opt=1 1.查看当前控制台的打印级别 cat /proc/sys/kern ...

  3. Android Studio中JNI程序的单步调试和日志打印

    近日有个算法(检测碰撞)需要用C++实现,目的是IOS和ANDROID中共享同一段程序. 下面说说android调用这段程序过程中遇到的一些事情.(过程中网上搜索了一些相关文章,大部分说的是eclip ...

  4. macbook pro的usb串口失效的的处理方法

    macbook pro的usb串口失效的的处理方法 2011-08-24 12:14:32|  分类: mac|举报|字号 订阅     今天开电脑,无端端一个usb的串口失效了,接入鼠标 iphon ...

  5. nginx反向代理nginx,RealServer日志打印真实ip

    title: nginx反向代理nginx,RealServer日志打印真实ip date: 2016-05-11 19:15:37 tags: --- nginx反向代理nginx,RealServ ...

  6. android的Log日志打印管理工具类(一)

    android的Log日志的打印管理工具类: package com.gzcivil.utils; import android.util.Log; /** * 日志打印管理 * * @author ...

  7. android设备使用usb串口传输数据

    首先介绍两个开源项目一个是Google的开源项目:https://code.google.com/archive/p/android-serialport-api/ 另一个是我们这次介绍的开源项目:h ...

  8. Dos命令打印文件以及Dos打印到USB打印端口

    MS-DOS命令范例 要将当前目录中的 Report.txt 发送到连上本地计算机的 LPT2,请键入: print /d:LPT2 report.txt 要将 c:\Accounting 目录中的 ...

  9. C++日志打印

    C++日志打印: %d              十进制有符号整数 %u              十进制无符号整数 %f              浮点数 %s              字符串 % ...

  10. nginx1.14.0日志打印

    nginx日志打印 http属性log_format来设置日志格式 ,参考 https://www.jb51.net/article/52573.htm  <nginx日志配置指令详解> ...

随机推荐

  1. Solution -「SDOI 2017」「洛谷 P3706」硬币游戏

    \(\mathscr{Description}\)   Link.   给定 \(n\) 个长度为 \(m\) 且两两不同的字符串 \(S_{1..n}\), 字符集 \(|\Sigma|=2\). ...

  2. HttpClient.PostAsynct 发送Json数据

    HttpClient.PostAsync第二个参数设置HttpContent 发送Json数据. 需要这是这个content.Headers.ContentType = new System.Net. ...

  3. 【Maven】---操作指南

    Maven坐标与依赖 最近想深度学习下maven,找到一本书叫<Maven实战>,这本书讲的确实很好,唯一遗憾的是当时maven教学版本是3.0.0的,而目前已经到了3.5.4了,版本存在 ...

  4. linux:MariaDB安装

    介绍 链接 安装 查看系统中是否已安装 rpm -qa | grep -i mariadb 返回结果类似如下内容,则表示已有 MariaDB 的包 为避免安装版本不同造成冲突,请执行以下命令移除已安装 ...

  5. win10 linux子系统的一些想法

    什么是linux子系统 具体的概念网上很多,作为个技术人简单粗暴来说就是微软脑子瓦特,突然爱上了linux, 可以在win10安装linux子系统 子系统不同于虚拟机,但是其优点是安装很快,对于新手和 ...

  6. 解决当前标识(IIS APPPOOL\XXXX)没有对“C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files”的写访问权限的问题

    1.问题描述 在Windows Server2019数据中心版中搭建IIS项目,访问的时候出现如下所示的错误: 当前标识(IIS APPPOOL\XXXX)没有对"C:\Windows\Mi ...

  7. centos7 grub修改

    Centos上的grub文件修改 某一次卸载了swap分区重新设置新的swap分区后系统启动不了了 临时解决办法: reboot 重启服务器 进入grub引导界面 按e编辑 删掉rd.lvm.lv=c ...

  8. NOIp 2024 考试策略

    无论简不简单,都要在前 30min 浏览所有题面,思考哪题可做.哪题不可做,思考能打哪些部分分,9:00 再开始写 T1. 题目简单时 9:00 开写后,30min 以内切完 T1. 9:30 开 T ...

  9. 分合之道:最小生成树的 Kruskal 与 Prim 算法

    最小生成树问题 想象你是一位城市规划师,面前摊开一张地图,标记着散落的村庄.你的任务是用最经济的成本,在村庄间铺设道路,让所有村庄互通.这个问题看似简单,却隐藏着一个经典的数学命题:如何在一张&quo ...

  10. K230学习记录

    K230学习记录 参考自: # 立创·庐山派-K230-CanMV开发板资料与相关扩展板软硬件资料官网全部开源 # 开发板官网:www.lckfb.com # 技术支持常驻论坛,任何技术问题欢迎随时交 ...