汇编级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. -----*/
转载于:https://www.cnblogs.com/sincos/p/3960563.html
汇编级UART串口初始化与打印相关推荐
- UART串口初始化波特率9600,8N1,发送o,k两个字符,画出通信协议,课程归纳
- (三) UART 串口通讯
UART : university asynchronous receiver and transmitter UART // 通用异步接收器和发送器 为什么要有串口:因为许多嵌入式设备没有显示屏 ...
- STM32从零到一,从标准库移植到HAL库,UART串口1以DMA模式收发不定长数据代码详解+常见问题 一文解析
前言 本文的参考资料 感谢提供标准库版本的CSDN同学:这两篇文章至少是我看过的最详细的标准库配置DMA版本.而且代码实测稳定能用. STM32 | DMA配置和使用如此简单(超详细)_...| .. ...
- AM335x Linux uart 串口(rs485rs232)无法正常通信的一种解决方法
先大概说说我是如何解决rs485(uart4)&rs233(uart5)的通信问题. 首先,在kernel-AGV/drivers/tty/serial/omap-serial.c中确定串口的 ...
- NXP(I.MX6uLL) UART串口通信原理————这个未复习
参考:Linux NXP (I.MX6uLL) UART串口通信原理 作者:一只青木呀 发布时间: 2020-09-20 16:48:33 网址:https://blog.csdn.net/weixi ...
- UART串口发送卡在UART_WaitOnFlagUntilTimeout()函数出不来
cubemx生成F091VCTx工程配置,调试时发现uart时而打印,时而不打印,仿真进去发现uart卡在UART_WaitOnFlagUntilTimeout这个函数中出不来:接线也检查了,并且通过 ...
- 【MSP430G2553】图形化开发笔记(5) UART 串口及printf
目录 概述 UART 的初始化 使用 Grace 配置 UART 介绍 用例:UART模式 FIFO的思想 使用 FIFO 发送 UART 数据 使用 FIFO 接收 UART 数据 FIFO编程 U ...
- 单片机:11.UART串口通信
原文地址:https://blog.csdn.net/Qingzhusshuiyun/article/details/78236798 通信按照传统的理解就是信息的传输与交换.对于单片机来说,通信则与 ...
- esp32的uart串口发送16进制通信指令调用实例
esp32的uart串口发送16进制通信指令调用实例 简介 最近想用esp32通过uart发送的16进制指令来控制一个语言播放模块,记录一下调用uart的过程,请大佬斧正.比较愚笨,过程中踩了很多坑, ...
最新文章
- Apache Spark源码走读之8 -- Spark on Yarn
- GDCM:gdcm::Series的测试程序
- 前端处理跨域的几种方式
- VS2010 MFC多文档中的工具栏CMFCToolBar停靠的问题
- 和宝塔可以同时安装吗_服用钙拮抗剂可以同时补钙吗
- bzoj4009: [HNOI2015]接水果(整体二分)
- html百度地图秘钥,自己网页调用百度地图API 附API密钥
- JQGrid 在页面加载时展开SubGrid
- vs code 开发企业级python_入股不亏!VS Code中最好用的Python扩展插件
- ROS下面调用自定义的头文件和.cpp/.so文件(亲测有效)
- 由摄像机的内参K计算视景体——glFrustum的参数推导
- server2012文件服务器的开始按钮,Windows Server 2012实用技巧集锦
- 用谷歌浏览器模拟打开天眼查网站并爬取需要的数据
- 干货!基于信息瓶颈理论的神经元竞争初始化策略
- 今日总结------技术是最不值钱的
- 你们都出去玩吧,我选择宅在家里「憋文章」
- 100个 ChatGPT 提示(Prompt)优化高质量提问案例
- Google Hacking使用详解
- 河南专升本公共英语语法考点分析---非谓语动词
- css3——max-height 和 min-height
热门文章
- java控制excel_java操作excel
- 学linux需要关闭防火墙,一起学习linux 关闭防火墙命令
- oracle驱动maven报错_在Maven仓库中添加Oracle JDBC驱动
- netty java开发文档_Netty简明教学文档
- ci mysql pdo_CI框架中pdo的使用方法
- linux进程增删改查,iptables的增删改查
- mysql临时表的的理解,如何理解存储过程中已存在的mysql临时表?
- 《软件需求分析(第二版)》第 1 章——软件需求基础知识 重点部分总结
- 《软件项目管理(第二版)》第 5 章——项目进度和成本管理 重点部分总结
- Eclipse 答疑:为什么在 Eclipse 中,运行本程序却是另外一个程序的结果?