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.