news 2026/2/17 1:38:53

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/2/11 11:23:15

UI自动化:如何选择适合的CSS定位方式(实战选型指南)

UI自动化&#xff1a;如何选择适合的CSS定位方式&#xff08;实战选型指南&#xff09; 在UI自动化测试中&#xff0c;CSS定位凭借高效、简洁、兼容性好的优势&#xff0c;成为大多数工程师的首选定位方式。但CSS定位包含多种选择器&#xff08;ID、类、属性、层级等&#xff0…

作者头像 李华
网站建设 2026/2/12 11:55:29

YC 专访 OpenClaw 创始人:80% 的 App 将会消失,我们还剩下什么?

编译 | 王启隆出品丨AI 科技大本营&#xff08;ID&#xff1a;rgznai100&#xff09;采访视频 | youtu.be/4uzGDAoNOZc如果说 2026 年初有什么事情比 OpenClaw 本身更疯狂&#xff0c;那大概就是它的创造者 Peter Steinberger 正在经历的生活。两周前&#xff0c;他还是一个居住…

作者头像 李华
网站建设 2026/2/14 20:56:12

【超详细】漏洞挖掘零基础入门教程!精通看这一篇就够!

初学者最好不要上手就去搞漏洞挖掘&#xff0c;因为漏洞挖掘需要很多的系统基础知识和一些理论知识做铺垫&#xff0c;而且难度较大…… 较合理的途径应该从漏洞利用入手&#xff0c;不妨分析一些公开的CVE漏洞。很多漏洞都有比较好的资料&#xff0c;分析研究的多了&#xff…

作者头像 李华
网站建设 2026/2/16 1:46:15

指数期权买卖价差指标的量化应用

功能说明与风险提示 本策略通过分析指数期权合约的买卖价差数据&#xff0c;构建基于价差特征的市场情绪指标&#xff0c;用于识别短期市场供需失衡状态。核心逻辑包含三个维度&#xff1a;绝对价差水平反映流动性状况&#xff0c;相对价差波动率捕捉市场恐慌程度&#xff0c;价…

作者头像 李华
网站建设 2026/2/16 11:39:49

基于MATLAB 多算法雷达一维恒虚警检测CFAR可视化界面

1、内容简介 利用MATLAB GUI设计平台&#xff0c;设计多算法雷达一维恒虚警检测CFAR可视化界面&#xff0c;通过选择噪声类型、目标类型、算法类型&#xff0c;手动输入相关参数&#xff0c;可视化显示噪声波形与目标检测的回波-检测门限波形图。 运行cfar.m即可调用GUI进行参…

作者头像 李华
网站建设 2026/2/16 21:43:36

如何做谷歌seo排名优化?新手到高手的实操干货

很多人觉得做谷歌排名就像玄学&#xff0c;每天盯着数据看却不见涨。其实说白了&#xff0c;谷歌就是一个给用户找答案的机器&#xff0c;它最想干的事就是把最有用、最靠谱的东西排在前面。如果你整天想着钻空子、堆关键词&#xff0c;那肯定走不远。咱们今天不聊那些虚头巴脑…

作者头像 李华