编辑: 无理的喜欢 | 2019-07-03 |
115200 ttyO0 修改 ttyO0 即可,如想要 UART1 作为串口打印,将ttyO0 改为 ttyO1,当然
115200 波特率也可以 改.完成这个步骤后,将文件系统重新导入到板子上,运行,即可成功. 接下来分析 Processor SDK 3.0 的修改流程 二.Processor SDK 3.0 修改 SPL 串口打印的步骤: 1. Make uboot 时,makefile 文件会根据 Kconfig (board\ti\am335x)生成 autoconf.h 文件,该文 件主要包含一些宏定义,查看发现其中一句:#define CONFIG_CONS_INDEX
1 ――其表示 UART0 会被编译成为 SPL 串口打印的设备. 所以要修改串口设备,首先需要修改 Kconfig,可以看到以下蓝框的内容.修改 default 的值,该值决定 spl 初始化哪一个串口的引脚. UART0-UART5 对应 default1-6,比如要使用 UART1 作为调试信息的串口打印,操作为:将default
1 为default
2 2. 在文件中 Hardware.h (arch\arm\include\asm\arch-am33xx)修改 DEFAULT_UART_BASE /* UART */ #define DEFAULT_UART_BASE UART0_BASE 在数据手册的 memory map 中可以查询 举个例子:要使用 UART5 作为串口打印,则#define DEFAULT_UART_BASE UART5_BASE 同时在 Hardware_am33xx.h (arch\arm\include\asm\arch-am33xx) 增加 #define UART5_BASE 0x481AA000 3. 在文件 Board.c (board\ti\am335x)里的以下函数,修改 eserial1_device 的值,eserial1_device 代表初始化 UART0,eserial2_device 代表初始化 UART1…..以此类推.若板子是 ICEv2 则修 改eserial4_device. config CONS_INDEX int "UART used for console" range
1 6 default
1 help The AM335x SoC has a total of
6 UARTs (UART0 to UART5 as referenced in documentation, etc) available to it. Depending on your specific board you may want something other than UART0 as for example the IDK uses UART3 so enter
4 here. struct serial_device *default_serial_console(void) { if (board_is_icev2()) return &eserial4_device;
else return &eserial1_device;
} 上面这三个步骤若成功了,SPL 的调试信息会通过相对应被初始化的串口进行打印,但是 Uboot 还是从默认 UART,如UART0 来打印信息.这是为什么呢? 因为新版的 SDK,也即 Processor SDK 3.0 和旧版的 EZSDK6.0 有很大区别,Processor SDK 3.0 在Uboot 期间是使用 device tree 来初始化芯片外设的.所以我们还需要修改 Uboot 的默认的 UART 的配置.操作如下. Processor SDK 3.0 修改 U-boot 的串口打印的步骤: 由于 processor SDK 的uboot 是使用 device tree 来引导和初始化外设的.device tree 的文件是: Am335x-evm.dts (arch\arm\dts). 1. 找到在 Am335x-evm.dts 文件里如下框框的部分,若要将打印串口从 uart0 修改为 uart1, 在文件以下位置进行修改,操作如下: 由于 uart0 和uart1 本SDK 中已经在 Am335x-evm.dts 中有定义了,对该节点已经描述清 楚,但是若要修改其他 uart 的,则请看第二个步骤,否,请跳过第二步骤. 2. 若想支持其他 uart,则需要在 Am335x-evm.dts 文件里增加 uart 的节点信息,比如增加 uart2,步骤如下:添加下面的语句,可以参考文件中 uart0 表示的方式,模范即可. chosen { stdout-path = &uart0;
tick-timer = &timer2;
};
&uart2 { pinctrl-names = "default";
pinctrl-0 = ;
status = "okay";
};
Uart2_pins: pinmux_uart2_pins { pinctrl-single,pins = < 0x950 (PIN_INPUT_PULLUP | MUX_MODE1) /* uart0_rxd.uart2_rxd */ 0x954 (PIN_OUTPUT_PULLDOWN | MUX_MODE1) /* uart0_txd.uart2_txd */ >;
};
chosen { stdout-path = &uart1;
tick-timer = &timer2;
};
该RX 和TX 的引脚可以更改其他 IO,具体内容请看引脚分配或根据工具 PIN MUX 进行配置. 3. 如果想引导 kernel 的时候也打算用更改的串口显示调试信息的话.修改 Am335x_evm.h (include\configs)下的引导变量: "ttyO0,115200n8\0" ,如要修改串口 UART1,则在文件以 下位置修改为: "init_console=" \ "if test $board_name = A335_ICE;