XinuOS

実行環境

  • wsl 18.04

準備物

  • BBB
  • USBシリアルケーブル
  • microSDカード

ブートローダービルドの手順と成果物

手順

  • gcc-arm-linux-gnueabiのインストール
gcc-arm-linux-gnueabi
  • ブートローダーリポジトリのダウンロード
git clone git://git.denx.de/u-boot.git
  • ビルド(フォルダ内で実行する)
make -j8 ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- distclean
make -j8 ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- am335x_evm_config
make -j8 ARCH=arm CROSS_COMPILE=arm-linux-gnueabi-

成果物

  • MLO
  • u-boot.img

本体ビルドの手順と成果物

手順

  • armのクロスコンパイラ環境をインストールする
  • 本体プロジェクトをダウンロードする
  • ソースの修正:ethernet関係のソースがうまく動作しないので、その処理をコメントアウトする
    • device/eth/ethinit.cのethinit()関数の中身をすべて削除
    • system/initialize.c
      • nulluser()関数内のnet_init();をコメントアウト
      • startup()関数内のdhcp関係のソースをすべてコメントアウト
  • Makefileを修正する
    • コンパイラの修正(同梱の実行できないものではなく、インストールしたものを指定するように変更する)
  #########################################################################
  #									#
  #									#
  #  Makefile for Beaglebone Black version of the Xinu operating system	#
  #									#
  #  includes: .deps and .defs						#
  #									#
  #									#
  #########################################################################
  
- COMPILER_ROOT	=	../cross_compiler/bin/arm-none-eabi-
+ COMPILER_ROOT	=	arm-none-eabi-
  PNAME		=	bbb
  PLAT		=	Platform_$(PNAME)
  TOPDIR		=	..
  • 共有ライブラリのパスの修正(同梱のものではなく、インストールしたものを指定するように変更する) ※実施しなくても問題はない
  xinu:   Makefile rebuild $(BLDDIRS) $(DEFSFILE) $(DEPSFILE) $(CONFH) $(CONFC) $(LD_LIST)
          @echo;echo 'Loading object files to produce xinu'
-         @$(LD) $(LDFLAGS) $(LD_LIST) -o $(XINU) -L../cross_compiler/lib/gcc/arm-none-eabi/4.8.1/ -lgcc
+         @$(LD) $(LDFLAGS) $(LD_LIST) -o $(XINU) -L/usr/lib/gcc/arm-none-eabi/X.X.X/ -lgcc
          @$(OBJCOPY) -O binary $(XINU) $(XINUBIN)
          @./uboot-tool/mkimage -A arm -O linux -T kernel -C none -a 0x81000000 -e 0x81000000 -d $(XINUBIN) $(XINUBOOT)
  • mkimageの再配置
    • uboot-tool配下のmkimageもarch違いにより実行できないため、削除し、前段階で環境作成時に生成されているmkimageをコピーして配置する
  • ビルド
    • compileフォルダでmakeを実行し、『xinu』が生成されれば成功

成果物

  • xinu(.binではないほう)

microSDCardの作成手順

  • FAT32でフォーマットする(SD Fommatterでもよい)
  • 以下の物を入れる
    • MLO(ブートローダービルドで作成済)
    • u-boot.img(ブートローダービルドで作成済)
    • xinu.boot(本体ビルドで作成したxinuをxinu.bootにリネーム)
    • uEnv.txt(テキストで以下のように作成)
bootfile=xinu.boot 
boot_mmc=fatload mmc 0 0x80200000 ${bootfile}; bootm 
uenvcmd=run boot_mmc

結果

以下のようにコンソールに大きくXinuの文字が出れば成功。シェルが起動しているので、echoコマンドなどが実行できる

参考資料