Chinaunix首页 | 论坛 | 博客
  • 博客访问: 387646
  • 博文数量: 61
  • 博客积分: 4650
  • 博客等级: 上校
  • 技术积分: 786
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-11 21:07
个人简介

少抱怨,多实干;

文章分类

全部博文(61)

文章存档

2017年(1)

2016年(13)

2015年(1)

2013年(2)

2011年(1)

2010年(3)

2009年(23)

2008年(17)

我的朋友

分类: C/C++

2016-03-10 14:08:19

Nuttx系统类似Linux,运行后是一个控制台,支持用户开发的各种指令,每个指令相当于一个小的应用程序。
每个应用程序的入口函数的定义类似:px4_simple_app_main(int argc, char *argv[]);
并且,这些函数必须被导出为C格式(CPP程序):

  1. extern "C" __EXPORT int camera_trigger_main(int argc, char *argv[]);

或者(C程序):

  1. __EXPORT int camera_trigger_main(int argc, char *argv[]);
这些函数的定义可以是在源码的任何地方,通常应户级的程序在nuttx目录下的app下面,当然也可以是其它地方。

所有的命令都定义在 builtin_commands.c文件里,而这个文件是编译时自动生成的。

-----------------------------------------------------------
PX4_bootloader:
主程序入口为 Main_f4.c中的main函数。
软件定义了USB和UART两种通讯方式,均可以与主机进行通讯,如烧录固件,查讯固件版本等。
static void board_init(void)函数是板级的初始化,这里初始化了USB口和UART口,并且可以通过宏定义来修改UART口的定义。
文件hw_config.h中包含了这些板级信号相关的定义。可以在这里修改LED灯和UART等相关设置,不同板子的型号用#if 来进行区分。
Bl.c的void bootloader(unsigned timeout)函数中定义了对命令的解析。

1. 命令格式为:
[命令字]([参数])[结束符], 其中参数域为可选项。结束符固定为0x20。

2. 非法命令的返回数据为:0x12 0x13  ---->static void invalid_response(void)
3. 失败状态返回的数据为:0x12 0x11 ----->static void failure_response(void)
4. 错误silicon的应答数据:0x12 0x14   ,该数据仅 PX4 FMU V4版本支持。---->static void bad_silicon_response(void)
5. 成功时返回的数据为:[命令数据请求][同步数据] ,其中“同步数据”来用表示命令执行成功,固定为0x12 0x10两个字节。--->static void sync_response(void)

6. 所支持的指令有:
0x21  0x20 ---- NOP for re-establishing sync
0x22  0x01 0x20  -------------- bootloader revision
         0x02 0x20  -------------- board ID
         0x03 0x20  -------------- board revision
         0x04 0x20  -------------- size of flashable area
         0x05 0x20  -------------- contents of reserved vectors 7-10

0x23 0x20 ----- erase program area and reset program address
0x27 0xNN ....... 0x20 ---- write bytes at program address and increment,0xNN必须是4的整数倍,用于SRAM地址对齐,且不大于256;
0x29 0x20 ---- compute & return a CRC
0x2A 0x01000000 0x20 ---- read a byte from OTP at the given address
0x2B 0x01000000 0x20 ---- read a word from UDID area ( Serial)  at the given address
0x2C 0x20 ---- read chip version (MCU IDCODE)
0x2D ---- set minimum boot delay
0x2E 0x20 ---- read chip version In ASCII
0x30 ---- boot the application
0x31 ---- emit debug information - format not defined


有用的链接:




阅读(4455) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~