问题起因:平台:全志A40I 系统:Android6.0 IC:TJ1050 客户:XX项目主板 发送指令给 XX设备, 会收到设备回复 ,同时会收到回显的信息。主板测试 把串口和TJA1050这个芯片断开,就不会回显了。cpu ttl出来没回显,那说明cpu uart配置ok。
发送是直接到canl和canh,canl和canh经过运算器到ttl的rx,rx有数据就显示。怎么才能让普通串口使用can的物理层,不出现回显。
uart不回显,接上这个can芯片回显,需要通过软件修改不回显。
diff --git a/lichee/linux-3.10/drivers/tty/serial/sunxi-uart.c b/lichee/linux-3.10/drivers/tty/serial/sunxi-uart.c
index 7ea5a16..0db1231 100755
--- a/lichee/linux-3.10/drivers/tty/serial/sunxi-uart.c
+++ b/lichee/linux-3.10/drivers/tty/serial/sunxi-uart.c
@@ -39,7 +39,7 @@#include <linux/of.h>#include <linux/of_irq.h>#include <linux/of_address.h>
-
+#include <linux/atomic.h>#include "sunxi-uart.h"//#define CONFIG_SW_UART_DUMP_DATA
@@ -140,6 +140,7 @@ static unsigned int sw_uart_handle_rx(struct sw_uart_port *sw_uport, unsigned inchar flag;do {
+       if (likely(lsr & SUNXI_UART_LSR_DR)) {ch = serial_in(&sw_uport->port, SUNXI_UART_RBR);#ifdef CONFIG_SW_UART_DUMP_DATA
@@ -191,11 +192,18 @@ static unsigned int sw_uart_handle_rx(struct sw_uart_port *sw_uport, unsigned in}if (uart_handle_sysrq_char(&sw_uport->port, ch))goto ignore_char;
+               #ifdef CONFIG_SW_UART_TX_DATA
+               //printk("kevin rx=%c\n",ch);
+               if (atomic_read(&sw_uport->atomic_tx) == 1) {
+                       goto ignore_char;
+               }
+               #endif
+               uart_insert_char(&sw_uport->port, lsr, SUNXI_UART_LSR_OE, ch, flag);ignore_char:lsr = serial_in(&sw_uport->port, SUNXI_UART_LSR);} while ((lsr & (SUNXI_UART_LSR_DR | SUNXI_UART_LSR_BI)) && (max_count-- > 0));
-
+       SERIAL_DUMP(sw_uport, "Rx");spin_unlock(&sw_uport->port.lock);tty_flip_buffer_push(&sw_uport->port.state->port);
@@ -246,10 +254,15 @@ static void sw_uart_handle_tx(struct sw_uart_port *sw_uport)return;}count = sw_uport->port.fifosize / 2;
+       #ifdef CONFIG_SW_UART_TX_DATA
+       if (sw_uport->port.line == UART_TX_DATA_INDEX) {
+               atomic_set(&sw_uport->atomic_tx,1);
+       }
+       #endifdo {
-#ifdef CONFIG_SW_UART_DUMP_DATA
-               sw_uport->dump_buff[sw_uport->dump_len++] = xmit->buf[xmit->tail];
-#endif
+               #ifdef CONFIG_SW_UART_DUMP_DATA
+                       sw_uport->dump_buff[sw_uport->dump_len++] = xmit->buf[xmit->tail];
+               #endifserial_out(&sw_uport->port, xmit->buf[xmit->tail], SUNXI_UART_THR);xmit->tail = (xmit->tail + 1) & (UART_XMIT_SIZE - 1);sw_uport->port.icount.tx++;
@@ -288,7 +301,9 @@ static unsigned int sw_uart_modem_status(struct sw_uart_port *sw_uport)wake_up_interruptible(&sw_uport->port.state->port.delta_msr_wait);}
-
+       #ifdef CONFIG_SW_UART_TX_DATA
+               atomic_set(&sw_uport->atomic_tx,0);
+       #endifSERIAL_DBG("modem status: %x\n", status);return status;}
@@ -1385,6 +1400,9 @@ static int sw_uart_request_resource(struct sw_uart_port* sw_uport, struct sw_uar}#endif+       #ifdef CONFIG_SW_UART_TX_DATA
+       atomic_set(&sw_uport->atomic_tx,0);
+       #endifreturn 0;}@@ -1398,6 +1416,9 @@ static int sw_uart_release_resource(struct sw_uart_port* sw_uport, struct sw_uarsw_uport->dump_len = 0;#endif+       #ifdef CONFIG_SW_UART_TX_DATA
+       atomic_set(&sw_uport->atomic_tx,0);
+       #endifclk_disable_unprepare(sw_uport->mclk);clk_put(sw_uport->mclk);@@ -1496,6 +1517,9 @@ static int sw_uart_probe(struct platform_device *pdev)if (of_property_read_bool(np, "linux,rs485-enabled-at-boot-time"))sw_uport->rs485conf.flags |= SER_RS485_ENABLED;+       #ifdef CONFIG_SW_UART_TX_DATA
+       atomic_set(&sw_uport->atomic_tx,0);
+       #endifpdata->used = 1;port->iotype = UPIO_MEM;port->type = PORT_SUNXI;
diff --git a/lichee/linux-3.10/drivers/tty/serial/sunxi-uart.h b/lichee/linux-3.10/drivers/tty/serial/sunxi-uart.h
index 19d6595..57ccc17 100755
--- a/lichee/linux-3.10/drivers/tty/serial/sunxi-uart.h
+++ b/lichee/linux-3.10/drivers/tty/serial/sunxi-uart.h
@@ -20,6 +20,9 @@#include <linux/regulator/consumer.h>+#define CONFIG_SW_UART_TX_DATA
+#define UART_TX_DATA_INDEX 4
+struct sw_uart_pdata {unsigned int used;unsigned int io_num;
@@ -48,6 +51,10 @@ struct sw_uart_port {#define MAX_DUMP_SIZE  1024unsigned int dump_len;char* dump_buff;
+
+       #ifdef CONFIG_SW_UART_TX_DATA
+       atomic_t  atomic_tx;
+       #endifstruct proc_dir_entry *proc_root;struct proc_dir_entry *proc_info;

全志 修改485转CAN串口回显 Patch相关推荐

  1. EasyUI加zTree使用解析 easyui修改操作的表单回显方法 验证框提交表单前验证 datagrid的load方法

    带参提交一次查询,从服务器加载新数据.这是一个神奇的方法 $('#dg').datagrid('load',{code: '01',name: 'name01' }); easyui修改操作的回显方法 ...

  2. EasyUI加zTree使用解析 easyui修改操作的表单回显方法 验证框提交表单前验证 datagrid的load方法...

    带参提交一次查询,从服务器加载新数据.这是一个神奇的方法 $('#dg').datagrid('load',{code: '01',name: 'name01' }); easyui修改操作的回显方法 ...

  3. 基于Springboot外卖系统16:菜品修改模块+菜品信息回显+ID查询口味列表+组装数据并返回

    4.1 菜品修改模块需求分析 在菜品管理列表页面点击修改按钮,跳转到修改菜品页面,在修改页面回显菜品相关信息并进行修改,最后点击确定按钮完成修改操作. 4.2 菜品修改模块前端页面(add.html) ...

  4. 前端后台数据修改时数据回显思路

    后台管理中修改数据时原数据回显的解决方案总结. 后台修改数据操作必然会遇到数据回显问题,具体解决思路: 1.每次打开编辑信息的窗口.都重新渲染一次当前窗口.保障组件初始值为当前值 子组件 添加 v-i ...

  5. android代码修改excel文件格式,Android实现类似execel的表格 能回显并能修改表格内容的方法...

    如下所示: 自定义实现一个水平滚动控件HorizontalScrollView package com.example.view; import android.content.Context; im ...

  6. html中某个名称不能修改,解决type=file 文件修改表单 名称不能正常回显的问题

    easyui 框架下   代码如下: css: .file_box{ float: right; width: 1035px; border: 1px solid #999; height: 32px ...

  7. 小程序 | 微信小程序多图上传(点击上传、可修改删除与放大回显)

    微信小程序实现多图上传需求 文章目录 基本图片处理 index.js(选择上传.点击回显.修改删除) index.js(实现循环多图上传数据库) 公共组件utils utils/common.util ...

  8. mysql下拉框回显_下拉框的回显 (修改时候)

    1.效果 2. 实现过程 2.1 点击修改的时候首先根据id去查询该条信息 2.2 显示页面 // 5. select  所属部门 $(function(){ var url="${page ...

  9. vue页面回显数据_解决vue表单回显数据无法修改的问题

    前言:今天在做修改操作的时候遇到了一个问题,数据回显到修改表单之后,发现无法输入,也不能实现修改 项目环境:springboot+vue前后端分离 问题:修改操作数据回显无法输入值 一.问题截图 二. ...

最新文章

  1. SmartAuditor----IT访问审计解决方案
  2. 克里斯蒂安贝尔_克里斯蒂安贝尔和乌云背后的幸福线导演合作神秘“大片”
  3. 开放报名 | 阿里云 Serverless 研修班走进四川大学
  4. centos 6.3安装libmcrypt-2.5.8不成功解决方案
  5. c语言文件加密解密单词统计,C语言文件加密解密及单词统计程序.doc
  6. 蓝桥2021模拟真题 (跳跃 )DFS
  7. 《教孩子学编程(Python语言版)》——1.3 运行Python程序
  8. 企业应用打包的时候 修改ipa包的bundle identifier
  9. 第三讲 汇编语言程序
  10. hang计算机术语大全,行业英语学习
  11. Ubuntu下软件安装的方法(配图解)
  12. POJ(8463)-----Stupid cat Doge(openjudge)
  13. 【前端】Vue实现个人空间
  14. 亿级流量电商详情页系统实战-28.商品详情页结构分析、缓存全量更新问题以及缓存维度化解决方案
  15. linux中mut目录,Linux 下常见文件目录及作用
  16. 2018蚌埠学院计算机分数线,蚌埠学院历年分数线 2021蚌埠学院录取分数线
  17. 详解酒店IPTV系统 -- -南京邮电大学 江凌云
  18. EBS R12基本概念与应用基础
  19. C/C++ 信号处理 Signal
  20. java自定义注解实例

热门文章

  1. 初级PHP开发作品容易出现的几个不足
  2. 请教SQL对日期格式化的写法
  3. js小案例:使用location.href自动跳转页面
  4. linux snap安装redis-desktop-manager
  5. k8s插件说明:CoreDNS、Ingress Controller、Federation、Prometheus、ELK
  6. Python爬虫开发:正则表达式re的使用
  7. python3 随机数函数
  8. python安装失败如何卸载干净_彻底卸载Python环境及安装的Python模块
  9. access窗体中再制作查询窗体_Access
  10. Centos7把一个文件复制到另外一台服务器上的scp命令