本 ドキュメントについて 的 Cortex-M7は 従 来 のマイコンよりも 性 能 が 幅 に 向 上 されている 特 徴 を 理 解 し ARM 統 合 開 発 環 境 ARM IAR Embedded Workbench (EWARM)を いて 性 能 を 引 き 出 すテクニックを 習 得



Similar documents
内容 1 はじめに 本ガイドの目的 本ガイドの対象者 対象製品 表記について リンカ設定ファイル例 ソースファイル例 名前の付け方 リンカオプションとリンカ設定ファ

預 金 を 確 保 しつつ 資 金 調 達 手 段 も 確 保 する 収 益 性 を 示 す 指 標 として 営 業 利 益 率 を 採 用 し 営 業 利 益 率 の 目 安 となる 数 値 を 公 表 する 株 主 の 皆 様 への 還 元 については 持 続 的 な 成 長 による 配 当 可

スライド 1

PowerPoint Presentation

平 成 27 年 11 月 ~ 平 成 28 年 4 月 に 公 開 の 対 象 となった 専 門 協 議 等 における 各 専 門 委 員 等 の 寄 附 金 契 約 金 等 の 受 取 状 況 審 査 ( 別 紙 ) 専 門 協 議 等 の 件 数 専 門 委 員 数 500 万 円 超 の 受

<4D F736F F F696E74202D2082C882E982D982C DD8ED88EE688F882CC82B582AD82DD C668DDA9770>

