本修改基于高通QCM6125平台,目的是为了满足客户无聊的需求。

注意事项:

  1. 基准时钟频率需要是硬件和驱动支持的频率,时钟频率和分频系数可以从AP侧驱动中找到
  2. 最低分频系数需要满足分频公式(能够被整除),分频公式中除以32还是16需要从AP侧驱动中推测过来,或者通过默认的115200波特率的分频系数中推导
  3. 6125平台的修改难点是需要自己增加QUPv3控制器设置时钟的相关实现,这个可以从其他QUPv3的高通平台代码中找到,默认是没有的!(这个坑让我填了整整3天)

diff --git a/boot_images/QcomPkg/Library/UartQupv3Lib/UartXBL.c b/boot_images/QcomPkg/Library/UartQupv3Lib/UartXBL.c
index 7e14b69..7ac5b37 100755
--- a/boot_images/QcomPkg/Library/UartQupv3Lib/UartXBL.c
+++ b/boot_images/QcomPkg/Library/UartQupv3Lib/UartXBL.c
@@ -76,12 +76,16 @@ static UINT8 ring_buffer[RING_SIZE]; // size must be a power of 2
static UINT32 read_index = 0; // must be masked before subscripting
static UINT32 write_index = 0; // must be masked before subscripting
static UINT32 tx_fifo_size = 0; // will be populated in register_init
+static UINT32 clk_reg_value = 0; // used to put correct clock divider value based on QUP version
static uart_handle uart_debug_handle;

static const CLOCK_SETTINGS baud_table[] =
{
// bit_rate, input_freq, divider
{ 115200, 7372800, 64 },
+ { 460800, 14745600, 32 },
+ { 921600, 29491200, 32 },
+ { 1000000, 32000000, 32 },
{0}
};

@@ -159,6 +163,8 @@ static uart_result clock_enable(uart_context* uart_ctxt)
return UART_ERROR;
}

+ clk_reg_value = ((divider/32) << 0x4) | 0x1;
+
return UART_SUCCESS;
}

@@ -423,9 +429,9 @@ void register_init(uart_context* uart_ctxt)
REG_OUT(base + GENI4_DATA, GENI_RX_RFR_WATERMARK_REG, temp - 4);

- REG_OUT(base + GENI4_CFG, GENI_SER_M_CLK_CFG, 0x21);
+ REG_OUT(base + GENI4_CFG, GENI_SER_M_CLK_CFG, clk_reg_value);

- REG_OUT(base + GENI4_CFG, GENI_SER_S_CLK_CFG, 0x21);
+ REG_OUT(base + GENI4_CFG, GENI_SER_S_CLK_CFG, clk_reg_value);

//REG_OUT(base + GENI4_IMAGE_REGS, UART_LOOPBACK_CFG, 0x3);

@@ -804,6 +810,8 @@ uart_initialize(void)
uart_open_config c;

c.baud_rate = 115200;
+ // c.baud_rate = 460800;
+ // c.baud_rate = 921600;
c.parity_mode = UART_NO_PARITY;
c.num_stop_bits = UART_1_0_STOP_BITS;
c.bits_per_char = UART_8_BITS_PER_CHAR;

