例:将log信息从uart1口输出。
1.修改boot阶段的uart输出口。
在tools目录下对应平台的sys_config.fex中,将修改uart_para 项,修改uboot阶段的打印输出。
boot默认使用uart0作打印输出,配置如下:
[uart_para]
uart_debug_port = 0
uart_debug_tx = port:PB8<4><1><default><default>
uart_debug_rx = port:PB9<4><1><default><default>
配置uart1作为uboot的打印输出,端口号和:
[uart_para]
uart_debug_port = 1
uart_debug_tx = port:PG6<2><1><default><default>
uart_debug_rx = port:PG7<2><1><default><default>
- 修改kernel阶段的uart输出口
如果不需要earlyprintk的打印,可以直接把earlypritk阶段的打印关闭。
关闭方法:make ARCH=arm64 menuconfig,然后关闭下面这两个选项
kernel hacking ---> early printk support |
如果需要使用earlyprintk,那么按如下配置:
(1)64位的平台
修改env.cfg配置文件中的earlyprintk选项,使用uart1的地址:
//默认使用uart0的地址
Earlyprintk=sunxi-uart,0x01c28000
//默认使用uart1的地址
Earlyprintk=sunxi-uart,0x01c28400
内核中的.config 中需要把CONFIG_CMDLINE_FROM_BOOTLOADER打开:
CONFIG_CMDLINE_FROM_BOOTLOADER=y
(2).修改kernel阶段的uart输出口
修改uart0 和uart1的uart_port 值,即把uart0生成设备ttyS1,uart1生成设备ttyS0:
[uart0]
uart0_used = 1
uart0_port = 1
uart0_type = 2
uart0_tx = port:PB8<4><1><default><default>
uart0_rx = port:PB9<4><1><default><default>
[uart1]
uart1_used = 1
uart1_port = 0
uart1_type = 4
uart1_tx = port:PG6<2><1><default><default>
uart1_rx = port:PG7<2><1><default><default>
uart1_rts = port:PG8<2><1><default><default>
uart1_cts = port:PG9<2><1><default><default>
具体修改如下:
[uart0]
uart0_used = 1
uart0_port = 1
uart0_type = 2
uart0_tx = port:PB8<4><1><default><default>
uart0_rx = port:PB9<4><1><default><default>
[uart1]
uart1_used = 1
uart1_port = 0
uart1_type = 4
uart1_tx = port:PG6<2><1><default><default>
uart1_rx = port:PG7<2><1><default><default>
uart1_rts = port:PG8<2><1><default><default>
uart1_cts = port:PG9<2><1><default><default>
- 在lichee/brandy/u-boot-2014.07/目录下打上补丁:
--- a/u-boot-2014.07/arch/arm/cpu/armv7/sun50iw1p1/spl/serial_spl.c
+++ b/u-boot-2014.07/arch/arm/cpu/armv7/sun50iw1p1/spl/serial_spl.c
@@ -44,10 +44,6 @@ void sunxi_serial_init(int uart_port, void *gpio_cfg, int gpio_max)
u32 reg, i;
u32 uart_clk;
- if( (uart_port < 0) ||(uart_port > 0) )
- {
- return;
- }
//reset
reg = readl(CCMU_BUS_SOFT_RST_REG4);
reg &= ~(1<<(CCM_UART_PORT_OFFSET + uart_port));
- lichee/brandy/u-boot-20107/目录下打上补丁:
--- a/u-boot-2014.07/drivers/serial/serial_ns16550.c
+++ b/u-boot-2014.07/drivers/serial/serial_ns16550.c
@@ -259,6 +259,21 @@ struct serial_device eserial6_device =
__weak struct serial_device *default_serial_console(void)
{
+#if 1
+ int port = uboot_spare_head.boot_data.uart_port;
+ switch(port) {
+ case 0:
+ return &eserial1_device;
+ case 1:
+ return &eserial2_device;
+ case 2:
+ return &eserial3_device;
+ case 3:
+ return &eserial4_device;
+ default:
+ return &eserial1_device;
+ }
+#else
#if CONFIG_CONS_INDEX == 1
return &eserial1_device;
#elif CONFIG_CONS_INDEX == 2
@@ -274,6 +289,7 @@ __weak struct serial_device *default_serial_console(void)
#else
#error "Bad CONFIG_CONS_INDEX."
#endif
+#endif
}
使用uart2打印时相应修改以上1 、2对应uart2两点即可。