• 検索結果がありません。

ファイルキャビネット mouse east 04 CooCox STM32 v11

N/A
N/A
Protected

Academic year: 2018

シェア "ファイルキャビネット mouse east 04 CooCox STM32 v11"

Copied!
28
0
0

読み込み中.... (全文を見る)

全文

(1)

ARM Cortex ‐M  開発環境

CooCox ‐ STM32

2012.04.21  東日本支部 高橋

(2)

内容

最近 ン事情

動向

• STM32

• STM32   開発環境 (GNU)

• CooCox

開発環境

• CoIDE ( 統合開発環境 )

• CoIDE 作成 設定

• CoIDE – printf (Semihosting)

• CoIDE – GPIO  LED 点灯

• CoOS (RTOS)

• Atomic  Write

(3)

最近 ン事情

32bit

ARM 陣営 vs Renesas

ARM Cortex‐M

Renesas RX

(4)

ネ 動向

R62T

良さそう 64pin LQFP

3.3V/5V

(5)

STM32

最近 や書籍 い い 出回っ た

採用事例 増え た様子

STM32VL  Discovery

STM32L  Discovery

STBee Mini

(6)

STM32   開発環境 (GNU)

制限

Code Sourcery G++

Lite 制限あ 自前

Sourcery CodeBench

LiteIDE

制限 LaunchPad 入手 制限

現在

(7)

CooCox

ARM Cortex‐M 特化 た開発環境 提供 Free

CPU ン : Atmel, Energy Micro, Holtek, NXP, Nuvoton, ST, TI

発展途上 商用 比べ 劣 こ あ 秀逸 用途 十分

ここ 年 更新 STM32 状況 良 った

CoIDE 統合開発環境

CoOS Real Time OS

CoLinkEx ッ 用 (SWD/JTAG)

CoSmart ン割当&

生成

CoX 共通

(8)

開発環境

STM32 VL Discovery

USB

Target

自作

ST‐Link/V2 Debug Adapter (Writer)

ST‐Link(SWD) 使え Target 接続

CoLinkEx with LPC1114 (CoLinkEx 自作可能)

(9)

CoIDE ( 統合開発環境 )

CoIDE (GCC ARM Embedded)

CoIDE ”Select Toolchain Path” 指定

環境:

STM32 VL Discovery

USB

ST‐Link STM32F100RBT6B 24MHz 128KB/8KB SWD (Serial Wire Debug) 接続

V1.4.1 使用

(10)

CoIDE 作成 (1/3)

Repository Manufacturers, Chips 選択 New Project

(11)

CoIDE 作成 (2/3)

Peripherals CMSIS Boot 選択

(12)

CoIDE 作成 (3/3)

CMSIS startup, ISR(Interrupt Service Routine)  定義さ ST Micro Firmware Library 入っ

CooCox 使わ

Document ” .../Libraries/CMSIS/Documentation/CMSIS_Core.htm” startup CooCox独自 (.s .c )

(13)

CoIDE – 設定

CoIDE CPU 選択 た時 CPU ョン 指定

こ 連動 形 CMSIS内 ッ 設定 決

CMSIS (boot) 設定 行わ

STM32 VL Discovery 設定変更 不要 (HSE 8MHz, SYSCLK 24MHz) ン ョン ‐DSTM32F10X_MD_VL  指定さ

system_stm32f10x.c SYSCLK_FREQ_24MHz 選択さ PLL設定 行わ

CMSIS 直接修 ョン 制御 た方 良い

CooCox 簡単 時修 消え

(14)

CoIDE – printf (Semihosting)  (1/4)

printf.c 換え

1) #include “semihosting.h” 2) PrintChar()  Semihosting出力 3) puts()   対応

Peripherals Retarget printf, Semihosting 選択

main.c printf

(15)

CoIDE – printf (Semihosting)  (2/4)

Debug Configuration ST‐Link 指定 Semihosting Enable 指定

(16)

CoIDE – printf (Semihosting)  (3/4)

Debug開始

(17)

CoIDE – printf (Semihosting)  (4/4)

printf(“Hello…¥n”);

Retarget printf PrintChar()

文字出力 puts()

gcc printf puts 置換

Semihosting SH_SendChar()

Debug 

Adapter CoIDE

USB

Traget CPU

Debug Adapter

ば文字

SWD

(Serial Wire Debug)

(18)

CoIDE – GPIO  LED 点灯 (1/7)

Peripherals GPIO 選択

(19)

CoIDE – GPIO  LED 点灯 (2/7)

GPIO example 選択 add 追加

(20)

CoIDE – GPIO  LED 点灯 (3/7)

