JP2020177544A - Linux搭載支援プログラム - Google Patents
Linux搭載支援プログラム Download PDFInfo
- Publication number
- JP2020177544A JP2020177544A JP2019080559A JP2019080559A JP2020177544A JP 2020177544 A JP2020177544 A JP 2020177544A JP 2019080559 A JP2019080559 A JP 2019080559A JP 2019080559 A JP2019080559 A JP 2019080559A JP 2020177544 A JP2020177544 A JP 2020177544A
- Authority
- JP
- Japan
- Prior art keywords
- linux
- fpga
- support program
- boot
- soc
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Abstract
【課題】Linux搭載支援プログラムにおいて、FPGA内蔵型SoCへのLinuxの搭載を容易に行うことができるようにする。【解決手段】支援プログラムにおける自動生成プログラム81が、ユーザが入力したPS(Processing System)部の情報と、PL(Programmable Logic)部の情報とを含む設定情報に基づいて、CPUコア上でLinuxを起動するのに必要なブートファイル(BOOT.bin90、system.dtb92、uImage94、及びuEnv.txt95)の自動生成を行うようにした。これにより、ユーザが、FPGA内蔵型SoCへのLinuxの搭載を容易に行うことができる。【選択図】図8
Description
本発明は、CPUコアとFPGAとを備えたFPGA内蔵型SoCへのLinux搭載を支援するためのプログラム(Linux搭載支援プログラム)に関する。
近年、ターゲット機器のシステム(ターゲット基板)として、Linux搭載型の汎用性及びリアルタイム性の高いシステムが求められている。そこで、ZYNQ(登録商標)等の、FPGAと複数のCPUとを内蔵したSoC(System−on−a−Chip)が登場した。この種のSoCは、FPGAを内蔵しており、リアルタイム性の高いシステムに適している。また、この種のSoCのCPUには、ARMコアが用いられており、汎用性の高いシステムに適している。
ところが、上記のようなFPGA内蔵型のSoCに、LINUXを搭載して、FPGAにターゲットとなるハード回路(ディジタル回路)を構築するとなると、ターゲット・システムの開発時に、必要とするソフトウエアとハードウエア(VHDL)環境の相方を用意し、必用とするLinuxソフトウエアと、FPGAに必要な回路及び(ZYNQ等のSoCのメーカが提供する)SoCコア(例えばDDRのセットアップや諸々のドライバーソフト等)が使用できる様に、ブートファイルを生成する必要がある。このブートファイルの生成は、PS(Processing System)部(ARMコア側の部分)の情報と、PL(Programmable Logic)部(FPGA側の部分)の両方の情報を融合する面倒な作業であるため、ブートファイルの生成を簡単に行うことはできない。
本発明は、上記課題を解決するものであり、ユーザが、FPGA内蔵型SoCへのLinuxの搭載を容易に行うことが可能なLinux搭載支援プログラムを提供することを目的とする。
上記課題を解決するために、本発明のLinux搭載支援プログラムは、CPUコアとFPGAとを備えたFPGA内蔵型SoCへのLinux搭載を支援するためのプログラムであって、コンピュータを、前記CPUコアに対応したPS(Processing System)部の情報と、前記FPGAに対応したPL(Programmable Logic)部の情報とを含む設定情報を入力するための設定情報入力手段と、
前記設定情報入力手段で入力された設定情報に基づいて、前記CPUコア上でLinuxを起動するのに必要なブートファイルの自動生成を行う自動生成手段として機能させるための、Linux搭載支援プログラムである。
前記設定情報入力手段で入力された設定情報に基づいて、前記CPUコア上でLinuxを起動するのに必要なブートファイルの自動生成を行う自動生成手段として機能させるための、Linux搭載支援プログラムである。
本発明のLinux搭載支援プログラムによれば、入力したPS(Processing System)部の情報と、PL(Programmable Logic)部の情報とを含む設定情報に基づいて、CPUコア上でLinuxを起動するのに必要なブートファイルの自動生成を行うことができる。これにより、ユーザが、FPGA内蔵型SoCへのLinuxの搭載を容易に行うことができる。
以下、本発明を具体化した実施形態によるLinux搭載支援プログラムについて、図面を参照して説明する。図1は、本発明の一実施形態のLinux搭載支援プログラム1(以下、「支援プログラム」と略す)を用いた、FPGA内蔵型SoC用のLinux搭載型ターゲット・システムの開発環境(支援プログラム1の推奨操作環境)について、図1を参照して説明する。この支援プログラム1は、CPUコアとFPGAとを備えたFPGA内蔵型SoCへのLinux搭載を支援するためのプログラムである。この支援プログラム1の特徴は、ユーザが簡単なスプレッドシート上の項目に入力操作するだけで、直ぐに、Vivadoプロジェクト(FPGA用の回路図)の生成、インプリメンテーション(回路図の配置・配線)、Linuxカーネルのビルド等ができることにある。要するに、支援プログラム1によれば、ユーザが、FPGA内蔵型SoCにおけるCPUコアに対応したPS(Processing System)部の情報と、FPGAに対応したPL(Programmable Logic)部の情報とを含む設定情報を、スプレッドシート上の項目に入力することにより、入力された設定情報に基づいて、上記CPUコア上でLinuxを起動するのに必要なブートファイルの自動生成を行う。
図1は、上記のLinux搭載型ターゲット・システムの開発環境を備えたパーソナル・コンピュータであるPC2の概略の構成を示す。PC2は、自装置全体の制御や演算処理を行うCPU3と、各種のプログラムやデータを格納したハードディスク4と、各種のプログラムの実行時に、実行するプログラムやデータをロードするメモリ5と、LAN等のネットワークへの接続用の通信インタフェース6と、上記のスプレッドシート等を表示するディスプレイ7と、キーボードやマウス等の入力装置8(設定情報入力手段)と、SDメモリカード10との入出力インタフェースであるSDメモリカードIF9とを備えている。
上記のハードディスク4には、上記の支援プログラム1に加えて、Windows10等のWindows OS11と、Ubuntu Linux(以下、「Ubuntu」と略す)12と、VertualBox13と、GNUプログラム開発環境14と、Vivado15と、SDK16とが含まれる。上記のUbuntu12は、Debian GNU/LinuxをベースとしたOSであり、仮想マシンOSとして用いられる。VertualBox13は、オラクル社が開発したx86仮想化ソフトウェア・パッケージの一つであり、既存のオペレーティング・システム(ホストOS)上にアプリケーションの一つとしてインストールされ、この中で追加のオペレーティング・システム(ゲストOS)を実行することができる。例えば、Windows OSが「ホストOS」として動作しているマシン(コンピュータ)上で、Linuxを、ゲストOSとすることができる。また、上記のGNUプログラム開発環境14には、GCC(GNU Compiler Collection)が含まれている。
上記のVivado15は、FPGA設計用の論理合成・配置配線ツールである。上記のSDK16は、ZYNQ(登録商標)等のFPGA内蔵型SoCに対応したソフトウェアを開発するための開発キットである。また、上記の支援プログラム1は、PC3(のCPU3)を、請求項における自動生成手段として機能させる。
次に、図2を参照して、本実施形態の支援プログラム1により自動生成されたブートファイル27を用いて起動されるFPGA内蔵型SoC21を有するターゲット機器20の構成例について、説明する。ターゲット機器20は、FPGA内蔵型SoC21と、DRAMの一種であるDDRIII(Double−Data−Rate3 Synchronous Dynamic Random Access Memory)25(以下、「DDR25」と略す)とを有している。また、ターゲット機器20の使用時には、ブートファイル27を格納したSDメモリカード26がターゲット機器20に接続される。
上記のFPGA内蔵型SoC21は、2つのCPUコア22a,22bと、FPGA23と、PHY24とを備えている。PHY24は、DDR25やSDメモリカード26からの電気信号をディジタルデータに変換すると共に、FPGA内蔵型SoC21からのディジタルデータを電気信号に変換して、DDR25やSDメモリカード26に出力する。
また、上記のブートファイル27には、CPUコア22a,22bで動作するLINUXソフトウェアと、FPGA23に必要な回路データ、及びZYNQ等のFPGA内蔵型SoCのメーカが提供するSoCコア(例えば、DDR25のセットアップ用のソフトウェアや種々のドライバーソフト等)が格納されている。
次に、本実施形態の支援プログラム1において、上記のCPUコア22a,22bで動作するLINUXソフトウェアと、FPGA23に必要なVHDLロジックのスケルトンの自動生成に用いられるスプレッドシート30について、図3を参照して説明する。スプレッドシート30は、後述する全般タブ31、PS側タブ41、PL側タブ51、LINUX関係タブ61、及びその他タブ71から構成される。
まず、図3を参照して、上記の全般タブ31について説明する。この全般タブ31は、Vivadoプロジェクトの基本的な設定を行うための画面であり、プロジェクト名32、ブロックデザイン名33、(各種ファイルの保存先の)作業フォルダ34、Vivadoインストール先フォルダ35の設定欄から構成されている。
図4に示される上記のPS側タブ41は、CPUコア(例えば、上記のCPUコア22a,22b)に対応したPS部の各種設定を行うための画面であり、PS内部PLL設定エリア42、PL部PLL設定エリア43、及びPS部SoC設定エリア44を備えている。PS内部PLL42設定エリアは、PS部内部のPLLクロックの設定欄から構成されている。また、PL部PLL設定エリア43は、PL部のPLLの設定欄であるが、PS部のPLLクロックが4本で足りない場合は、こちらのPLLクロックが用いられる。また、PS部SoC設定エリア44は、PS部のSoCの設定欄であり、ユーザがチェック状態にしたSoCが使用される。
図5に示される上記のPL側タブ51は、FPGA23の回路図上に配置するIPコア(スケルトン)の設定を行うための画面であり、IPコア選択エリア52、選択IPコア基本設定エリア53、入力ピン設定エリア54、出力ピン設定エリア55、及び割込ピン設定エリア56を備えている。IPコア選択エリア52は、生成するIPコア(スケルトン)の個数設定欄と、編集するIPコアの選択欄から構成されている。選択IPコア基本設定エリア53は、選択中のIPコアの基本設定(IPコア名、バージョン等の設定)を行うための設定欄から構成されている。入力ピン設定エリア54は、選択中のIPコアの入力ピンの設定欄から構成されている。出力ピン設定エリア55は、選択中のIPコアの出力ピンの設定欄から構成されている。割込ピン設定エリア56は、選択中のIPコアの割込ピンの設定欄から構成されている。
図6に示される上記のLINUX関係タブ61は、ソフトウェアソースのダウンロード元のURL等の設定を行うための画面であり、ダウンロード元設定エリア62と、デバイスツリー・ジェネレータ格納先設定エリア63とを備えている。ダウンロード元設定エリア62は、U−BOOT(ブート・ローダ、カーネルを起動するためのソフトウェア)とLinuxカーネルについて、これらのソースのダウンロード元のURLと、ダウンロードするブランチ(ソースのバージョン)の設定欄から構成されている。デバイスツリー・ジェネレータ格納先設定エリア63は、Vivadoのデバイスツリー・ジェネレータ(DeviceTreeGenerator)をインストールしたフォルダの設定欄を有している。
図7に示される上記のその他タブ71は、BlockRAM設定エリア72と、HDMI設定エリア73とを備えている。BlockRAM設定エリア72は、BlockRAMを回路図上に作成するか否かのチェック欄や、BlockRAMのアドレス及びレンジ(サイズ)の設定欄から構成されている。HDMI設定エリア73は、HDMI表示用の回路を回路図上に作成するか否かのチェック欄や、VDMA(Video DMA)のレジスタアドレスの設定欄や、VDMAの割込み出力を受け取る番号の設定欄や、HDMI用の回路で使用するインタフェースとIPコアとのインストール先を指定するための設定欄(テキスト入力欄)とを備えている。
次に、図8を参照して、支援プログラム1が、ユーザにより上記のスプレッドシート30から設定入力された設定情報を用いて行うブートファイルの生成処理について、説明する。図8における自動化部分80は、このブートファイルの生成処理のうち、図1中のPC2のCPU3が、上記の支援プログラム1に含まれる自動生成プログラム81を用いて自動生成する部分を示す。また、図8におけるビルド部分97は、上記の仮想マシンOSであるUbuntu12上の作業として行われるU−Bootソース87とLinuxカーネルソース88とのビルドの作業の部分である。
ユーザがディスプレイ7に表示されたスプレッドシート30に対して、キーボード、マウス等の入力装置8を用いて設定入力して、Vivadoファイル生成処理の実行を指示すると、PC2のCPU3は、自動生成プログラム81を用いて、Vivado15でバッチ処理可能なビルド用のtclスクリプトであるbuild.tcl82aを実行する。これにより、PC2のCPU3が、Vivado15を呼び出して、スプレッドシート30で設定された情報に基づいて、Vivadoプロジェクトをコンパイルして、BitStream83とHDF84とを出力する。ここで、BitStream83は、PL(Programmable Logic)の配置・配線を行うコンフィグレーションデータであり、HDF84は、Vivadoプロジェクトをコンパイル後にハードウェア情報をエクスポートすることにより得られた、拡張子がhdfのハードウェア情報のバイナリーファイルである。
上記のHDF84の生成に成功すると、PC2のCPU3は、自動生成プログラム81に従って、上記のHDF84をSDK16で読み込んで、このSDK16に基づいて、LinuxのファーストブートローダであるFSBL85(fsbl.elf)を生成する。
次に、上記の自動生成プログラム81が行う処理のうち、U−Boot、Linuxカーネル、及びデバイスツリーの生成方法について、説明する。ユーザが、支援プログラム1が提供する画面上の「シェルスクリプト生成」ボタンを、PC2の入力装置8で選択すると、PC2のCPU3は、自動生成プログラム81を用いて、U−Boot、Linuxカーネル、及びデバイスツリーの生成処理用のシェルスクリプト(build.sh82b)を生成する。そして、ユーザが、仮想マシンOSであるUbuntu12上で、上記のシェルスクリプト(build.sh82b)に含まれるU−BootとLinuxカーネルの生成(ビルド)用のシェルスクリプトを実行すると、PC2のCPU3は、U−Bootソース87のダウンロードとU−Boot89のビルド、及びLinuxカーネルソース88のダウンロードとLinuxカーネルのビルドを実行する。なお、上記のU−Boot89とLinuxカーネル(uImage94)のビルドは、ARM用GCC(GNU Compiler Collection:GNUプロジェクトが開発・配布している様々なPG言語のコンパイラ群)に含まれるコンパイラを用いて、行われる。なお、図8に示すように、Linuxカーネルのビルドには、コンフィグレーションファイル(.config)93が用いられる。
また、ユーザが、支援プログラム1が提供する画面上の「BOOT.bin生成」ボタンを、PC2の入力装置8で選択すると、PC2のCPU3は、SDK16により、上記のU−Boot89を、上述したBitStream83及びFSBL85と結合して、BOOT.bin90を生成する。
また、ユーザが、SDK16でデバイスツリーソース86を生成した後、このデバイスツリーソース86に含まれるPHYのI/F記述を追加し、上記のUbuntu(Ubuntu Linux)12上で、上記のシェルスクリプト(build.sh82b)に含まれるデバイスツリーの生成処理用のシェルスクリプトを実行する。これにより、デバイスツリーソース86のUbuntu(Ubuntu Linux)12上におけるコンパイルが実行されて、system.dtb92(デバイスツリー)が生成される。
さらに、ユーザが、支援プログラム1が提供する画面上の「uEnv.txt生成」ボタンを、PC2の入力装置8で選択すると、PC2のCPU3は、自動生成プログラム81を用いて、ブート時の環境変数を書いたテキストファイルuEnv.txt95を生成する。
上記のようにして生成されたBOOT.bin90、system.dtb92(デバイスツリー)、uImage94(Linuxカーネル)、及びuEnv.txt95は、図2に示すSDメモリカード26のブートファイルの一部として、SDメモリカード26の第1パーテション96に格納される。
また、Linuxのルートファイルについては、ユーザが、使用したいものを、そのルートファイルを配布しているサイトのURLからダウンロードして、図9に示すように、ダウンロードした後の圧縮されたルートファイル(RootFS100)を解凍して、解凍後のルートファイル(RootFS101)を、SDメモリカード26のブートファイルの一部として、SDメモリカード26の第2パーテション102に格納する。
上記のSDメモリカード26の第1パーテション96に格納されたBOOT.bin90、system.dtb92、uImage94、及びuEnv.txt95と、第2パーテション102に格納された解凍後のLinuxのルートファイル(RootFS101)により、ターゲット機器20のFPGA内蔵型SoC21において、Linuxを起動することができる。
上記のように、本実施形態の支援プログラム1によれば、ユーザがスプレッドシート30上で入力したPS(Processing System)部の情報と、PL(Programmable Logic)部の情報とを含む設定情報に基づいて、CPUコア上でLinuxを起動するのに必要なブートファイルの自動生成を行うことができる。これにより、ユーザが、FPGA内蔵型SoC21へのLinuxの搭載を容易に行うことができる。
1 支援プログラム(Linux搭載支援プログラム)
2 PC(コンピュータ)
3 CPU(自動生成手段)
8 入力装置(設定情報入力手段)
21 FPGA内蔵型SoC
22a,22b CPUコア
23 FPGA
2 PC(コンピュータ)
3 CPU(自動生成手段)
8 入力装置(設定情報入力手段)
21 FPGA内蔵型SoC
22a,22b CPUコア
23 FPGA
Claims (1)
- CPUコアとFPGAとを備えたFPGA内蔵型SoCへのLinux搭載を支援するためのプログラムであって、
コンピュータを、
前記CPUコアに対応したPS(Processing System)部の情報と、前記FPGAに対応したPL(Programmable Logic)部の情報とを含む設定情報を入力するための設定情報入力手段と、
前記設定情報入力手段で入力された設定情報に基づいて、前記CPUコア上でLinuxを起動するのに必要なブートファイルの自動生成を行う自動生成手段として機能させるための、Linux搭載支援プログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019080559A JP2020177544A (ja) | 2019-04-19 | 2019-04-19 | Linux搭載支援プログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019080559A JP2020177544A (ja) | 2019-04-19 | 2019-04-19 | Linux搭載支援プログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2020177544A true JP2020177544A (ja) | 2020-10-29 |
Family
ID=72936772
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019080559A Pending JP2020177544A (ja) | 2019-04-19 | 2019-04-19 | Linux搭載支援プログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2020177544A (ja) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112631678A (zh) * | 2020-12-25 | 2021-04-09 | 理工雷科电子(西安)有限公司 | 一种基于zynq的动态加载方法 |
CN113098844A (zh) * | 2021-03-08 | 2021-07-09 | 黑龙江大学 | 硬件协议的智能网络检测入侵系统 |
CN113791810A (zh) * | 2021-11-15 | 2021-12-14 | 北京国科天迅科技有限公司 | 基于zynq平台的远程升级方法、装置及系统 |
CN115098173A (zh) * | 2022-06-17 | 2022-09-23 | 电子科技大学 | 一种基于双核amp架构的敌我识别信号高速识别的方法 |
CN115098173B (zh) * | 2022-06-17 | 2024-04-26 | 电子科技大学 | 一种基于双核amp架构的敌我识别信号高速识别的方法 |
-
2019
- 2019-04-19 JP JP2019080559A patent/JP2020177544A/ja active Pending
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112631678A (zh) * | 2020-12-25 | 2021-04-09 | 理工雷科电子(西安)有限公司 | 一种基于zynq的动态加载方法 |
CN113098844A (zh) * | 2021-03-08 | 2021-07-09 | 黑龙江大学 | 硬件协议的智能网络检测入侵系统 |
CN113098844B (zh) * | 2021-03-08 | 2023-03-21 | 黑龙江大学 | 硬件协议的智能网络检测入侵系统 |
CN113791810A (zh) * | 2021-11-15 | 2021-12-14 | 北京国科天迅科技有限公司 | 基于zynq平台的远程升级方法、装置及系统 |
CN115098173A (zh) * | 2022-06-17 | 2022-09-23 | 电子科技大学 | 一种基于双核amp架构的敌我识别信号高速识别的方法 |
CN115098173B (zh) * | 2022-06-17 | 2024-04-26 | 电子科技大学 | 一种基于双核amp架构的敌我识别信号高速识别的方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2020177544A (ja) | Linux搭載支援プログラム | |
US20080178143A1 (en) | System, Method and Computer Program Product for Developing, Configuring, Installing and Testing Software | |
US11250193B1 (en) | Productivity platform using system-on-chip with programmable circuitry | |
Sadek et al. | Supporting utilities for heterogeneous embedded image processing platforms (STHEM): An overview | |
WO2007056343A2 (en) | Networked linux machine and windows software development system | |
Pemberton et al. | Firemarshal: Making hw/sw co-design reproducible and reliable | |
US10474610B1 (en) | Hardware trace and introspection for productivity platform using a system-on-chip | |
Yanpeng et al. | Linux transplantation based on the processor S3C2440 | |
Nusairat et al. | Raspberry Pi | |
Kyöstilä | Reducing the boot time of embedded Linux systems | |
Al-Bokhaiti et al. | Customization and Optimization of Android Operating System for Custom Board with the Implementation of an Administrative Tool | |
Wang et al. | The Design and Building of openKylin on RISC-V Architecture | |
Kumar et al. | Porting and BSP Customization of Linux on ARM Platform | |
Watson et al. | Bluespec Extensible RISC Implementation: BERI Software reference | |
Zhang | The Porting and Optimization of RISC-V UEFI Boot | |
Banik et al. | Payload | |
Prasad et al. | Development of System Level Computational Platform for IP-BTS Telecom Application | |
Zhou et al. | Port embedded Linux to XUP Virtex-II Pro development board | |
Ayer | Using the Memory Endpoint Test Driver (MET) with the Programmed Input/Output Example Design for PCI Express Endpoint Cores | |
Arslan et al. | Implementation of a Sodimm Interfaced Embedded and Modular Controller Board | |
Hellström | SnapGear Linux for LEON | |
Ekholm Lindahl | Controlling the Bootstrap Process: Firmware Alternatives for an x86 Embedded Platform | |
Feske | Sculpt for The Curious (TC) | |
Barbareschi et al. | ZedAndroid: Google Android porting on ZedBoard | |
Yan et al. | New EPICS/RTEMS IOC Based on Altera SOC at Jefferson Lab |