哈喽大家好,这是该系列博文的第一篇~ 篇~

<<【系列博文索引】快速通道 >>

上一篇我们知道了如何安装电脑USB驱动,方便后续的调试和烧录。这一篇我们就来打通串口的调试吧,(当然通过MDE里面的pydbg调试也是可以的)串口除了可以用于调试,也可以用于串口外设的通信

一、前言

犹记得,在使用CSR/QCC3000系列研发产品的时候,通过配置IDE的属性,可实现在线调试,方便又实用。但是到了QCC512x/302x系列,这种方式并没有被沿用,而是采用了fw_live_log,实际测试发现新的方式不太稳定,特别log比较多的时候。

二、灵活运用

考虑到QCC3020/512x系列是由CSR系列升级而来,代码沿用度比较高,那能不能将之前实现过的UART通信移植过来用呢?答案应该是可以的。

三、实践出真知

天马行空的想象,不如动手实践——说干就干:

1、新建app_uart.h,如下

#ifndef __APP_UART_H__
#define __APP_UART_H__
#include <message.h>typedef struct
{TaskData task;Task client;Sink uart_sink;unsigned                  uart_src_need_drop:1;uint8*                 pUartSrcStart;uint8*                    pUartSrcEnd;uint16                  send_packet_length;
}UARTStreamTaskData;
extern UARTStreamTaskData theUARTTask;
Sink UartInit(Task task);
bool UartSendData(uint8 *data, uint16 size);void app_uart_handler(Task t, MessageId id, Message msg);
void my_UartInit(Task client);#endif

2、新建app_uart.c,如下

#include <message.h>
#include <pio.h>
#include "sink_events.h"
#include "sink_config.h"
#include "sink_configmanager.h"
#include "sink_a2dp.h"
#include "app_uart.h"
#include "sink_debug.h"UARTStreamTaskData theUARTTask;
static Sink sUartSink = 0;void app_uart_handler(Task t, MessageId id, Message payload)
{UNUSED(t);UNUSED(payload);switch(id){case MESSAGE_MORE_DATA:{}break;default:break;}
}Sink UartInit(Task task)
{sUartSink = StreamUartSink();if(!sUartSink)return 0;/* Configure sink not to send MESSAGE_MORE_SPACE */PanicFalse(SinkConfigure(sUartSink, VM_SINK_MESSAGES, VM_MESSAGES_NONE));StreamConfigure(VM_STREAM_UART_CONFIG, VM_STREAM_UART_LATENCY);StreamUartConfigure(VM_UART_RATE_115K2, VM_UART_STOP_ONE, VM_UART_PARITY_NONE);//MessageSinkTask(StreamUartSink(), task);MessageStreamTaskFromSink(StreamUartSink(),task);return sUartSink;
}bool UartSendData(uint8 *data, uint16 size)
{if(!sUartSink){return FALSE;}if (!data || size == 0){return FALSE;}if(SinkClaim(sUartSink, size) != 0xFFFF){memmove(SinkMap(sUartSink), data, size);(void) PanicZero(SinkFlush(sUartSink, size));return TRUE;}return FALSE;
}void AppUartInit(Task client)
{theUARTTask.task.handler = app_uart_handler;theUARTTask.client = client;theUARTTask.uart_sink = UartInit(&theUARTTask.task);printVmLogsInTestSystem("uartinit\r\n");
}

3、使用配置工具设置两个IO口为串口,比如我选的是PIO60和PIO61,同时勾选PIO Mapping Assignments

4、修改Subsys7_config3.htf,使用#注释掉IIC的配置,如果有IO口冲突。

四、重点来了

1、修改main.c文件中的一行代码

注释掉改为下面这样:

//printVmLogsInTestSystem()接口中
//AhiPrintVmLogs(print_buffer);
UartSendData((uint8 *)print_buffer, strlen(print_buffer));

2、在main函数中调用AppUartInit(&theSink.task);

欧拉——编译测试一下吧。。。