example 換え

PC6,9 点滅さ

STM32VL Discovery PC8,9 LED

番号 換え

RCC (Reset and Clock Control) GPIO Clock 供給

GPIO 出力 設定

(21)

CoIDE – GPIO  LED 点灯 (4/7)

問題点: 時間待ち 単 最適化 消え う

解決策: SysTick ン 使う 分解能 1ms

‐Os ( 優先) 約半分 速度

(22)

CoIDE – GPIO  LED 点灯 (5/7)

SysTick.c, SysTick.h 導入

最適化(‐Os) 効率重視

SysTick_Handler system weak属性 定義さ

ここ 再定義

1ms  び出さ

SystemCoreClock system 定義さ (単位Hz) SysTick_Config() 1ms 指定

待ち時間(ms単位) 指定

SysTick_Handler() 指定時間 終了

(23)

CoIDE – GPIO  LED 点灯 (6/7)

SysTick_Init(), SysTick_DelayMs() び出

SysTick 初期化 main 一度 び出 ば良い ここ 都合上 GPIO_Blink() び出

SysTick_DelayMs() 換えた

(24)

CoIDE – GPIO  LED 点灯 (7/7)

GPIOB LED 16個付 PB3,4 使え Default JTAG 割当 AFIO Remap

LQFP64 場合 51本使え

GPIOA

PA0 PA1 PA2 PA3 PA4 PA5 PA6 PA7 PA8 PA9 PA10 PA11 PA12

PA13: SWDIO PA14: SWCLK

PA15: JTDI (Remap可能)

GPIOB

PB0 PB1 PB2

PB3: JTDO (Remap可能) PB4: NJTRST (Remap可能) PB5

PB6 PB7 PB8 PB9 PB10 PB11 PB12 PB13 PB14 PB15

GPIOC

PC0 PC1 PC2 PC3 PC4 PC5 PC6 PC7 PC8 PC9 PC10 PC11 PC12

PC13: 制限有(1) PC14: 制限有(1,2) PC15: 制限有(1,2)

GPIOD

PD0: OSC_IN (X‐tal) PD1: OSC_OUT (X‐tal) PD2

1  Sink , 3mA, 2MHz

2  32.768kHz X‐tal 接続

(25)

CoOS (RTOS)

様々 I/O 扱う Real Time OS 必要

処理 複数 分割 優先度 設定

定期的 RTOS 行う

SysTick 利用

I/O 優先度 高い処理 行う場合 OS経由 指示

起こさ

CoOS OsConfig.h

CFG_CPU_FREQ 24MHz

CFG_SYSTICK_FREQ 100Hz (1000Hz )

(26)

Atomic  Write (1/3)

書 込 競合

ン 通常処理 割 込 書 込 行う 同様

GPIOx 8bit 8bit

Device A Device B Task A

通常処理

Task B 又 割 込

競合

全体

全体

(27)

Atomic  Write (2/3)

STM32 GPIO BSRR 使う 簡単 Atomic Write

通常 GPIO Read ‐ Modify ‐ Write 場合

BSRR Reset Set 一度

行わ

邪魔さ

Atomic

書籍 事例

Read – Modify ‐ Write Read 発生

状態 変化

変更 た状態 反映さ い値 Write

前後

(28)

Atomic  Write (3/3)

GPIO 出力用 ODR BSRR ODR 特定

Atomic 変更

BSRR経由

制御

不要

参照

関連したドキュメント

約 4 ~約 60km/h 走行時 作動条件 対車両 ※1.

, n, noting that deleting primes from the entries k in each P ST ∈ PST μ (n) gives a shifted tableaux ST ∈ ST μ (n) with a factor of t arising from each primed entry of P ST ,

By assumption γ is differentiable and has transverse intersections with the critical point spheres of the map from the free configuration space to the workspace. It follows that

We have described the classical loss network model similar to that of Kelly [9]. It also arises in variety of different contexts. Appropriate choices of A and C for the

We show that a non-symmetric Hadamard spin model belongs to a certain triply regular Bose-Mesner algebra of dimension 5 with duality, and we use this to give an explicit formula for

Khovanov associated to each local move on a link diagram a homomorphism between the homology groups of its source and target diagrams.. In this section we describe how this

1991 年 10 月  桃山学院大学経営学部専任講師 1997 年  4 月  桃山学院大学経営学部助教授 2003 年  4 月  桃山学院大学経営学部教授(〜現在) 2008 年  4

A motivation for considering such epimorphisms is that they induce a partial order on the set of prime knots (see Section 2), and we expect that new insights into the theory of