単体テストツールCppUTestのCppUMock

 前回、組み込みソフトウエアのテストにCppUTestを使っているという話を書いた。これで重宝しているのが、CppUMockだ。というか、これを使えるので、CppUTestを使うことにした、といってよい。
 CppUTest+CppUMockで組み込みテストhttp://park11.wakwak.com/~nkon/homepc/cpputest/に情報がある。ただ、注意事項は、この例は、テスト本体のモックをC言語で記述する場合の例で、インクルードするファイル名の後ろに_cをつける必要がある。
 私は、テストするソースはC言語だが、テスト本体は、C++でも問題ないと思っているので、C++で記述している。PIC32のSPIドライバーのモックの例を下記に示す。

include “TestHarness.h”
#include “CppUTestExt/MockSupport.h”

#include “system_config.h”
#include “system_definitions.h”

DRV_SPI_BUFFER_EVENT DRV_SPI_BufferStatus ( DRV_SPI_BUFFER_HANDLE bufferHandle ) {
    return (DRV_SPI_BUFFER_EVENT)mock()
            .actualCall(“DRV_SPI_BufferStatus”)
            .withLongIntParameter(“bufferHandle”,(long int)bufferHandle)
            .returnIntValue();
}

 上の2行が、CppUMockを使うためのインクルード。次の2行がPIC32のドライバー特有の部分(たとえばSYS_MODULE_INDEX型の定義など)のインクルードである。
 あとは、MockSupport.hを眺めていると何となく使い方がわかると思う。
 時間があれば、もう少し丁寧な紹介をしてみたい。

単体テストツールCppUTest

 組み込みソフトウエアのテストにCppUTestを使っている。そもそもは、テスト駆動開発による組み込みプログラミング ―C言語とオブジェクト指向で学ぶアジャイルな設計という本に触発されてのことである。
 例にあるような、LEDドライバーなどのテストを、この手法でやるのは大変だし、結局、実機でしかテストできないことも多く、実行には移せなかった。
 しかし、世の中が変わり、ハードウエアに近いレベルのドライバーは、マイコンメーカー提供のものを使うようになって、少しテスト戦略を変えた。ドライバーそのものは、やはり、従来通り実機でテストする。しかし、このドライバーを使ったソフトウエアは、CppUTestを使うことにした。
 メーカー提供のドライバー関数をモックでシミュレートし、PC環境でテストするのである。
 最近の組み込みのコンパイラは、大抵、GCCなので、PC環境で同じソースをコンパイルしても、コンパイルエラーが出ることはほとんどない。そんなに凝ったソフトウエアも作らないので、機能試験なら十分にPC環境でテストできる。

マイクロチップ社のコード・カバレッジ・ツール:有償らしい

 ソフトウエアのホワイトボックステストをする際に必要なツールがコード・カバレッジ・ツールだ。C0とかC1とか、テストのカバレッジの定量基準もある。でも、実務上重要なのは、C0とかC1とかの数値を100%にすることではない。とても、ありえないようなテストパターンを追加しないと100%にならないことが多いからだ。そんなことに時間を費やすなら、非機能要件のテストに時間を費やす方が、品質に貢献すると思う。
 実際には、実行されたコードを見て、エッ?ここがテストされてないの?と開発者が気づくことで、大きなバグを免れるというパターンが一番有効なのではないか?と思っている。
 でも、組み込みでは難しい。どの経路を通ったかというログを、実メモリーに残し、それをツールが吸い上げ、表示するという複雑な処理が必要だからだ。マイクロチップ社が、MPLAB Code Coverageというツールを発表した。是非使いたいと思っていたら、有償オプションだった。しかも、無料で一定期間お試しという評価版もない。直販ショップの価格で、9万円弱なので、ホビー用途には使えない。小さな企業だと、何も評価せずに、とりあえず買っておこうというレベルの金額でもない。せめて、評価版を用意してほしい。

Intelの垂直統合:最先端技術の全面戦争は大変だなあ

 前に、半導体プロセス面では、IntelがTSMCの後れを取っているという話を書いた。もう一つ、大変だなあと思った記事がある。新FPGAに見えるIntelの焦燥だ。CPU-アクセラレータ間バス技術で、NVIDIAに後れを取っているというのである。
 もちろん、半導体プロセスにせよ、このバス技術にせよ、後れを取っているといっても、トップ集団を維持しているのは確かだし、CPUメーカーとしては、特定の技術が突出しても、売れるCPUは作れないので、Intelの技術が劣っているという話ではない。
 こうした技術開発は、本当に多額の開発費がかかる、こうした開発を、多方面で展開しているIntelという会社のすごみを感じたのである。足りない部分は、積極的にM&Aしてでも手に入れる。結局、どこも追い越せないはずである。

