Vengineerの戯言

人生は短いけど、長いです。人生を楽しみましょう!

A SystemC TLM 2.0 ARM Linux Boot Loader


Virtual Platformを使って、SoCのソフトウェアの先行開発(早期開発)を行う。

今の流れは、これが基本。

それで、Virtual Platformで何を動かすのか?
ブートコードやOS、できれば、OSより上の層のソフトウェア。
確かに、で、一番最初にやるのが、ブートコードを呼び出すこと。
これって、どうやるのか、ASIC設計をしている人って、ほとんどしりません。

どうやればいいのでしょうか?

今回紹介するケイデンスのブログ、A SystemC TLM 2.0 ARM Linux Boot Loaderでは、
ARMシステムにおけるLinuxブートローダーについて、詳しく?説明しています。
(詳しくといっても、ブートの仕組みを知らないとすれなりにはわかりませんが)

この記事で1箇所、
Linuxブートローダーのアドレスを設定している下記のコード(引用)は、ちょっと間違っていると思います。
    // Load bootcode
    bootloader[1] |= info->board_id & 0xff;
    bootloader[2] |= (info->board_id >> 8) & 0xff;
    bootloader[5] = info->loader_start + KERNEL_ARGS_ADDR;
    bootloader[6] = entry;
何が間違っているかと言えば、bootloaderのインデックスが1から始まっています。
    // Load bootcode
    bootloader[0] |= info->board_id & 0xff;
    bootloader[1] |= (info->board_id >> 8) & 0xff;
    bootloader[4] = info->loader_start + KERNEL_ARGS_ADDR;
    bootloader[5] = entry;
だと、思います。

検証、Verification、SystemC、TLM 2.0、Virtual Platform