赞
踩
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.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文件中修改。步骤如下
#todo
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。