tiny4412 串口驱动分析四 --- 修改默认的串口输出

发布者:superstar11最新更新时间:2023-06-25 来源: elecfans关键字:tiny4412  串口驱动  串口输出 手机看文章 扫描二维码
随时随地手机看文章

开发板:tiny4412ADK+S700 4GB Flash

主机:Wind7 64位

虚拟机:Vmware+Ubuntu12_04

u-boot:U-Boot 2010.12

Linux内核版本:linux-3.0.31

Android版本:android-4.1.2

 

tiny4412默认是从uart0来输出和读取信息的,而tiny4412上留了两个串口,分别对应的是uart0和uart3,下面我们修改配置,使控制终端从uart0变成uart3

 

修改u-boot配置

在前面分析u-boot串口驱动的时候发现,在tiny4412.h中定义了

#define CONFIG_SERIAL0  1

然后再初始化串口的时候会根据这个宏找到uart0的控制器基地址,然后配置其波特率等等,并且u-boot的printf最终也会通过向uart0的发送数据寄存器写数据来实现数据的发送,综上,对于u-boot,我们只需要修改tiny4412.h,将

#define CONFIG_SERIAL0  1

修改为:

#define CONFIG_SERIAL3  1

即可

 

修改u-boot给内核传递的参数bootargs

原来的bootargs是:

console=ttySAC0,115200n8 androidboot.console=ttySAC0 uhost0=n ctp=2 skipcali=y vmalloc=384m lcd=S70

由于改成了uart3,我们需要把bootargs改成:

console=ttySAC3,115200n8 androidboot.console=ttySAC3 uhost0=n ctp=2 skipcali=y vmalloc=384m lcd=S70

 

修改内核配置

这里主要是内核在自解压的时候打印信息,在这个时候Linux内核还尚未启动,还是直接操作底层的硬件寄存器,并且不再初始化串口,因为之前u-boot已经将uart3初始化了,这里只需要告诉Linux内核的自解压程序使用uart3输出解压信息即可,通过分析之前的Linux下的串口驱动发现,需要将CONFIG_S3C_LOWLEVEL_UART_PORT改成3即可,测试发现,如果不修改这里,内核也无法正常启动,因为在执行putstr时会卡死,此时可以将解压时putstr注释掉即可。


此外,如果打开了Kernel low-level debugging functions,那么还需要如下配置内核:


否则,由于在调用printk的时候,会调用printascii,而printascii是用汇编实现的,他怎么知道应该从哪个串口输出呢(bootargs传的参数tty对其无效)?通过分析arch/arm/mach-exynos/include/mach/debug-macro.S 可以发现,他通过判断宏CONFIG_DEBUG_S3C_UART来知道从哪个串口输出。而上图中S3C UART to use for low-level debug 就是设置宏CONFIG_DEBUG_S3C_UART的。


关键字:tiny4412  串口驱动  串口输出 引用地址:tiny4412 串口驱动分析四 --- 修改默认的串口输出

上一篇:tiny4412 串口驱动分析五 --- LDD3上TTY驱动程序源码
下一篇:tiny4412 串口驱动分析三 --- log打印的几个阶段之内核自解压

推荐阅读最新更新时间:2024-11-02 19:34

第九章、Tiny4412 U-BOOT移植九 DDR工作时序与原理 一
DDR SDRAM 全称为 Double Data Rate SDRAM,中文名为“双倍数据流 SDRAM”。DDR SDRAM 在原有的 SDRAM的基础上改进而来。下图9-1是DDR和SDRAM的数据传输对比图。 图9-1、DDR和SDRAM的数据传输对比图 上图8-1可以清楚的看到,DDR可在一个时钟周期内传送两次数据,上升沿传一次,下降沿传一次。 一、DDR的基本原理 图9-2、DDR读操作时序图 从中可以发现它多了两个信号:CLK#与DQS,CLK#与正常 CLK 时钟相位相反,形成差分时钟信号。而数据的传输在 CLK 与 CLK#的交叉点进行,可见在 CLK 的上升与下降沿(此时正好是 CLK#的上
[单片机]
第九章、<font color='red'>Tiny4412</font> U-BOOT移植九 DDR工作时序与原理 一
关于STM32串口printf输出调试信息问题
1,遇到的问题(使用HAL库) 在STM32使用过程中,我们程序调试时一般都会用到printf重定向串口输出调试信息来进行程序开发调试,从网上我们找到了重定向的代码部分加入到串口代码文件中,如下: UART_HandleTypeDef husart_printf; #ifdef __GNUC__ /* With GCC/RAISONANCE, small printf (option LD Linker- Libraries- Small printf set to 'Yes') calls __io_putchar() */ #define PUTCHAR_PROTOTYPE int __io_
[单片机]
linux2.6.32.2 mini2440平台移植-- 串口驱动移植、I2C-EEPROM 驱动移植、看门狗驱动移植
1.7.1 把 UART2 改为普通串口驱动 S3C2440 芯片具有 3 个串口:UART0,1,2,我们下载的 Linux-2.6.32.2 已经具备完善的 UART0,1 的驱动,但对UART2 却用作了红外通讯(Irda),因此我们需要把 UART2 驱动稍微调整一下,以便作为普通串口来用。 先看看 S3C2440 串口部分寄存器的说明,如下图 接下来我们修改内核中关于 UART2 的配置,打开 mach-mini2440.c 文件,找到,如下红色代码为修改后的: static struct s3c2410_uartcfg mini2440_uartcfgs __initdata = { = {
[单片机]
linux2.6.32.2 mini2440平台移植-- <font color='red'>串口驱动</font>移植、I2C-EEPROM 驱动移植、看门狗驱动移植
基于ENC424J600的以太网与串行接口转换技术
引言     随着Internet的发展和应用,越来越多的设备需要接入网络以实现远程控制或资源共享。以太网接口布线方便,通信带宽较宽,可达100 Mb/s甚至1000Mb/s。嵌入式系统由于具有体积小、价格低、专用性能高的优势,被广泛应用于各种电子设备和工业测试设备中。随着嵌入式系统与网络的日益紧密结合,在嵌入式系统中引入TCP/IP协议栈已成为嵌入式系统领域的重要研究方向。     本义在以太网接口实现基本数据传输的基础上将其转换成其他通用串行接口(如SPI、UART、CAN),更利于应用在广泛的工业控制领域中。目前市面上的以太网控制芯片大多功耗高、功能复杂,不适合用在中低端的嵌入式系统中。之前Microchip推出的芯片ENC2
[嵌入式]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved