汇编级UART串口初始化与打印

用于新PCB板调试开发,在系统最开始(内存初始化之前),尽快打印字符,验证CPU是否正常启动。

以freescale QorIQ 处理器兼容的UART为例,符合16550串口标准:

/*UART DEBUG*/

/*
#define CCSBAR_RESET            0xff700000
#define CCSBAR                  0xf3000000
*/

#define DUART_BLOCK_BASE 0x4000
#define UART0_REG_BASE         (CCSBAR     +   DUART_BLOCK_BASE+0x500) 
#define UART1_REG_BASE         (CCSBAR     +   DUART_BLOCK_BASE+0x600)

#define LCR_DLAB 0x80 /* divisor latch access enable */
#define DLAB  LCR_DLAB

/*UART0 baudrate: 115200 . Refer to : ns16550sio.c */
/* 
For P1020 board: xtal = CCB clk = 266M Hz, core0 = 2*CCB = 533.
divisor = ((pChan->xtal + (8 * baud)) / (16 * baud))
        = (pChan->xtal / ( 8UL * baud ) + 1) / 2
        = (266000000 / (8*115200)  +1 )/2
        = 144.8 = 145 = 0x0091

For P2020 brd, it is 600MHz (sysClkFreqGet()), divisor = 0x146.
*/

/*-------- enable DLAB. begin --------*/
    lis  r6, HIADJ(UART0_REG_BASE)
    ori r6, r6, LO(UART0_REG_BASE)
    lbz  r4, 3(r6)  /*read Reg LCR*/
    ori  r4, r4, LCR_DLAB
    stb  r4, 3(r6)  /*write Reg LCR. Enable DLAB */
 msync
 isync
 /*-------- enable DLAB. end  --------*/

/*------- set baud rate. begin ------*/
    li   r7, 0x46   /*divisor low byte*/
    stb  r7, 0(r6)
    msync
 isync
 
    li   r7, 0x01  /*divisor high byte*/
    stb  r7, 1(r6) /*set baud rate: 115200*/
 msync
 isync
    /*------- set baud rate. end  ------*/

/*------- set options. begin -------*/
    li r7, 0x03
    stb r7, 3(r6) /*set options in reg LCR : 8-N-1-none*/
 msync
 isync
 /*------- set options. end -------*/

/*------- Write information to UART port. begin ------*/
 li   r7, 0x55 /*U*/
    stb  r7, 0(r6)
    msync
 isync
 li   r7, 0x79 /*y*/
    stb  r7, 0(r6)
    msync
 isync
 /*------- End to write. -----*/

时间: 2024-11-05 04:48:20

汇编级UART串口初始化与打印的相关文章

(三) UART 串口通讯

UART  : university asynchronous receiver and transmitter UART  // 通用异步接收器和发送器 为什么要有串口:因为许多嵌入式设备没有显示屏,无法获得设备的实事数据信息,所以可以通过 UART 串口和超级终端相连,打印嵌入式设备输出信息.也可以通过串口跟踪和调试. 比如设备: 网络路由器.交换机通过串口配置, GPS接收器通过串口输出GPS接收的数据. 1.异步通信技术:发送和接收方没有同步时钟,只有数据线,但是协商好了协议,(固定频率

S3C2440 UART串口驱动

++++++++++++++++++++++++++++++++++++++++++ 本文转载自mr_raptor的专栏,感谢mr_raptor大神. http://blog.csdn.net/mr_raptor/article/details/6556133 ++++++++++++++++++++++++++++++++++++++++++ 通用异步接收器和发送器(Universal Asynchronous Receiver and Transmitter)简称UART.通常是嵌入式设备中

串口驱动程序设计详解---串口初始化(上)

