APM代码学习笔记2:编译过程

所有位置的Makefile 引用的都是/mk/apm.mk

target.mk 设置CONFIG_HAL_BOARD 例如linux就是HAL_BOARD_LINUX

environ.mk 设置HAL_BOARD_SUBTYPE 子类型 例如HAL_BOARD_SUBTYPE_LINUX_NAVIO

接着编译AP_HAL库 AP_HAL_Board.h会判断板子来配置cpu 存储 传感器 等等

传感器库各基类的实现会判断传感器 例如AP_Baro.cpp (Compass命名不规范)

编译注意事项:

编译需GCC 4.8 升级教程 https://somewideopenspace.wordpress.com/2014/02/28/gcc-4-8-on-raspberry-pi-wheezy/

按上文改完后还要改arm-linux-gnueabihf-

启用 Raspbian上的SPI I2C http://www.cnblogs.com/zwb800/p/5016835.html

时间: 2024-08-03 02:56:42

APM代码学习笔记2:编译过程的相关文章

APM代码学习笔记3:执行过程

以Linux平台ArduPlane为例 \ArduPlane\Plane.cpp 定义Plane类 继承自AP_HAL::HAL::Callbacks ,获取hal对象. \ArduPlane\ArduPlane.cpp 实现setup和loop函数 放置main函数 \libraries\AP_HAL\AP_HAL_Main.h 预处理定义了两种main函数 一种默认setup loop回调,给example用的.另一种需传入AP_HAL::HAL::Callbacks的子类 如Copter.

APM代码学习笔记

libraries目录 传感器 AP_InertialSensor 惯性导航传感器 就是陀螺仪加速计 AP_Baro 气压计 居然支持BMP085 在我印象中APM一直用高端的MS5611 AP_Compass 指南针 AP_GPS GPS定位 还有些飞行姿态的 AP_ARHS 姿态解算 输出Roll Yaw Pitch AP_AttitudeControl 姿态控制 APM飞这么稳就靠它了 硬件抽象层 AP_HAL 头文件 AP_HAL_AVR APM2.X时代的板子 ATMega2560处理

gcc 学习笔记(一) - 编译C程序 及 编译过程

一. C程序编译过程 编译过程简介 : C语言的源文件 编译成 可执行文件需要四个步骤, 预处理 (Preprocessing) 扩展宏, 编译 (compilation) 得到汇编语言, 汇编 (assembly) 得到机器码, 连接 (linking) 得到可执行文件; -- 查看每个步骤的编译细节 : "-E" 对应 预处理, "-S" 对应 编译, "-c" 对应 汇编, "-O" 对应 连接; -- 每个步骤对应的工

(转)redis 学习笔记(1)-编译、启动、停止

redis 学习笔记(1)-编译.启动.停止 一.下载.编译 redis是以源码方式发行的,先下载源码,然后在linux下编译 1.1 http://www.redis.io/download 先到这里下载Stable稳定版,目前最新版本是2.8.17 1.2 上传到linux,然后运行以下命令解压 tar xzf redis-2.8.17.tar.gz 1.3 编译 cd redis-2.8.17make 注:make命令需要linux上安装gcc,若机器上未安装gcc,redhat环境下,如

DuiLib学习笔记1——编译运行demo

c++中皮肤问题比较麻烦,MFC自带的太难用.DirectUI界面库就比较强大了,之前像skin++之类的基于DirectUI收费昂贵.DuiLib是基于DirectUI的界面库,可以将用户界面和处理逻辑彻底分离,极大地提高用户界面的开发效率. duilib的SVN地址:http://duilib.googlecode.com/svn/trunk 下载后运行DuiLib.sln 编译时可能会遇到几个报错. 0.开发环境本身有问题,比如用win7没有装win7sdk之类的. 1. TestApp1

十五、Android学习笔记_授权过程

1.需要申请App Key和App Secret.不同的开发平台有不同的接入方式,可以参考文档,然后将这两个值放进去. 2.通过OAuth类实现认证,它会自动跳转到认证界面,进行授权,成功之后需要处理回调接口. 3.在第二步调用回调接口时,它会返回用户的基本信息,比如用户id.此时需要将用户id信息保存起来,为后面登录做准备.回调接口的写法就为myapp://AuthorizeActivity,其中scheme全部为小写字母. <activity android:name="com.wei

swift学习笔记(六)析构过程和使用闭包对属性进行默认值赋值

一.通过闭包和函数实现属性的默认值 当某个存储属性的默认值需要定制时,可以通过闭包或全局函数来为其提供定制的默认值. 注:全局函数结构体和枚举使用关键字static标注    函数则使用class关键字标注 当对一个属性使用闭包函数进行赋值时,每当此属性所述的类型被创建实例时,对应的闭包或函数会被调用,而他们的返回值会被作为属性的默认值. ESC: Class SomeCLass{ let someProperty:SomeType={ //给someProperty赋一个默认值 //返回一个与

【学习笔记】编译原理-有限自己主动机

一.定义: 不确定的有限自己主动机(NFA): 一种数学模型 (1) 一个有限的状态集合S (2) 一个输入符号集合∑(不包括ε) (3) 一个转换函数move: S X (∑ U {ε}) -> P(S) (4) 状态s0是唯一的開始状态 (5) 状态集合F是接受状态集合,S包括F 确定的有限自己主动机(DFA): 是NFA的特殊情况 (1) 不论什么状态都没有ε转换 (2) 对于不论什么状态s和不论什么输入符号a,最多仅仅有一条标记为a的边离开,即转换函数move: S X ∑-> S能够

【学习笔记】编译原理-有限自动机

一.定义: 不确定的有限自动机(NFA): 一种数学模型 (1) 一个有限的状态集合S (2) 一个输入符号集合∑(不包含ε) (3) 一个转换函数move: S X (∑ U {ε}) -> P(S) (4) 状态s0是唯一的开始状态 (5) 状态集合F是接受状态集合,S包含F 确定的有限自动机(DFA): 是NFA的特殊情况 (1) 任何状态都没有ε转换 (2) 对于任何状态s和任何输入符号a,最多只有一条标记为a的边离开,即转换函数move: S X ∑-> S可以是一个部分函数. 二.