有关 MicroBlaze中xil_prinf/pirntf/print的一些问题
【摘要】 三个函数有什么区别 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文件中修改。步骤如下
可以在下拉菜单中选择不同的串口
print函数无法完整打印bug1解决
#todo
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)