嵌入式Linux修改终端使用的串口

硬件平台: ST公司的stm32f429i-discovery
u-boot: emcraft网站提供的u-boot 2010.03
linux: emcraft网站提供的uclinux

我的stm32f429i-discovery刚到手就让我将USART1的RX管脚给烧坏了,我将串口线的RS232电平直接接到了stm32芯片上,好蠢。+/-12V直接怼到3.3V的管脚上,不烧坏才怪呢。没得办法,只能改用其它的串口,我选着使用USART2来代替USART1.

u-boot部分

修改 u-boot/include/configs/stm32f429-discovery.h 文件
原文件:

/*
 * Serial console configuration
 */
#define CONFIG_STM32_USART_CONSOLE
#define CONFIG_STM32_USART_PORT         1       /* USART1 */
#define CONFIG_STM32_USART_TX_IO_PORT   0       /* PORTA */
#define CONFIG_STM32_USART_TX_IO_PIN    9       /* GPIO9 */
#define CONFIG_STM32_USART_RX_IO_PORT   0       /* PORTA */
#define CONFIG_STM32_USART_RX_IO_PIN    10      /* GPIO10 */
#define CONFIG_BAUDRATE                 115200
#define CONFIG_SYS_BAUDRATE_TABLE       { 9600, 19200, 38400, 57600, 115200 }

修改后:

/*
 * Serial console configuration
 */
#define CONFIG_STM32_USART_CONSOLE
#define CONFIG_STM32_USART_PORT         2       /* USART2 */
#define CONFIG_STM32_USART_TX_IO_PORT   3       /* PORTD */
#define CONFIG_STM32_USART_TX_IO_PIN    5       /* GPIO5 */
#define CONFIG_STM32_USART_RX_IO_PORT   3       /* PORTD */
#define CONFIG_STM32_USART_RX_IO_PIN    6       /* GPIO6 */
#define CONFIG_BAUDRATE                 115200
#define CONFIG_SYS_BAUDRATE_TABLE       { 9600, 19200, 38400, 57600, 115200 }

修改后编译就好了。
make stm32f429-discovery \\从新生成配置文件
make
这时生成的u-boot.bin使用的就是USART2了,但是Linux kernel使用的 还依然是USART1,这时你会发现u-boot有输出,kernel没有输出。

kernel 部分

第一步:
在Linux源码根目录下执行:make menuconfig
选择System Type ---> STM32 I/O interfaces --->
在这里插入图片描述
去掉USART1,使能USART2.
第二步:
修改u-boot里的环境变量bootargs,将ttyS0改为ttyS1就好了。
原bootargs:
在这里插入图片描述
修改后的bootargs:
在这里插入图片描述

第三步:
inittab这个文件也要修改。
找到这个文件,可能叫inittab也可能叫inittab.ALL,将里面的ttyS0改成ttyS1就可以了。
Linux内核引导完成后会调用init函数,而init函数需要一个配置文件inittab。

此时再启动,Linux就可以正常的在USART2上输出了!

猜你喜欢

转载自blog.csdn.net/tianyake_1/article/details/84590821
今日推荐