私はセミホスト用にcortex-m4を研究し、stm32f429ディスカバリボードを使用しています。 私は、通常の状況ではARMセミホスティングのデバッグモードを確認してください
if ((CoreDebug->DHCSR & CoreDebug_DHCSR_C_DEBUGEN_Msk) \
==CoreDebug_DHCSR_C_DEBUGEN_Msk) {
printf("THIS IS SEMIHOST\n");
}
のように、 だから、私はprintfの()の前に裁判官のデバッグステータスを使用することを願って、ボードがスタンドアロンの(デバッグモードではない)であるときに動作しないことができるsemihostに問題がある、それを私の期待どおり、デバッグモードでは、私はスタンドアロンで、何も保留中semihiostログを見ることができます。しかし、ある状況では、私はちょうどフラッシュにコードを燃やす(Linuxでstlinkハードウェアとopenocdまたはtexane stlinkを使用して)。デバッグモードでなければならないと思っていました。ボード上のハードウェアボタンをリセットしても、それはまだ1を保ち、プログラムはprintf()で保留になります。 。
電源を抜いてからもう一度接続すると、デバッグモードのビットが0に戻り、正しく動作します。この問題は解決できますか?または私は間違ったopenocdコマンドを使用しますか?ありがとう。私が使用
openocdコマンド:
openocd -f interface/stlink-v2.cfg -f target/stm32f4x_stlink.cfg \
-c "init" \
-c "reset init" \
-c "flash write_image erase XXX.bin 0x8000000" \
-c "reset run" \
-c "shutdown"