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

2019-07-12 14:42发布

硬件平台: 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上输出了!