OMAPL138/AM1808 修改调试串口为UART1后通过CCSV4下载程序的全过程
一、 需要用的资料:
1) OMAP-L138_FlashAndBootUtils_2_30.tar.gz
备注:这个里面的/OMAP-L138_FlashAndBootUtils_2_30\OMAP-L138\CCS目录下面有要用的CCSV4工程文件:
2)Using the AM18xx Bootloader 这个文件里面会讲到关于AM1808的BOOT的基本知识;
3)http://www-s.ti.com/sc/techlit/spraba5.zip. AISgen for D800K008软件,用于生成the binary AIS UBL文件;
二、修改确认工作:
1)用CCV4将UBL_ARM和SPIWriter两个工程文件导入;
2)UBL_SPI_MEM工程文件如下:
修改\OMAP-L138_FlashAndBootUtils_2_30\OMAP-L138\Common\include\device_uart.h中的内容如下:
#define DEVICE_UART_PERIPHNUM (1)
重新编译链接程序,并且下载到开发板上运行实际的效果是否正确;
3)SPI_Writer工程文件如下:
重新编译链接,保证工程文件没有问题;
4)生成the binary AIS UBL文件:
注意:1)Device Type: D800K006 的选择来源于芯片内部的ROM中的内容:地址:0xFFFD0000 处按字符显示的内容确定;
2) 注意理解上面的所有选项的内容:同时可以参考Using the AM18xx Bootloader.pdf 的中内容来理解生成BIN文件中的内容;
3)上面的软件还可以用来下生成无UBL的AIS 格式的UBOOT.
三、程序下载过程:
1)CCSV4中下载SPI_WRITER工程文件:
下载过程如下:
Starting OMAP-L138 SPIWriter.
Will you be writing a UBL image? (Y or y)
y
Enter the binary AIS UBL file name (enter 'none' to skip):
none
Enter the application file name (enter 'none' to skip):
d:\u-boot.bin
INFO: File read complete.
Enter the app image load address (in hex):
C1080000
备注:此处只能写成前面的格式,而不能写0XC1080000; 这个地址来uboot中定义的TEXT_BAES地址数值;
Enter the app image entry point address (in hex):
c1080000
Doing block erase.Doing block erase.Doing block erase. SPI boot preparation was successful!
- 连接串口,更改BOOT方式为SPI.给DEMO板上电;
串口打印信息如下:
说明两点:一、串口1 BOOT修改成功;二、说明UBOOT中的调试串口配置不正确;
OMAP-L138 initialization passed!
Booting NL User Boot Loader
UBL Version: 1.65
UBL Flashtype: SPI
Starting SPI Memory Copy...
Valid magicnum, 0x55424CBB, found at offset 0x00010000.
DONE
Jumping to entry point at 0xC1080000.
四、UBOOT中调试串口的修改方法:
下面将讲解如何修改基于 uboot-03.21.00.04 源码的 uboot 串口修改。以 UART2 切换到
UART1 为例,需要修改的 uboot 源码文件有以下两个:
/include/configs/da850evm.h
/board/davinci/da8xxevm/da850evm.c
修改 da850evm.h 文件
打开 da850evm.h 文件,将文件以下 UART2配置行注释掉:
//#define CONFIG_SYS_NS16550_COM1 DAVINCI_UART2_BASE /* Base address of UART0 */
增加 UART1 配置行:
#define CONFIG_SYS_NS16550_COM1 DAVINCI_UART1_BASE /* Base address of UART2 */
修改 da850evm.c 文件:有四个地方需要修改:
1)引脚复用:
打开 da850evm.c 文件,注释掉 struct pinmux_config uart_pins 数组的 pinmux[3],
增加 pinnux[0],修改如下:
const struct pinmux_config uart_pins[] = {
{ pinmux[0], 4, 6 },
{ pinmux[0], 4, 7 },
{ pinmux[3], 2, 4 },
{ pinmux[3], 2, 5 }
};
修改后的截图如下:
2)模块的电源管理:
lpsc_on(DAVINCI_LPSC_UART0); /* console */
紧接着增加以下行:
lpsc_on(DAVINCI_LPSC_UART2); /* console */
修改后如下图:
3)芯片内部模块的SUSPSRC控制使用:
修改截图如下:
4)使用UART1为调试串口:
亲测:这样就可以UBOOT的串口参数就修改完成,最好将DA850EVM.H中的UBOOT给内核的参数中的console=tyyS2修改为console=ttyS1,否则内核不能正常引导;
备注:
1) 如果在SPIWRITER程序下载过程中写成"0xc1080000"将会出现下面的问题:
AM1808 initialization passed!
Booting TI User Boot Loader
UBL Version: 1.65
UBL Flashtype: SPI
Starting SPI Memory Copy...
Valid magicnum, 0x55424CBB, found at offset 0x00010000.
DONE
Jumping to entry point at 0x00000000.