有关 MicroBlaze中xil_prinf/pirntf/print的一些问题

举报
心殁花满楼 发表于 2022/06/30 18:54:10 2022/06/30
【摘要】 三个函数有什么区别 1.依赖的库文件不同printf使用C标准库头文件stdio.hprint/xil_printf使用xilinx定义的头文件xil_printf.h 2.能够输出的格式不同print只能打印字符串,不可以带参数格式化输出,函数在print.c中定义xil_printf可以带参量打印,但是不支持打印浮点数,函数在xil_printf.c中定义printf可以带参量打印,用...

三个函数有什么区别

1.依赖的库文件不同

printf使用C标准库头文件stdio.h
print/xil_printf使用xilinx定义的头文件xil_printf.h

2.能够输出的格式不同

print只能打印字符串,不可以带参数格式化输出,函数在print.c中定义
xil_printf可以带参量打印,但是不支持打印浮点数,函数在xil_printf.c中定义
printf可以带参量打印,用法和常规的c中一样。

有关这个问题的详细分析可以参考国外大佬的视频
防挂

https://www.youtube.com/watch?v=f2pPIRHc0bM

总结用法
使用xlinx提供的两个函数可以输出除了浮点数外的格式,打包后的代码体积会比较小。具体要涉及编译原理,我就不太懂了。
使用printf可以输出浮点数,但是代价是生成的位流体积会比较大。
只输出字符串-print
输出整形量-xil_printf
输出浮点数-printf

如何映射打印的串口到print函数

print.c中

/microblaze_0/standalone_domain/bsp/microblaze_0/libsrc/standalone_v7_7/src/common/print.c
/microblaze_0/standalone_domain/bsp/microblaze_0/libsrc/standalone_v7_7/src/common/xil_printf.c

中通过阅读函数,最后发现,控制写入哪个串口的实际上是通过地址重映射实现的。
地址被定义在xparameter.h中。

#define STDIN_BASEADDRESS 0x41400000
#define STDOUT_BASEADDRESS 0x41400000

如果想更改打印串口,修改这两个基地址即可。

也可以在platform的spr文件中修改。步骤如下

  • 图片.png
  • 图片.png
  • 图片.png
    可以在下拉菜单中选择不同的串口

print函数无法完整打印bug1解决

#todo

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。