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

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

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

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

40c29e94 T memscan
40c29ebc T strstr
40c29f1c T memchr
40c29f50 T strmhz
40c29fbc T udelay
40c29fec T mdelay
40c2a010 t put_dec
40c2a238 t number.clone.1
40c2a450 t vsnprintf_internal.clone.3
40c2a8ec T simple_strtoul
40c2a998 T strict_strtoul
40c2aa10 T simple_strtol
40c2aa38 T ustrtoul
40c2aaac T simple_strtoull
40c2ab88 T vsprintf
40c2ab8c T sprintf

前面40开头的就是在uboot中的映射地址,右边的就是可以调用的api了。

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

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

40c135c0 T printf

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

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

关于在arm裸板编程时使用printf问题的解决方法相关推荐

  1. mysql 5.6升级8.0_Mysql数据库从5.6.28版本升到8.0.11版本部署项目时遇到的问题及解决方法...

    MysqL数据库版本从5.6.28升到8.0.11过程中部署项目时遇到的问题和解决方法,具体介绍如下所示: 首先这个项目用到了hibernate4.2.0,链接MysqL5.6.28没问题,换到8.0 ...

  2. 使用Docker时遇到的坑与解决方法

    使用Docker时遇到的坑与解决方法 1. Docker 服务启动串台 使用 docker-compose 命令各自启动两组服务,发现服务会串台! [问题起因] 在两个不同名称的目录目录下面,使用 d ...

  3. vscode老编译之前的文件_vscode单击新文件时覆盖旧文件的解决方法

    vscode单击新文件时覆盖旧文件的解决方法 当一个项目很大的时候我们去找某一个文件经常使用搜索功能,本人经常使用快捷键ctrl+p进行某个文件的搜索,或者单机一个文件时会覆盖掉原来窗口中打开的文件, ...

  4. Adobe flash cs5 的Java运行时环境初始化错误 完美解决方法

    Adobe flash cs5 的Java运行时环境初始化错误 完美解决方法 下载网络上的Adobe flash cs5 精简版(绿色版),Java运行时环境初始化时出现错误,你可能需要重装Flash ...

  5. docker pull下载镜像时的报错及其解决方法

    docker pull下载镜像时的报错及其解决方法 参考文章: (1)docker pull下载镜像时的报错及其解决方法 (2)https://www.cnblogs.com/it-artical/p ...

  6. .Net Framework 4.5.1 安装时遇到严重错误 问题的解决方法

    .Net Framework 4.5.1 安装时遇到严重错误 问题的解决方法 参考文章: (1).Net Framework 4.5.1 安装时遇到严重错误 问题的解决方法 (2)https://ww ...

  7. linux虚拟机上不了王,虚拟机上安装Linux时出现的问题及解决方法

    虚拟机上安装Linux时出现的问题及解决方法 1.在VMWare Workstation中RedHat Error: no usable disks had been found! 原来一般Linux ...

  8. 安装Exchange2003时出0XC1037AE6错误的解决方法.

    安装Exchange2003时出0XC1037AE6错误的解决方法   今天在虚拟机安装Exchange2003时,当进行到林架构扩展ForestPrep时,出现一了个错误: 意思就是: 安装程序在安 ...

  9. SharePoint2013安装组件时AppFabric时出现1603错误,解决方法:

    采用PowerShell命令批量下载必备组件: 下载完成后,采用批处理命令安装必备组件. 注:SPS2013安装必备组件及批处理下载地址: 需要将必备组件放在安装文件的PrerequisiteInst ...

最新文章

  1. php过滤非法字符函数,利用php怎么对非法字符进行过滤
  2. 阿里云云盾吴翰清:未来将重点构建阿里云用户安全的大生态
  3. 如何做一个好的互联网老板(二)
  4. android mvc mvp 区别,谈谈Android框架 MVC、MVP、MVVM的区别
  5. 3D打印材料PLA,ABS对比
  6. ffmpeg解码流程 turorial5详解
  7. scp命令:服务器间远程复制代码
  8. Leetcode--343. 整数拆分
  9. 如何上传服务器文件大小,如何上传云服务器文件大小
  10. springboot幂等性_Spring Boot + Redis + 注解 + 拦截器来实现接口幂等性校验
  11. tp5连接mongo和mysql_tp5(thinkPHP5)操作mongoDB数据库的方法
  12. 关于Mysql模糊查询下划线的问题
  13. POJ1039+几何+直线于线段相交
  14. k8s 创建、切换、删除namespace
  15. 如何读取二进制图片-.ashx一般处理程序
  16. 【转】el-table复选框分页记忆-非:reserve-selection=true模式
  17. 我的世界服务器物品栏mod,我的世界1.7.10内置合成表MOD 物品管理器
  18. 美团外卖uml流程图_以美团外卖为例,区别业务流程图和页面流程图
  19. 最新!!2018南京买房政策大全
  20. UVA12304 2D Geometry 110 in 1!

热门文章

  1. webpack模块化原理-ES module
  2. 《PHP精粹:编写高效PHP代码》——2.7节设计数据库
  3. Android第五十二期 - 云之讯的代码混淆
  4. SQL Server与Oracle对比学习:权限管理(一)
  5. VirtualBox上编译android遇到共享文件夹引起的问题
  6. 解决initializing java tooling(1%)
  7. iofactory.php,CI框架下引入类库资源PHPPowerPoint报出“ Cannot redeclare class IOFactory”...
  8. 选择器、像素和百分比、颜色单位、文档流-css基础
  9. 二分查找(binary_search)
  10. 什么情况下需要搭建大数据平台