QCC512x/302x笔记(3)-- 只改一行代码,实现串口输出调试log相关推荐

  1. 谁说.NET没有GC调优,只改一行代码就让程序不再占用内存

    经常看到有群友调侃"为什么搞Java的总在学习JVM调优?那是因为Java烂!我们.NET就不需要搞这些!"真的是这样吗?今天我就用一个案例来分析一下. 昨天,一位学生问了我一个问 ...

  2. 【Python】Modin,只需一行代码加速你的Pandas

    本文翻译自:Shrivarsheni的博客 Modin是一个Python第三方库,可以通过并行来处理大数据集.它的语法和pandas非常相似,因其出色的性能,能弥补Pandas在处理大数据上的缺陷. ...

  3. 【CVPR2020 Oral】只需一行代码就可提升迁移性能

    关注上方"深度学习技术前沿",选择"星标公众号", 精选文章,第一时间送达! 作者:Hassassin 知乎链接:https://zhuanlan.zhihu. ...

  4. 实现一个在JNI中调用Java对象的工具类,从此只需一行代码

    前言 我们知道在jni中执行一个java函数需要调用几行代码才行,如 jclass objClass = (*env).GetObjectClass(obj); jmethodID methodID ...

  5. python实现英文新闻摘要自动提取_利用Python实现摘要自动提取,完美瘦身只需一行代码...

    原标题:利用Python实现摘要自动提取,完美瘦身只需一行代码 今天给大家推荐一个也可以用于关键字提取的算法TextRank,但主要实现的功能是快速从长篇新闻中抽取精准摘要. 前言介绍 TextRan ...

  6. 用Python制作动态二维码,真的只需要一行代码!

    来源 | Python3X(ID:python3xxx) 在最大的同性交友社区GitHub上发现了一个比较有意思的项目,无论你是什么操作系统,只需要一行代码就可以很方便的生成二维码.包括普通二维码.艺 ...

  7. 只需一行代码实现增删查改,微软已经让我们很简单。谈AccessDataSource的使用。...

    这是一个很简单的内容.日常我们总腻烦做增删查改这样的重复性的劳动,如果你的项目不是太大,如果你的团队很小,或许就是你一个人,那么就完全可以参考以下这样简单的方式.微软已经给我们做了.我们只要写一行代码 ...

  8. [JavaScript]只需一行代码,轻松搞定快捷留言-V2升级版

    前天熬了大半宿发了一篇[一行代码轻松搞定快捷留言功能],同时发布了V1.0beta版的快捷留言功能和源代码,之所以是beta版,就是当时感觉虽然基本功能有了,但是还不够完善,特性也不一定合理,今天不知 ...

  9. 模型秒变API只需一行代码,支持TensorFlow等框架

    点击我爱计算机视觉标星,更快获取CVML新技术 本文转自机器之心 参与:一鸣.杜伟 还在为机器学习模型打包成 API 发愁?这个工具能让你一行代码直接打包. 专注于机器学习应用的人们知道,从训练好的模 ...

  10. vscode代码提示只显示一行_模型秒变API只需一行代码,支持TensorFlow等框架

    选自GitHub 机器之心编译参与:一鸣.杜伟 还在为机器学习模型打包成 API 发愁?这个工具能让你一行代码直接打包. 专注于机器学习应用的人们知道,从训练好的模型到实际的工业生产工具还有一定的距离 ...

最新文章

  1. centos7安装配置pgAgent
  2. L2-002. 链表去重
  3. Python_note3 基本数据类型+time库使用
  4. python对笔记本电脑的要求-Python的用法笔记本
  5. C/C++语言之 日期 时间
  6. html 设置视频尺寸,如何使用CSS控制视频的宽高?
  7. 云服务器有什么好 能让云大佬们竞争如此激烈
  8. websocket的压力测试和异步并发啥关系?
  9. 设计模式学习笔记五——Prototype模式
  10. python中的 生产者和消费者
  11. 二级java编写用户界面例题,单选题11—20:2012年计算机二级VB用户界面设计练习题及答案-计算机二级-233网校...
  12. python用时间戳给文件命名-在Python中每小时将时间戳记写入文件
  13. linux关闭的时候出现异常: java.net.ConnectException: 拒绝连接 (Connection refused)
  14. 【语音评价】基于matlab语音质量客观评价(PESQ)【含Matlab源码 1717期】
  15. 汤姆·克鲁斯 - 电影全集
  16. 【仿真】Carla介绍与使用 [1] (附代码手把手讲解)
  17. iOS - Push 通知推送
  18. 几分钟来了解下什么是嵌入式开发?
  19. 阿里云视频点播一站式解决解决方案怎么样?
  20. 数据库查询简单练习(五)

热门文章

  1. 冰点文库下载器V3.1.4
  2. 《基于LSTM长短时神经网络的电机旋转振动单步预测》
  3. Nginx 使用的 epoll 模型详解
  4. maven 本地仓库的配置
  5. 布客·ApacheCN 翻译校对活动进度公告 2020.5
  6. STM32 实现光敏传感器
  7. PS2020制作电子签名
  8. 绿联USB转RS-485/422转换器
  9. 使用VsCode搭建Vue开发环境
  10. Learun快速开发平台,一个开源可视化的开发平台