半導体のプロセス技術:IntelよりもTSMCがかなりリードしているみたい・・・

 半導体において、微細プロセス技術は、最もコアな技術だ。半導体の機能・性能だけでなく、コストにも影響する、開発技術でもあり量産技術でもあるという技術だからだ。
 TSMCがEUV適用7nmプロセスを商用化という記事を読むと、相変わらずTSMCが業界のトップを独走しているようだ。それに続くのはIntelなのだろうけど、さすがの巨人のIntelでも、なかなか追いつけないようだ。

Interface 12月号の特集は「注目オープンソースRISC-Vマイコン」:本誌独自の切り口

 Interface 2019年 12 月号の特集は「注目オープンソースRISC-Vマイコン」。32ビットマイコンのデファクトがArmになってしまった現時点で、その対抗馬として唯一の可能性がありそうなマイコンである。
 少し前までは、FPGAに実装して動かすということしかできなかった。ところが、本誌によると、STM32F103とピン互換のRISC-Vチップが出現し、Sipeed社がそれを使った500円のボードを発売した。それによって、状況はかなり変わってきたようだ。
 今までRISC-Vの特集といえば、FPGAにどうやって実装するかというのが中心であった。ところが、本特集では、こうした入手しやすいRISC-Vボードの紹介や、クラウド上でRISC-Vを実験してみる方法など、内容は盛りだくさんだ。もちろん、FPGAへの実装も紹介されていて、本誌お得意の、大図鑑ということで、いろんな実装を紹介している。さらには、実際にチップを作るには、どんな工程があって、どんなツールが使えるのか、という紹介まである。
 RISC-Vの世界が少し広がっていることを実感できる特集である。

とうとうルネサスもArm軍営に:RXコアも続けるらしいけど

 ルネサス、Armマイコン「RAファミリー」を発表という記事は、とうとう、か、と思ってしまった。ルネサスは、独自のコアRXコアを持っていて、積極的に展開している。少なくとも、主力製品は、RXコアだった。でも、この発表は、かなり本格的にArmコア製品を出荷するという。リストラの続くルネサスに、複数のコアを維持できる体力があるとは思えない。
 特に、大変なのは、ソフトウエア開発環境だろう。独自コアでは、自前で開発する必要がある。そういう意味では、Arm陣営に乗り換えた方がこのあたりの開発負担が軽減されるはずだ。今のユーザーを裏切るわけにはいかないから明言はしていないが、徐々にArmに移行していきそうな気がする。

GEの航空機エンジンのモノからサービスへが実はビジネスになってないとは

 IoTの成功例として必ず引用されてきたのが、GEの航空機エンジンの保守ビジネスである。エンジンに積んだセンサーからデータを集めて分析し、継続的にメンテナンス・サービスを提供するということで、IoTによって、モノ売りからサービスへ新しい価値を提供できるということと、データの価値を活用するということで、大きな賞賛をあびてきた。
 ところが、GEも見落としたIoT成功の条件によると、このサービスは、そもそも顧客に求められていなかったのだという。顧客である航空会社は「センサーからのデータを基にしたメンテナンスなら自分たちでやっている。データサイエンティストも社内にいて、データ分析ができる体制が整っていた」のだ。もちろん、こういう会社ばかりではなく、GEのサービスを必要とするような航空会社だってあったはずだ。しかし、人材の豊富な大手なら、データサイエンティストが社内にいたに違いない。なぜなら、もっと収益に直結する顧客予測に基づく航空運賃設定でデータ活用していただろうからだ。
 モノ売りの会社がサービスを提供することの難しさを実感する話である。

米ザイリンクス、7nmプロセスで製造:インテルの10nmプロセスよりも先を行っている

 旧アルテラ社が10nmプロセスのFPGAを出荷したというニュースを見て、インテル社に買収された効果だというような感想を以前書いた。でも、米ザイリンクス、7nmプロセスで製造する新世代FPGA「Versal」を出荷開始という記事によれば、ザイリンクス社は7nmプロセスらしい。こちらは、ファブレスで製造は台湾TSMC社だ。ファブレスの方が最新プロセスを使えるのかもしれない。コストもひょっとすると安いかも・・・。

激しいスマホの競争:サムソンは世界シェア1位からたった6年で圏外へ

 サムスン、スマホ復活遠く 中国で生産終了という記事は、スマホという業界の競争の激しさにびっくりさせられる。たった6年で、ほぼ市場か忘れ去られてしまうようなシェアに陥落してしまうとは。
 スマホの開発費は安くはない。日本企業では、とても回収できるような額ではないので、事実上撤退してしまっている。でも、サムソンまで、とは。そういう意味では、アップルはしぶとい。