博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于在arm裸板编程时使用printf问题的解决方法
阅读量:6589 次
发布时间:2019-06-24

本文共 747 字,大约阅读时间需要 2 分钟。

    在ARM裸板驱动编程中,是不允许程序直接调用C库程序的。为什么呢?因为此时kernel还没有被加载,所以在封装在kernel层的C库的API是用不了的,那怎么办?

    在开发过程中,printf的功能我不用再详细多说,就是用来debug调试程序的,有了printf,写代码出错的时候能够快速定位错误。

    那么如何在裸板中调用呢?

    1、首先,我们在u-boot源代码中找到System.map这个文件,打开后我们能看到以下信息:(太多了,我只列举一部分)

40c29e94 T memscan40c29ebc T strstr40c29f1c T memchr40c29f50 T strmhz40c29fbc T udelay40c29fec T mdelay40c2a010 t put_dec40c2a238 t number.clone.140c2a450 t vsnprintf_internal.clone.340c2a8ec T simple_strtoul40c2a998 T strict_strtoul40c2aa10 T simple_strtol40c2aa38 T ustrtoul40c2aaac T simple_strtoull40c2ab88 T vsprintf40c2ab8c T sprintf
前面40开头的就是在uboot中的映射地址,右边的就是可以调用的api了。

接下来我们在.c中就可以这样定义声明:

//在uboot中找到printf的映射地址

40c135c0 T printf

#define vsprintf ((int (*)(const char *, ...))0x40c135c0)

在main函数中就可以自由调用printf这个函数了

转载地址:http://pxuio.baihongyu.com/

你可能感兴趣的文章
wxWidgets利用tinyxml实现xml解析
查看>>
mysql主从同步和读写分离
查看>>
jconsole监控linux系统的jvm使用
查看>>
网络安全设计、配置与管理大全
查看>>
check outlook mailbox size
查看>>
什么是 stack?- 每天5分钟玩转 Docker 容器技术(111)
查看>>
java 泛型编程(一)
查看>>
Dell PowerEdge R940解析:四路顶配服务器维护平民化
查看>>
《数据重现》赠书活动开始
查看>>
Android 中文 API (93) —— BaseExpandableListAdapter
查看>>
PowerShell中单引号和双引号的区别
查看>>
【ARM】gpio·arm体系结构之gpio
查看>>
数据库启动时遇到ORA-01578错误
查看>>
Fedora 12 (Constantine)Beta版及Alpha镜像下载
查看>>
稳扎稳打Silverlight(3) - 2.0控件之Border, Button, Calendar, Canvas, CheckBox, ComboBox
查看>>
Who's Using Cyberthreat Intelligence and How?
查看>>
【翻译】SQL Server索引进阶:第六级,标签
查看>>
确定两串乱序同构
查看>>
寒假研究计划
查看>>
Android:ListView、BaseAdapter、convertView、ListView优化及事件、notifyDataSetChanged()
查看>>