---
title: 知ってるようで知らない組み込みソフトウェアの世界
tags: 
author: [yuji CHIYA](https://www.docswell.com/user/banauo)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/LJ1MGGK5EG.jpg?width=480
description: 知ってるようで知らない組み込みソフトウェアの世界 by yuji CHIYA
published: June 29, 19
canonical: https://www.docswell.com/s/banauo/5EN7PG-kumikomi-world
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/LJ1MGGK5EG.jpg)

知ってるようで知らない
組み込みソフトウェアの世界
高知組み込み会 #1
2019/6/28
千谷
1


# Page. 2

![Page Image](https://bcdn.docswell.com/page/GJW3KKDWJ2.jpg)

自己紹介
●
●
●
●
●
●
千谷裕志 (Chiya Yuji)
愛媛生まれ
高知工科大学卒
組み込みツールベンダーで受託開発
家庭用医療機器メーカー
防災用計測機器メーカー←いまここ
よさこいはライフワーク
2


# Page. 3

![Page Image](https://bcdn.docswell.com/page/4EZVZZG2J3.jpg)

アジェンダ
●
ゴール: 組込みソフトウェア開発がどのように行われるかを知る
●
●
●
●
組込みソフトウェアとは
ハードウェアの話
ソフトウェアの話
開発するときの話
3


# Page. 4

![Page Image](https://bcdn.docswell.com/page/Y765ZZQ6EV.jpg)

●
●
●
●
組込みソフトウェアとは
ハードウェアの話
ソフトウェアの話
開発するときの話
4


# Page. 5

![Page Image](https://bcdn.docswell.com/page/G75YWWR574.jpg)

組み込みソフトウェア
“組み込み機器に搭載さ
れて動作するソフトウェア
のことで、組み込み機器
とは特定用途向けに特
化、限定した機能を果た
すことを目的とした機器の
こと”
https://www.fsi-embedded.jp/e
mbedded_news/what_is_embe
dded/282/
https://www.ipa.go.jp/files/000065944.pdf
5


# Page. 6

![Page Image](https://bcdn.docswell.com/page/9J2GQQDGJR.jpg)

何がそんなに特別なのか
●
ソフトウェア要因
○
○
●
不具合発生時に想定される被害が大きい（車や飛行機や医療機器）
出荷後のアップデートが大変（現地に行く OR 回収）
制限、制約が多い
○
○
○
○
○
様々な使用環境を考慮する必要がある（温度、湿度、振動、経年劣化）
内外から発生するノイズを考慮する必要がある（雷や IH、電子レンジ）
動作周波数、メモリ（量産コストが気になる）
時間（期待する時間以内に処理が完了しないと重大な問題がありうる）
電力（電池で1年くらい動いてくれないと大変めんどくさい）
6


# Page. 7

![Page Image](https://bcdn.docswell.com/page/DEYVWW2GEM.jpg)

●
●
●
●
組込みソフトウェアとは
ハードウェアの話
ソフトウェアの話
開発するときの話
7


# Page. 8

![Page Image](https://bcdn.docswell.com/page/VJNM998878.jpg)

主要なメーカー
●
●
●
●
●
●
●
●
●
ARM
ST micro
NXP
TI
microchip
infeneon
Renesas
TOSHIBA
LAPIS
http://blog.knak.jp/2018/09/iot.html
https://pc.watch.impress.co.jp/docs/
column/semicon/316228.html
8


# Page. 9

![Page Image](https://bcdn.docswell.com/page/YE9N22KXE3.jpg)

ペリフェラル
●
●
●
●
●
●
●
●
●
●
PLL
GPIO
タイマー, カウンタ
割り込み
ウォッチドッグ
AD, DA
UART, I2C, SPI, USB, Ethernet
Video/Audio
MMU, MPU
DMA, DTC
http://akizukidenshi.com/download/ds/microchip/
atmega328.pdf
9


# Page. 10

![Page Image](https://bcdn.docswell.com/page/GE8K55R97D.jpg)

レジスタ
●
General Purpose Register
○
○
○
●
Status Register
○
○
●
実行する機械語のアドレス
Stack Pointer
○
●
機械語の実行結果を保持する領域
桁あふれ、比較が一致、結果がマイナス、結果がゼロ
Program Counter
○
●
機械語はこの領域を使って計算する
どのレジスタを使うかはコンパイラ次第
関数の戻り値はだいたい R0
関数呼び出し時に汎用レジスタや戻り先を保持する領域
Special Function Register
○
ペリフェラルを制御するためのレジスタ
http://akizukidenshi.com/download/ds/microchip/atmega328.pdf
10


# Page. 11

![Page Image](https://bcdn.docswell.com/page/LELZYYKMJR.jpg)

メモリマップドI/O
●
●
●
●
ペリフェラルを制御するレジ
スタもメモリ上に配置する
ついでに言えばRAMと
ROMもどこかのアドレスに
配置している
MPUが無いマイコンだと
うっかり書き換えたりして暴
走する
PCが変な値になっても暴走
する
https://www.aps-web.jp/academy/cm/19/
11


# Page. 12

![Page Image](https://bcdn.docswell.com/page/4JMVNN26JW.jpg)

e.g. UARTのレジスタ
●
●
●
●
それぞれのペリフェラルごとに、機
能を実現するためのレジスタが用
意されている
設定用
送受信用
ステータス取得用
http://www.picfun.com/f1/f04.html
12


# Page. 13

![Page Image](https://bcdn.docswell.com/page/PJR2DDMNE9.jpg)

リセット
●
●
●
●
●
POR（Power On Reset）
外部リセット
（リセットピンに信号入力）
ウォッチドッグタイマ
ソフトウェアリセット
低消費電力管理リセット
https://ednjapan.com/edn/articles/1906/28/news009.html13


# Page. 14

![Page Image](https://bcdn.docswell.com/page/PEXD11V87X.jpg)

ベクタテーブル
●
●
●
●
●
外部入力やタイマーなどの割り込み
が成立すると特定アドレスの命令が
実行される
SFRで割り込み有効にするかどうか
を決めることができる
通常はここでJMPやCALLする
スタックオーバーフローしたときは不
正命令例外がよくでる
mail()の前はリセット割り込み
http://akizukidenshi.com/download/ds/microchip/atme
ga328.pdf
14


# Page. 15

![Page Image](https://bcdn.docswell.com/page/3EKX22QL7D.jpg)

アセンブラ
●
●
●
コアが異なると
機械語が異なる
ARMは全部一
緒なのでコンパ
イラ等は使い回
せるがペリフェラ
ルは異なる
コンパイラのバ
グはここで発生
https://www.researchgate.net/figure/Intel-vs-ARM-assembly-from-a-defcon-tal
15
k_fig1_320952677


# Page. 16

![Page Image](https://bcdn.docswell.com/page/L73544P6E5.jpg)

電源
●
●
マイコンでよく使うのは3.3Vと5V
基本的に3.3Vの端子に5Vを入れると壊れる
○
○
○
●
AC100VからDCに変換する手段
○
○
○
●
例外的に高い電圧を入れても大丈夫なトレラントの端子もある
マイコンの絶対最大定格をよく見よう 超えると壊れる
レベル変換ICを使ったり抵抗で分圧したりする
三端子レギュレータ
DCDCコンバーター
どちらも出力電流をよく見よう 超えると過熱して壊れる
突入電流
○
○
電源ONしたときに電流がたくさん流れる機器がある
一時的に電圧が低下する場合がある
16


# Page. 17

![Page Image](https://bcdn.docswell.com/page/87DDQQLM7G.jpg)

回路
●
●
マイコン、IC、周辺部品等をどう繋ぐか示す図
を回路図という
ハードウェア屋さんは各データシートのリファ
レンス回路を見ながら回路図を書く
○
○
●
その後パターン設計
基板ができたら部品を手実装（量産時は外注）
ファーム屋さんは基板と回路図を渡される
○
○
○
○
○
まずは電圧（ちゃんと出てるか安定してるか）
リセット信号が解除されてるか
デバッガの信号確認
各ペリフェラル（特に UART）信号確認
センサー、ICとの接続確認
https://macrofab.com/blog/key-parts-of-anarduino-how-to-integrate-the-arduino-platf
17
orm-into-your-product/


# Page. 18

![Page Image](https://bcdn.docswell.com/page/VJPXLL2Q78.jpg)

通信
●
UART
○
●
I2C
○
●
3bitのアドレスで区別 遅い ~1Mbps
データ量が大きい時によく使う バス接続可
SS信号で区別 早い ~4Mbps
USB
○
●
データ量の小さい時によく使う バス接続可
SPI
○
●
機器間の通信やデバッグによく使う RS-232Cとは電圧が異なるので MAX3232を使って変換する
場合が多い クロック精度によっては同期ずれる 1対1 遅い ~115.2kbpsあたり
プロトコルスタックが大変なのでミドルウェアを買う
Ethernet
○
○
プロトコルスタックが大変なのでミドルウェアを買う
消費電流多いのであまり使いたくない
18


# Page. 19

![Page Image](https://bcdn.docswell.com/page/2EVLQQDPJQ.jpg)

センサー
●
●
あらゆるセンサーの計測値は電圧に変換される
温度センサ
○
●
気圧センサ
○
●
同じ
電流センサ
○
●
例えば 温度低い =電圧低い 温度高い =電圧高い
測定用抵抗両端の電圧を測る（電流 =電圧/抵抗)
電圧を計測するのはADC
○
○
○
まずはペリフェラルを検討する
仕様を満たせないなら外付け ADCをI2Cなどで使う
電圧から物理量への変換までしてほしいときはセンサモジュールを使う
19


# Page. 20

![Page Image](https://bcdn.docswell.com/page/57GXWWYQEL.jpg)

●
●
●
●
組込みソフトウェアとは
ハードウェアの話
ソフトウェアの話
開発するときの話
20


# Page. 21

![Page Image](https://bcdn.docswell.com/page/4EQ833MWJP.jpg)

開発環境
●
●
●
マイコン毎にコンパイラ、IDEが異なる
デバッグ、ダウンロードにも専用機材が必要
ARMは沢山選べてありがたい
https://www.uctec.com/2013/11/527/
https://www.renesas.com/jp/ja/products/software-tools/tool
21
s/ide/e2studio.html


# Page. 22

![Page Image](https://bcdn.docswell.com/page/KJ4211V1E1.jpg)

リアルタイムOS(RTOS)
●
●
●
●
リアルタイム≠即時
最低応答時間が保証されている
タスクという単位でプログラムを実行する
タスク間通信はOSの提供する関数で行う
○
○
○
○
○
●
●
μITORNの場合
イベントフラグ (set_flg, wai_flg)
メッセージボックス (snd_mbx, rcv_mbx)
セマフォ(sig_sem, wai_sem)
等
http://www.mispo.co.jp/products/NORTi/Pro/
μITORN, T-Kernel, ThreadX, FreeRTOS, VxWorks
機能とコストによってはOSを使用しない場合もある
22


# Page. 23

![Page Image](https://bcdn.docswell.com/page/LE1MGG357G.jpg)

ミドルウェア
●
OSには最低限の機能しかない
○
○
○
○
○
●
●
ファイルシステム
TCP/IP
USB Host, Device
GUI
等
目的に合わせてミドルウェアを用意する
数十万～数百万
https://www.cente.jp/product/cente-middle/filesystem/filesystem/
23


# Page. 24

![Page Image](https://bcdn.docswell.com/page/GEW3KKPWE2.jpg)

最適化とプリプロセッサ
●
最適化するときはvolatile修飾子必須
○
●
コンパイラの独自拡張が多い
○
●
P4.3 = 1 のように使える
#pragma inline
○
●
以下のようなものが多い
SFRにアクセスするためのマクロ
○
●
最適化かけるとデバッガで追いにくいので開発時は最適化 OFF
対象関数をcallではなく呼び出し元に展開する
#pragma interrupt
○
対象関数を割り込みベクタに指定する
24


# Page. 25

![Page Image](https://bcdn.docswell.com/page/47ZVZZK2E3.jpg)

ポーリングと割り込み
●
●
●
ポーリングはwhile(1)でずっと待つ
割り込みは割り込みベクターでイベント発生時だけ動く
プログラム実行時間は消費電流に直結するのでポーリングは避けたい
https://www.renesas.com/jp/ja/support/techn
ical-resources/engineer-school/mcu-progra
mming-peripherals-04-interrupts.html
25


# Page. 26

![Page Image](https://bcdn.docswell.com/page/YJ65ZZ267V.jpg)

●
●
●
●
組込みソフトウェアとは
ハードウェアの話
ソフトウェアの話
開発するときの話
26


# Page. 27

![Page Image](https://bcdn.docswell.com/page/GJ5YWW25J4.jpg)

機能とコスト
●
動作周波数, RAM, ROM
○
●
高価マイコンのほうが高機能
○
●
いずれも大きいマイコンは高価
破壊したときのショックも大きい
(余談)FPGAのお値段は桁違い
RL78
(R5F100L
EAFB)
周波数
RAM
ROM
単価
調達
32MHz
4KB
64KB
￥290
96KB
512KB
￥950
価格
MOQ
長期供給
急な調達
支払条件
サポート
RX621
100MH
(R5F56218 z
BDFP)
http://akizukidenshi.com/catalog/g/gI-06146/
http://akizukidenshi.com/catalog/g/gI-04713/
https://www.marutsu.co.jp/GoodsListNavi.jsp?category=190004&amp;ids=0&amp;page=1&amp;perpage=527
0&amp;shopNo=3&amp;sort_order=expensive_order


# Page. 28

![Page Image](https://bcdn.docswell.com/page/LE3544K5J5.jpg)

制限、制約
●
消費電力
屋外では商用電源を確保するのが難しい
ソーラーパネルはコストもかかるし日照が必要
電池に頼らざるを得ない場合も多いけど交換が手間
○
○
○
●
時間
○
○
●
耐水性
○
●
期待した時間内に動作しないと人命に影響を与える機器もある
ATM、電力、乗り物、医療機器
水没、結露しても動作しなければならない機器もある
マイコンメーカーはCのコンパイラしか提供しない
○
C++がある場合もあるが
28


# Page. 29

![Page Image](https://bcdn.docswell.com/page/8EDDQQ3YEG.jpg)

信頼性
●
温度
エンジンECUは100℃を超える
ソーラーパネルのために日向に設置すると温度が上がる
温度が上がると膨張し、下がると縮小するので繰り返すと破損する
寒冷地では氷点下になる
コンデンサや電池は極端な温度に弱い
センサーも温度によって特性が変わる
○
○
○
○
○
○
●
振動
○
●
車や工作機械は振動しっぱなし
EMC
○
○
ノイズを受けても誤動作しないこと
機器からノイズも出さないこと
http://www.jasa.or.jp/TOP/offer/automotive/
29


# Page. 30

![Page Image](https://bcdn.docswell.com/page/V7PXLL42E8.jpg)

開発工程
ハードに問題が見つかっても
基板の修正には 1~2ヶ月
ハード
基板ができるまでは評価
ボードで開発を進める
ファーム
ハードの不具合や遅れはファー
ムで解決を求められる
第3者認証
そこそこ動く状態にして引き渡し、
規格によるが試験期間は数ヶ月
30


# Page. 31

![Page Image](https://bcdn.docswell.com/page/2JVLQQXX7Q.jpg)

デバッグ
●
不具合箇所を特定するのが手間
○
○
○
●
用途に応じた測定器を使う
○
○
○
○
●
IC、マイコン
回路
電気信号
マルチメータ
オシロスコープ
ロジック・アナライザ
プロトコル・アナライザ
電気試験
○
○
○
○
雷サージ
静電気
恒温槽
EMC
31


# Page. 32

![Page Image](https://bcdn.docswell.com/page/5EGXWWVRJL.jpg)

まとめ
●
●
●
●
組み込みは物理的な制約に振り回される
プアな環境で頑張るしか無い場合もある
謎の不具合に悩まされる事もある
自分の関わった製品が世界中で役に立つと嬉しい
32


# Page. 33

![Page Image](https://bcdn.docswell.com/page/4JQ8336Y7P.jpg)

身近なマイコン
●
●
ドリームキャストはSH4
パチンコのマイコンな国家公安委員会の規則がある
https://elaws.e-gov.go.jp/search/elawsSearch/elaws_search/lsg0500/detail?lawId=3
60M50400000004_20190401_430M60400000010&amp;openerCode=1
33