更改高通xbl串口log波特率的更多相关文章

  1. 高通qxdm抓取sensor的log【学习笔记】

    高通qxdm抓取sensor的log 打开qxdm,打开设置界面,去掉其他无关的log,打开Log packets .Message packets的SNS的log 之后需要把端口打开,把端口打开之后 ...

  2. 高通安卓调试LCD几方面总结

    来公司上班现在已经整整一个月了,蔽人不才,能力有限,学习进度缓慢,不过也是有一点点的收获与心得,在这里写出来与大家分享,养成良好的记录习惯也免得后忘记. 不啰嗦了,开入正题.来公司一个月左右的时间,主 ...

  3. 【转】高通平台android 环境配置编译及开发经验总结

    原文网址:http://blog.csdn.net/dongwuming/article/details/12784535 1.高通平台android开发总结 1.1 搭建高通平台环境开发环境 在高通 ...

  4. 高通LCD驱动调试

    本文转载自:http://www.itgo.me/a/x6305658852004979994/lcd%20qcom 来自 :http://blog.csdn.net/dacaozuo/article ...

  5. 高通平台 lcd driver 调试小结

    一.概述 1.1 简介 本文档主要包括LCD模块的驱动流程分析.Framebuffer相关知识.Gralloc等相关内容,以及LCD调试的一些经验和相关bug的分析和讲解. 1.2  开发环境 And ...

  6. 高通平台启动log概述(PBL log、sbl1 log、kernel log)【转】

    本文转自:https://blog.csdn.net/RadianceBlau/article/details/78416776?utm_source=blogxgwz9 高通平台启动log概述(PB ...

  7. 高通MSM8255 GPS 调试分析&&Android系统之Broadcom GPS 移植【转】

    本文转载自:http://blog.csdn.net/gabbzang/article/details/12063031 http://blog.csdn.NET/dwyane_zhang/artic ...

  8. 高通Vuforia(Unity3D)云识别初级使用教程

    高通Vuforia(Unity3D)云识别初级使用教程   最近因项目开发需要,接触了高通的AR引擎Vuforia云识别,个人感觉稳定性还是很不错的,唯一不爽的地方就是免费的云识别库每个月只能识别10 ...

  9. android 6.0 高通平台sensor 工作机制及流程(原创)

    最近工作上有碰到sensor的相关问题,正好分析下其流程作个笔记. 这个笔记分三个部分: sensor硬件和驱动的工作机制 sensor 上层app如何使用 从驱动到上层app这中间的流程是如何 Se ...

  10. 高通平台FastMMI(FFBM模式)简介与进入方法

    参考: http://blog.csdn.net/tfslovexizi/article/details/51499979 http://www.voidcn.com/blog/jimbo_lee/a ...

随机推荐

  1. 全网最适合入门的面向对象编程教程:58 Python字符串与序列化-序列化Web对象的定义与实现

    全网最适合入门的面向对象编程教程:58 Python 字符串与序列化-序列化 Web 对象的定义与实现 摘要: 如果我们要在不同的编程语言之间传递对象,就必须把对象序列化为标准格式,比如XML\YAM ...

  2. games101_Homework4

    实现四个点的贝塞尔曲线 作业描述: • bezier:该函数实现绘制 Bézier 曲线的功能.它使用一个控制点序列和一个 OpenCV::Mat 对象作为输入,没有返回值.它会使 t 在 0 到 1 ...

  3. JPEG格式研究——(3)霍夫曼解码

    因为霍夫曼编码以bit为单位,长度又不确定,读取时无法区分,JPEG采用了范式霍夫曼编码. 读取并生成霍夫曼表 JPEG中DC系数和AC系数是分别进行编码将霍夫曼表保存在DQT中. 直接上代码解释可能 ...

  4. go mod使用小结

    转载请注明出处: go mod 命令是用于管理 Go 语言项目的模块依赖关系的工具.Go 语言从 1.11 版本开始引入了模块支持,并在后续版本中逐渐完善.模块是 Go 语言代码的一个集合,每个模块都 ...

  5. cmu15545笔记-并发控制总结(Concurrency Control Summary)

    目录 总览 ACID 串行化与冲突操作 隔离级别 概念层级 二阶段锁 原理 级联回滚 强二阶段锁 死锁检测和避免 锁层级 实践应用 实现的隔离级别 OOC 原理 三个阶段 实现的隔离级别 处理幻读 M ...

  6. 修改data数据后页面未更新渲染

    只需添加 this.$forceUpdate() 在修改数据后执行即可 this.$forceUpdate()

  7. Pytorch 手写数字识别 深度学习基础分享

    本篇是一次内部分享,给项目开发的同事分享什么是深度学习.用最简单的手写数字识别做例子,讲解了大概的原理. 手写数字识别 展示首先数字识别项目的使用.项目实现过程: 训练出模型 准备html手写板 fl ...

  8. Trino 436 - 使用教程(亲测,详细)

    第一章 Trino简介 1. Trino概述 Trino是一个分布式SQL查询引擎,旨在查询分布在一个或多个异构数据源上的大型数据集.如果使用的是数TB或数PB的数据,那么很可能使用的是与Hadoop ...

  9. AO SDK安装问题

    ao sdk for .net安装时,需要进行验证.net框架,没装vs的时候会提示 arcobjects SDK for the Microsoft.NT Framework requires a ...

  10. uniapp 坑 - sslVerify不支撑离线打包

    uniapp 打包为Android的apk时,由于适用https和自签证书,离线打包不支撑sslVerify,导致出现Trust anchor for certification path not f ...