TTY驱动程序架构: 1. TTY概念解析 1.1 /dev/ttySCA0 1.2 /dev/tty1-n 1.3 /dev/console 在linux系统中,终端是一类字符型设备,它包括多种类型,通常使用tty来简称各种类型的终端设备. . 串口终端(/dev/ttyS*) 串口终端是使用计算机串口连接的终端设备.Linux把每个串行端口都看做是一个字符设备.这些串行端口所对应的设备名称是/dev/ttySAC*; .控制台终端(/dev/console) 在Linux系统中,计算机的输出

基于STM32之UART串口通信协议(二)发送

一.前言 1.简介 在上一篇UART详解中,已经有了关于UART的详细介绍了,也有关于如何使用STM32CubeMX来配置UART的操作了,而在该篇博客,主要会讲解一下如何实现UART串口的发送功能. 2.UART简介 嵌入式开发中,UART串口通信协议是我们常用的通信协议之一,全称叫做通用异步收发传输器(Universal Asynchronous Receiver/Transmitter). 3.准备工作 在UART详解中已经有了详细的说明,在这里就不说明了. 注: 建议每次编写好一个相关功

嵌入式Linux裸机开发(七)——UART串口通信

嵌入式Linux裸机开发(七)--UART串口通信 一.UART串口通信简介 通用异步收发器简称UART,即UNIVERSAL ASYNCHRONOUS RECEIVER AND TRANSMITTER, 它用来传输串行数据.发送数据时, CPU 将并行数据写入UART,UAR按照一定的格式在一根电线上串 行发出:接收数据时, UART检测另一根电线的信号,将串行收集在缓冲区中, CPU 即可读取 UART 获得这些数据. 在 S5PV210中, UART提供了 4 对独立的异步串口I/O端口,

u-boot分析(八)----串口初始化

u-boot分析(八) 上篇博文我们按照210的启动流程,分析到了内存初始化,今天我们继续按照u-boot的启动流程对串口的初始化进行分析. 今天我们会用到的文档: 1.        2440芯片手册:http://download.csdn.net/detail/wrjvszq/8358949 2.        6410芯片手册:http://download.csdn.net/detail/wrjvszq/8358965 3.        210芯片手册:S5PV210_UM_REV1

Win10 IoT C#开发 4 - UART 串口通信

原文:Win10 IoT C#开发 4 - UART 串口通信 Windows 10 IoT Core 是微软针对物联网市场的一个重要产品,既可以开发设备UI与用户交互式操作,又可以控制GPIO等接口,使得原来嵌入式繁琐的开发变得简单.通过Remote Debug功能可以进行断点追踪调试.C#语言本身也有很好的用户基础,相信Win10 IoT 不远的将来会火起来.上个月帮朋友解决了关于Win10 IoT 的一些技术问题,当前也有很多公司在尝试采用Win10 IoT进行开发,可能也会遇到这些问题,

Linux下使用putty进行UART串口调试【转】

本文转载自:http://blog.csdn.net/xzongyuan/article/details/11593101 版权声明:本文为博主原创文章,未经博主允许不得转载. 使用putty进行串口调试,非常简单.只需要设置好端口(Serial Line),Linux中默认接上串口后,端口为ttyS0,或者ttyUSB0(对应USB转串口),如果再多接一个,就会显示ttyS1或者ttyUSB1:Window中,普通串口对应的是COM1.COM2,USB对应COM3(需要安装驱动,在设备管理器查

【C51】UART串口通信

我们常需要单片机和其他模块进行通信,数据传输,常用的方式就是串口通信技术. 常用来 单片机<-->电脑,  单片机<-->单片机之间通信. 串行通信 versus 并行通信 并行传输:将字节的各个 bit 用多条传输线路同时发送出去.每个bit使用一条线路. 优点:速度相对快,控制简单. 缺点:控制线路多,耗费的硬件资源多. 串行传输:将一个字节的数据的各个 bit 在一条线路上 分时发送.一个字节8位,则至少需要分8次发送完. 优点:需要的线路少,成本低. 缺点:控制复杂,因为它