STM32f102/f103向けのCMSIS-DAPには公開されているものがいくつかあるのですが、ビルドサイズはSWD_REMAPを除き32kbyte以下なので、Keil-liteでビルドできないかと色々やっていると、こちらのレポジトリの内、CMSIS-DAP/Firmware/STM32/CMSIS_DAP_USB.uvprojというプロジェクトがあり、コンパイルできたのですが、動作確認はできませんでした。しかし、プロジェクトをよく見ると、以前Keil-liteでCMSIS-DAPをビルドしようとしたときにはあまり詳しくは追っていなかったのですが、USB_CM3.libというライブラリをビルドに含んでいるとエラーになっていたようでした。そこで、今一度ビルドの通った前述のプロジェクトを見ると、USB_CM3.libはビルドに含まれておらず、ソースファイルを直接ビルドするようになっていたので、これを参考にしたところ、Keil-liteでBluePill用の(追記:SWD_REMAPを除き)CMSIS-DAPのビルドができたので、備忘録として本稿をあげてみました。
以下、手順です。
1. keil-liteのインストール
まず、keil-liteをインストールします。keil-liteの初期設定については本稿では失礼ながら割愛します。
2. cmsis-5.3.0のインストール
keil-liteは2021/02現時点ではversion 5.33なのですがpack installerで cmsis-5.3.0をインストールしても、5.3.0へのパスが見つかりません。ですので、プロジェクトから明示的にパスを指定できるように、以下のようにしてcmsis 5.3.0を手動でインストールしてみました。
cd /mnt/c/Keil_5/ARM wget https://github.com/ARM-software/CMSIS_5/archive/5.3.0.zip unzip 5.3.0.zip3. ソースコードの取得とusb関連のソースのコピー 例えば以下のようにして、ソースを取得し、usb関連のソースをコピーします。参考までにusb関連ソースはapacheライセンスの様です。
mkdir -p /mnt/c/Users/YourID/Documents/STM32 cd /mnt/c/Users/YourID/Documents/STM32 git clone https://github.com/x893/CMSIS-DAP git clone https://github.com/RadioOperator/STM32F103C8T6_CMSIS-DAP_SWO cd CMSIS-DAP cp -a ./Firmware/STM32/USBStack/inc/usb_for_lib.h ../STM32F103C8T6_CMSIS-DAP_SWO/USB cp -a ./Firmware/STM32/USBStack/inc/usbd_lib_cdc.h ../STM32F103C8T6_CMSIS-DAP_SWO/USB cp -a ./Firmware/STM32/USBStack/inc/usbd_lib_hid.h ../STM32F103C8T6_CMSIS-DAP_SWO/USB cp -a ./Firmware/STM32/USBStack/inc/usbd_lib_msc.h ../STM32F103C8T6_CMSIS-DAP_SWO/USB cp -a ./Firmware/STM32/USBStack/inc/usb_lib.h ../STM32F103C8T6_CMSIS-DAP_SWO/USB cp -a ./Firmware/STM32/USBStack/src/usbd_core.c ../STM32F103C8T6_CMSIS-DAP_SWO/USB cp -a ./Firmware/STM32/USBStack/src/usbd_cdc_acm.c ../STM32F103C8T6_CMSIS-DAP_SWO/USB cp -a ./Firmware/STM32/USBStack/src/usbd_hid.c ../STM32F103C8T6_CMSIS-DAP_SWO/USB cp -a ./Firmware/STM32/USBStack/src/usbd_core_cdc.c ../STM32F103C8T6_CMSIS-DAP_SWO/USB cp -a ./Firmware/STM32/USBStack/src/usbd_core_hid.c ../STM32F103C8T6_CMSIS-DAP_SWO/USB4. プロジェクトを開きソース追加とライブラリ除外 プロジェクトは、
STM32F103C8T6_CMSIS-DAP_SWO/STM32F103C8T6DAP.uvprojですので、エクスプローラーから開くか、KeilからOpen Project... で開いてください。 次に、プロジェクトのUSBフォルダを右クリックして、Add Existing Files to Group 'USB' をクリックし前述のファイルのうち .c ファイルをプロジェクトに追加します。 続いてプロジェクトのUSBフォルダからUSB_CM3.libを除外します。USB_CM3.libを右クリックしてremove file USB_CM3.libをクリックして除外してください。 5. cmsis-5.3.0をターゲットのinclude path に追加 ターゲットのオプションで、cmsis-5.3.0をincludeするように設定します。パスは前述のダウンロード・展開したものを指定します。
C:\Keil_5\ARM\CMSIS_5-5.3.0\CMSIS\Core\Include C:\Keil_5\ARM\CMSIS_5-5.3.0\CMSIS\Driver\Include追記:5a プロジェクト設定を一々GUIで設定するのは面倒なので、wslからsedで一括変更するには以下の様にします。
cp -a STM32F103C8T6DAP.uvproj STM32F103C8T6DAP.uvproj.orig sed 's/C:\\Keil\\ARM\\PACK\\ARM\\CMSIS\\5\.3\.0\\CMSIS\\Include/C:\\Keil_5\\ARM\\CMSIS_5-5.3.0\\CMSIS\\Core\\Include/g' -i STM32F103C8T6DAP.uvproj sed 's/C:\\Keil\\ARM\\PACK\\ARM\\CMSIS\\5\.3\.0\\CMSIS\\Driver\\Include/C:\\Keil_5\\ARM\\CMSIS_5-5.3.0\\CMSIS\\Driver\\Include/g' -i STM32F103C8T6DAP.uvproj6. ビルド・書込・動作確認 あとは、ターゲットをビルドし、書込・動作確認をおこなってください。 keil-liteを使ってのBluePill向CMSIS-DAPのビルドは以上ですが、素のビルドではSerial Numberが固定になりますが、こちらのようにすると、BluePillのCPUIDをCMSIS-DAPのシリアル番号として利用できるようになります。なお、こちらも(追記:SWD_REMAPを除き)keil-liteでのビルド・動作確認ができました。 今回は以上です。それでは。
コメント
コメントを投稿