Skip to content

Pixhawk 6C support#176

Closed
Pan-Chenliang wants to merge 47 commits intoFirmament-Autopilot:masterfrom
Pan-Chenliang:staging/fmu-v6c
Closed

Pixhawk 6C support#176
Pan-Chenliang wants to merge 47 commits intoFirmament-Autopilot:masterfrom
Pan-Chenliang:staging/fmu-v6c

Conversation

@Pan-Chenliang
Copy link
Copy Markdown
Contributor

@Pan-Chenliang Pan-Chenliang commented Feb 5, 2026

在Holybro pixhawk 6c载板上加载了FMT

  • 完成基本的配置,固件可以正常加载、运行且不会崩溃
  • 基本的板载传感器(陀螺仪、加速度等)可以正常在qgc显示
  • IO固件似乎红灯闪烁,可能没有在正常工作
  • 代码中对除了target/pixhawk/fmu-v6c文件夹以外的代码做了一些修改,部分修改可能是不必要的,有待进一步确认
  • 外围传感器(I2C、GPS等)还有待测试
  • 可靠性和潜在的问题有待测试,但是目前没用发现更多问题

我希望新建一个staging/fmu-v6c分支并继续开发直到稳定可靠?

@JcZou
Copy link
Copy Markdown
Contributor

JcZou commented Feb 9, 2026

请只在target/pixhawk/fmu-v6c中修改bsp相关文件,而不修改其它目录下的文件(除非是有必要)

@Pan-Chenliang
Copy link
Copy Markdown
Contributor Author

请只在target/pixhawk/fmu-v6c中修改bsp相关文件,而不修改其它目录下的文件(除非是有必要)

好的,目前驱动还是有一些问题,我修复之后会整理清除不必要的修改。

@JcZou
Copy link
Copy Markdown
Contributor

JcZou commented Feb 14, 2026

请只在target/pixhawk/fmu-v6c中修改bsp相关文件,而不修改其它目录下的文件(除非是有必要)

好的,目前驱动还是有一些问题,我修复之后会整理清除不必要的修改。

驱动可以复用S1的驱动(都是STM32H7),只要把引脚的Port和Pin进行替换就行

@Pan-Chenliang
Copy link
Copy Markdown
Contributor Author

@JcZou 我已经对非必要的修改做了清理,以下是对除fmu-v6c文件夹以外修改的说明(基于和master分支 cd4980a: Move parse_mlog.py to utils folder 提交之间的对比):

  1. src/driver/barometer/ms5611.c 和 ms5611.h
    ms5611传感器支持i2c和spi两种协议,之前的ms5611驱动仅支持spi,但是v6c板子上的ms5611是挂载在i2c4上的,因此将驱动修改成了兼容i2c和spi的。i2c工作没什么问题,建议您对spi工作是否正常再加以测试。

  2. src/driver/imu/bmi055.c 和 bmi055.h
    根据bmi055的数据手册,它的加速度计和陀螺仪是各自占一个spi设备的。之前的init函数只留了一个设备名,然后将加速度计的设备名写死为"spi1_dev4",这显然是有问题的。因此做了修改。但是这里涉及到drv_bmi055_init函数的参数数量变化,所有使用bmi055的载板都需要修改。

  3. src/driver/imu/icm42688p.c
    在反复测试的过程中,icm42688p会有比较小的概率(可能1/20)assert失败,copilot说是因为在传感器register之后没有及时调用rt_device_init,为此在init函数的最后对gyro和accel做了init,确实解决了问题。bmi055的末尾也加了如此的操作。具体原因我也不是很懂,还麻烦您分析这是否有必要。

  4. src/driver/mtd/ramtron.c
    似乎之前的FRAM并没有真正被使用?而且之前的ramtron驱动似乎有点问题。调整了地址长度的判断条件,另外根据 FM25V02A 的手册,对spi部分稍作调整,使得可以正常加载设备。

  5. src/hal/barometer/barometer.c
    做了兼容i2c协议气压计的修改。

  6. src/hal/mtd/mtd.c
    与ramtron.c:265行 ramtron_dev.blk_geometry = geometry; 对应,在geometry为空的时候防止崩溃。

  7. src/module/param/param_fram.c ,param_fram.h , param.c , param.h , cmd_param.c
    将fram用于存储param.xml的参数,可以和sd卡的sys/param.xml互为备份。param.c、cmd_param.c做了相应的补充修改。

  8. src/startup.c
    增加了
    __DSB(); __ISB();
    保证内存与指令一致性,防止未排序的访问或管线问题导致异常行为。

  9. .vscode/launch.json
    增加了fmu-v6c的调试配置(但是是stlink的,手头暂时没有jlink)。

以上是所有fmu-v6c文件夹外的修改,请您过目,如有疑问请随时@我,谢谢。

@Pan-Chenliang
Copy link
Copy Markdown
Contributor Author

ms5611的i2c驱动好像还有一些问题,我再修改修改

@Pan-Chenliang
Copy link
Copy Markdown
Contributor Author

ms5611的i2c驱动好像还有一些问题,我再修改修改

这个问题已经解决了

@Pan-Chenliang
Copy link
Copy Markdown
Contributor Author

@JcZou 已经完成代码清理了,目前只有.vscode/launch.json添加了fmu-v6c的调试配置(jlink),其他所有改动都在target/pixhawk/fmu-v6c文件夹内。
经过测试,板载传感器(ist8310,bmi055,icm42688p,ms5611)和板载存储(fram)、SD卡、外部i2c接口、pwm输出(包括fmtio)、pmu(power1正常,power2暂不支持测量)、telem 1和2(3暂时没有启用)、GPS 1和2、sbus输入、debug接口均经过测试可用。
暂未解决的问题:can接口暂时无法测试工作是否正常。

@Pan-Chenliang
Copy link
Copy Markdown
Contributor Author

@JcZou 已经完成代码清理了,目前只有.vscode/launch.json添加了fmu-v6c的调试配置(jlink),其他所有改动都在target/pixhawk/fmu-v6c文件夹内。 经过测试,板载传感器(ist8310,bmi055,icm42688p,ms5611)和板载存储(fram)、SD卡、外部i2c接口、pwm输出(包括fmtio)、pmu(power1正常,power2暂不支持测量)、telem 1和2(3暂时没有启用)、GPS 1和2、sbus输入、debug接口均经过测试可用。 暂未解决的问题:can接口暂时无法测试工作是否正常。

can也测试通过了

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants