当前位置:   article > 正文

修改GM8126的打印输出波特率_burnin代码

burnin代码

       GM8126平台要下载的代码文件有nsbootburninu-bootlinux。前三个其实都是引导程序。CPU出厂前已经固化了一段程序在里面,称为romcode。系统上电后首先执行这段代码,他只要是读取启动脚的信号判断是在哪启动,而且将一小部分代码复制到内部sram中。因为芯片内部只有32KSRAM,而且而且要留一部分做堆栈,所以复制到SRAM中的代码限制为28K,这部分代码其实就是nsboot。整个启动流程是:

1)  romcode启动,复制nsbootSRAM.

2)  nsboot运行,主要做了初始化串口,初始化DDR,初始化NAND或者SPI FLASH的工作,然后读取系统启动表,按地址将burninu-bootlinux复制到DDR2中。

3) 接着是按顺序运行burninu-bootlinux

      不过在调试时发现,可以不需要u-boot,正常启动的时候burnin直接引导linux。可能留着u-boot的原因是出于调试考虑吧,毕竟u-boot功能强大,调试的时候直接挂载NFS是最方便的了。

      官方给出的所有程序的打印输出都是用38400波特率的,输出的时候感觉很慢,超级终端中看着不顺畅,于是想改成115200输出的,由于这几个代码都是各自独立初始化串口的,每段代码都各自把串口重新初始化一遍,所以就得把这四个部分都做修改,下面说下步骤:

    1.  nsboot

修改nsboot目录下的serial.c文件,在serial_init()函数里面,将

       UART16550_WRITE(UART_DIV_L, 0x3);        // 38400

改为

       UART16550_WRITE(UART_DIV_L, 0x1);        // 115200

      为什么改成0x1?为了这个我翻了GM8126的手册,里面具体没有具体的波特率计算公式,真是服了。那只能找burnin里面的串口那部分的设置参考了,在

GM8126_SDK-V1.1\StartCell_Drivers\source\GM8126_NonOS\fLib\source\include\cpe.h里面有这段屏蔽的代码:

/*  System Clock=13.5MHZ, DLL= UART clock/(16 * baud), DLL= CPE_UARTx_BASE + 0x00

    such as PLL3_N=39, PLL3_CLK=SYS_CLK*PLL3_N

    UART_CLOCK / 16 / 115200 = 8.9 ==> UART_CLOCK / 9 = 1828125

 */

/*

#define CPE_BAUD_921600                 (UART_CLOCK / 13516800)

#define CPE_BAUD_460800                 (UART_CLOCK / 6758400)

#define CPE_BAUD_230400                 (UART_CLOCK / 3379200)

 

#define CPE_BAUD_115200                 (UART_CLOCK / 1828125)

#define CPE_BAUD_57600                  (UART_CLOCK / 914062)

#define CPE_BAUD_38400                             (UART_CLOCK / 609375)

#define CPE_BAUD_19200                  (UART_CLOCK / 304688)

#define CPE_BAUD_14400                  (UART_CLOCK / 228516)

#define CPE_BAUD_9600                   (UART_CLOCK / 152344)

#define CPE_BAUD_4800                   (UART_CLOCK / 76172)

#define CPE_BAUD_2400                   (UART_CLOCK / 38086)

#define CPE_BAUD_1200                   (UART_CLOCK / 19043)

*/

 

    根据之前波特率为38400时的值为0x3,那么可以知道UART_CLOCK=3*609375=1828125,所以CPE_BAUD_115200 = UART_CLOCK / 1828125 = 1.

 

    2. burnin

burnin的波特率只需要改一个宏定义就可以了:

GM8126_SDK-V1.1\StartCell_Drivers\source\GM8126_NonOS\fLib\source\include\cpe.h中的

       #define DEFAULT_HOST_BAUD               CPE_BAUD_38400

改为

       #define DEFAULT_HOST_BAUD               CPE_BAUD_115200

 

    3.u-boot

u-boot因为没用到,而且它可以通过命令行配置,所以不需要改代码了。

 

    4.  linux

    因为没有用到u-boot做引导,所以linux的启动参数需要修改配置文件来修改:

首先进入到linux目录下,make menuconfig,找到 Boot options,进入后将编辑下启动命令,将波特率改为115200,然后退出重新编译下内核就OK了。

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/504242
推荐阅读
相关标签
  

闽ICP备14008679号