news 2026/10/25 2:42:23

AXI UART16550测试

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
AXI UART16550测试

发送 helloWord

#!/bin/bashset-euo pipefailUART_BASE=0x43c10000# UART 寄存器偏移RBR=0x00# 接收缓冲区THR=0x00# 发送保持寄存器IER=0x04# 中断使能FCR=0x08# FIFO 控制LCR=0x0C# Line ControlLSR=0x14# Line StatusSCR=0x1C# Scratch# --- 配置波特率 115200 ---DIVISOR=54# 100MHz / (16*115200) ≈ 54# 进入可设置波特率模式 (LCR bit7 = 1)lcr=$(devmem$((UART_BASE+LCR))32)devmem$((UART_BASE+LCR))32$((lcr|0x80))# 设置 DLL/DLMDLL=$((DIVISOR&0xFF))DLM=$(((DIVISOR>>8)&0xFF))devmem$((UART_BASE+0x00))32$DLLdevmem$((UART_BASE+0x04))32$DLM# 恢复 LCR (bit7=0)devmem$((UART_BASE+LCR))32$((lcr&~0x80))# --- 初始化 FIFO ---devmem$((UART_BASE+FCR))320x07# FIFO Enable + RX/TX Reset# --- 测试 SCR 寄存器 ---devmem$((UART_BASE+SCR))320x55val=$(devmem$((UART_BASE+SCR))32)echo"SCR test value: 0x$(printf'%02x'$val)"# --- 发送 helloWord ---msg="helloWord"for((i=0;i<${#msg};i++));dochar=${msg:$i:1}# 等待 THR 空闲 (LSR bit5)whiletrue;dolsr=$(devmem$((UART_BASE+LSR))32)if(((lsr&0x20)!=0));thenbreakfidone# 写 THRdevmem$((UART_BASE+THR))32"$(printf'0x%x'"'$char")"doneecho"Done sending 'helloWord' at 115200 baud!"

回环测试

#!/bin/bashset-euo pipefailUART_BASE=0x43c10000# UART 寄存器偏移RBR=0x00# 接收缓冲区 (读)THR=0x00# 发送保持寄存器 (写)IER=0x04# 中断使能FCR=0x08# FIFO 控制LCR=0x0C# Line ControlLSR=0x14# Line StatusSCR=0x1C# Scratch# --- 配置波特率 115200 ---DIVISOR=54# 100MHz / (16*115200) ≈ 54# 进入可设置波特率模式 (LCR bit7 = 1)lcr=$(devmem$((UART_BASE+LCR))32)devmem$((UART_BASE+LCR))32$((lcr|0x80))# 设置 DLL/DLMDLL=$((DIVISOR&0xFF))DLM=$(((DIVISOR>>8)&0xFF))devmem$((UART_BASE+0x00))32$DLLdevmem$((UART_BASE+0x04))32$DLM# 恢复 LCR (bit7=0)devmem$((UART_BASE+LCR))32$((lcr&~0x80))# --- 初始化 FIFO ---devmem$((UART_BASE+FCR))320x07# FIFO Enable + RX/TX Reset# --- 测试 SCR 寄存器 ---devmem$((UART_BASE+SCR))320x55val=$(devmem$((UART_BASE+SCR))32)echo"SCR test value: 0x$(printf'%02x'$val)"echo"Starting UART loopback (echo) test. Press Ctrl+C to exit."# --- 无限回环 ---whiletrue;do# 等待 RX 有数据 (LSR bit0)lsr=$(devmem$((UART_BASE+LSR))32)if(((lsr&0x01)!=0));then# 读取接收到的字符data=$(devmem$((UART_BASE+RBR))32)data=$((data&0xFF))# 打印收到的字符printf"%s""$(printf'\\x%02x'$data)"# 等待 THR 空闲 (LSR bit5)whiletrue;dolsr_thr=$(devmem$((UART_BASE+LSR))32)if(((lsr_thr&0x20)!=0));thenbreakfidone# 写回 THR,实现回显devmem$((UART_BASE+THR))32"$data"fidone
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/22 18:30:09

2026年最新工业AI平台推荐与全球格局

在工业智能化的深水区&#xff0c;AI早已不是那个能写诗、聊天、生成PPT的“聪明助手”&#xff0c;它必须能听懂机床的震动、看懂焊缝的微裂、算准一条产线的能耗曲线——否则&#xff0c;再炫的技术也只是展厅里的摆设。正因如此&#xff0c;2026年全球工业AI平台的排名&…

作者头像 李华
网站建设 2026/10/24 10:41:21

炒股亏钱的原因

一、市场客观原因零和博弈属性A股市场以散户为主&#xff0c;短期交易本质是资金博弈&#xff0c;少数人赚走了多数人的钱。信息不对称机构、大资金拥有信息、调研、工具优势&#xff0c;散户常处于滞后地位。系统性风险熊市周期中&#xff08;如2008、2015、2018年&#xff09…

作者头像 李华
网站建设 2026/10/22 18:30:58

计算机毕业设计springboot成人培训机构管理系统 基于SpringBoot的成人家教服务撮合平台设计与实现 成人职业技能培训信息化管理平台开发

计算机毕业设计springboot成人培训机构管理系统2q5348ul &#xff08;配套有源码 程序 mysql数据库 论文&#xff09; 本套源码可以在文本联xi,先看具体系统功能演示视频领取&#xff0c;可分享源码参考。随着职场竞争加剧和个人职业发展需求提升&#xff0c;成人教育培训市场迎…

作者头像 李华
网站建设 2026/10/22 18:31:33

Reorx:OpenClaw 正在重塑我的数字生活,以及为什么我退订了所有 SaaS

2026 年初&#xff0c;“OpenClaw”现象级爆发。当所有人都在讨论 Mac Mini 的二手价格暴涨时&#xff0c;知名技术博主 Reorx 发布了一篇长文&#xff0c;详细记录了他利用 OpenClaw 将自己的工作流从“云端租赁”彻底迁移回“本地私有”的全过程。作者揭示了一个正在发生的趋…

作者头像 李华