善财童子SIXSIXSIX 2015-01-13 02:58 采纳率: 50%
浏览 1804
已采纳

用C++面向对象的方法访问硬件资源

最近在开发一个基于ATMega2560的单片机系统,因为外围模块比较多,
同时也想以后开发其它板子时,能够稍微修改上一次的代码就可以适用到新板子,
查阅很多资料后,发现APM飞控就是用这样的一种思想:硬件抽象层;还有就是Android系统也使用了硬件抽象层的概念,这样的设计可以极大地提高兼容性。然而当我仔细研究APM的源码之后,我发现我找不到任何访问硬件的信息,难道C++不能直接访问硬件吗?在这里提问,希望各位师兄师姐,给位大神,牛人能够不吝赐教,小生感激不尽!在此先谢过大家了~~~

  • 写回答

5条回答 默认 最新

  • 无规矩不成方圆 2015-01-14 06:06
    关注

    嵌入式操作系统一般都是使用宏定义来定义设备的接口地址,像我之前使用的C51单片机,根本没有操作系统,通过说明书可以了解到它的许多接口地址,这些都是生产厂商规定好的,我使用的时候都是重新用宏来定义一下(地址较少相对简单),如果是其他平台(arm板等等),建议你搜索一下其他嵌入式系统,我之前一直在用ucos-ii,这是一款专门的嵌入式操作系统,代码精简深入,用C语言写的,其中就涉及到你说的硬件操作问题,很适合你去学习,相信你看过以后问题自然就会明白了。这是ucos官网http://micrium.com/

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容
  • ¥15 关于#stm32#的问题:CANOpen的PDO同步传输问题