2020/07/25 初記述
ここまでのあらすじ
OSD3358-512M-BCB を買った。
https://www.mouser.jp/ProductDetail/415-OSD3358-512M-BCB
基板作った。
https://twitter.com/nonNoise/status/1278465569499447298?s=20
実装した。
https://www.youtube.com/watch?v=acrJceh3bkU
電源投入
上手くいった。
シリアル(UART0)よりCCCCCCC・・・・・が大量に流れれ来る。
シリアルの設定は
*Baud rate: 115,200
*Data bits: 8
*Parity: None
*Stop bits: 1
*Flow control: None
U-bootのバイナリデータの準備
どうもコンパイルが必要らしい。
Ubuntuの環境でコンパイルする。
新規にVertualBoxでUbuntu環境を整えた。
ARMのGCC環境セットアップ
tar xf gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf.tar.xz
export CC=[PWD]/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-
※[PWD]は各自PWDコマンドでディレクトリアドレスを代入してください。
U-Bootのコンパイル
git clone https://github.com/u-boot/u-boot
cd u-boot/
git checkout v2018.01 -b tmp
※参考通りにしたので、なんか古い。どこかで最新にする予定。
U-Bootにパッチを充てる
wget -c https://rcn-ee.com/repos/git/u-boot-patches/v2018.01/0001-am335x_evm-uEnv.txt-bootz-n-fixes.patch
wget -c https://rcn-ee.com/repos/git/u-boot-patches/v2018.01/0002-U-Boot-BeagleBone-Cape-Manager.patch
wget -c https://raw.githubusercontent.com/RobertCNelson/Bootloader-Builder/master/patches/v2018.03-rc1/0002-NFM-Production-eeprom-assume-device-is-BeagleBone-Bl.patch
patch -p1 < 0001-am335x_evm-uEnv.txt-bootz-n-fixes.patch
patch -p1 < 0002-U-Boot-BeagleBone-Cape-Manager.patch
patch -p1 < 0002-NFM-Production-eeprom-assume-device-is-BeagleBone-Bl.patch
※こんな仕組みがあるんだ。BeagleBoneの影が見える。カスタムしたい。
U-BootをMakeする。
export CC=[PWD]/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-
※[PWD]は各自PWDコマンドでディレクトリアドレスを代入してください。
make ARCH=arm CROSS_COMPILE=${CC} distclean
make ARCH=arm CROSS_COMPILE=${CC} am335x_evm_defconfig
make ARCH=arm CROSS_COMPILE=${CC}
必要なファイルをWindowsに引き渡す
ARMのU-Bootには2種類のファイルが必要
u-boot-spl.bin(初段起動用)とu-boot.img(次段起動用)
u-boot-spl.binは、u-boot/splの中になります。
TeraTermで書き込む
海外の人もTeraTerm使うんだ。
ターミナルにCCCCC.....とCが流れている状態を確認。
ファイル -> 転送 -> XMODEM -> 送信
u-boot-spl.bin を選択
左下の1K にチェックを入れる
転送される。
ファイル -> 転送 -> YMODEM -> 送信
u-boot.img を選択
転送される。
最初、0%の状態で少し間があるけど、根気強く(1分程度)バーが動くまで我慢しましょう。
それで?
ただ、この状態だと、二つのU-BootプログラムはRAMに展開されたままなので、resetや電源再投入をすると、再びCCCC....が表示される。
U-Bootのデバックを行うなら、この状態が最も最適。
U-Bootのログを見ると、EEPROMがエラーだったり、USBやEthernetがなかったりと文句を言ってくる。
このままではいけないので、U-Bootのカスタムが必要そう。
とりあえず、U-Bootを書き込む手順だけまちょめた。
先は長そうだ。(楽しみだが)ふふふ。
参考文献
https://octavosystems.com/forums/topic/osd3358-boot/
本当のメモ(1)
エラーが出たから対処済みだが、念のため残しておく。
bad value (‘armv5’) for ‘-march=’ switch
この記事が正しいか、再度コンパイルしようと思ったら、make ARCH=arm CROSS_COMPILE=${CC}で発生したエラー
どうもUbuntuを再起動させた事で、export がクリアされたらしい。(へぇ~)
なので、コンパイル前に
export CC=[PWD]/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-
を再度書くように記事を変更した。
本当のメモ(2)
U-Bootをシリアルで書き込むときに、X-MODEMとY-MODEMが出てきて、なんじゃそりゃって顔したので、調べてみた。
https://ja.wikipedia.org/wiki/XMODEM
https://ja.wikipedia.org/wiki/YMODEM
知らなかった(にわかですみません)
TeraTermは便利で使いやすいが、自動化したいときに困るのでPythonでライブラリ探してみた。
https://pythonhosted.org/xmodem/
https://github.com/alexwoo1900/ymodem
なるほど?