最近有几个类似的需求,修改过程遇到了一些问题,咨询了供应商搞好了学到了点东西记录一下。
需求主要是在abl阶段让模块和外设能通过uart通信,速度有快(一般2~3M)有慢(115200)。实现过程也不复杂,其实就和常用tlmm这些类似,主要是一些细节要注意下。
1、驱动
有些平台是已经集成了驱动,有些没集成,可以直接复制粘贴改点东西就行。路径在
boot_images/QcomPkg/Library/HSUartQupv3Lib/下面,有十几个文件主要注意俩就行,HSUartXBL.c和HSUartSettings.h,不同gpio和uart 速率控制基本就改这俩。
HSUartXBL.c先来,这个函数就是初始化uart的一些配置,包括波特率、停止位、回环测试等等,波特率的选择不能乱写,文件开头有给定义,不同平台我看给的可选项还有差异,根据给的选就行,其它项根据设计需求自己调整,回环测试前期测试方便可以打开,实际使用时候要关掉。
static const CLOCK_SETTINGS baud_table[] =
{
// bit_rate, input_freq, divider
{ 115200, 7372800, 64 },
{ 3000000, 48000000, 16 },
{0}
};
/*==================================================================================================
FUNCTION: hsuart_initialize
DESCRIPTION:
====