onlyup 发表于 2011-9-25 20:42:08

Ar.Drone 的一些资料

很遗憾地说,最近我才知道ardrone 这款产品,感觉很酷,上周买了一了。
经过一周的潜水和学习,了解了一些知识,也采购了一些硬件,希望和大家讨论一下。(限于没有嵌入式相关的经验,目前没有动手,所以现在还是纸上谈兵)

开始入门得益于MAPGPS的一些帖子,感觉很不错,里面讨论的资料我就不重复了。

先说一下ardrone的启动:
英文原贴参考MAPGPS和scorpion2k的讨论:http://www.ardrone-fHimems.com/forum/viewtopic.php?p=6116&sid=aed9f31d5898932e2f7f4f756dc94780#p6116

scorpion2k认为ardrone的启动过程是:
Conclusion:
1. The internal ROM (pre-bootloader) is never modified. So it is always possible to install a firmware over USB.
程序内置的ROM(内置只读存储器)里面存有pre-bootloader,在刷固件的过程中pre-bootloader不会被修改,所有在安装ardrone_update.plf的时候即使失败也不会影响到第一部启动,这样保证了不会刷成板砖,如果不能通过无线刷机,那么USB总是可行的。
个人理解pre-bootloader是类似PC机bios的东西。
2. ardrone_usb_bootloader.bin is executed only from internal RAM. It is not stored anywhere.
ardrone_usb_bootloader.bin 是由pre-bootloader读入RAM(内存)里启动的。由于RAM掉电清空数据,ardrone_usb_bootloader.bin本身不存在于任何地方。
3. ardrone_update.plf contains a bootloader that is stored on NAND, the actual linux kernel (stored in main_boot) and the installer (stored in alt_boot).
比较关键的一点,scorpion2k写了个工具用来提取ardrone_update.plf中的程序。
ardrone_update.plf包含了:bootloader(我认为这个是操作系统级别的bootloader,负责引导系统)存储在NAND闪存里面,真正的linux内核(存在于主引导区)以及installer (存储在程序加载区,个人这么理解的,installer 负责加载飞控程序,不知道对不对)
应该还有program.elf 。

个人理解drone升级固件的启动过程就是:
上电,主板启动pre-bootloader,启动ardrone_usb_bootloader.bin,查找USB,启动bootloader,启动installer ,将ardrone_update.plf安装到NAND。

不知道是否正确,希望有人能给一些指导。



一点资料:

Tech Toy Hacks的blog上已经写出了不依赖program.elf 的控制程序(除录像以外),地址:http://blog.perquin.com/

scorpion2k的blog 里面包含了ardrone_update.plf提取工具和使用简单的教程。http://embedded-software.blogspot.com/



另:MAPGPS不知有没有时间,希望能够和你取一下经。
页: [1]
查看完整版本: Ar.Drone 的一些资料