Top
HIDaspx
DownLoad
HIDasp高速化
制作
AVR関係
AVR_Monit
AVR_term
W32_term
HIDmon88
HIDtester
usbRS232
Arduino2313
デジタルテスター
ATmega88生活
KeyBoardマニア
KeyBoardマニアII
Arduino400
PICライター
ARMライター
赤外線リモコン
ARM
STM32ブートローダー
STM8S-Discovery改造
STM8S-OpenOCDライター
LPCXpresso
LPC用ブートローダー
NXP用LPCUSB
NXP用ブートローダー
MARY基板
LPC1114FN28
OpenOCD JTAGアダプター
OpenOCDビルド方法
arm-gccビルド方法
mapleIDEの改造
libmapleで仮想COM
PIC32
PIC32MX
Pinguinoで遊ぼう
ブートローダーを作る
シリアルブートローダー
USB仮想シリアル
USBカスタムデバイス
USB簡易モニター
USBオシロスコープ
USBホスト
PIC32でBluetooth
USBAudio
USBStudy
VGA出力に挑戦
BASICを動かす
WinUSB
勝手に改蔵*PIC32
PIC18F
HIDブートローダー
AVR/PIC両用ライター
ARMライター
usb汎用クラス
usbシリアル変換
usbキーボード変換
sdccを使いこなす
mcc18を使いこなす
HIDmon-2550
HIDmon-14K50
PICmonitor
試行錯誤の記録
UBWを試す
旧HIDboot
PIC18F2550試用記
PIC18F4550試用記
その他マイコン
NEC78K
RX62N
SH2A
H8
FM3
XPからubuntuに乗り換え
Android
Xen-hypervisor
Windows8カスタマイズ
開発日記
2015-04
ノウハウ
AVRUSB_Tips
HIDasp情報
汎用USB-IO
・
リンク
フリースペース
ゲストブック
旧コンテンツ
WinVista
インターフェース考
最新の20件
2022-07-25
2008-10
HIDasp高速化
H8/3048F
AutoTicketLinkName
2021-12-11
FormattingRules
2021-12-08
PukiWiki/1.4/Manual/Plugin/O-R
PukiWiki/1.4/Manual/Plugin/L-N
PukiWiki/1.4/Manual/Plugin/V-Z
PukiWiki/1.4/Manual/Plugin/A-D
PukiWiki/1.4/Manual/Plugin/E-G
PukiWiki/1.4/Manual/Plugin/S-U
PukiWiki/1.4/Manual/Plugin/H-K
2020-02-23
YukiWiki
PHP
PukiWiki
WikiWikiWeb
2018-12-19
SandBox
InterWiki
2015-05-07
2015-04
2015-05-02
MenuBar
編集
差分
stm32f103 の編集
-- 雛形とするページ --
(no template pages)
[[ARM]] http://www.akizukidenshi.com/img/goods/1/M-03457.jpg ---- 目次 #contents ---- *STM8S-Discovery基板(750円)のST-Link側だけで遊ぶ [#gbd47671] http://www.eleki-jack.com/mycom2/noritan-stm8s-01-02.jpg -STM8S-Discoveryの8bitCPUは使わずに、ST-Link側のstm32を使ってみます。 http://psp.dip.jp/web/jpg/ARM/stm32f103.png -チップ単価は1個注文で900円くらいなので、どう見ても赤字っぽい気がする。 (もちろん1000個単位なら@500円くらい) -確かにクロックは速いし32bitCPUなんだけどFlash容量からするとAVR(ATmega644)とそんなに変わらない規模。 |STM32F103C8T6|諸元| |プログラムメモリサイズ|64K| |RAMのサイズ |20K| |I/O数 |37 | |パッケージ/ケース |48-LQFP | |速度 |72MHz | |Interface Type:|CAN, I2C, SPI, UART, USB| |Serial Comms:|2xSPI, 2xI2C, 3xUSART,USB| | Max Supply Voltage:|3.6V| | Min Supply Voltage:|2V| | No. of ADC Inputs:|10| |Number of bits In Timer:|16 | -RISC CPUの72MHzって言ったら、i386(同じ32bit CPUでFPU無し)の144MHz相当くらいなんじゃなかろうか。 -もちろん、セグメントレジスタや仮想記憶は無い。 -RAM 20kBはちょっと狭すぎるけれど。 ~ ~ ~ --------- ~ 以下、解析なので間違っている場合があります。(ツッコミ歓迎) ~ **CN5解析(部品面:上から見て) [#d5953c57] |8|PB4(JNTRST)|GND|7| |6|PA15(JTDI)|PA13(JTMS/SWDIO)|5| |4|PA14(JTCK/SWCLK)|PB3(JTDO)|3| |-|-|VDD_1|1| ~ **CN7解析(部品面:上から見て) [#ua8163ad] |CN7|1|2|3|4| ||VDD|SB2|GND|SB1| ~ ~ |VDD|STM8S側のVDD(5V/3.3VはSTM8S基板側ジャンパーで指定)||| |SB2|ST_LINK_SWIM (Single Wire Interface Module) |--- 47Ω---> PB8|--- 220Ω--->PB9| |GND|||| |SB1|RESET# |--- 47Ω---> PB6|--- 220Ω--->PB5| **LED [#s8ecdfe1] -LEDはPA8 (Hで点灯) 正論理 - LED + GND <---|<|------510Ω----> PA8 ~ **ブートモード [#bff9a2f8] |BOOT1(PB2:pin20)|BOOT0(pin44)|ブートモード|備考| |−|0|ユーザーFlash|0800_0000ユーザーFlashからのブート| |0|1|システムメモリー|1fff_f000からのブート(シリアルブート?uart1から?)| |1|1|内蔵SRAM|内蔵SRAMからのブート(内蔵SRAM?誰が書き込むんだろう?JTAGかな)| ~ ~ ~ ~ ------- **作りかけのJTAGライター [#j4c1e6c8] 参考にしたURL -http://micom.hamazo.tv/e1822876.html -http://www.joernonline.de/ http://psp.dip.jp/web/jpg/ARM/ft2232d.jpg ~ http://psp.dip.jp/web/jpg/wsn216.jpg 今や、[[ATtiny2313(1個)でJTAGライターを作る>hid_blaster]]ことも出来ます。 **ターゲット(STM32)と接続したところ [#te680038] http://psp.dip.jp/web/jpg/ARM/ft2232jtag.jpg **OpenOCDを動かしてログを取ったところ [#z689fd3c] Open On-Chip Debugger 0.5.0-dev-00616-g0672a64 (2010-07-14-09:46) Licensed under GNU GPL v2 For bug reports, read http://openocd.berlios.de/doc/doxygen/bugs.html Info : only one transport option; autoselect 'jtag' 1000 kHz 1000 kHz adapter_nsrst_delay: 100 jtag_ntrst_delay: 100 Info : device: 4 "2232C" Info : deviceID: 67330064 Info : SerialNumber: FTTDJ3SYA Info : Description: JTAGkey A Info : clock speed 1000 kHz Info : JTAG tap: stm32.cpu tap/device found: 0x3ba00477 (mfg: 0x23b, part: 0xba 0, ver: 0x3) Info : JTAG tap: stm32.bs tap/device found: 0x16410041 (mfg: 0x020, part: 0x641 , ver: 0x1) Info : stm32.cpu: hardware has 6 breakpoints, 4 watchpoints Info : accepting 'telnet' connection from 4444 >scan_chain TapName Enabled IdCode Expected IrLen IrCap IrMask -- ------------------- -------- ---------- ---------- ----- ----- ------ 0 stm32.cpu Y 0x3ba00477 0x3ba00477 4 0x01 0x0f 1 stm32.bs Y 0x16410041 0x06412041 5 0x01 0x03 0x06410041 0x06410041 0x06410041 0x06410041 >halt target state: halted target halted due to debug-request, current mode: Handler HardFault xPSR: 0x41000003 pc: 0x08000e58 msp: 0x20001e90 >reg ===== arm v7m registers (0) r0 (/32): 0x00000000 (1) r1 (/32): 0x00000005 (2) r2 (/32): 0x200016D6 (3) r3 (/32): 0x20000240 (4) r4 (/32): 0x20000E84 (5) r5 (/32): 0x20000E85 (6) r6 (/32): 0x20000E8C (7) r7 (/32): 0x20000E94 (8) r8 (/32): 0xFFFEF7DD (9) r9 (/32): 0xF7FBFFB4 (10) r10 (/32): 0xA37732C4 (11) r11 (/32): 0x96520B5D (12) r12 (/32): 0xE000E410 (13) sp (/32): 0x20001E90 (14) lr (/32): 0xFFFFFFF1 (15) pc (/32): 0x08000E58 (16) xPSR (/32): 0x41000003 (17) msp (/32): 0x20001E90 (18) psp (/32): 0x84324460 (19) primask (/1): 0x00 (20) basepri (/8): 0x00 (21) faultmask (/1): 0x00 (22) control (/2): 0x00 ===== cortex-m3 dwt registers (23) dwt_ctrl (/32) (24) dwt_cyccnt (/32) (25) dwt_0_comp (/32) (26) dwt_0_mask (/4) (27) dwt_0_function (/32) (28) dwt_1_comp (/32) (29) dwt_1_mask (/4) (30) dwt_1_function (/32) (31) dwt_2_comp (/32) (32) dwt_2_mask (/4) (33) dwt_2_function (/32) (34) dwt_3_comp (/32) (35) dwt_3_mask (/4) (36) dwt_3_function (/32) -一応、''接続OK。'' ~ ~ ~ **遊び方 [#pfbc3f64] まずtelnet(localhost:4444)接続したら、 > reset halt > reg // レジスタを見る. > mdw 0x20000100 0x40 // RAMをメモリーダンプする. > load_image main.hex // 自作hexファイルを(RAMに)ロードする. > reg pc 0x20000250 // 自作hexのエントリーアドレスをpcに入れる. > step > step > reg ・・・気がすむまで・・・ gdb要らないじゃん(笑) 本日の結論 -意地でも0x800_0000のFlashは読めないようになっている、ということが分かった。 -ひとおもいに''ERASE''してしまえばいいだけのことだが・・・。(何か悔しい) -gdbを立ち上げなくても普通にhexファイルを読んで実行するとか簡単にできる -(おまけにブレークポイントとかステップ実行とかreg dumpとか全部出来る)ということが分かった。 ~ ~ ~ -------- *Flashの書き換えを実行する。 [#bf8e5b51] いよいよ、STM8Sとのお別れです。 -あとでどうしてもSTM8Sを使いたくなったら、[[Versaloon:http://nemuisan.blog.bai.ne.jp/?eid=178353]]でもいれることにして、STM8Sにお別れを言います。 -書き換え方法は以下のサイトを参考にさせていただきました。 -[[OpenOCDが動くまで:http://www.kimura-lab.net/wiki/index.php/OpenOCD%E3%81%8C%E5%8B%95%E3%81%8F%E3%81%BE%E3%81%A7#Flash.E6.9B.B8.E3.81.8D.E8.BE.BC.E3.81.BF]] ~ ---------- *書き換え方法 [#t560fea9] -まず、OpenOCDでST-LINKに接続します。 D:\OpenOCD>openocd.exe -s ./tcl -f daemon.cfg -f jtagkey.cfg -c "jtag_khz 1000" -f target/stm32.cfg すると、 Open On-Chip Debugger 0.5.0-dev-00616-g0672a64 (2010-07-14-09:46) Licensed under GNU GPL v2 For bug reports, read http://openocd.berlios.de/doc/doxygen/bugs.html Info : only one transport option; autoselect 'jtag' 1000 kHz 1000 kHz adapter_nsrst_delay: 100 jtag_ntrst_delay: 100 Info : device: 4 "2232C" Info : deviceID: 67330064 Info : SerialNumber: FTTDJ3SYA Info : Description: JTAGkey A Info : clock speed 1000 kHz Info : JTAG tap: stm32.cpu tap/device found: 0x3ba00477 (mfg: 0x23b, part: 0xba00, ver: 0x3) Info : JTAG tap: stm32.bs tap/device found: 0x16410041 (mfg: 0x020, part: 0x6410, ver: 0x1) Info : stm32.cpu: hardware has 6 breakpoints, 4 watchpoints 接続しました。 書き換えファームはこれです。 -[[armon.zip:http://psp.dip.jp/web/upload.cgi/STM/armon.zip]] -firmware/main-0000.hex をさっきOpenOCDを起動したディレクトリにコピーしておきます。 -次は、Teratermで localhost:4444番Portに接続します。 まず、元のST-LinkはFlashROmの内容がロックされた状態になっているので、アンロックします。 Open On-Chip Debugger > reset halt > stm32x unlock 0 > shutdown -電源を入れなおしてもう一度、Teratermで localhost:4444番Portに接続します。 Open On-Chip Debugger > reset halt > poll > flash probe 0 > flash write_image erase main-0000.hex > shutdown -もしかしたら、アンロック後はファームが空になるので、書き込みが不安定になるかもしれません。 -その場合は何回かトライしてみてください。 -ST-Link以外の普通のSTM32チップでは、ロック解除のコマンド投入の必要はありません。 ~ ~ --------- * DFU(ブートローダー)の使い方 [#d4aa0e59] -上記main-0000.hexはHID bootloaderです -DFUのほうが良いという方は[[こちら>ARMCortexM3]]のdfu.zipを展開して、開始番地を0x800_0000に変更、ブートジャンパーのPORTを適当に合わせてから焼いてみてください。 read more : [[DFU]] -DFUはあんまりお勧めできません。 理由 -*.elfから*.dfuに変換するツールがWindows GUIで非常に使いにくい。 -*.dfuをターゲットに転送するツールもWindows GUIで非常に使いにくい。 -*.dfuフォーマットやUSBのDFUクラスを使用することによるメリットが殆ど無い。 ~ ~ --------- *DFUに代わる、HIDブートローダーを作ろう。 [#gcb1351a] -現在、PIC用のpic18bootやpic18spxを元に、製作中。 %%まだ、メモリーダンプだけしか出来ません。%% ブートローダーとして使えるようになりました。 ・・・途中バージョンでよければ、ダウンロード。 -[[armon.zip:http://psp.dip.jp/web/upload.cgi/STM/armon.zip]] --- PIC18spxみたいなやつ。 -STM8S-DiscoveryのST-Link側用です。OpenOCDで書き込みます。 -%%CQ付録-STARM32基板でも使えるはずです。%% --- BOOT JUMPERの割り当てを書き換えないとだめです。 -ファームサイズは8kBに収まっています。 -SWIM端子のGND <=> RESET# 間にBOOT JUMPERを挟んでください。 JUMPER CLOSE で、BOOTLOADERが起動します。 JUMPER OPEN で、0x0800_2000番地からのファームウェアが起動します。 ~ ~ *ARMビルド環境の構築方法 [#g5831bcf] -[[WinARMビルド環境の構築方法>WinARM]] -[[ARMクロスコンパイラ構築(Linux)>2010-04#b817f226]] -[[CodeSourcery_G++_Lite:http://www.lineo.co.jp/modules/codesourcery/editions.html]] ←今のところこれが一番お勧めです。 ---- -WinARMはlibgccのfloat関数が抜けているので、一部差し替えの必要があります。 --また、libc.aの_sbrk_rや_open_r,_read_rなども抜けています。(組み込み用途でファイルオープンは普通しませんが) -CodeSourcery_G++_Liteはコマンドライン版ですが無償で使用できます。また、gccのバージョンが新しい(4.4.1)ためか、生成コードサイズが小さくなります。 -CodeSourcery_G++_Liteには makeやls,catといったunix標準コマンドがあまり含まれていません(cs_make.exeは付いています)ので、WinAVRを別途インストールされている方は、そちら(C:\WinAVR\utils\bin\)にもPATHを通しておいたほうが良いでしょう。 ~ ~ ~ read more : [[HIDブートローダー>armon]] ~ read more : [[OpenOCDライター兼AVR/PICライターを作る>stm8s_blaster]] ~
タイムスタンプを変更しない
[[ARM]] http://www.akizukidenshi.com/img/goods/1/M-03457.jpg ---- 目次 #contents ---- *STM8S-Discovery基板(750円)のST-Link側だけで遊ぶ [#gbd47671] http://www.eleki-jack.com/mycom2/noritan-stm8s-01-02.jpg -STM8S-Discoveryの8bitCPUは使わずに、ST-Link側のstm32を使ってみます。 http://psp.dip.jp/web/jpg/ARM/stm32f103.png -チップ単価は1個注文で900円くらいなので、どう見ても赤字っぽい気がする。 (もちろん1000個単位なら@500円くらい) -確かにクロックは速いし32bitCPUなんだけどFlash容量からするとAVR(ATmega644)とそんなに変わらない規模。 |STM32F103C8T6|諸元| |プログラムメモリサイズ|64K| |RAMのサイズ |20K| |I/O数 |37 | |パッケージ/ケース |48-LQFP | |速度 |72MHz | |Interface Type:|CAN, I2C, SPI, UART, USB| |Serial Comms:|2xSPI, 2xI2C, 3xUSART,USB| | Max Supply Voltage:|3.6V| | Min Supply Voltage:|2V| | No. of ADC Inputs:|10| |Number of bits In Timer:|16 | -RISC CPUの72MHzって言ったら、i386(同じ32bit CPUでFPU無し)の144MHz相当くらいなんじゃなかろうか。 -もちろん、セグメントレジスタや仮想記憶は無い。 -RAM 20kBはちょっと狭すぎるけれど。 ~ ~ ~ --------- ~ 以下、解析なので間違っている場合があります。(ツッコミ歓迎) ~ **CN5解析(部品面:上から見て) [#d5953c57] |8|PB4(JNTRST)|GND|7| |6|PA15(JTDI)|PA13(JTMS/SWDIO)|5| |4|PA14(JTCK/SWCLK)|PB3(JTDO)|3| |-|-|VDD_1|1| ~ **CN7解析(部品面:上から見て) [#ua8163ad] |CN7|1|2|3|4| ||VDD|SB2|GND|SB1| ~ ~ |VDD|STM8S側のVDD(5V/3.3VはSTM8S基板側ジャンパーで指定)||| |SB2|ST_LINK_SWIM (Single Wire Interface Module) |--- 47Ω---> PB8|--- 220Ω--->PB9| |GND|||| |SB1|RESET# |--- 47Ω---> PB6|--- 220Ω--->PB5| **LED [#s8ecdfe1] -LEDはPA8 (Hで点灯) 正論理 - LED + GND <---|<|------510Ω----> PA8 ~ **ブートモード [#bff9a2f8] |BOOT1(PB2:pin20)|BOOT0(pin44)|ブートモード|備考| |−|0|ユーザーFlash|0800_0000ユーザーFlashからのブート| |0|1|システムメモリー|1fff_f000からのブート(シリアルブート?uart1から?)| |1|1|内蔵SRAM|内蔵SRAMからのブート(内蔵SRAM?誰が書き込むんだろう?JTAGかな)| ~ ~ ~ ~ ------- **作りかけのJTAGライター [#j4c1e6c8] 参考にしたURL -http://micom.hamazo.tv/e1822876.html -http://www.joernonline.de/ http://psp.dip.jp/web/jpg/ARM/ft2232d.jpg ~ http://psp.dip.jp/web/jpg/wsn216.jpg 今や、[[ATtiny2313(1個)でJTAGライターを作る>hid_blaster]]ことも出来ます。 **ターゲット(STM32)と接続したところ [#te680038] http://psp.dip.jp/web/jpg/ARM/ft2232jtag.jpg **OpenOCDを動かしてログを取ったところ [#z689fd3c] Open On-Chip Debugger 0.5.0-dev-00616-g0672a64 (2010-07-14-09:46) Licensed under GNU GPL v2 For bug reports, read http://openocd.berlios.de/doc/doxygen/bugs.html Info : only one transport option; autoselect 'jtag' 1000 kHz 1000 kHz adapter_nsrst_delay: 100 jtag_ntrst_delay: 100 Info : device: 4 "2232C" Info : deviceID: 67330064 Info : SerialNumber: FTTDJ3SYA Info : Description: JTAGkey A Info : clock speed 1000 kHz Info : JTAG tap: stm32.cpu tap/device found: 0x3ba00477 (mfg: 0x23b, part: 0xba 0, ver: 0x3) Info : JTAG tap: stm32.bs tap/device found: 0x16410041 (mfg: 0x020, part: 0x641 , ver: 0x1) Info : stm32.cpu: hardware has 6 breakpoints, 4 watchpoints Info : accepting 'telnet' connection from 4444 >scan_chain TapName Enabled IdCode Expected IrLen IrCap IrMask -- ------------------- -------- ---------- ---------- ----- ----- ------ 0 stm32.cpu Y 0x3ba00477 0x3ba00477 4 0x01 0x0f 1 stm32.bs Y 0x16410041 0x06412041 5 0x01 0x03 0x06410041 0x06410041 0x06410041 0x06410041 >halt target state: halted target halted due to debug-request, current mode: Handler HardFault xPSR: 0x41000003 pc: 0x08000e58 msp: 0x20001e90 >reg ===== arm v7m registers (0) r0 (/32): 0x00000000 (1) r1 (/32): 0x00000005 (2) r2 (/32): 0x200016D6 (3) r3 (/32): 0x20000240 (4) r4 (/32): 0x20000E84 (5) r5 (/32): 0x20000E85 (6) r6 (/32): 0x20000E8C (7) r7 (/32): 0x20000E94 (8) r8 (/32): 0xFFFEF7DD (9) r9 (/32): 0xF7FBFFB4 (10) r10 (/32): 0xA37732C4 (11) r11 (/32): 0x96520B5D (12) r12 (/32): 0xE000E410 (13) sp (/32): 0x20001E90 (14) lr (/32): 0xFFFFFFF1 (15) pc (/32): 0x08000E58 (16) xPSR (/32): 0x41000003 (17) msp (/32): 0x20001E90 (18) psp (/32): 0x84324460 (19) primask (/1): 0x00 (20) basepri (/8): 0x00 (21) faultmask (/1): 0x00 (22) control (/2): 0x00 ===== cortex-m3 dwt registers (23) dwt_ctrl (/32) (24) dwt_cyccnt (/32) (25) dwt_0_comp (/32) (26) dwt_0_mask (/4) (27) dwt_0_function (/32) (28) dwt_1_comp (/32) (29) dwt_1_mask (/4) (30) dwt_1_function (/32) (31) dwt_2_comp (/32) (32) dwt_2_mask (/4) (33) dwt_2_function (/32) (34) dwt_3_comp (/32) (35) dwt_3_mask (/4) (36) dwt_3_function (/32) -一応、''接続OK。'' ~ ~ ~ **遊び方 [#pfbc3f64] まずtelnet(localhost:4444)接続したら、 > reset halt > reg // レジスタを見る. > mdw 0x20000100 0x40 // RAMをメモリーダンプする. > load_image main.hex // 自作hexファイルを(RAMに)ロードする. > reg pc 0x20000250 // 自作hexのエントリーアドレスをpcに入れる. > step > step > reg ・・・気がすむまで・・・ gdb要らないじゃん(笑) 本日の結論 -意地でも0x800_0000のFlashは読めないようになっている、ということが分かった。 -ひとおもいに''ERASE''してしまえばいいだけのことだが・・・。(何か悔しい) -gdbを立ち上げなくても普通にhexファイルを読んで実行するとか簡単にできる -(おまけにブレークポイントとかステップ実行とかreg dumpとか全部出来る)ということが分かった。 ~ ~ ~ -------- *Flashの書き換えを実行する。 [#bf8e5b51] いよいよ、STM8Sとのお別れです。 -あとでどうしてもSTM8Sを使いたくなったら、[[Versaloon:http://nemuisan.blog.bai.ne.jp/?eid=178353]]でもいれることにして、STM8Sにお別れを言います。 -書き換え方法は以下のサイトを参考にさせていただきました。 -[[OpenOCDが動くまで:http://www.kimura-lab.net/wiki/index.php/OpenOCD%E3%81%8C%E5%8B%95%E3%81%8F%E3%81%BE%E3%81%A7#Flash.E6.9B.B8.E3.81.8D.E8.BE.BC.E3.81.BF]] ~ ---------- *書き換え方法 [#t560fea9] -まず、OpenOCDでST-LINKに接続します。 D:\OpenOCD>openocd.exe -s ./tcl -f daemon.cfg -f jtagkey.cfg -c "jtag_khz 1000" -f target/stm32.cfg すると、 Open On-Chip Debugger 0.5.0-dev-00616-g0672a64 (2010-07-14-09:46) Licensed under GNU GPL v2 For bug reports, read http://openocd.berlios.de/doc/doxygen/bugs.html Info : only one transport option; autoselect 'jtag' 1000 kHz 1000 kHz adapter_nsrst_delay: 100 jtag_ntrst_delay: 100 Info : device: 4 "2232C" Info : deviceID: 67330064 Info : SerialNumber: FTTDJ3SYA Info : Description: JTAGkey A Info : clock speed 1000 kHz Info : JTAG tap: stm32.cpu tap/device found: 0x3ba00477 (mfg: 0x23b, part: 0xba00, ver: 0x3) Info : JTAG tap: stm32.bs tap/device found: 0x16410041 (mfg: 0x020, part: 0x6410, ver: 0x1) Info : stm32.cpu: hardware has 6 breakpoints, 4 watchpoints 接続しました。 書き換えファームはこれです。 -[[armon.zip:http://psp.dip.jp/web/upload.cgi/STM/armon.zip]] -firmware/main-0000.hex をさっきOpenOCDを起動したディレクトリにコピーしておきます。 -次は、Teratermで localhost:4444番Portに接続します。 まず、元のST-LinkはFlashROmの内容がロックされた状態になっているので、アンロックします。 Open On-Chip Debugger > reset halt > stm32x unlock 0 > shutdown -電源を入れなおしてもう一度、Teratermで localhost:4444番Portに接続します。 Open On-Chip Debugger > reset halt > poll > flash probe 0 > flash write_image erase main-0000.hex > shutdown -もしかしたら、アンロック後はファームが空になるので、書き込みが不安定になるかもしれません。 -その場合は何回かトライしてみてください。 -ST-Link以外の普通のSTM32チップでは、ロック解除のコマンド投入の必要はありません。 ~ ~ --------- * DFU(ブートローダー)の使い方 [#d4aa0e59] -上記main-0000.hexはHID bootloaderです -DFUのほうが良いという方は[[こちら>ARMCortexM3]]のdfu.zipを展開して、開始番地を0x800_0000に変更、ブートジャンパーのPORTを適当に合わせてから焼いてみてください。 read more : [[DFU]] -DFUはあんまりお勧めできません。 理由 -*.elfから*.dfuに変換するツールがWindows GUIで非常に使いにくい。 -*.dfuをターゲットに転送するツールもWindows GUIで非常に使いにくい。 -*.dfuフォーマットやUSBのDFUクラスを使用することによるメリットが殆ど無い。 ~ ~ --------- *DFUに代わる、HIDブートローダーを作ろう。 [#gcb1351a] -現在、PIC用のpic18bootやpic18spxを元に、製作中。 %%まだ、メモリーダンプだけしか出来ません。%% ブートローダーとして使えるようになりました。 ・・・途中バージョンでよければ、ダウンロード。 -[[armon.zip:http://psp.dip.jp/web/upload.cgi/STM/armon.zip]] --- PIC18spxみたいなやつ。 -STM8S-DiscoveryのST-Link側用です。OpenOCDで書き込みます。 -%%CQ付録-STARM32基板でも使えるはずです。%% --- BOOT JUMPERの割り当てを書き換えないとだめです。 -ファームサイズは8kBに収まっています。 -SWIM端子のGND <=> RESET# 間にBOOT JUMPERを挟んでください。 JUMPER CLOSE で、BOOTLOADERが起動します。 JUMPER OPEN で、0x0800_2000番地からのファームウェアが起動します。 ~ ~ *ARMビルド環境の構築方法 [#g5831bcf] -[[WinARMビルド環境の構築方法>WinARM]] -[[ARMクロスコンパイラ構築(Linux)>2010-04#b817f226]] -[[CodeSourcery_G++_Lite:http://www.lineo.co.jp/modules/codesourcery/editions.html]] ←今のところこれが一番お勧めです。 ---- -WinARMはlibgccのfloat関数が抜けているので、一部差し替えの必要があります。 --また、libc.aの_sbrk_rや_open_r,_read_rなども抜けています。(組み込み用途でファイルオープンは普通しませんが) -CodeSourcery_G++_Liteはコマンドライン版ですが無償で使用できます。また、gccのバージョンが新しい(4.4.1)ためか、生成コードサイズが小さくなります。 -CodeSourcery_G++_Liteには makeやls,catといったunix標準コマンドがあまり含まれていません(cs_make.exeは付いています)ので、WinAVRを別途インストールされている方は、そちら(C:\WinAVR\utils\bin\)にもPATHを通しておいたほうが良いでしょう。 ~ ~ ~ read more : [[HIDブートローダー>armon]] ~ read more : [[OpenOCDライター兼AVR/PICライターを作る>stm8s_blaster]] ~
テキスト整形のルールを表示する
ログインまたはアカウント作成