mapleIDE の変更点


[[2011-05]]

*leaflabs:maple IDE にSTBee , STBeeMini , STM32VL-Discovery 基板を追加する。 [#ne831fe5]

maple IDEは、[[leaflabs:http://leaflabs.com/]]発売ARM基板用のArduino風統合開発環境です。
maple IDEは、[[leaflabs:http://leaflabs.com/]]発売ARM基板用の[[Arduino風統合開発環境:http://static.leaflabs.com/pub/leaflabs/maple-docs/latest/]]です。

~

-(1)xshigeさん直々に0.0.11対応版を作っていただきました。こちらです。

-- ---> http://psp.dip.jp/web/cgi-bin/note/index.cgi?%b7%c7%bc%a8%c8%c4

--置き場は[[こちら:https://skydrive.live.com/?cid=bbd4ba3beeca403e&sc=documents&id=BBD4BA3BEECA403E%21107]]です。


~

-(2)senshuさんが作成されたavrdude_fake(機能強化版)はこちらからDLしてください。
-- http://202.35.250.1/ken/senshu/sitedev/index.php?AVR%2Fnews66#qda3638a

~
~
-(3) maple IDEを使用するかわりに maple IDEに含まれている''libmaple''という便利なライブラリを使ってコマンドライン(Linux or Windows)上からビルド&ランすることも可能です。
--以下のリンク先をお読みください。

--[[libmapleを使いこなせ!!>2011-08]]  --- libmaple に、CQ-STARM基板とSTM8S-Discovery基板も追加してみる。



~
~
~


~
~
~
---------
***古い記事 [#zae60112]
-----------------

[[2011-03]]

*leaflabs: maple IDE 0.0.9 の改造 [#e0f7b100]



-maple基板に最も近そうな(?)cq-starmを追加してみるテスト。

http://psp.dip.jp/web/jpg/ARM/mapleIDE.png




#contents

http://psp.dip.jp/web/jpg/ARM/STM32.jpg

~
''改造の要点''
-好きな基板(今のところSTM32限定)を追加する。
-uploaderをdfu-util以外にして試してみる。
--javaのソースから見て、dfu-utilかavrdudeしか受け付けないようだ。(そりゃ、呼び出しコマンドラインの生成手順がハードコーディングだからしかたないね。)

~
-uploaderは仮想COMデバイスか、リアルRS232C COMデバイスを相手にuploadする仕組みにする。
-bootloaderもそれに準ずるようにする。
-そうしないとUSBを積んでないARM (LPC1114) に対応できないのと、
-とりあえずシリアルを生かしておけば、USB bootloaderを書き込む前のデバイス (例えば LPC2388のシリアルブートモードを利用してブートとか、STM32の緊急時シリアルブートでFirmを書き込むとか)に対応できるというメリットがある。



~
~
~

**その1:基板名の追加 [#k2cf958c]

-<インストール先>/maple-ide-0.0.9/hardware/leaflabs/boards.txt の最後あたりに追記する。

 ##############################################################
 
 cqstarm.name=CQ-STARM to FLASH
 
 cqstarm.upload.file_type=bin
 cqstarm.upload.maximum_size=108000
 cqstarm.upload.ram.maximum_size=17000
 cqstarm.upload.flash.maximum_size=108000
 cqstarm.upload.usbID=1EAF:0003
 cqstarm.upload.altID=1
 cqstarm.upload.uploader=avrdude
 cqstarm.upload.auto_reset=true
 
 cqstarm.upload.protocol=stk500
 cqstarm.upload.speed=57600
 
 cqstarm.build.board=cq-starm
 cqstarm.build.mcu=STM32F103RB
 cqstarm.build.family=cortex-m3
 cqstarm.build.f_cpu=72000000L
 cqstarm.build.core=maple
 cqstarm.build.vect=VECT_TAB_FLASH
 cqstarm.build.linker=maple/flash.ld
 cqstarm.build.using=armcompiler

-RAM上にuploadする必要性ってあるのかな?
-H8じゃあるまいし(FLASH 100回でデバイスが寿命とか)
-RAM上にcodeを置くと、せっかくの(20k〜64K)SRAMがデータ領域として使えなくなるからARMを使う意味がない。



~
~
~

**その2:PIN_MAPの追記 [#rfc129bb]

-<インストール先>/maple-ide-0.0.9/hardware/leaflabs/cores/maple/boards.h 
-385行目当たりの #else 手前に挿入する。
-内容は、とりあえずmapleのまんま。

 #elif defined(BOARD_cqstarm)
 
     #define CYCLES_PER_MICROSECOND  72
     #define SYSTICK_RELOAD_VAL      71999 /* takes a cycle to reload */
 
     #define BOARD_BUTTON_PIN   38
     #define BOARD_LED_PIN      13
 
     static __attribute__ ((unused)) PinMapping PIN_MAP[NR_GPIO_PINS] = {
         /* D0/PA3 */
         {GPIOA_BASE,  3,        ADC3, TIMER2_CH4_CCR,  EXTI_CONFIG_PORTA, TIMER2, 4},
         /* D1/PA2 */
         {GPIOA_BASE,  2,        ADC2, TIMER2_CH3_CCR,  EXTI_CONFIG_PORTA, TIMER2, 3},
         /* D2/PA0 */
         {GPIOA_BASE,  0,        ADC0, TIMER2_CH1_CCR,  EXTI_CONFIG_PORTA, TIMER2, 1},
         /* D3/PA1 */
         {GPIOA_BASE,  1,        ADC1, TIMER2_CH2_CCR,  EXTI_CONFIG_PORTA, TIMER2, 2},
         /* D4/PB5 */
         {GPIOB_BASE,  5, ADC_INVALID,              0,  EXTI_CONFIG_PORTB, TIMER_INVALID, TIMER_INVALID},
         /* D5/PB6 */
         {GPIOB_BASE,  6, ADC_INVALID, TIMER4_CH1_CCR,  EXTI_CONFIG_PORTB, TIMER4, 1},
         /* D6/PA8 */
         {GPIOA_BASE,  8, ADC_INVALID, TIMER1_CH1_CCR,  EXTI_CONFIG_PORTA, TIMER1, 1},
         /* D7/PA9 */
         {GPIOA_BASE,  9, ADC_INVALID, TIMER1_CH2_CCR,  EXTI_CONFIG_PORTA, TIMER1, 2},
         /* D8/PA10 */
         {GPIOA_BASE, 10, ADC_INVALID, TIMER1_CH3_CCR,  EXTI_CONFIG_PORTA, TIMER1, 3},
         /* D9/PB7 */
         {GPIOB_BASE,  7, ADC_INVALID, TIMER4_CH2_CCR,  EXTI_CONFIG_PORTB, TIMER4, 2},
         /* D10/PA4 */
         {GPIOA_BASE,  4,        ADC4,              0,  EXTI_CONFIG_PORTA, TIMER_INVALID, TIMER_INVALID},
         /* D11/PA7 */
         {GPIOA_BASE,  7,        ADC7, TIMER3_CH2_CCR,  EXTI_CONFIG_PORTA, TIMER3, 2},
         /* D12/PA6 */
         {GPIOA_BASE,  6,        ADC6, TIMER3_CH1_CCR,  EXTI_CONFIG_PORTA, TIMER3, 1},
         /* D13/PA5 */
         {GPIOA_BASE,  5,        ADC5,              0,  EXTI_CONFIG_PORTA, TIMER_INVALID, TIMER_INVALID},
         /* D14/PB8 */
         {GPIOB_BASE,  8, ADC_INVALID, TIMER4_CH3_CCR,  EXTI_CONFIG_PORTB, TIMER4, 3},
 
         /* Little header */
 
         /* D15/PC0 */
         {GPIOC_BASE,  0,       ADC10,              0,  EXTI_CONFIG_PORTC, TIMER_INVALID, TIMER_INVALID},
         /* D16/PC1 */
         {GPIOC_BASE,  1,       ADC11,              0,  EXTI_CONFIG_PORTC, TIMER_INVALID, TIMER_INVALID},
         /* D17/PC2 */
         {GPIOC_BASE,  2,       ADC12,              0,  EXTI_CONFIG_PORTC, TIMER_INVALID, TIMER_INVALID},
         /* D18/PC3 */
         {GPIOC_BASE,  3,       ADC13,              0,  EXTI_CONFIG_PORTC, TIMER_INVALID, TIMER_INVALID},
         /* D19/PC4 */
         {GPIOC_BASE,  4,       ADC14,              0,  EXTI_CONFIG_PORTC, TIMER_INVALID, TIMER_INVALID},
         /* D20/PC5 */
         {GPIOC_BASE,  5,       ADC15,              0,  EXTI_CONFIG_PORTC, TIMER_INVALID, TIMER_INVALID},
 
         /* External header */
 
         /* D21/PC13 */
         {GPIOC_BASE, 13, ADC_INVALID,              0,  EXTI_CONFIG_PORTC, TIMER_INVALID, TIMER_INVALID},
         /* D22/PC14 */
         {GPIOC_BASE, 14, ADC_INVALID,              0,  EXTI_CONFIG_PORTC, TIMER_INVALID, TIMER_INVALID},
         /* D23/PC15 */
         {GPIOC_BASE, 15, ADC_INVALID,              0,  EXTI_CONFIG_PORTC, TIMER_INVALID, TIMER_INVALID},
         /* D24/PB9 */
         {GPIOB_BASE,  9, ADC_INVALID, TIMER4_CH4_CCR,  EXTI_CONFIG_PORTB, TIMER_INVALID, TIMER_INVALID},
         /* D25/PD2 */
         {GPIOD_BASE,  2, ADC_INVALID,              0,  EXTI_CONFIG_PORTD, TIMER_INVALID, TIMER_INVALID},
         /* D26/PC10 */
         {GPIOC_BASE, 10, ADC_INVALID,              0,  EXTI_CONFIG_PORTC, TIMER_INVALID, TIMER_INVALID},
         /* D27/PB0 */
         {GPIOB_BASE,  0,        ADC8, TIMER3_CH3_CCR,  EXTI_CONFIG_PORTB, TIMER3, 3},
         /* D28/PB1 */
         {GPIOB_BASE,  1,        ADC9, TIMER3_CH4_CCR,  EXTI_CONFIG_PORTB, TIMER3, 4},
         /* D29/PB10 */
         {GPIOB_BASE, 10, ADC_INVALID,              0,  EXTI_CONFIG_PORTB, TIMER_INVALID, TIMER_INVALID},
         /* D30/PB11 */
         {GPIOB_BASE, 11, ADC_INVALID,              0,  EXTI_CONFIG_PORTB, TIMER_INVALID, TIMER_INVALID},
         /* D31/PB12 */
         {GPIOB_BASE, 12, ADC_INVALID,              0,  EXTI_CONFIG_PORTB, TIMER_INVALID, TIMER_INVALID},
         /* D32/PB13 */
         {GPIOB_BASE, 13, ADC_INVALID,              0,  EXTI_CONFIG_PORTB, TIMER_INVALID, TIMER_INVALID},
         /* D33/PB14 */
         {GPIOB_BASE, 14, ADC_INVALID,              0,  EXTI_CONFIG_PORTB, TIMER_INVALID, TIMER_INVALID},
         /* D34/PB15 */
         {GPIOB_BASE, 15, ADC_INVALID,              0,  EXTI_CONFIG_PORTB, TIMER_INVALID, TIMER_INVALID},
         /* D35/PC6 */
         {GPIOC_BASE,  6, ADC_INVALID,              0,  EXTI_CONFIG_PORTC, TIMER_INVALID, TIMER_INVALID},
         /* D36/PC7 */
         {GPIOC_BASE,  7, ADC_INVALID,              0,  EXTI_CONFIG_PORTC, TIMER_INVALID, TIMER_INVALID},
         /* D37/PC8 */
         {GPIOC_BASE,  8, ADC_INVALID,              0,  EXTI_CONFIG_PORTC, TIMER_INVALID, TIMER_INVALID},
         /* PC9 (BUT) */
         {GPIOC_BASE,  9, ADC_INVALID,              0,  EXTI_CONFIG_PORTC, TIMER_INVALID, TIMER_INVALID}
     };
 
     #define BOARD_INIT do {                           \
         } while(0)

~
~
~ 
**その3:uploaderの追加 [#fdf8f220]

-<インストール先>/maple-ide-0.0.9/hardware/tools/avr/bin/
-というディレクトリを掘る。(何故avrなのかは突っ込まない)

-そこに自作の avrdude.exe を置く。
-内容は、cq-starmにupload出来るなら、どんなプログラムでもおK。

-現在は未実装なので、とりあえずこんなやつを・・・
 #include <stdio.h>
 int main(int argc,char **argv) {
	int i;
	for(i=0;i<argc;i++) {
		printf("%2d:>%s<\n",i,argv[i]);
	}
     return 0;
 }

~

*blinkのサンプルをuploadしてみる。 [#e9e6c25d]

-結果:
 0:>D:\INSTALL\maple-ide-0.0.9\hardware\tools\avr\bin\avrdude<
 1:>-CD:\INSTALL\maple-ide-0.0.9\hardware/tools/avr/etc/avrdude.conf<
 2:>-q<
 3:>-q<
 4:>-pSTM32F103RB<
 5:>-cstk500v1<
 6:>-P\\.\COM1<
 7:>-b57600<
 8:>-D<
 9:>-Uflash:w:C:\DOCUME~1\USERNAME\LOCALS~1\Temp\build6274997941406310107.tmp\Blink.cpp.hex:i<
-まあこんな感じでエアーmaple完了。


~
~
~
-------
*CQ-STARMのDFUを[[armboot>armon]]に置き換える [#b22e0d39]

http://psp.dip.jp/web/jpg/ARM/STM32F103VBT6.jpg

-まず、[[苺からdfuwをDL:http://strawberry-linux.com/stbee/dfuw]]する。
-次に、以下のCQ-STARM用のarmbootファームウェアを入手。



DOWNLOAD: [[cq-starm用ファーム:http://psp.dip.jp/web/upload/STM/cqstarm.zip]]

-ReadMe.txtに従って操作。

-自己責任でお願いします。

-armbootやcqstarm用のファームウェアのソースは[[こちら>armon]]

-別の記事:[[ARMでArduino>2011-01#u70613a4]] --- maple IDEでビルドしたLED Blinkを STM8S-Discovery上で実行してみた。


~
~
~
~