(Microsoft Word - \212\356\226{\225\373\220j _\217C\220\263\201j.doc)

<4D F736F F F696E74202D C90BF8F CC8DEC90AC97E181698A4F8D E8816A5F56322E707074>

<4D F736F F D AC90D1955D92E CC82CC895E DD8C D2816A2E646F63>

●電力自由化推進法案

(5) 給 与 制 度 の 総 合 的 見 直 しの 実 施 状 況 について 概 要 の 給 与 制 度 の 総 合 的 見 直 しにおいては 俸 給 表 の 水 準 の 平 均 2の 引 き 下 げ 及 び 地 域 手 当 の 支 給 割 合 の 見 直 し 等 に 取 り 組 むとされている

募集新株予約権(有償ストック・オプション)の発行に関するお知らせ

(別紙3)保険会社向けの総合的な監督指針の一部を改正する(案)

PowerPoint プレゼンテーション

養 老 保 険 の 減 額 払 済 保 険 への 変 更 1. 設 例 会 社 が 役 員 を 被 保 険 者 とし 死 亡 保 険 金 及 び 満 期 保 険 金 のいずれも 会 社 を 受 取 人 とする 養 老 保 険 に 加 入 してい る 場 合 を 解 説 します 資 金 繰 りの 都

Microsoft Word - 佐野市生活排水処理構想(案).doc

2 役 員 の 報 酬 等 の 支 給 状 況 平 成 27 年 度 年 間 報 酬 等 の 総 額 就 任 退 任 の 状 況 役 名 報 酬 ( 給 与 ) 賞 与 その 他 ( 内 容 ) 就 任 退 任 2,142 ( 地 域 手 当 ) 17,205 11,580 3,311 4 月 1

<4D F736F F D208DE3905F8D8291AC8B5A8CA48A948EAE89EF8ED0208BC696B18BA492CA8E64976C8F BD90AC E378C8E89FC92F994C5816A>

( 別 紙 ) 以 下 法 とあるのは 改 正 法 第 5 条 の 規 定 による 改 正 後 の 健 康 保 険 法 を 指 す ( 施 行 期 日 は 平 成 28 年 4 月 1 日 ) 1. 標 準 報 酬 月 額 の 等 級 区 分 の 追 加 について 問 1 法 改 正 により 追 加


小 売 電 気 の 登 録 数 の 推 移 昨 年 8 月 の 前 登 録 申 請 の 受 付 開 始 以 降 小 売 電 気 の 登 録 申 請 は 着 実 に 増 加 しており これまでに310 件 を 登 録 (6 月 30 日 時 点 ) 本 年 4 月 の 全 面 自 由 化 以 降 申

1 林 地 台 帳 整 備 マニュアル( 案 )について 林 地 台 帳 整 備 マニュアル( 案 )の 構 成 構 成 記 載 内 容 第 1 章 はじめに 本 マニュアルの 目 的 記 載 内 容 について 説 明 しています 第 2 章 第 3 章 第 4 章 第 5 章 第 6 章 林 地

治 験 実 施 管 理 システム NMGCP 向 け Excel 形 式 プロトコール 作 成 手 順 書 V4.0.3 対 応 版 第 1 版 株 式 会 社 富 士 通 アドバンストエンジニアリング All Rights Reserved,Copyright 株 式 会 社 富 士 通 アドバン

<819A955D89BF92B28F BC690ED97AA8EBA81418FA48BC682CC8A8890AB89BB816A32322E786C7378>

1_2013BS(0414)

KINGSOFT Office 2016 動 作 環 境 対 応 日 本 語 版 版 共 通 利 用 上 記 動 作 以 上 以 上 空 容 量 以 上 他 接 続 環 境 推 奨 必 要 2

MetaMoJi ClassRoom/ゼミナール 授業実施ガイド

消 費 ~ 軽 減 率 消 費 の 軽 減 率 制 度 が 消 費 率 10% 時 に 導 入 することとされています 平 成 26 年 4 月 1 日 平 成 27 年 10 月 1 日 ( 予 定 ) 消 費 率 5% 消 費 率 8% 消 費 率 10% 軽 減 率 の 導 入 平 成 26

TIPS - 棚 割 りを 開 始 するまで Liteを 起 動 し 企 業 情 報 の 追 加 を 行 い 棚 割 を 行 う 企 業 の 追 加 をして 下 さい 企 業 情 報 の 追 加 時 に エラーメッセージが 表 示 された 場 合 別 途 TIPS トラブルが 発 生 した 場 合

4 承 認 コミュニティ 組 織 は 市 長 若 しくはその 委 任 を 受 けた 者 又 は 監 査 委 員 の 監 査 に 応 じなければ ならない ( 状 況 報 告 ) 第 7 条 承 認 コミュニティ 組 織 は 市 長 が 必 要 と 認 めるときは 交 付 金 事 業 の 遂 行 の

Taro-契約条項(全部)

目 次 ログインする 前 に... 4 メンバー 管 理 編 ( 管 理 者 )... 5 ログインする... 6 トップページについて... 7 メンバー 管 理 をする... 8 メンバー 管 理 画 面 について 医 療 機 関 指 定 新 規 追 加 指 定...

目 次 表 紙... 1 目 次... 2 改 訂 記 録 目 的 対 象 製 造 部 門 品 質 部 門 組 織 PET 薬 剤 製 造 施 設 ( 施 設 長 )の 責 務 製 造 管 理 者 の 責 務... 7

検 討 検 討 の 進 め 方 検 討 状 況 簡 易 収 支 の 世 帯 からサンプリング 世 帯 名 作 成 事 務 の 廃 止 4 5 必 要 な 世 帯 数 の 確 保 が 可 能 か 簡 易 収 支 を 実 施 している 民 間 事 業 者 との 連 絡 等 に 伴 う 事 務 の 複 雑

定款  変更

事 業 税 の 外 形 標 準 課 税 事 業 税 は 都 道 府 県 が 所 得 ( 利 益 )に 対 して 課 税 します 1. 個 人 事 業 税 業 種 区 分 税 率 ( 標 準 税 率 ) 第 1 種 事 業 ( 物 品 販 売 業 製 造 業 金 銭 貸 付 業 飲 食 店 業 不 動

<4D F736F F D E598BC68A8897CD82CC8DC490B68B7982D18E598BC68A8893AE82CC8A C98AD682B782E993C195CA915B C98AEE82C382AD936F985E96C68B9690C582CC93C197E1915B927582CC898492B75F8E96914F955D89BF8F915F2E646F6

<4D F736F F D208E52979C8CA78E598BC68F5790CF91A390698F9590AC8BE08CF D6A2E646F6378>

った 場 合 など 監 事 の 任 務 懈 怠 の 場 合 は その 程 度 に 応 じて 業 績 勘 案 率 を 減 算 する (8) 役 員 の 法 人 に 対 する 特 段 の 貢 献 が 認 められる 場 合 は その 程 度 に 応 じて 業 績 勘 案 率 を 加 算 することができる

は 固 定 流 動 及 び 繰 延 に 区 分 することとし 減 価 償 却 を 行 うべき 固 定 の 取 得 又 は 改 良 に 充 てるための 補 助 金 等 の 交 付 を 受 けた 場 合 にお いては その 交 付 を 受 けた 金 額 に 相 当 する 額 を 長 期 前 受 金 とし

注 記 事 項 (1) 当 四 半 期 連 結 累 計 期 間 における 重 要 な 子 会 社 の 異 動 : 無 (2) 四 半 期 連 結 財 務 諸 表 の 作 成 に 特 有 の 会 計 処 理 の 適 用 : 有 ( 注 ) 詳 細 は 添 付 資 料 4ページ 2.サマリー 情 報 (

3. 選 任 固 定 資 産 評 価 員 は 固 定 資 産 の 評 価 に 関 する 知 識 及 び 経 験 を 有 する 者 のうちから 市 町 村 長 が 当 該 市 町 村 の 議 会 の 同 意 を 得 て 選 任 する 二 以 上 の 市 町 村 の 長 は 当 該 市 町 村 の 議

<4D F736F F F696E74202D E36816A984A93AD8C5F96F CC837C A815B C E707074>

Microsoft Word )40期決算公開用.doc

スライド 1

消 費 生 活 センターに 関 する 条 例 の 制 定 施 行 規 則 第 8 条 地 方 消 費 者 行 政 ガイド ライン 施 行 規 則 において 都 道 府 県 及 び 消 費 生 活 センターを 設 置 する 市 町 村 が 消 費 生 活 センターの 組 織 及 び 運 営 及 び 情

年金通信25-30厚年基金見直し(法改正概要)

損 益 計 算 書 自. 平 成 26 年 4 月 1 日 至. 平 成 27 年 3 月 31 日 科 目 内 訳 金 額 千 円 千 円 営 業 収 益 6,167,402 委 託 者 報 酬 4,328,295 運 用 受 託 報 酬 1,839,106 営 業 費 用 3,911,389 一

第 5 条 ( 有 効 期 間 ) 1. 本 サービスの 有 効 期 間 は 当 社 が 指 定 した 日 をもって 開 始 とし 当 該 サービス 対 象 物 件 に 入 居 する 契 約 が 終 了 した 日 をもって 終 了 とします 2. 既 に 入 居 している 住 戸 が 新 たにサービ

要 な 指 示 をさせることができる ( 検 査 ) 第 8 条 甲 は 乙 の 業 務 にかかる 契 約 履 行 状 況 について 作 業 完 了 後 10 日 以 内 に 検 査 を 行 うものとする ( 発 生 した 著 作 権 等 の 帰 属 ) 第 9 条 業 務 によって 甲 が 乙 に

< F2D8AC493C CC81698EF3928D8ED2816A2E6A7464>

S16-386・ソフトウェアの調達に関する入札実施の件

競 争 参 加 資 格 審 査 等 事 務 取 扱 要 領 ( 抜 粋 ) ( 有 資 格 者 としない 者 ) 第 6 条 契 約 事 務 責 任 者 は 契 約 を 締 結 する 能 力 を 有 しない 者 破 産 者 で 復 権 を 得 ない 者 及 び 暴 力 団 等 の 反 社 会 的 勢

スライド 1

工 事 名 能 代 南 中 学 校 体 育 館 非 構 造 部 材 耐 震 改 修 工 事 ( 建 築 主 体 工 事 ) 入 札 スケジュール 手 続 等 期 間 期 日 期 限 等 手 続 きの 方 法 等 1 設 計 図 書 等 の 閲 覧 貸 出 平 成 28 年 5 月 24 日 ( 火

東京事務所BCP【実施要領】溶け込み版

<4D F736F F F696E74202D B E E88E68C9A90DD8BC65F E DC58F4994C52E >

. 負 担 調 整 措 置 8 (1) 宅 地 等 調 整 固 定 資 産 税 額 宅 地 に 係 る 固 定 資 産 税 額 は 当 該 年 度 分 の 固 定 資 産 税 額 が 前 年 度 課 税 標 準 額 又 は 比 準 課 税 標 準 額 に 当 該 年 度 分 の 価 格 ( 住 宅

財政再計算結果_色変更.indd

中国会社法の改正が外商投資企業に与える影響(2)

Taro-1-14A記載例.jtd

<4D F736F F D2091E F18CB48D C481698E7B90DD8F9590AC89DB816A2E646F63>

定款

平成21年9月29日

(3) 調 査 の 進 め 方 2 月 28 日 2 月 28 日 ~6 月 30 日 平 成 25 年 9 月 サウンディング 型 市 場 調 査 について 公 表 松 戸 市 から 基 本 的 な 土 地 情 報 サウンディングの 実 施 活 用 意 向 アイデアのある 民 間 事 業 者 と

通 知 カード と 個 人 番 号 カード の 違 い 2 通 知 カード ( 紙 )/H27.10 個 人 番 号 カード (ICカード)/H28.1 様 式 (おもて) (うら) 作 成 交 付 主 な 記 載 事 項 全 国 ( 外 国 人 含 む)に 郵 送 で 配 布 希 望 者 に 交

PowerPoint プレゼンテーション


工 事 名 渟 城 西 小 学 校 体 育 館 非 構 造 部 材 耐 震 改 修 工 事 ( 建 築 主 体 工 事 ) 入 札 スケジュール 手 続 等 期 間 期 日 期 限 等 手 続 きの 方 法 等 1 設 計 図 書 等 の 閲 覧 貸 出 平 成 28 年 2 月 23 日 ( 火

本ドキュメントについて 的 ARM 統合開発環境である ARM IAR Embedded Workbench(EWARM) と ST マイクロエレクトニクス社 (ST 社 ) 提供のサンプルプロジェクト および設計 援ツールを使 して ST 社評価ボード のソフトウェアを実際にビルド デバッグする

の と す る (1) 防 犯 カ メ ラ を 購 入 し 設 置 ( 新 設 又 は 増 設 に 限 る ) す る こ と (2) 設 置 す る 防 犯 カ メ ラ は 新 設 又 は 既 設 の 録 画 機 と 接 続 す る こ と た だ し 録 画 機 能 付 防 犯 カ メ ラ は

第2回 制度設計専門会合 事務局提出資料

頸 がん 予 防 措 置 の 実 施 の 推 進 のために 講 ずる 具 体 的 な 施 策 等 について 定 めることにより 子 宮 頸 がんの 確 実 な 予 防 を 図 ることを 目 的 とする ( 定 義 ) 第 二 条 この 法 律 において 子 宮 頸 がん 予 防 措 置 とは 子 宮

入札公告 機動装備センター

東京大学生協ICカード利用規約

Taro13-01_表紙目次.jtd

Sea-NACCS 利用者研修 【通関編】

信用調査報告書(見本)

目 次 1.はじめに 書 式 の 説 明 表 紙 スケジュール 組 入 れ 基 準 併 用 禁 止 薬 併 用 注 意 薬 同 種 同 効 薬 医 師 モニタリング..

2. 会 計 規 程 の 業 務 (1) 規 程 と 実 際 の 業 務 の 調 査 規 程 や 運 用 方 針 に 規 定 されている 業 務 ( 帳 票 )が 実 際 に 行 われているか( 作 成 されている か)どうかについて 調 べてみた 以 下 の 表 は 規 程 の 条 項 とそこに

続 に 基 づく 一 般 競 争 ( 指 名 競 争 ) 参 加 資 格 の 再 認 定 を 受 けていること ) c) 会 社 更 生 法 に 基 づき 更 生 手 続 開 始 の 申 立 てがなされている 者 又 は 民 事 再 生 法 に 基 づき 再 生 手 続 開 始 の 申 立 てがなさ

第 40 回 中 央 近 代 化 基 金 補 完 融 資 推 薦 申 込 み 公 募 要 綱 1 公 募 推 薦 総 枠 30 億 円 一 般 物 流 効 率 化 促 進 中 小 企 業 高 度 化 資 金 貸 付 対 象 事 業 の 合 計 枠 2 公 募 期 間 平 成 28 年 6 月 20

の 購 入 費 又 は 賃 借 料 (2) 専 用 ポール 等 機 器 の 設 置 工 事 費 (3) ケーブル 設 置 工 事 費 (4) 防 犯 カメラの 設 置 を 示 す 看 板 等 の 設 置 費 (5) その 他 設 置 に 必 要 な 経 費 ( 補 助 金 の 額 ) 第 6 条 補


調 査 結 果 トピック1: 性 年 代 別 利 用 率 の 利 用 率 は 男 女 ともに 各 年 代 で 大 きく 伸 長 している 2011 年 9 月 の 調 査 では の 年 代 別 利 用 率 は 男 女 とも が 最 も 高 く が 23.9% が 20.5%だったが 今 年 の 調

<4D F736F F D208ED089EF95DB8CAF89C193FC8FF38BB CC8EC091D492B28DB88C8B89CA82C982C282A282C42E646F63>

Microsoft PowerPoint - 経営事項審査.ppt

弁護士報酬規定(抜粋)

独立行政法人国立病院機構

( 医 療 機 器 の 性 能 及 び 機 能 ) 第 3 条 医 療 機 器 は 製 造 販 売 業 者 等 の 意 図 する 性 能 を 発 揮 できなければならず 医 療 機 器 としての 機 能 を 発 揮 できるよう 設 計 製 造 及 び 包 装 されなければならない 要 求 項 目 を

(4) 給 与 制 度 の 総 合 的 見 直 しの 実 施 状 況 について 概 要 国 の 給 与 制 度 の 総 合 的 見 直 しにおいては 俸 給 表 の 水 準 の 平 均 2の 引 下 げ 及 び 地 域 手 当 の 支 給 割 合 の 見 直 し 等 に 取 り 組 むとされている.

別 紙 第 号 高 知 県 立 学 校 授 業 料 等 徴 収 条 例 の 一 部 を 改 正 する 条 例 議 案 高 知 県 立 学 校 授 業 料 等 徴 収 条 例 の 一 部 を 改 正 する 条 例 を 次 のように 定 める 平 成 26 年 2 月 日 提 出 高 知 県 知 事 尾

<4D F736F F D F93878CA797708F4390B3816A819A95CA8B4C976C8EAE91E682538B4C8DDA97E12E646F6378>

ができます 4. 対 象 取 引 の 範 囲 第 1 項 のポイント 付 与 の 具 体 的 な 条 件 対 象 取 引 自 体 の 条 件 は 各 加 盟 店 が 定 めます 5.ポイントサービスの 利 用 終 了 その 他 いかなる 理 由 によっても 付 与 されたポイントを 換 金 すること

4. その 他 (1) 期 中 における 重 要 な 子 会 社 の 異 動 ( 連 結 範 囲 の 変 更 を 伴 う 特 定 子 会 社 の 異 動 ) 無 (2) 簡 便 な 会 計 処 理 及 び 四 半 期 連 結 財 務 諸 表 の 作 成 に 特 有 の 会 計 処 理 の 適 用 有

< 目 次 > 8. 雇 用 保 険 高 年 齢 雇 用 継 続 給 付 27 ( 育 児 休 業 給 付 介 護 休 業 給 付 ) 8.1 高 年 齢 雇 用 継 続 給 付 画 面 のマイナンバー 設 定 高 年 齢 雇 用 継 続 給 付 の 電 子 申 請 高

任 意 保 険 料 の 保 険 料 額 については 下 記 の 理 由 により 変 更 となる 場 合 があります 保 険 料 が 変 更 する 場 合 1 任 意 継 続 加 入 中 に 40 歳 になり 介 護 保 険 被 保 険 者 に 該 当 した 場 合 ( 被 扶 養 者 含 む) (

富士山チェックリスト

<4D F736F F D203193FA8AD45F95CA8E86325F89898F4B315F94F093EF8AA98D AD97DF914F82CC8FEE95F182CC8EFB8F C28E8B89BB2E646F63>

二 資本金の管理

Transcription:

Cortex-M7の 性 能 を 引 き 出 す ソフトウェア 開 発 April 2015 IAR Systems K.K. FAE Team

本 ドキュメントについて 的 Cortex-M7は 従 来 のマイコンよりも 性 能 が 幅 に 向 上 されている 特 徴 を 理 解 し ARM 統 合 開 発 環 境 ARM IAR Embedded Workbench (EWARM)を いて 性 能 を 引 き 出 すテクニックを 習 得 する 内 容 Cortex-M 市 場 とCortex-M7の 登 場 Cortex-M7の 性 能 を 引 き 出 す 開 発 環 境 ここが 新 しい! Cortex-M7 M7の 性 能 機 能 を 引 き 出 すためのEWARM 活 テクニック MPUを 理 解 し 使 いこなす TCMを 理 解 し 使 いこなす キャッシュを 理 解 し 使 いこなす STM32F7のFLASH ARTアクセラレータ Appendix MPU/Cache 関 連 レジスタ 本 ドキュメントは 2015 年 4 現 在 のIARシステムズWebサイトおよびEWARMバー ジョン7.40.2を 元 に 作 成 しています 2

IAR SYSTEMS A LEADING GLOBAL VENDOR 168 Employees with HQ in Uppsala, Sweden Listed in Stockholm/Nasdaq R&D investment 32% of revenue 32 years in the industry 24 hour technical support in 13 languages Uppsala Munich Sao Paulo Tokyo Seoul Shanghai London Paris San Francisco Dallas Boston Los Angeles +Distributor representation in 43 countries Stability and growth Licenses # (000 s) 20 15 10 5 2010-2013 Operating Margin % 20 15 10 5 0 2010 2011 2012 2013 License # Operating Margin 0

Cortex-M 市 場 とCortex-M7の 登 場

2015 年 超 性 能 マイコンCortex-M7 登 場 従 来 MPUでしか 対 応 できなかった 性 能 をマイコンで 実 現! 1GHz MMU 外 部 メモリ 開 発 難 易 度 い Cortex-A 600MHz 400MHz Cortex- M7 DOLBY SURROUND 7.1 ch 200MHz 100MHz 50MHz Cortex- M0 / M0+ Cortex- M3/M4 簡 単 超 性 能! DOLBY DIGITAL 2.1 ch 5

Cortex-M7のベンチマーク 性 能 実 績 1MHz 当 たりの 処 理 能 はシングルコアマイコンとして 世 界 最 速 (2015 年 4 現 在 ) マルチコアMPU Cortex-M7 http://www.eembc.org/coremark/index.php 2015 年 1 31 EEMBC.org Webサイトより 抜 粋 クロック 速 化 と 合 わせて 超 性 能 マイコンの 誕! 6

おさらい Cortex-Mマイコンの 普 及 Cortex-Mマイコンは この 数 年 で 世 界 中 の 幅 広 い 分 野 で 普 及 オーディオ ゲーム 機 カメラ 医 療 家 電 無 線 産 業 載 43.2 億 31.2 億 Cortex-M MCU 出 荷 個 数 10.3 億 19.1 億 ラインナップ 充 実 エコシステム 充 実 ソフト 資 産 充 実 2011 2012 2013 2014 http://ir.arm.com/phoenix.zhtml?c=197211&p=irol-reportsannual 2015 年 4 1 ARM Webサイトより 抜 粋 7

Cortex-M7の 性 能 を 引 き 出 す 開 発 環 境

IARシステムズとは? 社 コンパイラを 持 つ 組 込 み 開 発 環 境 の 専 メーカ 本 社 がスウェーデン グローバルに 展 開 従 業 員 170+ ローカルオフィス 12 拠 点 世 界 初 の 商 組 込 C 語 コンパイラメーカー 世 界 40ヵ 国 以 上 で 販 売 のべ10 万 ライセンスの 販 売 実 績 メーカによる 営 業 技 術 サポート GUI マニュアル 本 語 9

IARの 開 発 環 境 Embedded Workbench ビルド 機 能 とデバッグ 機 能 を 兼 ね 備 えた 統 合 開 発 環 境 プロジェクト 設 定 コーディング ビルド デバッグ トレース 解 析 STM8 ARM11 ARM9 8051 MSP430 ARM7 Cortex-A Cortex-R Cortex-M Embedded Workbench for ARM = EWARM 8 bit 16 bit 32 bit 10

Cortex-M7 開 発 環 境 としてのEWARM ハイパフォーマンスマイコンCortex-M7の 性 能 を 引 き 出 すには 優 れたコンパイラが 不 可 Cortex-M7 IAR EWARM http://www.eembc.org/coremark/index.php 2015 年 1 31 EEMBC.org Webサイトより 抜 粋 業 界 標 準 のベンチマークCoremarkで 最 速 度 として 採 されているのは Cortex-M7も 含 め IARシステムズのEWARM! 11

ここが 新 しい! Cortex-M7

Cortex-M4とCortex-M7の 仕 様 差 分 Cortex-M4とCortex-M7の 仕 様 差 分 Cortex-M4 Cortex-M7 命 令 セット Thumb2 Thumb2 DSP 拡 張 機 能 Single cycle 16/32-bit MAC Single cycle dual 16-bit MAC 8/16-bit SIMD arithmetic Hardware Divide (2-12 Cycles) Single cycle 16/32-bit MAC Single cycle dual 16-bit MAC 8/16-bit SIMD arithmetic Hardware Divide (2-12 Cycles) 浮 動 数 点 ユニット 単 精 度 浮 動 数 点 ユニット 単 精 度 / 倍 精 度 浮 動 数 点 ユニット パイプライン 3 段 + 投 機 的 分 岐 6 段 スーパースカラ + 分 岐 予 測 性 能 効 率 3.40 CoreMark/MHz 5.04 CoreMark/MHz 性 能 効 率 1.25 1.52 DMIPS/MHz 2.14 / 2.55 / 3.23 DMIPS/MHz 命 令 キャッシュ - 0 64kB 2ウェイ データ キャッシュ - 0 64kB 4ウェイ 命 令 TCM - 0 16MB データTCM - 0 16MB メモリ 保 護 オプションの8 領 域 MPU オプションの8または16 領 域 MPU http://www.arm.com/ja/products/processors/cortex-m/cortex-m4-processor.php http://www.arm.com/ja/products/processors/cortex-m/cortex-m7-processor.php 2015 年 4 1 ARM Webサイトより 抜 粋 13

ソフトウェア 開 発 から た Cortex-M4とCortex-M7の 差 分 M4 M7 3 段 パイプライン 6 段 パイプライン シングル 実 デュアル 実 同 じコードでもM4と べて 速 演 算 ( 約 1.5 倍 2 倍 ) DSP *FPU *MPU メモリ 保 護 ( 信 頼 性 ) メモリアクセス 遅 延 解 消 メモリアクセス 遅 延 解 消 DSP( 命 令 追 加 ) *FPU / 倍 精 度 FPU *MPU TCM( 密 結 合 メモリ) L1キャッシュ その 他 (ECCなど) 基 本 性 能 向 上 M7 のソフト 開 発 時 に 気 をつけるところは3 点! *はオプション 14

Cortex-M7 ベンチマーク 結 果 処 理 性 能 4.9 5.0 5.0 約 3.5 倍 1.4 コード/データ Flash/SRAM Flash/SRAM ITCM/DTCM ITCM/DTCM キャッシュ ON ON *Coremarkスコア EWARM7.30.1にて 実 測 15

M7の 性 能 機 能 を 引 き 出 すための EWARM 活 テクニック

今 回 使 うプロジェクト 構 成 (バブルソート) 意 されたデータをバブルソートで 並 び 替 える #include "include.h" #include "core_cm7.h" void low_level_init() { SCB->VTOR = 0x08000000; } void main(void) { printf("start n n"); BubbleSort(); printf(" nfinish n n"); } バブルソート 関 数 を 呼 ぶだけのmain 関 数 17

今 回 使 うプロジェクト 構 成 (バブルソート) #include <stdio.h> #include <intrinsics.h> void BubbleSort(); #define NUM_DATA 256 /* Data Number for sort * extern int original_data[ ]; #define CM7_REV 0x0001 #define MPU_PRESENT 1 #define NVIC_PRIO_BITS 4 #define Vendor_SysTickConfig 0 #define FPU_PRESENT 1 typedef enum IRQn { /****** Cortex-M7 Processor Exceptions Numbers ** NonMaskableInt_IRQn = -14, MemoryManagement_IRQn = -12, BusFault_IRQn = -11, UsageFault_IRQn = -10, SVCall_IRQn = -5, DebugMonitor_IRQn = -4, PendSV_IRQn = -2, SysTick_IRQn = -1 } IRQn_Type; 共 通 のincludeファイル 部 CMSIS の 定 義 あり 18

今 回 使 うプロジェクト 構 成 (バブルソート) #include "include.h" void BubbleSort() { int work_data[num_data]; int i, j, temp; } no_operation(); //copy data to stack for(i = 0; i < NUM_DATA;i++) { work_data[i] = original_data[i]; } no_operation(); //sort data for (i = 0; i < (NUM_DATA - 1); i++) { for (j = (NUM_DATA - 1); j > i; j--) { if (work_data[j - 1] > work_data[j]) { temp = work_data[j-1]; work_data[j-1] = work_data[j]; work_data[j]= temp; } } } no_operation(); //print the result for (i = 0; i < NUM_DATA ; i++) { printf("%d n", work_data[i]); } no_operation(); バブルソートの 本 体 データをローカル 変 数 にコピーして 並 び 替 え 19

今 回 使 うプロジェクト 構 成 (バブルソート) #include "include.h" int original_data[ ] = { 179, 255, 105, 74, 42, 117, 3, 13, 129, 31, 198, 59, 128, 119, 148, 2, 235, 177, 252, 155, 241, 94, 11, 174, 194, 114, 168, 113, 55, 92, 28, 50, 249, 78, 52, 73, 226, 206, 65, 188, 171, 70, 125, 75, 77, 165, 191, 208, 35, 214, 137, 93, 5, 17, 15, 217, 144, 204, 244, 149, 97, 82, 36, 222, 248, 229, 212, 170, 14, 133, 115, 10, 23, 26, 164, 126, 172, 192, 225, 151, 87, 224, 173, 147, 41, 182, 240, 175, 6, 228, 19, 86, 143, 135, 38, 91, 158, 118, 30, 58, 96, 108, 183, 60, 253, 178, 7, 72, 190, 123, 46, 80, 32, 51, 99, 84, 76, 237, 47, 215, 189, 16, 230, 246, 102, 132, 141, 139, 112, 163, 69, 209, 111, 29, 146, 63, 211, 54, 201, 238, 122, 150, 88, 213, 22, 40, 251, 98, 49, 216, 140, 130, 18, 184, 161, 127, 199, 120, 110, 256, 193, 186, 131, 61, 104, 185, 85, 197, 1, 233, 39, 245, 181, 116, 169, 220, 160, 101, 145, 134, 33, 81, 53, 247, 34, 242, 27, 234, 44, 121, 202, 138, 12, 67, 232, 236, 107, 187, 231, 64, 153, 180, 142, 66, 79, 100, 90, 152, 166, 250, 25, 56, 227, 167, 207, 196, 106, 109, 154, 239, 4, 210, 83, 8, 223, 57, 45, 20, 218, 159, 62, 136, 43, 157, 221, 203, 68, 200, 124, 162, 71, 95, 156, 89, 48, 103, 219, 176, 9, 243, 24, 37, 21, 195, 254, 205 }; 256 点 のint 型 (32bit)データ 配 列 20

今 回 使 うプロジェクト 構 成 (バブルソート) define symbol ICFEDIT_intvec_start = 0x08000000; /*-Memory Regions-*/ define symbol ICFEDIT_region_ITCM_RAM_start = 0x00000000; define symbol ICFEDIT_region_ITCM_RAM_end = 0x00003FFF; define symbol ICFEDIT_region_FLASH_start = 0x08000000; define symbol ICFEDIT_region_FLASH_end = 0x080FFFFF; define symbol ICFEDIT_region_DTCM_start = 0x20000000; define symbol ICFEDIT_region_DTCM_end = 0x2000FFFF; define symbol ICFEDIT_region_SRAM1_start = 0x20010000; define symbol ICFEDIT_region_SRAM1_end = 0x2004BFFF; define symbol ICFEDIT_region_SRAM2_start = 0x2004C000; define symbol ICFEDIT_region_SRAM2_end = 0x2004FFFF; /*-Sizes-*/ define symbol ICFEDIT_size_cstack = 0x800; define symbol ICFEDIT_size_heap = 0x800; /**** End of ICF editor section. ###ICF###*/ define memory mem with size = 4G; define region ITCM_RAM_region = mem:[from ICFEDIT_region_ITCM_RAM_start to ICFEDIT_region_ITCM_RAM_end ]; define region FLASH_region = mem:[from ICFEDIT_region_FLASH_start to ICFEDIT_region_FLASH_end ]; define region DTCM_region = mem:[from ICFEDIT_region_DTCM_start to ICFEDIT_region_DTCM_end ]; define region SRAM1_region = mem:[from ICFEDIT_region_SRAM1_start to ICFEDIT_region_SRAM1_end ]; define region SRAM2_region = mem:[from ICFEDIT_region_SRAM2_start to ICFEDIT_region_SRAM2_end ]; define block CSTACK with alignment = 8, size = ICFEDIT_size_cstack { }; define block HEAP with alignment = 8, size = ICFEDIT_size_heap { }; initialize by copy { readwrite }; do not initialize { section.noinit }; place at address mem: ICFEDIT_intvec_start { readonly section.intvec }; place in FLASH_region { readonly }; place in ITCM_RAM_region { }; place in DTCM_region { }; place in SRAM1_region { readwrite, block CSTACK, block HEAP}; place in SRAM2_region { }; メモリ 配 置 を 規 定 するIARオリジナルのリンカ 設 定 ファイル(.icf) 21

今 回 使 うプロジェクト 構 成 (バブルソート) オプション 設 定 ( 新 規 プロジェクトからの 差 分 ) [Cortex-M7] [CMSISを 使 する] [$PROJ_DIR$ m7.txt] [リンカマップファイルの 表 ] 22

まずは える 化 Cortex-M7ベンチマークテクニック 並 び 替 えの 実 処 理 を 計 測 ブレークポイント 間 のCPUレジスタの 変 化 で 測 定 可 能 現 在 のサイクル 数 前 回 のデバッガ 表 からの サイクル 増 加 数 23

まずは える 化 Cortex-M7ベンチマークテクニック CYCLECOUNTERが 変 わらない 時 は 機 能 を 有 効 化 することで 対 応 可 能 CYCLECOUNTERが 更 新 される Data Watchpoint and Trace unit DWT_CTRL > CYCNTENAを1に CPU 速 度 が200MHzのとき CCSTEPが826,801だったら 経 過 時 間 は4.134ms 24

メモリ 配 置 を 柔 軟 に リンカ 使 いこなしと 確 認 テクニック M7では TCM キャッシュの 使 い 分 けが 性 能 に きく 影 響 由 に 配 置 するには リンカの 基 本 的 な 使 い を 習 得 する 必 要 がある 0x2004C000 0x2004FFFF : 16KB 0x20010000 0x2004BFFF : 240KB 0x20000000 0x2000FFFF : 64KB 0x08000000 0x080FFFFF : 1024KB 0x00000000 0x00003FFF : 16KB SRAM2 SRAM1 DTCM RAM FLASH ITCM RAM データ コード 25

メモリ 配 置 を 柔 軟 に リンカ 使 いこなしと 確 認 テクニック EWARMのリンカ 名 称 はILINK ILINKでは4GBのメモリをRegionに 分 け 最 単 位 のセクションを 配 置 する SRAM2 SRAM1 DTCM RAM FLASH ITCM RAM Region(メモリ 空 間 ) Block Section Section Section Section Section 26

メモリ 配 置 を 柔 軟 に リンカ 使 いこなしと 確 認 テクニック リンカ 設 定 ファイルの 中 を てみる define symbol ICFEDIT_intvec_start = 0x08000000; /*-Memory Regions-*/ define symbol ICFEDIT_region_ITCM_RAM_start = 0x00000000; define symbol ICFEDIT_region_ITCM_RAM_end = 0x00003FFF; define symbol ICFEDIT_region_FLASH_start = 0x08000000; define symbol ICFEDIT_region_FLASH_end = 0x080FFFFF; define symbol ICFEDIT_region_DTCM_start = 0x20000000; define symbol ICFEDIT_region_DTCM_end = 0x2000FFFF; define symbol ICFEDIT_region_SRAM1_start = 0x20010000; define symbol ICFEDIT_region_SRAM1_end = 0x2004BFFF; define symbol ICFEDIT_region_SRAM2_start = 0x2004C000; define symbol ICFEDIT_region_SRAM2_end = 0x2004FFFF; /*-Sizes-*/ define symbol ICFEDIT_size_cstack = 0x800; define symbol ICFEDIT_size_heap = 0x800; /**** End of ICF editor section. ###ICF###*/ define memory mem with size = 4G; define region ITCM_RAM_region = mem:[from ICFEDIT_region_ITCM_RAM_start to ICFEDIT_region_ITCM_RAM_end ]; define region FLASH_region = mem:[from ICFEDIT_region_FLASH_start to ICFEDIT_region_FLASH_end ]; define region DTCM_region = mem:[from ICFEDIT_region_DTCM_start to ICFEDIT_region_DTCM_end ]; define region SRAM1_region = mem:[from ICFEDIT_region_SRAM1_start to ICFEDIT_region_SRAM1_end ]; define region SRAM2_region = mem:[from ICFEDIT_region_SRAM2_start to ICFEDIT_region_SRAM2_end ]; define block CSTACK with alignment = 8, size = ICFEDIT_size_cstack { }; define block HEAP with alignment = 8, size = ICFEDIT_size_heap { }; initialize by copy { readwrite }; do not initialize { section.noinit }; 初 期 化 時 のROM>RAM 展 開 指 place at address mem: ICFEDIT_intvec_start { readonly section.intvec }; アドレスシンボルの 宣 スタック ヒープブロックサイズの 宣 メモリ 領 域 定 義 スタック ヒープブロックの 定 義 ベクタテーブル 配 置 place in FLASH_region { readonly }; place in ITCM_RAM_region { }; place in DTCM_region { }; place in SRAM1_region { readwrite, block CSTACK, block HEAP}; place in SRAM2_region { }; どのメモリ 領 域 にどの( 属 性 の)セクションを 配 置 するか 指 27

メモリ 配 置 を 柔 軟 に リンカ 使 いこなしと 確 認 テクニック ビルド 後 のメモリ 配 置 状 況 はmapファイルで 確 認 できる [リンカマップファイルの 表 ]にチェックを れてビルド Output 以 下 にmapファイルが 成 される セクションごとの 配 置 アドレスなどが 確 認 可 能 28

メモリ 配 置 を 柔 軟 に リンカ 使 いこなしと 確 認 テクニック BubbleSort 関 数 をROM RAM 展 開 して 実 する #include "include.h" #pragma location="sram1_func" void BubbleSort() { int work_data[num_data]; int i, j, temp; } 1. 配 置 先 セク ションを 指 定 no_operation(); //copy data to stack for(i = 0; i < NUM_DATA;i++) { work_data[i] = original_data[i]; } no_operation(); //sort data for (i = 0; i < (NUM_DATA - 1); i++) { for (j = (NUM_DATA - 1); j > i; j--) { if (work_data[j - 1] > work_data[j]) { temp = work_data[j-1]; work_data[j-1] = work_data[j]; work_data[j]= temp; } } } no_operation(); //print the result for (i = 0; i < NUM_DATA ; i++) { printf("%d n", work_data[i]); } no_operation(); initialize by copy { readwrite }; initialize by copy { section sram1_func }; do not initialize { section.noinit }; place at address mem: ICFEDIT_intvec_start { readonly section.intvec }; place in FLASH_region { readonly }; place in ITCM_RAM_region { }; place in DTCM_region { }; place in SRAM1_region { readwrite, block CSTACK, block HEAP}; place in SRAM1_region { section sram1_func}; place in SRAM2_region { }; m7.icf 3.ROMからコピー 展 開 するセ クションであることを 指 定 2.セクションの 配 置 Regionを 指 定 sub.c 29

メモリ 配 置 を 柔 軟 に リンカ 使 いこなしと 確 認 テクニック マップファイルとデバッグ 実 時 のアドレスで RAM 実 を 確 認 0x20000000 台 は SRAM 領 域 30

最 適 化 でこんなに 変 わる! 適 用 テクニック C 語 の 最 適 化 設 定 で 各 種 処 理 性 能 は 幅 に 変 わる プロジェクトを 右 クリック SRAM 上 のStatic 変 数 をSRAM 上 のスタック(ローカル 変 数 )にコピー スタック 上 の 変 数 配 列 を 並 び 替 え Code Static Stack Data Copy (Cycle) BubbleSort (Cycle) FLASH SRAM SRAM 4,789 1,202,575 FLASH (High-Speed) SRAM SRAM 1,046 546,215 最 適 化 ( 速 度 ) 約 4.5 倍 約 2.2 倍

最 適 化 でこんなに 変 わる! 適 用 テクニック C 語 の 最 適 化 はプロジェクト 括 でも ソースコード 単 位 でも 指 定 可 能 Cファイルを 右 クリック [ 継 承 した 設 定 をオーバライド]にチェックして コンパイラオプションを 上 書 き 32

CMSISファイルを 活 用 して 簡 単 設 定 CMSISとは ARM 社 IARシステムズ 社 などが 共 同 で 作 成 した 標 準 規 格 CMSISファイル 群 にincludeパスを 設 定 [CMSISを 使 する]にチェックを れることでCMSISのIncludeディレクトリに プリプロセッサのinclude Pathが 規 定 される 33

CMSISファイルを 活 用 して 可 搬 性 を 確 保 Cortex-Mコアの 各 種 レジスタの 定 義 および 設 定 関 数 マクロが 規 定 若 冗 の 処 理 となるが 設 定 は 度 のみと 考 えるとデバイス 間 の メンテナンス 性 などを 考 慮 し 積 極 的 に 活 すべき 34

Cortex-M7の 標 準 初 期 化 処 理

アプリケーション 実 行 までにやるべきこと 初 期 設 定 として 実 すべきこと FPU 初 期 化 *オプション EWARMのランタイムライブラリが 実 MPU 初 期 化 プログラムで 処 理 キャッシュ 初 期 化 プログラムで 処 理 TCM 初 期 化 デフォルトで 有 効 なデバイスが 多 い データ 初 期 化 (ROM > RAMなど) EWARMのランタイムライブラリが 実 *カスタマイズも 可 能 36

MPUを 理 解 し 使 いこなす

MPU(メモリ 保 護 ユニット)とは? 領 域 ごとにアクセス 権 限 などを 設 定 できる 機 能 キャッシュの 設 定 にも 必 要 キャッシュ コード 実 ペリフェラル キャッシュ 無 効 実 不 可 不 正 コード 外 部 RAM キャッシュ 有 効 実 不 可 内 部 RAM DTCM キャッシュ 有 効 実 不 可 悪 意 あるプログラム コード ITCM キャッシュ 有 効 実 効 可 コードを 実 させない 38

MPUの 設 定 プロセス アプリケーション 設 計 に 合 わせて 分 に 検 討 を う メモリ 領 域 を 途 属 性 でどう 区 切 るか 決 める MPU 領 域 番 号 0 MPU 領 域 番 号 1 MPU 領 域 番 号 2 最 終 有 効 設 定 区 切 った 領 域 の 設 定 順 番 を 決 める 1 2 1 2 各 領 域 の 詳 細 設 定 を 決 める 0 0 レジスタ 値 をコーディングする 39

MPUの 設 定 プロセス MPU 関 連 レジスタをシーケンスに 沿 って 設 定 する MPU 無 効 化 (MPU>CTRL) MPU 領 域 開 始 アドレス+ 番 号 指 定 (MPU>RBAR) 該 当 領 域 の 属 性 +サイズ 指 定 (MPU>RASR) MPU 領 域 開 始 アドレス+ 番 号 指 定 (MPU>RBAR) MPU 領 域 ごとに 設 定 該 当 領 域 の 属 性 +サイズ 指 定 (MPU>RASR) MPU 有 効 化 (MPU>CTRL) 40

MPU 関 連 レジスタ 重 要 なのは 下 記 3レジスタ(M4と 共 通 ) 詳 細 はAppendix 参 照 MPU 有 効 化 MPU_CTRL: MPU Control Register 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 PRIVDEFENA HFNMIENA ENABLE MPU_RBAR: MPU Region Base Address Register 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ADDR VALID REGION MPU_RASR: MPU Region Attribute and Size Register 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 XN 開 始 アドレス AP TEX S C B SRD SIZE Region 番 号 ENABLE コード 実 不 可 権 限 制 御 キャッシュポリシーなど サブ 領 域 サイズ 有 効 化 http://infocenter.arm.com/help/topic/com.arm.doc.dui0553a/cihjddef.html http://infocenter.arm.com/help/topic/com.arm.doc.dui0553a/cihigffb.html http://infocenter.arm.com/help/topic/com.arm.doc.dui0553a/cihegaib.html 2015 年 4 1 ARM Webサイトより 抜 粋 41

MPUの 設 定 コード 例 Flash, SRAM, Peripheral, M7 Peripheralの 設 定 例 DMB(); //Disable MPU MPU->CTRL = 0x0UL << MPU_CTRL_ENABLE_Pos; // MPU Setting // Flash //MPU->RBAR = 0x08000010; MPU->RBAR = 0x08000000UL & MPU_RBAR_ADDR_Msk MPU_RBAR_VALID_Msk 0x0UL & MPU_RBAR_REGION_Msk; //MPU->RASR = 0x03020027; MPU->RASR = 0x03UL << MPU_RASR_AP_Pos MPU_RASR_C_Msk 0x13UL << MPU_RASR_SIZE_Pos MPU_RASR_ENABLE_Msk; // SRAM //MPU->RBAR = 0x20000011; MPU->RBAR = 0x20000000UL & MPU_RBAR_ADDR_Msk MPU_RBAR_VALID_Msk 0x1UL & MPU_RBAR_REGION_Msk; //MPU->RASR = 0x13070023; MPU->RASR = MPU_RASR_XN_Msk 0x03 << MPU_RASR_AP_Pos MPU_RASR_S_Msk MPU_RASR_C_Msk MPU_RASR_B_Msk 0x11 << MPU_RASR_SIZE_Pos MPU_RASR_ENABLE_Msk; ; // Peripheral //MPU->RBAR = 0x40000012; MPU->RBAR = 0x40000000UL & MPU_RBAR_ADDR_Msk MPU_RBAR_VALID_Msk 0x2UL & MPU_RBAR_REGION_Msk; //MPU->RASR = 0x13050039; MPU->RASR = MPU_RASR_XN_Msk 0x03 << MPU_RASR_AP_Pos MPU_RASR_S_Msk MPU_RASR_B_Msk 0x1C << MPU_RASR_SIZE_Pos MPU_RASR_ENABLE_Msk; // M7 Peripheral //MPU->RBAR = 0xE0000013; MPU->RBAR = 0xE0000000UL & MPU_RBAR_ADDR_Msk MPU_RBAR_VALID_Msk 0x3UL & MPU_RBAR_REGION_Msk ; //MPU->RASR = 0x13050039; MPU->RASR = MPU_RASR_XN_Msk 0x03 << MPU_RASR_AP_Pos MPU_RASR_S_Msk MPU_RASR_B_Msk 0x1C << MPU_RASR_SIZE_Pos MPU_RASR_ENABLE_Msk; //Enable MPU MPU->CTRL = MPU_CTRL_ENABLE_Msk; DSB(); ISB(); 42

MPU 違 反 が 発 した 場 合 例 外 が 発 し 例 外 ハンドラにジャンプする デフォルトだとHardFaultハンドラにジャンプ メモリマネジメントフォルトを 有 効 にすると MemManageハンドラにジャンプ SCB->SHCSR = SCB_SHCSR_MEMFAULTENA_Msk; 問 題 の 発 したアドレスが 判 断 できる 43

TCMを 理 解 し 使 いこなす

TCM( 密 結 合 メモリ)とは? 通 常 のメモリアクセスよりも 速 にアクセスできるメモリ 速 CPUに 対 するメモリアクセスボトルネックの 解 消 段 として 採 WAIT WAIT 実 遠 い CPU 早 すぎ 汗 通 常 メモリ 実 実 実 TCM 近 い 低 レイテンシアクセスを 確 保 できる ただし 容 量 は さいため クリティカルな 処 理 データを 配 置 して アプリケーションの 最 適 化 を う 45

メモリマップ 上 のTCM 領 域 コード 実 のITCMとデータアクセス のDTCMがある 通 常 のFlash SRAM 領 域 とくらべて 容 量 また 領 域 はRAM( 揮 発 性 )のため 起 動 時 ロードする 必 要 がある 0x2004C000 0x2004FFFF : 16KB SRAM2 0x20010000 0x2004BFFF : 240KB 0x20000000 0x2000FFFF : 64KB SRAM1 DTCM RAM データ 0x08000000 0x080FFFFF : 1024KB 0x00000000 0x00003FFF : 16KB FLASH ITCM RAM コード 46

TCMをリンカ 設 定 で 活 する Cソースコードで 配 置 先 セクションを リンカ 設 定 でセクションの 配 置 場 所 を 指 定 sub.c #include "include.h" #pragma location= "itcm_func" void BubbleSort() { BubbleSort 関 数 の 配 置 先 int work_data[num_data]; int i, j, temp; no_operation(); //copy data to stack for(i = 0; i < NUM_DATA;i++) { work_data[i] = original_data[i]; } no_operation(); data.c #include "include.h" #pragma location="dtcm_variable" int original_data[ ] = { original_data 配 列 の 配 置 先 179, 255, 105, 74, 42, 117, 3 m7.icf initialize by copy { readwrite }; initialize by copy { section itcm_func }; do not initialize { section.noinit }; place at address mem: ICFEDIT_intvec_start { readonly section.intvec }; place in FLASH_region { readonly }; place in ITCM_RAM_region {section itcm_func }; place in DTCM_region {section dtcm_variable }; place in SRAM1_region { readwrite, block CSTACK, block HEAP}; place in SRAM2_region { }; 47

キャッシュを 理 解 し 使 いこなす

キャッシュとは? 動 的 動 的 に 最 近 アクセスしたデータを 蓄 積 し アクセス 速 化 WAIT WAIT 実 遠 い 通 常 メモリ 実 実 実 ラッキー キャッシュに 残 ってた キャッシュ 通 常 メモリ 近 い アプリケーション 全 体 として アクセススピードは 改 善 される ただし キャッシュヒットするかどうかは そのときの 条 件 による 49

キャッシュの 設 定 プロセス データキャッシュ 命 令 キャッシュそれぞれにレジスタ 設 定 をする D-Cacheの 無 効 化 (PPB > DCISW) Cacheラインごとに 無 効 化 必 要 I-Cacheの 無 効 化 (PPB > ICIALLU) 度 の 処 理 で 無 効 化 D-Cacheの 有 効 化 (CCR) CCRのビットを てて 有 効 化 I-Cacheの 有 効 化 (CCR) CCRのビットを てて 有 効 化 50

キャッシュの 有 効 化 サンプルコード (データ) CMSISの core_cm7.h に キャッシュ 設 定 関 数 が 意 されている データキャッシュの 有 効 化 関 数 STATIC_INLINE void SCB_EnableDCache(void) { #if ( DCACHE_PRESENT == 1) uint32_t ccsidr, sshift, wshift, sw; uint32_t sets, ways; } ccsidr = SCB->CCSIDR; sets = CCSIDR_SETS(ccsidr); sshift = CCSIDR_LSSHIFT(ccsidr) + 4; ways = CCSIDR_WAYS(ccsidr); wshift = CLZ(ways) & 0x1f; DSB(); do { // invalidate D-Cache int32_t tmpways = ways; do { sw = ((tmpways << wshift) (sets << sshift)); SCB->DCISW = sw; } while(tmpways--); } while(sets--); DSB(); SCB->CCR = SCB_CCR_DC_Msk; // enable D-Cache DSB(); ISB(); #endif 51

キャッシュの 有 効 化 サンプルコード ( 命 令 ) CMSISの core_cm7.h に キャッシュ 設 定 関 数 が 意 されている 命 令 キャッシュの 有 効 化 関 数 STATIC_INLINE void SCB_EnableICache(void) { #if ( ICACHE_PRESENT == 1) DSB(); ISB(); SCB->ICIALLU = 0; // invalidate I-Cache SCB->CCR = SCB_CCR_IC_Msk; // enable I-Cache DSB(); ISB(); #endif } 命 令 が 確 実 に 設 定 されるように メモリバリア 命 令 を 適 している 52

STM32F7のFLASH ARTアクセラレータ

STM32F7のFLASH ARTアクセラレータ Flash 領 域 にTCM 経 由 でアクセスができ ARTを 有 効 にすることで 速 アクセスができる 0x2004C000 0x2004FFFF : 16KB SRAM2 0x20010000 0x2004BFFF : 240KB SRAM1 データ AXIM TCM 0x20000000 0x2000FFFF : 64KB 0x00200000 0x002FFFFF : 1024KB or 0x08000000 0x080FFFFF : 1024KB キャッシュ DTCM RAM FLASH コード 0x00000000 0x00003FFF : 16KB ITCM RAM 54

STM32F7のFLASH ARTアクセラレータ ARTはレジスタ 設 定 で 有 効 にする FLASH_ACR:Flash access control register 0x4002-3C00 Type: RW Reset Value: 0x0000-0000 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ARTEN LATENCY http://www.st.com/st-web-ui/static/active/en/resource/technical/document/data_brief/dm00116941.pdf 2015 年 4 1 ST 社 Webサイトより 抜 粋 TCM 経 由 (0x0020xxxx)から 起 動 するか AXIM(0x0800xxxx)から 起 動 するかは BOOT_PINの 状 態 と OptionByteのBOOT_ADD0/1で 決 定 される 詳 細 はSTM32F7xxリファレンスマニュアルを 参 照 55

STM32F7のFLASH ARTアクセラレータ ST 社 提 供 stm32f7xx_hal_flash.hにart 有 効 / 無 効 関 数 が 含 まれている 56

パフォーマンス 評 価 結 果

STM32F7の 設 定 差 分 による 性 能 評 価 配 置 領 域 設 定 により 性 能 は きく 異 なる Code Static Stack Icache DCache Data Copy (Cycle) BubbleSort (Cycle) FLASH SRAM SRAM 4,789 1,202,575 FLASH SRAM SRAM Yes 7,371 1,341,410 FLASH SRAM SRAM Yes 4,779 934,650 FLASH SRAM SRAM Yes Yes 1,817 460,829 ITCM_FLASH SRAM SRAM 7,473 1,039,525 ITCM_FLASH SRAM SRAM Yes 4,362 901,197 ITCM_FLASH SRAM SRAM Yes 4,791 1,010,178 ITCM_FLASH SRAM SRAM Yes Yes 5,950 935,851 ITCM_FLASH +ART SRAM SRAM 3,117 934,561 ITCM_FLASH +ART SRAM SRAM Yes 1,803 455,859 ITCM_FLASH +ART SRAM SRAM Yes 3,117 934,576 ITCM_FLASH +ART SRAM SRAM Yes Yes 1,805 460,804 ITCM DTCM SRAM 1,579 930,088 ITCM DTCM SRAM Yes 1,579 455,937 ITCM DTCM SRAM Yes 1,579 929,901 ITCM DTCM SRAM Yes Yes 1,579 455,861 ITCM DTCM DTCM 1,579 455,979 ITCM DTCM DTCM Yes 1,579 455,940 ITCM DTCM DTCM Yes 1,579 455,905 ITCM DTCM DTCM Yes Yes 1,579 455,858 58

まとめ

まとめ Cortex-M7の 性 能 を 引 き 出 すためには 各 種 機 能 特 性 を 理 解 し アプリ ケーションにあった 設 計 が 必 要 性 能 なコンパイラを 持 つ 開 発 環 境 を 使 する 必 要 がある 実 際 には 動 作 をさせながら 評 価 をしながら アプリケーションの 最 適 化 を 進 めていく 開 発 環 境 の 提 供 する 各 種 設 定 法 を 理 解 し またベンチマークやメモリマッ プの 確 認 法 を 習 得 することで 開 発 するアプリケーションにあった 最 適 化 を 進 めることができる 60

Appendix MPU/Cache 関 連 レジスタ

MPU: MPU Control Register MPU 機 能 全 体 の 制 御 レジスタ MPU_CTRL: MPU Control Register 0xE000-ED94 Type: RW Reset Value: 0x0x0000-0000 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 PRIVDEFENA HFNMIENA ENABLE Bit Name 説 明 2 PRIVDEFENA 0: Default Memory map が 無 効 1: 特 権 (Privilege) 時 に Default memory mapをbackground Regionとしてアクセス 可 能 1 HFNMIENA 0: HardFault 時 やNMI 例 外 時 にMPUを 無 効 にする 1: HardFault 時 やNMI 例 外 時 でもMPUを 有 効 にする 0 ENABLE 0: MPUを 無 効 にする 1: MPUを 有 効 にする http://infocenter.arm.com/help/topic/com.arm.doc.dui0553a/cihjddef.html 2015 年 4 1 ARM Webサイトより 抜 粋 62

MPU: MPU Region Base Address Register MPU 領 域 の 開 始 アドレスとRegion 番 号 の 指 定 MPU_RBAR: MPU Region Base Address Register 0xE000-ED9C Type: RW Reset Value: Unknown 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ADDR VALID REGION Bit Name 説 明 31:5 ADDR Regionの 開 始 アドレス(base address) 4 VALID 0: MPU_RNR.REGIONで 指 定 したRegion 番 号 の 開 始 アドレスがADDRで 指 定 される 1: 本 レジスタのREGIONで 指 定 したRegion 番 号 の 開 始 アドレスがADDRで 指 定 される 3:0 REGION VALIDが1のとき MPU_RNR.REGIONを 上 書 き http://infocenter.arm.com/help/topic/com.arm.doc.dui0553a/cihigffb.html 2015 年 4 1 ARM Webサイトより 抜 粋 63

MPU: MPU Region Attribute and Size Register (1/3) MPU 領 域 の 詳 細 設 定 レジスタ MPU_RASR: MPU Region Attribute and Size Register 0xE000EDA0 Type: RW Reset Value: Unknown 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 XN AP TEX S C B SRD SIZE ENABLE Bit Name 説 明 28 XN Execution Never 0: 命 令 コード 実 可 能 1: 命 令 コード 実 不 可 26:24 AP Access and Privilege 21:16 TEX,S,C,B 15-8 SRD Sub-region Disable 1: Regionを8 分 割 した 該 当 Sub-Regionの 設 定 無 効 Bit15: もっとも いアドレス 領 域 Bit8: もっとも 低 いアドレス 領 域 5:1 SIZE 該 当 Regionのサイズ 指 定 2の(SIZE+1) 乗 最 の 値 は4: 32 Byte 0 ENABLE 0: 該 当 Regionは 無 効 1: MPU 有 効 時 該 当 Regionは 有 効 http://infocenter.arm.com/help/topic/com.arm.doc.dui0553a/cihegaib.html 2015 年 4 1 ARM Webサイトより 抜 粋 64

MPU: MPU Region Attribute and Size Register (2/3) 特 権 / 特 権 時 のアクセス 制 御 & 領 域 サイズ 指 定 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 XN AP TEX S C B SRD SIZE ENABLE AP 特 権 (Privileged) 特 権 (Unprivileged) 000 No Access No access 001 Read / Write No access 010 Read / Write Read-only 011 Read / Write Read/Write 101 Read-Only No access 110 Read-Only Read-only 111 Read-Only Read-only SIZE Region size 00100(4) 32 B 01001(9) 1KB 10011(19) 1MB 11101(29) 1GB 11111(31) 4GB http://infocenter.arm.com/help/topic/com.arm.doc.dui0553a/cihegaib.html 2015 年 4 1 ARM Webサイトより 抜 粋 65

MPU: MPU Region Attribute and Size Register (3/3) キャッシュ 共 有 アクセス 制 御 ビット 組 み 合 わせで 設 定 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 XN AP TEX S C B SRD SIZE ENABLE TEX C B Memory Type 説 明 共 有 000 0 0 ストロングオーダ 共 有 可 (Strongly-ordered) 000 0 1 デバイス(Device) 共 有 デバイス 共 有 可 000 1 0 ノーマル(Normal) ライトスルー(Write-Through) S bit 書 込 割 り 当 て(Write Allocate)なし 000 1 1 ノーマル(Normal) ライトバック(Write-Back) S bit 書 込 割 り 当 て(Write Allocate)なし 001 0 0 ノーマル(Normal) キャッシュなし S bit 001 1 1 ノーマル(Normal) ライトバック(Write-Back) S bit 書 込 読 込 割 り 当 て(Write Allocate)あ り 010 0 0 デバイス(Device) 共 有 デバイス 共 有 不 可 1BB A A ノーマル(Normal) キャッシュメモリ AA: 内 部 ポリシー(Inner Policy) BB: 外 部 ポリシー(Outer Policy) S bit 00 : キャッシュなし 01: ライトバック 割 り 当 てあり 10: ライトスルー 割 り 当 てなし 11: ライトバック 割 り 当 てなし http://infocenter.arm.com/help/topic/com.arm.doc.dui0553a/cihegaib.html 2015 年 4 1 ARM Webサイトより 抜 粋 66

Cache: Data cache invalidate by Set/Way データキャッシュのSet Wayを 指 定 して 無 効 化 DCISW: Data cache invalidate by Set/Way 0xE000-EF60 Type: WO Reset Value: Unknown 31 32-A 31-A B B-1 L L-1 4 3 2 1 0 Way SBZ Set SBZ Level 0 Bit Name 説 明 31-32-A Way 操 作 するWay 数 31-A: B SBZ 常 に0 B-1:L Set 操 作 するSet 数 L-1:4 SBZ 常 に0 3:1 Level 操 作 するCache level -1. Ex. 0 : L1 cache http://infocenter.arm.com/help/topic/com.arm.doc.ddi0489b/ddi0489b_cortex_m7_trm.pdf 2015 年 4 1 ARM Webサイトより 抜 粋 67

Cache: Instruction cache invalidate All to PoU Writeアクセスで 命 令 キャッシュを 無 効 化 ICIALLU: Instruction cache invalidate all to PoU (Point of unification) 0xE000-EF50 Type: WO Reset Value: Unknown 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 Ignored Bit Name 説 明 All IGNORED WriteアクセスでInstruction CacheをInvalidate 化 すべてのbitは 無 視. http://infocenter.arm.com/help/topic/com.arm.doc.ddi0489b/ddi0489b_cortex_m7_trm.pdf 2015 年 4 1 ARM Webサイトより 抜 粋 68

Cache: Configuration and Control Register ビットアサインで 命 令 キャッシュとデータキャッシュを 有 効 化 CCR: Configuration and Control Register 0xE000-ED14 Type: RW Reset Value: 0x00040200 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 BP IC DC STKALIGN BFHFNMIGN DIV_0_TRP UNALIGN_TRP USERSETMPEND NONBASETHRDENA Bit Name 説 明 18 BP 分 岐 予 測 (Brance prediction) 有 効 M7では 常 に1 17 IC 0: Instruction Cache 無 効 1: Instruction Cache 有 効 16 DC 0: Data Cache 無 効 1: Data Cache 有 効 http://infocenter.arm.com/help/topic/com.arm.doc.ddi0489b/ddi0489b_cortex_m7_trm.pdf 2015 年 4 1 ARM Webサイトより 抜 粋 69

本 資 料 について

本 資 料 取 り 扱 い 上 の 注 意 本 資 料 は2015 年 4 1 時 点 の 情 報 を 基 に 作 成 されており 将 来 変 更 の 可 能 性 のあるものです あわせてご 紹 介 する 設 定 や 機 能 に 関 連 して 動 作 保 証 をお 約 束 す るものではございませんので ご 了 承 ください 本 資 料 で 提 供 している 情 報 は ご 利 されている のご 判 断 責 任 においてご 使 ください 提 供 した 情 報 に 関 連 して ご 利 される が 不 利 益 等 を 被 る 事 態 が じ たとしても 弊 社 及 び 執 筆 者 は 切 の 責 任 を 負 いかねますので ご 了 承 ください 本 資 料 の 内 容 に 関 する 弊 社 または 各 社 へのお 問 合 せはご 遠 慮 ください 本 資 料 及 びデータの 再 配 布 無 断 転 転 載 等 はご 遠 慮 ください 71

商 標 について IAR Systems, IAR Embedded Workbench, C-SPY, C-RUN, C-STAT, visualstate, Focus on Your Code, IAR KickStart Kit, I-jet, I-scope, IAR, お よび IAR Systems のロゴタイプはIAR Systems ABが 所 有 する 商 標 または 登 録 商 標 です ARMおよびCortexは ARM Limited(またはその 会 社 )のEUまたはその 他 の 国 における 登 録 商 標 です CoreSightは ARM Limited(またはその 会 社 )の EUまたはその 他 の 国 における 商 標 です All rights reserved. STM32は STマイクロエレクトロニクスの 登 録 商 標 です その 他 本 資 料 中 の 製 品 名 やサービス 名 は 全 てそれぞれの 所 有 者 に 属 する 商 標 ま たは 登 録 商 標 です 72