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上で実行してみた。
~
~
~
~