更改高通xbl串口log波特率
本修改基于高通QCM6125平台,目的是为了满足客户无聊的需求。
注意事项:
- 基准时钟频率需要是硬件和驱动支持的频率,时钟频率和分频系数可以从AP侧驱动中找到
- 最低分频系数需要满足分频公式(能够被整除),分频公式中除以32还是16需要从AP侧驱动中推测过来,或者通过默认的115200波特率的分频系数中推导
- 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波特率的更多相关文章
- 高通qxdm抓取sensor的log【学习笔记】
高通qxdm抓取sensor的log 打开qxdm,打开设置界面,去掉其他无关的log,打开Log packets .Message packets的SNS的log 之后需要把端口打开,把端口打开之后 ...
- 高通安卓调试LCD几方面总结
来公司上班现在已经整整一个月了,蔽人不才,能力有限,学习进度缓慢,不过也是有一点点的收获与心得,在这里写出来与大家分享,养成良好的记录习惯也免得后忘记. 不啰嗦了,开入正题.来公司一个月左右的时间,主 ...
- 【转】高通平台android 环境配置编译及开发经验总结
原文网址:http://blog.csdn.net/dongwuming/article/details/12784535 1.高通平台android开发总结 1.1 搭建高通平台环境开发环境 在高通 ...
- 高通LCD驱动调试
本文转载自:http://www.itgo.me/a/x6305658852004979994/lcd%20qcom 来自 :http://blog.csdn.net/dacaozuo/article ...
- 高通平台 lcd driver 调试小结
一.概述 1.1 简介 本文档主要包括LCD模块的驱动流程分析.Framebuffer相关知识.Gralloc等相关内容,以及LCD调试的一些经验和相关bug的分析和讲解. 1.2 开发环境 And ...
- 高通平台启动log概述(PBL log、sbl1 log、kernel log)【转】
本文转自:https://blog.csdn.net/RadianceBlau/article/details/78416776?utm_source=blogxgwz9 高通平台启动log概述(PB ...
- 高通MSM8255 GPS 调试分析&&Android系统之Broadcom GPS 移植【转】
本文转载自:http://blog.csdn.net/gabbzang/article/details/12063031 http://blog.csdn.NET/dwyane_zhang/artic ...
- 高通Vuforia(Unity3D)云识别初级使用教程
高通Vuforia(Unity3D)云识别初级使用教程 最近因项目开发需要,接触了高通的AR引擎Vuforia云识别,个人感觉稳定性还是很不错的,唯一不爽的地方就是免费的云识别库每个月只能识别10 ...
- android 6.0 高通平台sensor 工作机制及流程(原创)
最近工作上有碰到sensor的相关问题,正好分析下其流程作个笔记. 这个笔记分三个部分: sensor硬件和驱动的工作机制 sensor 上层app如何使用 从驱动到上层app这中间的流程是如何 Se ...
- 高通平台FastMMI(FFBM模式)简介与进入方法
参考: http://blog.csdn.net/tfslovexizi/article/details/51499979 http://www.voidcn.com/blog/jimbo_lee/a ...
随机推荐
- Machine Learning Week_1 Parameter Learning 1-6
目录 3 Parameter Learning 3.1 Video: Gradient Descent unfamiliar words 3.2 Reading:Gradient Descent un ...
- Python如何完成一个上课点名系统!
阅读目录 一.准备工作 二.预览 三.思路 四.源代码 五.总结 一.准备工作 1.Tkinter Tkinter 是 python 内置的 TK GUI 工具集.TK 是 Tcl 语言的原生 GUI ...
- C++ 迪利克雷(Dirichlet)分布
遇到一个要使用 dirichlet 分布的情形,发现 C++ 标准库中没有现成的.查阅维基百科发现,虽然它挺复杂,但是它跟 Gamma 分布有如下关系: 设有 K 个相互独立且分别满足 Gamma 分 ...
- mysql替换内容
UPDATE storage SET guige = REPLACE(guige, '×', 'x')
- Hugging Face 与 TruffleHog 合作,实现风险预警
我们非常高兴地宣布与 Truffle Security 建立合作伙伴关系并在我们的平台集成 TruffleHog 强大的风险信息扫描功能.这些特性是 我们持续致力于提升安全性 的重要举措之一. Tru ...
- 《Selenium自动化测试实战:基于Python》之 基于Docker与Selenium Grid的测试技术
基于Docker与Selenium Grid的测试技术 10.1 Selenium Grid简介 尽管即将推出的Selenium 4.0对Seleni ...
- Diffuision Policy + RL -------个人博客_ZSY_20241101
Diffusion Policy: Visuomotor Policy Learning via Action Diffusion Cheng Chi, Zhenjia Xu, Siyuan Feng ...
- Ymodem协议详解
Xmodem.Ymodem和Zmodem协议是最常用的三种通信协议. Xmodem协议是最早的,传输128字节信息块. Ymodem是Xmodem的改进版协议,具有传输快速稳定的优点.它可以一次传输1 ...
- HttpWebRequest调用API
public void HttpWebRequestPost(){ string responseContent = string.Empty; var userNameAndPwd = new { ...
- K均值聚类和代码实现
K均值聚类是一种无监督学习分类算法. 介绍 对于$n$个$m$维特征的样本,K均值聚类是求解最优化问题: $\displaystyle C^*=\text{arg}\min\limits_{C}\su ...