一些缩写简称:
AP:application processer,应用处理器
MD:
MT6577支持 4个UART,UART在无线通信基带芯片组(baseband chipset)和外设间提供全双工串行通信通道,UART的方块图如下图:
图1
MT6577默认的串口分配如下图:
图2
1. 产品串口分配:
| 模块 |
UART1 | 底部的扩展串口/debug口 |
UART2 | TD3026D北斗 |
UART3 | MT6628 GPS/BT |
UART4 | LF/HF/UHF/1D |
2. Bootloader和kernel中日志端口设置
(1) Preloader
AP和MD log port(日志端口)定义,相关的CFG_UART_LOG和CFG_UART_META配置,在xxx\mediatek\custom\project_name\preloader\inc\cust_bldr.h中定义
- #define CFG_LOG_BAUDRATE (921600)
- #define CFG_META_BAUDRATE (115200)
- #define CFG_UART_LOG (UART1) //(UART4)
- #define CFG_UART_META (UART1)
CFG_UART_LOG用于定义AP日志端口,CFG_UART_META用于定义MD/META日志端口。
(2) UBoot
如果定义了__ENABLE_UART_LOG_SWITCH_FEATURE__,UBoot会采用和Preloader一样的日志端口。可以通过调用get_uart_port_id()来获取preloader中采用的UART端口。
如果没有定义__ENABLE_UART_LOG_SWITCH_FEATURE__,那么UBoot中就直接采用UART4作为AP日志端口。
相关代码如下:
- #ifdef __ENABLE_UART_LOG_SWITCH_FEATURE__
- if(get_uart_port_id() == 1){
- mtk_serial_set_current_uart(UART1);
- mtk_uart_power_on(UART1);
- }else{
- mtk_serial_set_current_uart(UART4);
- mtk_uart_power_on(UART4);
- }
- #else
- mtk_serial_set_current_uart(UART4);
- mtk_uart_power_on(UART4);
- #endif
t的AP日志端口选择关系如下图:
图3
从上面的介绍可以看出MTK6577的日志端口只能用UART1或是UART4。
(3) Kernel
要么UBoot日志端口设置为NUL,或要么Kernel日志端口设置为NULL,这种情况下,我们采用kernel日志端口设置;当UBoot日志端口设置不同于Kernel日志端口设置,我们采用UBoot日志端口设置。
如果UBoot和kernel日志端口设置都不为NULL,我们的优选选择是UBoot的设置,而且我们要记住,UBoot设置中不能使用UART2和UART3。