用于新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. -----*/

转载于:https://www.cnblogs.com/sincos/p/3960563.html

汇编级UART串口初始化与打印相关推荐

  1. UART串口初始化波特率9600,8N1,发送o,k两个字符,画出通信协议,课程归纳

  2. (三) UART 串口通讯

    UART  : university asynchronous receiver and transmitter UART  // 通用异步接收器和发送器 为什么要有串口:因为许多嵌入式设备没有显示屏 ...

  3. STM32从零到一,从标准库移植到HAL库,UART串口1以DMA模式收发不定长数据代码详解+常见问题 一文解析

    前言 本文的参考资料 感谢提供标准库版本的CSDN同学:这两篇文章至少是我看过的最详细的标准库配置DMA版本.而且代码实测稳定能用. STM32 | DMA配置和使用如此简单(超详细)_...| .. ...

  4. AM335x Linux uart 串口(rs485rs232)无法正常通信的一种解决方法

    先大概说说我是如何解决rs485(uart4)&rs233(uart5)的通信问题. 首先,在kernel-AGV/drivers/tty/serial/omap-serial.c中确定串口的 ...

  5. NXP(I.MX6uLL) UART串口通信原理————这个未复习

    参考:Linux NXP (I.MX6uLL) UART串口通信原理 作者:一只青木呀 发布时间: 2020-09-20 16:48:33 网址:https://blog.csdn.net/weixi ...

  6. UART串口发送卡在UART_WaitOnFlagUntilTimeout()函数出不来

    cubemx生成F091VCTx工程配置,调试时发现uart时而打印,时而不打印,仿真进去发现uart卡在UART_WaitOnFlagUntilTimeout这个函数中出不来:接线也检查了,并且通过 ...

  7. 【MSP430G2553】图形化开发笔记(5) UART 串口及printf

    目录 概述 UART 的初始化 使用 Grace 配置 UART 介绍 用例:UART模式 FIFO的思想 使用 FIFO 发送 UART 数据 使用 FIFO 接收 UART 数据 FIFO编程 U ...

  8. 单片机:11.UART串口通信

    原文地址:https://blog.csdn.net/Qingzhusshuiyun/article/details/78236798 通信按照传统的理解就是信息的传输与交换.对于单片机来说,通信则与 ...

  9. esp32的uart串口发送16进制通信指令调用实例

    esp32的uart串口发送16进制通信指令调用实例 简介 最近想用esp32通过uart发送的16进制指令来控制一个语言播放模块,记录一下调用uart的过程,请大佬斧正.比较愚笨,过程中踩了很多坑, ...

最新文章

  1. Apache Spark源码走读之8 -- Spark on Yarn
  2. GDCM:gdcm::Series的测试程序
  3. 前端处理跨域的几种方式
  4. VS2010 MFC多文档中的工具栏CMFCToolBar停靠的问题
  5. 和宝塔可以同时安装吗_服用钙拮抗剂可以同时补钙吗
  6. bzoj4009: [HNOI2015]接水果(整体二分)
  7. html百度地图秘钥,自己网页调用百度地图API 附API密钥
  8. JQGrid 在页面加载时展开SubGrid
  9. vs code 开发企业级python_入股不亏!VS Code中最好用的Python扩展插件
  10. ROS下面调用自定义的头文件和.cpp/.so文件(亲测有效)
  11. 由摄像机的内参K计算视景体——glFrustum的参数推导
  12. server2012文件服务器的开始按钮,Windows Server 2012实用技巧集锦
  13. 用谷歌浏览器模拟打开天眼查网站并爬取需要的数据
  14. 干货!基于信息瓶颈理论的神经元竞争初始化策略
  15. 今日总结------技术是最不值钱的
  16. 你们都出去玩吧,我选择宅在家里「憋文章」
  17. 100个 ChatGPT 提示(Prompt)优化高质量提问案例
  18. Google Hacking使用详解
  19. 河南专升本公共英语语法考点分析---非谓语动词
  20. css3——max-height 和 min-height

热门文章

  1. java控制excel_java操作excel
  2. 学linux需要关闭防火墙,一起学习linux 关闭防火墙命令
  3. oracle驱动maven报错_在Maven仓库中添加Oracle JDBC驱动
  4. netty java开发文档_Netty简明教学文档
  5. ci mysql pdo_CI框架中pdo的使用方法
  6. linux进程增删改查,iptables的增删改查
  7. mysql临时表的的理解,如何理解存储过程中已存在的mysql临时表?
  8. 《软件需求分析(第二版)》第 1 章——软件需求基础知识 重点部分总结
  9. 《软件项目管理(第二版)》第 5 章——项目进度和成本管理 重点部分总结
  10. Eclipse 答疑:为什么在 Eclipse 中,运行本程序却是另外一个程序的结果?