赞
踩
GM8126平台要下载的代码文件有nsboot,burnin,u-boot,linux。前三个其实都是引导程序。CPU出厂前已经固化了一段程序在里面,称为romcode。系统上电后首先执行这段代码,他只要是读取启动脚的信号判断是在哪启动,而且将一小部分代码复制到内部sram中。因为芯片内部只有32K的SRAM,而且而且要留一部分做堆栈,所以复制到SRAM中的代码限制为28K,这部分代码其实就是nsboot。整个启动流程是:
1) romcode启动,复制nsboot到SRAM.
2) nsboot运行,主要做了初始化串口,初始化DDR,初始化NAND或者SPI FLASH的工作,然后读取系统启动表,按地址将burnin,u-boot,linux复制到DDR2中。
3) 接着是按顺序运行burnin,u-boot,linux。
不过在调试时发现,可以不需要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了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。