FC2カウンター FPGAの部屋
FC2ブログ

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

DeepLearningのモデル軽量化 Distiller を試す4

DeepLearningのモデル軽量化 Distiller を試す3”の続き。

DeepLearningのモデル軽量化 Distiller を試す2”でGradual Pruning をやってみたがうまく行かなかった。
@_tkato_ さんから修正情報をいただいたので、もう一度やってみよう。ありがとうございました。

最初にもう一度simplenet_cifar の学習を行った。
python3 compress_classifier.py --arch simplenet_cifar ../../../data.cifar10 -p 30 -j=1 --lr=0.01
distiller_26_190222.png

logs/2019.02.22-115332 ディレクトリのbest.pth.tar checkpoint.pth.tar をsimplenet_cifar ディレクトリに移動した。
cd logs/2019.02.22-115332/
cp best.pth.tar ../../simplenet_cifar/best.pth.tar
cp checkpoint.pth.tar ../../simplenet_cifar/checkpoint.pth.tar
cd ../..


simplenet_cifar.schedule_agp.yaml を修正した。修正した simplenet_cifar.schedule_agp.yaml を示す。

version: 1
pruners:
  conv1_pruner:
    class: 'AutomatedGradualPruner'
    initial_sparsity : 0.15
    final_sparsity: 0.3
    weights: ['conv1.weight']

  conv2_pruner:
    class: 'AutomatedGradualPruner'
    initial_sparsity : 0.15
    final_sparsity: 0.5
    weights: ['conv2.weight']

  fc_pruner:
    class: 'AutomatedGradualPruner'
    initial_sparsity : 0.15
    final_sparsity: 0.80
    weights: ['fc1.weight', 'fc2.weight','fc3.weight']

lr_schedulers:
  pruning_lr:
    class: StepLR
    step_size: 30
    gamma: 0.10

policies:
  - pruner:
      instance_name : 'conv1_pruner'
    starting_epoch: 1
    ending_epoch: 100
    frequency: 2

  - pruner:
      instance_name : 'conv2_pruner'
    starting_epoch: 1
    ending_epoch: 100
    frequency: 2

  - pruner:
      instance_name : 'fc_pruner'
    starting_epoch: 1
    ending_epoch: 100
    frequency: 2

  - lr_scheduler:
      instance_name: pruning_lr
    starting_epoch: 1
    ending_epoch: 100
    frequency: 1


学習したbest.pth.tar に対して、Gradual Pruningを実行した。
time python3 compress_classifier.py --arch simplenet_cifar ../../../data.cifar10 -p 50 --lr=0.001 --epochs=200 --resume=simplenet_cifar/best.pth.tar --compress=simplenet_cifar.schedule_agp.yaml
distiller_27_190222.png

今度はうまく行ったようだ。
TensorBoard の結果を示す。
distiller_28_190223.png
distiller_29_190223.png
distiller_30_190223.png

--summaryオプションをやってみよう。最初に学習したネットワークの --summary=sparsity の結果を示す。
distiller_31_190223.png

Total sparsity: 0.00 だった。

次に、Gradual Pruning 後のネットワークの --summary=sparsity の結果を示す。
distiller_32_190223.png

Total sparsity: 78.47 だった。うまく行っている。
  1. 2019年02月23日 05:48 |
  2. DNN
  3. | トラックバック:0
  4. | コメント:0

Docker 上でDistiller のJupyter Notebook を立ち上げたらエラーになった

Docker 上でDistiller を試しているが、そこで、Jupyter Notebook のポートを開けてJupyter Notebook を起動したらエラーになった。

まずは、boot.sh に TCP ポートの 9999 番を開ける設定を追加した。

docker run -ti --rm --name distiller -p 6006:6006 -p 8888:8888 -v /home/masaaki/Docker/distiller/workspace/:/workspace/ pytorch0.4cuda9 /bin/bash



./boot.sh を起動して、
jupyter notebook &
でJupyter Notebook を起動した。
jupyter_note_docker_1_190222.png

OSError: [Errno 99] Cannot assign requested address

だった。
エラーを検索したところ、”Docker上のjupyter notebookが起動できなくなったら”がヒットした。この通りにトラブルシュートをやってみよう。

jupyter notebook --generate-config
を実行したところ

Writing default config to: /root/.jupyter/jupyter_notebook_config.py

だそうだ。

このファイルを編集する。
vim /root/.jupyter/jupyter_notebook_config.py

## The IP address the notebook server will listen on.
#c.NotebookApp.ip = 'localhost'

の下に、

c.NotebookApp.ip = '0.0.0.0'

を追加した。
jupyter_note_docker_2_190222.png

jupyter notebook &
で起動したら、

Running as root is not recommended. Use --allow-root to bypass.

と言われたので、
jupyter notebook --allow-root &
で起動した。
jupyter_note_docker_3_190222.png

Chome で localhost:8888 を見ると、Jupyter Notebook のログイン画面が表示されたので、起動画面にあるtoken(token=6920b1c5d584cb42ef2664202937fcaedfef76afb5e42be5 の token=を除いた部分)を入力したところ、Jupyter Notebook が使えるようになった。
jupyter_note_docker_4_190222.png

  1. 2019年02月22日 05:35 |
  2. Docker
  3. | トラックバック:0
  4. | コメント:0

DeepLearningのモデル軽量化 Distiller を試す3

DeepLearningのモデル軽量化 Distiller を試す2”の続き。

前回は、tkato さんの tkato's blog の”DistillerでDeepLearningのモデルを軽量化: Gradual Pruning編”を参考にsimplenet_cifar を学習し、Gradual Pruningのサンプルを動作させたが、YMAL ファイルに記述した Gradual Pruning は行われなかった。今回は、”DistillerでDeepLearningのモデルを軽量化: Gradual Pruning編”の残りをやってみよう。

--summaryオプションをやってみよう。
python3 compress_classifier.py --resume=simplenet_cifar/best.pth.tar -a=simplenet_cifar ../../../data.cifar10 --summary=sparsity
distiller_19_190221.png

Total sparsity: 0.00 だった。

python3 compress_classifier.py --resume=simplenet_cifar/best.pth.tar -a=simplenet_cifar ../../../data.cifar10 --summary=compute
distiller_20_190221.png

Total MACs: 651,720

python3 compress_classifier.py --resume=simplenet_cifar/checkpoint.pth.tar -a=simplenet_cifar ../../../data.cifar10 --summary=sparsity
distiller_21_190221.png

Total sparsity: 0.00 だったが、2 つ上の図と細部の値は異なる。

python3 compress_classifier.py --resume=simplenet_cifar/checkpoint.pth.tar -a=simplenet_cifar ../../../data.cifar10 --summary=compute
distiller_22_190221.png

Total MACs: 651,720 なので、2 つ上上と同じだ。
  1. 2019年02月22日 04:50 |
  2. DNN
  3. | トラックバック:0
  4. | コメント:0

DeepLearningのモデル軽量化 Distiller を試す2

DeepLearningのモデル軽量化 Distiller を試す1”の続き。

前回は、tkato さんの tkato's blog の”DistillerでDeepLearningのモデルを軽量化: Gradual Pruning編”を参考にして、DeepLearningのモデル軽量化 Distiller を試してみようと言うことで、git clone で Distiller をクローンした。今回は、simplenet_cifar を学習し、Gradual Pruningのサンプルを動作させてみよう。

実行環境を構築する。
cd distiller/
pip install -r requirements.txt

distiller_5_190219.png
distiller_6_190219.png

examples/classifier_compression ディレクトリに移動して、simplenet_cifar の学習を行う。
cd examples/classifier_compression/
python3 compress_classifier.py --arch simplenet_cifar ../../../data.cifar10 -p 30 -j=1 --lr=0.01

distiller_7_190219.png
distiller_8_190219.png

学習が正常に終了した。
なお、python3 compress_classifier.py -h つまりヘルプの表示結果を示す。

root@175abda804b7:/workspace/distiller/examples/classifier_compression# python compress_classifier.py -h
usage: compress_classifier.py [-h] [--arch ARCH] [-j N] [--epochs N] [-b N]
                              [--lr LR] [--momentum M] [--weight-decay W]
                              [--print-freq N] [--resume PATH] [-e]
                              [--pretrained]
                              [--activation-stats PHASE [PHASE ...]]
                              [--masks-sparsity] [--param-hist]
                              [--summary {sparsity,compute,model,modules,png,png_w_params,onnx}]
                              [--compress [COMPRESS]]
                              [--sense {element,filter,channel}]
                              [--sense-range SENSITIVITY_RANGE SENSITIVITY_RANGE SENSITIVITY_RANGE]
                              [--extras EXTRAS] [--deterministic]
                              [--gpus DEV_ID] [--cpu] [--name NAME]
                              [--out-dir OUTPUT_DIR]
                              [--validation-split VALIDATION_SPLIT]
                              [--effective-train-size EFFECTIVE_TRAIN_SIZE]
                              [--effective-valid-size EFFECTIVE_VALID_SIZE]
                              [--effective-test-size EFFECTIVE_TEST_SIZE]
                              [--confusion]
                              [--earlyexit_lossweights [EARLYEXIT_LOSSWEIGHTS [EARLYEXIT_LOSSWEIGHTS ...]]]
                              [--earlyexit_thresholds [EARLYEXIT_THRESHOLDS [EARLYEXIT_THRESHOLDS ...]]]
                              [--num-best-scores NUM_BEST_SCORES]
                              [--load-serialized] [--thinnify]
                              [--kd-teacher ARCH] [--kd-pretrained]
                              [--kd-resume PATH] [--kd-temperature TEMP]
                              [--kd-distill-wt WEIGHT]
                              [--kd-student-wt WEIGHT]
                              [--kd-teacher-wt WEIGHT]
                              [--kd-start-epoch EPOCH_NUM]
                              [--quantize-eval | --qe-calibration PORTION_OF_TEST_SET]
                              [--qe-mode QE_MODE] [--qe-bits-acts NUM_BITS]
                              [--qe-bits-wts NUM_BITS]
                              [--qe-bits-accum NUM_BITS] [--qe-clip-acts]
                              [--qe-no-clip-layers LAYER_NAME [LAYER_NAME ...]]
                              [--qe-per-channel] [--qe-stats-file PATH]
                              [--qe-config-file PATH] [--greedy]
                              [--greedy-ft-epochs GREEDY_FT_EPOCHS]
                              [--greedy-target-density GREEDY_TARGET_DENSITY]
                              [--greedy-pruning-step GREEDY_PRUNING_STEP]
                              [--greedy-finetuning-policy {constant,linear-grow}]
                              [--amc]
                              [--amc-protocol {mac-constrained,param-constrained,accuracy-guaranteed,mac-constrained-experimental}]
                              [--amc-ft-epochs AMC_FT_EPOCHS]
                              [--amc-save-chkpts]
                              [--amc-action-range AMC_ACTION_RANGE AMC_ACTION_RANGE]
                              [--amc-heatup-epochs AMC_HEATUP_EPOCHS]
                              [--amc-training-epochs AMC_TRAINING_EPOCHS]
                              [--amc-reward-frequency AMC_REWARD_FREQUENCY]
                              [--amc-target-density AMC_TARGET_DENSITY]
                              [--amc-agent-algo {ClippedPPO-continuous,ClippedPPO-discrete,DDPG,Random-policy}]
                              DIR

Distiller image classification model compression

positional arguments:
  DIR                   path to dataset

optional arguments:
  -h, --help            show this help message and exit
  --arch ARCH, -a ARCH  model architecture: alexnet | alexnet_bn | densenet121
                        | densenet161 | densenet169 | densenet201 |
                        inception_v3 | mobilenet | mobilenet_025 |
                        mobilenet_050 | mobilenet_075 | plain20_cifar |
                        preact_resnet101 | preact_resnet110_cifar |
                        preact_resnet110_cifar_conv_ds | preact_resnet152 |
                        preact_resnet18 | preact_resnet20_cifar |
                        preact_resnet20_cifar_conv_ds | preact_resnet32_cifar
                        | preact_resnet32_cifar_conv_ds | preact_resnet34 |
                        preact_resnet44_cifar | preact_resnet44_cifar_conv_ds
                        | preact_resnet50 | preact_resnet56_cifar |
                        preact_resnet56_cifar_conv_ds | resnet101 |
                        resnet101_earlyexit | resnet110_cifar_earlyexit |
                        resnet1202_cifar_earlyexit | resnet152 |
                        resnet152_earlyexit | resnet18 | resnet18_earlyexit |
                        resnet20_cifar | resnet20_cifar_earlyexit |
                        resnet32_cifar | resnet32_cifar_earlyexit | resnet34 |
                        resnet34_earlyexit | resnet44_cifar |
                        resnet44_cifar_earlyexit | resnet50 |
                        resnet50_earlyexit | resnet56_cifar |
                        resnet56_cifar_earlyexit | simplenet_cifar |
                        squeezenet1_0 | squeezenet1_1 | vgg11 | vgg11_bn |
                        vgg11_bn_cifar | vgg11_cifar | vgg13 | vgg13_bn |
                        vgg13_bn_cifar | vgg13_cifar | vgg16 | vgg16_bn |
                        vgg16_bn_cifar | vgg16_cifar | vgg19 | vgg19_bn |
                        vgg19_bn_cifar | vgg19_cifar (default: resnet18)
  -j N, --workers N     number of data loading workers (default: 4)
  --epochs N            number of total epochs to run
  -b N, --batch-size N  mini-batch size (default: 256)
  --lr LR, --learning-rate LR
                        initial learning rate
  --momentum M          momentum
  --weight-decay W, --wd W
                        weight decay (default: 1e-4)
  --print-freq N, -p N  print frequency (default: 10)
  --resume PATH         path to latest checkpoint (default: none)
  -e, --evaluate        evaluate model on validation set
  --pretrained          use pre-trained model
  --activation-stats PHASE [PHASE ...], --act-stats PHASE [PHASE ...]
                        collect activation statistics on phases: train, valid,
                        and/or test (WARNING: this slows down training)
  --masks-sparsity      print masks sparsity table at end of each epoch
  --param-hist          log the parameter tensors histograms to file (WARNING:
                        this can use significant disk space)
  --summary {sparsity,compute,model,modules,png,png_w_params,onnx}
                        print a summary of the model, and exit - options:
                        sparsity | compute | model | modules | png |
                        png_w_params | onnx
  --compress [COMPRESS]
                        configuration file for pruning the model (default is
                        to use hard-coded schedule)
  --sense {element,filter,channel}
                        test the sensitivity of layers to pruning
  --sense-range SENSITIVITY_RANGE SENSITIVITY_RANGE SENSITIVITY_RANGE
                        an optional parameter for sensitivity testing
                        providing the range of sparsities to test. This is
                        equivalent to creating sensitivities =
                        np.arange(start, stop, step)
  --extras EXTRAS       file with extra configuration information
  --deterministic, --det
                        Ensure deterministic execution for re-producible
                        results.
  --gpus DEV_ID         Comma-separated list of GPU device IDs to be used
                        (default is to use all available devices)
  --cpu                 Use CPU only. Flag not set => uses GPUs according to
                        the --gpus flag value.Flag set => overrides the --gpus
                        flag
  --name NAME, -n NAME  Experiment name
  --out-dir OUTPUT_DIR, -o OUTPUT_DIR
                        Path to dump logs and checkpoints
  --validation-split VALIDATION_SPLIT, --valid-size VALIDATION_SPLIT, --vs VALIDATION_SPLIT
                        Portion of training dataset to set aside for
                        validation
  --effective-train-size EFFECTIVE_TRAIN_SIZE, --etrs EFFECTIVE_TRAIN_SIZE
                        Portion of training dataset to be used in each epoch.
                        NOTE: If --validation-split is set, then the value of
                        this argument is applied AFTER the train-validation
                        split according to that argument
  --effective-valid-size EFFECTIVE_VALID_SIZE, --evs EFFECTIVE_VALID_SIZE
                        Portion of validation dataset to be used in each
                        epoch. NOTE: If --validation-split is set, then the
                        value of this argument is applied AFTER the train-
                        validation split according to that argument
  --effective-test-size EFFECTIVE_TEST_SIZE, --etes EFFECTIVE_TEST_SIZE
                        Portion of test dataset to be used in each epoch
  --confusion           Display the confusion matrix
  --earlyexit_lossweights [EARLYEXIT_LOSSWEIGHTS [EARLYEXIT_LOSSWEIGHTS ...]]
                        List of loss weights for early exits (e.g.
                        --earlyexit_lossweights 0.1 0.3)
  --earlyexit_thresholds [EARLYEXIT_THRESHOLDS [EARLYEXIT_THRESHOLDS ...]]
                        List of EarlyExit thresholds (e.g.
                        --earlyexit_thresholds 1.2 0.9)
  --num-best-scores NUM_BEST_SCORES
                        number of best scores to track and report (default: 1)
  --load-serialized     Load a model without DataParallel wrapping it
  --thinnify            physically remove zero-filters and create a smaller
                        model
  --greedy              greedy filter pruning
  --amc                 AutoML Compression

Knowledge Distillation Training Arguments:
  --kd-teacher ARCH     Model architecture for teacher model
  --kd-pretrained       Use pre-trained model for teacher
  --kd-resume PATH      Path to checkpoint from which to load teacher weights
  --kd-temperature TEMP, --kd-temp TEMP
                        Knowledge distillation softmax temperature
  --kd-distill-wt WEIGHT, --kd-dw WEIGHT
                        Weight for distillation loss (student vs. teacher soft
                        targets)
  --kd-student-wt WEIGHT, --kd-sw WEIGHT
                        Weight for student vs. labels loss
  --kd-teacher-wt WEIGHT, --kd-tw WEIGHT
                        Weight for teacher vs. labels loss
  --kd-start-epoch EPOCH_NUM
                        Epoch from which to enable distillation

Arguments controlling quantization at evaluation time ("post-training quantization"):
  --quantize-eval, --qe
                        Apply linear quantization to model before evaluation.
                        Applicable only if --evaluate is also set
  --qe-calibration PORTION_OF_TEST_SET
                        Run the model in evaluation mode on the specified
                        portion of the test dataset and collect statistics.
                        Ignores all other 'qe--*' arguments
  --qe-mode QE_MODE, --qem QE_MODE
                        Linear quantization mode. Choices: sym | asym_s |
                        asym_u
  --qe-bits-acts NUM_BITS, --qeba NUM_BITS
                        Number of bits for quantization of activations
  --qe-bits-wts NUM_BITS, --qebw NUM_BITS
                        Number of bits for quantization of weights
  --qe-bits-accum NUM_BITS
                        Number of bits for quantization of the accumulator
  --qe-clip-acts, --qeca
                        Enable clipping of activations using min/max values
                        averaging over batch
  --qe-no-clip-layers LAYER_NAME [LAYER_NAME ...], --qencl LAYER_NAME [LAYER_NAME ...]
                        List of layer names for which not to clip activations.
                        Applicable only if --qe-clip-acts is also set
  --qe-per-channel, --qepc
                        Enable per-channel quantization of weights (per output
                        channel)
  --qe-stats-file PATH  Path to YAML file with calibration stats. If not
                        given, dynamic quantization will be run (Note that not
                        all layer types are supported for dynamic
                        quantization)
  --qe-config-file PATH
                        Path to YAML file containing configuration for
                        PostTrainLinearQuantizer (if present, all other --qe*
                        arguments are ignored)

Greedy Pruning:
  --greedy-ft-epochs GREEDY_FT_EPOCHS
                        number of epochs to fine-tune each discovered network
  --greedy-target-density GREEDY_TARGET_DENSITY
                        target density of the network we are seeking
  --greedy-pruning-step GREEDY_PRUNING_STEP
                        size of each pruning step (as a fraction in [0..1])
  --greedy-finetuning-policy {constant,linear-grow}
                        policy used for determining how long to fine-tune

AutoML Compression Arguments:
  --amc-protocol {mac-constrained,param-constrained,accuracy-guaranteed,mac-constrained-experimental}
                        Compression-policy search protocol
  --amc-ft-epochs AMC_FT_EPOCHS
                        The number of epochs to fine-tune each discovered
                        network
  --amc-save-chkpts     Save checkpoints of all discovered networks
  --amc-action-range AMC_ACTION_RANGE AMC_ACTION_RANGE
                        Density action range (a_min, a_max)
  --amc-heatup-epochs AMC_HEATUP_EPOCHS
                        The number of epochs for heatup/exploration
  --amc-training-epochs AMC_TRAINING_EPOCHS
                        The number of epochs for training/exploitation
  --amc-reward-frequency AMC_REWARD_FREQUENCY
                        Reward computation frequency (measured in agent steps)
  --amc-target-density AMC_TARGET_DENSITY
                        Target density of the network we are seeking
  --amc-agent-algo {ClippedPPO-continuous,ClippedPPO-discrete,DDPG,Random-policy}
                        The agent algorithm to use
root@175abda804b7:/workspace/distiller/examples/classifier_compression# 


examples/classifier_compression ディレクトリで、simplenet_cifar ディレクトリを作成する。
logs/2019.02.19-092528 ディレクトリのbest.pth.tar checkpoint.pth.tar をsimplenet_cifar ディレクトリに移動する。
mkdir simplenet_cifar
cd logs/2019.02.19-092528/
mv best.pth.tar checkpoint.pth.tar ../../simplenet_cifar/
cd ../..
ls simplenet_cifar

distiller_9_190220.png

TensorBoardを起動して学習のログを表示する。
tensorboard --logdir='./logs' &

ホストのChrome で http://localhost:6006 を表示するとTensorBoard が表示された。
distiller_10_190220.png
distiller_11_190220.png
distiller_12_190220.png

Gradual Pruningのサンプルを動かすために、simplenet_cifar.schedule_agp.yaml ファイルを作成する。
ファイルの中身は”DistillerでDeepLearningのモデルを軽量化: Gradual Pruning編”からコピーさせていただいた。
vim simplenet_cifar.schedule_agp.yaml
distiller_14_190220.png

学習したbest.pth.tar に対して、Gradual Pruningを実行する。
time python3 compress_classifier.py --arch simplenet_cifar ../../../data.cifar10 -p 50 --lr=0.001 --epochs=200 --resume=simplenet_cifar/best.pth.tar --compress=simplenet_cifar.schedule_agp.yaml
distiller_15_190220.png

TensorBoard の結果を示す。
distiller_16_190220.png
distiller_17_190220.png
distiller_18_190220.png

層のsparsity に変化が無い。なぜだろうか?
Gradual Pruning がうまく行ってない?
  1. 2019年02月21日 04:52 |
  2. DNN
  3. | トラックバック:0
  4. | コメント:0

DeepLearningのモデル軽量化 Distiller を試す1

tkato さんの tkato's blog の”DistillerでDeepLearningのモデルを軽量化: Gradual Pruning編”を参考にして、DeepLearningのモデル軽量化 Distiller を試してみようと思う。

まずは、Docker で環境を構築する。
dockerhub のpytorch/pytorch の 0.4_cuda9_cudnn7 を使用する。

書いたDockerfile を示す。

FROM pytorch/pytorch:0.4_cuda9_cudnn7

RUN apt-get update && apt-get install -y vim


build.sh を示す。

docker build -t pytorch0.4cuda9 .


boot.sh を示す。

docker run -ti --rm --name distiller -p 6006:6006 -v /home/masaaki/Docker/distiller/workspace/:/workspace/ pytorch0.4cuda9 /bin/bash


Docker ディレクトリの下に distiller ディレクトリを作成し ./build.sh を起動した。
distiller_1_190219.png
distiller_2_190219.png

.boot.sh を実行して、Docker を起動した。
DistillerでDeepLearningのモデルを軽量化: Gradual Pruning編”を参考にして、Distiller を git clone する。
git clone https://github.com/NervanaSystems/distiller.git
distiller_4_190219.png
  1. 2019年02月20日 05:35 |
  2. DNN
  3. | トラックバック:0
  4. | コメント:0

Docker 上のUbuntu 16.04 のPetaLinux 2018.2 でビルドしてみた3

Docker 上のUbuntu 16.04 のPetaLinux 2018.2 でビルドしてみた2”の続き。

前回は、uImage と BOOT.BIN を生成した。petalinux-boot には失敗してしまったが、Ultra96 をブートするに必要なファイルは揃った。そういう訳で、今回はMirco SD カードにファイルを書いてUltra96 でブートしてみよう。

最初に、必要なファイルはどれか?というと、”PetaLinux Tools Documentation Reference Guide UG1144 (v2018.2) June 6, 2018”の 38 ページの”Boot a PetaLinux Image on Hardware with SD Card”の”Steps to Boot a PetaLinux Image on Hardware with SD Card”によると

image.ub
BOOT.BIN

だということだ。

早速、8 GB のMicro SD カードにこの2つをコピーした。
PetaLinux_27_190218.png

gtk_term を立ち上げて、Serial Port のPort を /dev/ttyUSB1 に、Baud Rate を 115200 bps に設定した。
Ultra96 にMicrro SD カードを入れて電源ON 。
でも gtk_term 上に何も表示されない。。。

これは、UART0 に表示されてしまっているようだ。
stdin/stdou を psu_uart_0 から psu_uart_1 に変更する必要がある。

PetaLinux プロジェクトの初期化をやり直そう。
petalinux-config --get-hw-description=/home/masaaki/PetaLProj/cam_test_ov5642_182/cam_test_182.sdk/
menu-config が立ち上がったら、Subsystem AUTO Hardware Settings -> Serial Settings を選択した。
Primary stdin/stdout を psu_uart_1 に変更した。
PetaLinux_23_190218.png

先頭の画面に戻って Save を行ってから Exit した。
PetaLinux_24_190218.png

petalinux-config が終了した。
PetaLinux_25_190218.png

その後は手順に従って、BOOT.BIN をビルドする。
LANG=en_US.UTF-8 petalinux-build
LANG=en_US.UTF-8 petalinux-package --image -c kernel --format uImage
LANG=en_US.UTF-8 petalinux-package --boot --fsbl /home/masaaki/PetaLProj/cam_test_ov5642_182/components/plnx_workspace/fsbl/fsbl/Release/fsbl.elf --fpga /home/masaaki/PetaLProj/cam_test_ov5642_182/components/plnx_workspace/fsbl/fsbl_hwproj/cam_test_wrapper.bit --pmufw /home/masaaki/PetaLProj/cam_test_ov5642_182/images/linux/pmufw.elf --u-boot


BOOT.BIN と image.ub が生成された。
もう一度、Micro SD カードに書いて、Ultra96 に入れて電源ON 。
今度は、gtk_term にブートメッセージが表示された。
PetaLinux_26_190218.png

root の root でログインもできた。
PetaLinux_28_190219.png

ブートメッセージを示す。

sdhci@ff160000: 0 (SD)Card did not respond to voltage select!
mmc_init: -95, time 27

*** Warning - bad CRC, using default environment

In:    serial@ff010000
Out:   serial@ff010000
Err:   serial@ff010000
Board: Xilinx ZynqMP
Bootmode: SD_MODE
U-BOOT for cam_test_ov5642_182

Hit any key to stop autoboot:  0 
Device: sdhci@ff160000
Manufacturer ID: 3
OEM: 5344
Name: SL08G 
Tran Speed: 50000000
Rd Block Len: 512
SD version 3.0
High Capacity: Yes
Capacity: 7.4 GiB
Bus Width: 4-bit
Erase Group Size: 512 Bytes
reading image.ub
13407472 bytes read in 1046 ms (12.2 MiB/s)
## Loading kernel from FIT Image at 10000000 ...
   Using 'conf@system-top.dtb' configuration
   Trying 'kernel@1' kernel subimage
     Description:  Linux kernel
     Type:         Kernel Image
     Compression:  gzip compressed
     Data Start:   0x10000104
     Data Size:    6960376 Bytes = 6.6 MiB
     Architecture: AArch64
     OS:           Linux
     Load Address: 0x00080000
     Entry Point:  0x00080000
     Hash algo:    sha1
     Hash value:   f7969295bb0009929ae004732e24833a06e81c68
   Verifying Hash Integrity ... sha1+ OK
## Loading ramdisk from FIT Image at 10000000 ...
   Using 'conf@system-top.dtb' configuration
   Trying 'ramdisk@1' ramdisk subimage
     Description:  petalinux-user-image
     Type:         RAMDisk Image
     Compression:  gzip compressed
     Data Start:   0x106ab1c0
     Data Size:    6413725 Bytes = 6.1 MiB
     Architecture: AArch64
     OS:           Linux
     Load Address: unavailable
     Entry Point:  unavailable
     Hash algo:    sha1
     Hash value:   6f3c1c7264cea1a5b391c6f6eefbeb190b3e9cf6
   Verifying Hash Integrity ... sha1+ OK
## Loading fdt from FIT Image at 10000000 ...
   Using 'conf@system-top.dtb' configuration
   Trying 'fdt@system-top.dtb' fdt subimage
     Description:  Flattened Device Tree blob
     Type:         Flat Device Tree
     Compression:  uncompressed
     Data Start:   0x106a3700
     Data Size:    31225 Bytes = 30.5 KiB
     Architecture: AArch64
     Hash algo:    sha1
     Hash value:   a6944372b09e37df9457fdbb9be433c8088ff6e3
   Verifying Hash Integrity ... sha1+ OK
   Booting using the fdt blob at 0x106a3700
   Uncompressing Kernel Image ... OK
   Loading Ramdisk to 079e2000, end 07fffd9d ... OK
   Loading Device Tree to 00000000079d7000, end 00000000079e19f8 ... OK

Starting kernel ...

[    0.000000] Booting Linux on physical CPU 0x0
[    0.000000] Linux version 4.14.0-xilinx-v2018.2 (oe-user@oe-host) (gcc version 7.2.0 (GCC)) #5 SMP Mon Feb 18 12:13:05 UTC 2019
[    0.000000] Boot CPU: AArch64 Processor [410fd034]
[    0.000000] Machine model: xlnx,zynqmp
[    0.000000] earlycon: cdns0 at MMIO 0x00000000ff010000 (options '115200n8')
[    0.000000] bootconsole [cdns0] enabled
[    0.000000] efi: Getting EFI parameters from FDT:
[    0.000000] efi: UEFI not found.
[    0.000000] cma: Reserved 256 MiB at 0x000000006fc00000
[    0.000000] psci: probing for conduit method from DT.
[    0.000000] psci: PSCIv1.1 detected in firmware.
[    0.000000] psci: Using standard PSCI v0.2 function IDs
[    0.000000] psci: MIGRATE_INFO_TYPE not supported.
[    0.000000] percpu: Embedded 21 pages/cpu @ffffffc07fe79000 s46488 r8192 d31336 u86016
[    0.000000] Detected VIPT I-cache on CPU0
[    0.000000] CPU features: enabling workaround for ARM erratum 845719
[    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 516867
[    0.000000] Kernel command line: earlycon clk_ignore_unused
[    0.000000] PID hash table entries: 4096 (order: 3, 32768 bytes)
[    0.000000] Dentry cache hash table entries: 262144 (order: 9, 2097152 bytes)
[    0.000000] Inode-cache hash table entries: 131072 (order: 8, 1048576 bytes)
[    0.000000] Memory: 1778840K/2096128K available (9980K kernel code, 644K rwdata, 3128K rodata, 512K init, 2168K bss, 55144K reserved, 262144K cma-reserved)
[    0.000000] Virtual kernel memory layout:
[    0.000000]     modules : 0xffffff8000000000 - 0xffffff8008000000   (   128 MB)
[    0.000000]     vmalloc : 0xffffff8008000000 - 0xffffffbebfff0000   (   250 GB)
[    0.000000]       .text : 0xffffff8008080000 - 0xffffff8008a40000   (  9984 KB)
[    0.000000]     .rodata : 0xffffff8008a40000 - 0xffffff8008d60000   (  3200 KB)
[    0.000000]       .init : 0xffffff8008d60000 - 0xffffff8008de0000   (   512 KB)
[    0.000000]       .data : 0xffffff8008de0000 - 0xffffff8008e81200   (   645 KB)
[    0.000000]        .bss : 0xffffff8008e81200 - 0xffffff800909f2b0   (  2169 KB)
[    0.000000]     fixed   : 0xffffffbefe7fd000 - 0xffffffbefec00000   (  4108 KB)
[    0.000000]     PCI I/O : 0xffffffbefee00000 - 0xffffffbeffe00000   (    16 MB)
[    0.000000]     vmemmap : 0xffffffbf00000000 - 0xffffffc000000000   (     4 GB maximum)
[    0.000000]               0xffffffbf00000000 - 0xffffffbf01bfc800   (    27 MB actual)
[    0.000000]     memory  : 0xffffffc000000000 - 0xffffffc07ff00000   (  2047 MB)
[    0.000000] Hierarchical RCU implementation.
[    0.000000]  RCU event tracing is enabled.
[    0.000000]  RCU restricting CPUs from NR_CPUS=8 to nr_cpu_ids=4.
[    0.000000] RCU: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=4
[    0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0
[    0.000000] GIC: Adjusting CPU interface base to 0x00000000f902f000
[    0.000000] GIC: Using split EOI/Deactivate mode
[    0.000000] arch_timer: cp15 timer(s) running at 100.00MHz (phys).
[    0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x171024ee1c, max_idle_ns: 440795203561 ns
[    0.000004] sched_clock: 56 bits at 100MHz, resolution 10ns, wraps every 4398046511100ns
[    0.008366] Console: colour dummy device 80x25
[    0.012620] console [tty0] enabled
[    0.015985] bootconsole [cdns0] disabled
[    0.000000] Booting Linux on physical CPU 0x0
[    0.000000] Linux version 4.14.0-xilinx-v2018.2 (oe-user@oe-host) (gcc version 7.2.0 (GCC)) #5 SMP Mon Feb 18 12:13:05 UTC 2019
[    0.000000] Boot CPU: AArch64 Processor [410fd034]
[    0.000000] Machine model: xlnx,zynqmp
[    0.000000] earlycon: cdns0 at MMIO 0x00000000ff010000 (options '115200n8')
[    0.000000] bootconsole [cdns0] enabled
[    0.000000] efi: Getting EFI parameters from FDT:
[    0.000000] efi: UEFI not found.
[    0.000000] cma: Reserved 256 MiB at 0x000000006fc00000
[    0.000000] psci: probing for conduit method from DT.
[    0.000000] psci: PSCIv1.1 detected in firmware.
[    0.000000] psci: Using standard PSCI v0.2 function IDs
[    0.000000] psci: MIGRATE_INFO_TYPE not supported.
[    0.000000] percpu: Embedded 21 pages/cpu @ffffffc07fe79000 s46488 r8192 d31336 u86016
[    0.000000] Detected VIPT I-cache on CPU0
[    0.000000] CPU features: enabling workaround for ARM erratum 845719
[    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 516867
[    0.000000] Kernel command line: earlycon clk_ignore_unused
[    0.000000] PID hash table entries: 4096 (order: 3, 32768 bytes)
[    0.000000] Dentry cache hash table entries: 262144 (order: 9, 2097152 bytes)
[    0.000000] Inode-cache hash table entries: 131072 (order: 8, 1048576 bytes)
[    0.000000] Memory: 1778840K/2096128K available (9980K kernel code, 644K rwdata, 3128K rodata, 512K init, 2168K bss, 55144K reserved, 262144K cma-reserved)
[    0.000000] Virtual kernel memory layout:
[    0.000000]     modules : 0xffffff8000000000 - 0xffffff8008000000   (   128 MB)
[    0.000000]     vmalloc : 0xffffff8008000000 - 0xffffffbebfff0000   (   250 GB)
[    0.000000]       .text : 0xffffff8008080000 - 0xffffff8008a40000   (  9984 KB)
[    0.000000]     .rodata : 0xffffff8008a40000 - 0xffffff8008d60000   (  3200 KB)
[    0.000000]       .init : 0xffffff8008d60000 - 0xffffff8008de0000   (   512 KB)
[    0.000000]       .data : 0xffffff8008de0000 - 0xffffff8008e81200   (   645 KB)
[    0.000000]        .bss : 0xffffff8008e81200 - 0xffffff800909f2b0   (  2169 KB)
[    0.000000]     fixed   : 0xffffffbefe7fd000 - 0xffffffbefec00000   (  4108 KB)
[    0.000000]     PCI I/O : 0xffffffbefee00000 - 0xffffffbeffe00000   (    16 MB)
[    0.000000]     vmemmap : 0xffffffbf00000000 - 0xffffffc000000000   (     4 GB maximum)
[    0.000000]               0xffffffbf00000000 - 0xffffffbf01bfc800   (    27 MB actual)
[    0.000000]     memory  : 0xffffffc000000000 - 0xffffffc07ff00000   (  2047 MB)
[    0.000000] Hierarchical RCU implementation.
[    0.000000]  RCU event tracing is enabled.
[    0.000000]  RCU restricting CPUs from NR_CPUS=8 to nr_cpu_ids=4.
[    0.000000] RCU: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=4
[    0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0
[    0.000000] GIC: Adjusting CPU interface base to 0x00000000f902f000
[    0.000000] GIC: Using split EOI/Deactivate mode
[    0.000000] arch_timer: cp15 timer(s) running at 100.00MHz (phys).
[    0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x171024ee1c, max_idle_ns: 440795203561 ns
[    0.000004] sched_clock: 56 bits at 100MHz, resolution 10ns, wraps every 4398046511100ns
[    0.008366] Console: colour dummy device 80x25
[    0.012620] console [tty0] enabled
[    0.015985] bootconsole [cdns0] disabled
[    0.019900] Calibrating delay loop (skipped), value calculated using timer frequency.. 200.00 BogoMIPS (lpj=400000)
[    0.019914] pid_max: default: 32768 minimum: 301
[    0.020034] Mount-cache hash table entries: 4096 (order: 3, 32768 bytes)
[    0.020052] Mountpoint-cache hash table entries: 4096 (order: 3, 32768 bytes)
[    0.020816] ASID allocator initialised with 65536 entries
[    0.020874] Hierarchical SRCU implementation.
[    0.021167] EFI services will not be available.
[    0.021194] zynqmp_plat_init Platform Management API v1.0
[    0.021203] zynqmp_plat_init Trustzone version v1.0
[    0.021321] smp: Bringing up secondary CPUs ...
[    0.021605] Detected VIPT I-cache on CPU1
[    0.021645] CPU1: Booted secondary processor [410fd034]
[    0.021950] Detected VIPT I-cache on CPU2
[    0.021969] CPU2: Booted secondary processor [410fd034]
[    0.022258] Detected VIPT I-cache on CPU3
[    0.022276] CPU3: Booted secondary processor [410fd034]
[    0.022318] smp: Brought up 1 node, 4 CPUs
[    0.022351] SMP: Total of 4 processors activated.
[    0.022360] CPU features: detected feature: 32-bit EL0 Support
[    0.022372] CPU: All CPU(s) started at EL2
[    0.022390] alternatives: patching kernel code
[    0.023372] devtmpfs: initialized
[    0.026698] random: get_random_u32 called from bucket_table_alloc+0x108/0x260 with crng_init=0
[    0.026876] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns
[    0.026900] futex hash table entries: 1024 (order: 5, 131072 bytes)
[    0.033084] xor: measuring software checksum speed
[    0.071993]    8regs     :  2303.000 MB/sec
[    0.112022]    8regs_prefetch:  2053.000 MB/sec
[    0.152052]    32regs    :  2830.000 MB/sec
[    0.192082]    32regs_prefetch:  2379.000 MB/sec
[    0.192090] xor: using function: 32regs (2830.000 MB/sec)
[    0.192186] pinctrl core: initialized pinctrl subsystem
[    0.192452] random: fast init done
[    0.192909] NET: Registered protocol family 16
[    0.193606] cpuidle: using governor menu
[    0.194006] vdso: 2 pages (1 code @ ffffff8008a46000, 1 data @ ffffff8008de4000)
[    0.194026] hw-breakpoint: found 6 breakpoint and 4 watchpoint registers.
[    0.194670] DMA: preallocated 256 KiB pool for atomic allocations
[    0.225155] reset_zynqmp reset-controller: Xilinx zynqmp reset driver probed
[    0.225667] ARM CCI_400_r1 PMU driver probed
[    0.230165] zynqmp-pinctrl ff180000.pinctrl: zynqmp pinctrl initialized
[    0.238782] HugeTLB registered 2.00 MiB page size, pre-allocated 0 pages
[    0.304374] raid6: int64x1  gen()   402 MB/s
[    0.372301] raid6: int64x1  xor()   446 MB/s
[    0.440423] raid6: int64x2  gen()   688 MB/s
[    0.508430] raid6: int64x2  xor()   603 MB/s
[    0.576452] raid6: int64x4  gen()  1042 MB/s
[    0.644510] raid6: int64x4  xor()   742 MB/s
[    0.712591] raid6: int64x8  gen()   980 MB/s
[    0.780603] raid6: int64x8  xor()   745 MB/s
[    0.848649] raid6: neonx1   gen()   726 MB/s
[    0.916709] raid6: neonx1   xor()   853 MB/s
[    0.984787] raid6: neonx2   gen()  1169 MB/s
[    1.052826] raid6: neonx2   xor()  1207 MB/s
[    1.120889] raid6: neonx4   gen()  1506 MB/s
[    1.188926] raid6: neonx4   xor()  1442 MB/s
[    1.256979] raid6: neonx8   gen()  1652 MB/s
[    1.325041] raid6: neonx8   xor()  1534 MB/s
[    1.325049] raid6: using algorithm neonx8 gen() 1652 MB/s
[    1.325056] raid6: .... xor() 1534 MB/s, rmw enabled
[    1.325065] raid6: using neon recovery algorithm
[    1.326150] SCSI subsystem initialized
[    1.326371] usbcore: registered new interface driver usbfs
[    1.326412] usbcore: registered new interface driver hub
[    1.326454] usbcore: registered new device driver usb
[    1.326528] media: Linux media interface: v0.10
[    1.326558] Linux video capture interface: v2.00
[    1.326607] pps_core: LinuxPPS API ver. 1 registered
[    1.326616] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[    1.326640] PTP clock support registered
[    1.326678] EDAC MC: Ver: 3.0.0
[    1.327071] zynqmp-ipi ff9905c0.mailbox: Probed ZynqMP IPI Mailbox driver.
[    1.327233] FPGA manager framework
[    1.327355] fpga-region fpga-full: FPGA Region probed
[    1.327460] Advanced Linux Sound Architecture Driver Initialized.
[    1.327764] Bluetooth: Core ver 2.22
[    1.327799] NET: Registered protocol family 31
[    1.327807] Bluetooth: HCI device and connection manager initialized
[    1.327821] Bluetooth: HCI socket layer initialized
[    1.327831] Bluetooth: L2CAP socket layer initialized
[    1.327852] Bluetooth: SCO socket layer initialized
[    1.328414] clocksource: Switched to clocksource arch_sys_counter
[    1.328507] VFS: Disk quotas dquot_6.6.0
[    1.328564] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
[    1.332955] NET: Registered protocol family 2
[    1.333324] TCP established hash table entries: 16384 (order: 5, 131072 bytes)
[    1.333443] TCP bind hash table entries: 16384 (order: 6, 262144 bytes)
[    1.333783] TCP: Hash tables configured (established 16384 bind 16384)
[    1.333890] UDP hash table entries: 1024 (order: 3, 32768 bytes)
[    1.333934] UDP-Lite hash table entries: 1024 (order: 3, 32768 bytes)
[    1.334079] NET: Registered protocol family 1
[    1.334300] RPC: Registered named UNIX socket transport module.
[    1.334310] RPC: Registered udp transport module.
[    1.334318] RPC: Registered tcp transport module.
[    1.334325] RPC: Registered tcp NFSv4.1 backchannel transport module.
[    1.334438] Trying to unpack rootfs image as initramfs...
[    1.593990] Freeing initrd memory: 6260K
[    1.594473] hw perfevents: no interrupt-affinity property for /pmu, guessing.
[    1.594653] hw perfevents: enabled with armv8_pmuv3 PMU driver, 7 counters available
[    1.595523] audit: initializing netlink subsys (disabled)
[    1.595646] audit: type=2000 audit(1.579:1): state=initialized audit_enabled=0 res=1
[    1.596018] workingset: timestamp_bits=62 max_order=19 bucket_order=0
[    1.596843] NFS: Registering the id_resolver key type
[    1.596871] Key type id_resolver registered
[    1.596879] Key type id_legacy registered
[    1.596893] nfs4filelayout_init: NFSv4 File Layout Driver Registering...
[    1.596918] jffs2: version 2.2. (NAND) (SUMMARY)  © 2001-2006 Red Hat, Inc.
[    1.624254] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 246)
[    1.624284] io scheduler noop registered
[    1.624293] io scheduler deadline registered
[    1.624315] io scheduler cfq registered (default)
[    1.624324] io scheduler mq-deadline registered
[    1.624333] io scheduler kyber registered
[    1.625770] xilinx-dpdma fd4c0000.dma: Xilinx DPDMA engine is probed
[    1.626207] xilinx-zynqmp-dma fd500000.dma: ZynqMP DMA driver Probe success
[    1.626359] xilinx-zynqmp-dma fd510000.dma: ZynqMP DMA driver Probe success
[    1.626510] xilinx-zynqmp-dma fd520000.dma: ZynqMP DMA driver Probe success
[    1.626667] xilinx-zynqmp-dma fd530000.dma: ZynqMP DMA driver Probe success
[    1.626821] xilinx-zynqmp-dma fd540000.dma: ZynqMP DMA driver Probe success
[    1.626977] xilinx-zynqmp-dma fd550000.dma: ZynqMP DMA driver Probe success
[    1.627149] xilinx-zynqmp-dma fd560000.dma: ZynqMP DMA driver Probe success
[    1.627306] xilinx-zynqmp-dma fd570000.dma: ZynqMP DMA driver Probe success
[    1.627529] xilinx-zynqmp-dma ffa80000.dma: ZynqMP DMA driver Probe success
[    1.627682] xilinx-zynqmp-dma ffa90000.dma: ZynqMP DMA driver Probe success
[    1.627829] xilinx-zynqmp-dma ffaa0000.dma: ZynqMP DMA driver Probe success
[    1.627983] xilinx-zynqmp-dma ffab0000.dma: ZynqMP DMA driver Probe success
[    1.628134] xilinx-zynqmp-dma ffac0000.dma: ZynqMP DMA driver Probe success
[    1.628286] xilinx-zynqmp-dma ffad0000.dma: ZynqMP DMA driver Probe success
[    1.628464] xilinx-zynqmp-dma ffae0000.dma: ZynqMP DMA driver Probe success
[    1.628620] xilinx-zynqmp-dma ffaf0000.dma: ZynqMP DMA driver Probe success
[    1.655925] Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled
[    1.659223] cacheinfo: Unable to detect cache hierarchy for CPU 0
[    1.663995] brd: module loaded
[    1.668278] loop: module loaded
[    1.669240] mtdoops: mtd device (mtddev=name/number) must be supplied
[    1.671407] libphy: Fixed MDIO Bus: probed
[    1.672554] tun: Universal TUN/TAP device driver, 1.6
[    1.672897] CAN device driver interface
[    1.673756] usbcore: registered new interface driver asix
[    1.673829] usbcore: registered new interface driver ax88179_178a
[    1.673862] usbcore: registered new interface driver cdc_ether
[    1.673895] usbcore: registered new interface driver net1080
[    1.673927] usbcore: registered new interface driver cdc_subset
[    1.673957] usbcore: registered new interface driver zaurus
[    1.674001] usbcore: registered new interface driver cdc_ncm
[    1.674389] xilinx-axipmon ffa00000.perf-monitor: Probed Xilinx APM
[    1.674863] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[    1.674873] ehci-pci: EHCI PCI platform driver
[    1.675117] usbcore: registered new interface driver uas
[    1.675159] usbcore: registered new interface driver usb-storage
[    1.676094] rtc_zynqmp ffa60000.rtc: rtc core: registered ffa60000.rtc as rtc0
[    1.676154] i2c /dev entries driver
[    1.676909] cdns-i2c ff030000.i2c: 400 kHz mmio ff030000 irq 31
[    1.677181] IR NEC protocol handler initialized
[    1.677190] IR RC5(x/sz) protocol handler initialized
[    1.677198] IR RC6 protocol handler initialized
[    1.677206] IR JVC protocol handler initialized
[    1.677213] IR Sony protocol handler initialized
[    1.677220] IR SANYO protocol handler initialized
[    1.677228] IR Sharp protocol handler initialized
[    1.677235] IR MCE Keyboard/mouse protocol handler initialized
[    1.677243] IR XMP protocol handler initialized
[    1.678213] usbcore: registered new interface driver uvcvideo
[    1.678222] USB Video Class driver (1.1.1)
[    1.679547] cdns-wdt fd4d0000.watchdog: Xilinx Watchdog Timer at ffffff800913d000 with timeout 10s
[    1.679843] Bluetooth: HCI UART driver ver 2.3
[    1.679854] Bluetooth: HCI UART protocol H4 registered
[    1.679863] Bluetooth: HCI UART protocol BCSP registered
[    1.679891] Bluetooth: HCI UART protocol LL registered
[    1.679900] Bluetooth: HCI UART protocol ATH3K registered
[    1.679909] Bluetooth: HCI UART protocol Three-wire (H5) registered
[    1.679953] Bluetooth: HCI UART protocol Intel registered
[    1.679961] Bluetooth: HCI UART protocol QCA registered
[    1.680002] usbcore: registered new interface driver bcm203x
[    1.680038] usbcore: registered new interface driver bpa10x
[    1.680072] usbcore: registered new interface driver bfusb
[    1.680106] usbcore: registered new interface driver btusb
[    1.680115] Bluetooth: Generic Bluetooth SDIO driver ver 0.1
[    1.680169] usbcore: registered new interface driver ath3k
[    1.680299] EDAC MC: ECC not enabled
[    1.680512] EDAC DEVICE0: Giving out device to module zynqmp-ocm-edac controller zynqmp_ocm: DEV ff960000.memory-controller (INTERRUPT)
[    1.681546] sdhci: Secure Digital Host Controller Interface driver
[    1.681556] sdhci: Copyright(c) Pierre Ossman
[    1.681564] sdhci-pltfm: SDHCI platform and OF driver helper
[    1.724428] mmc0: SDHCI controller on ff160000.sdhci [ff160000.sdhci] using ADMA 64-bit
[    1.776413] mmc1: SDHCI controller on ff170000.sdhci [ff170000.sdhci] using ADMA 64-bit
[    1.783933] ledtrig-cpu: registered to indicate activity on CPUs
[    1.784114] usbcore: registered new interface driver usbhid
[    1.784122] usbhid: USB HID core driver
[    1.787429] fpga_manager fpga0: Xilinx ZynqMP FPGA Manager registered
[    1.788347] pktgen: Packet Generator for packet performance testing. Version: 2.75
[    1.790615] Netfilter messages via NETLINK v0.30.
[    1.790758] ip_tables: (C) 2000-2006 Netfilter Core Team
[    1.790929] Initializing XFRM netlink socket
[    1.791012] NET: Registered protocol family 10
[    1.791444] Segment Routing with IPv6
[    1.791495] ip6_tables: (C) 2000-2006 Netfilter Core Team
[    1.791684] sit: IPv6, IPv4 and MPLS over IPv4 tunneling driver
[    1.792050] NET: Registered protocol family 17
[    1.792068] NET: Registered protocol family 15
[    1.792092] bridge: filtering via arp/ip/ip6tables is no longer available by default. Update your scripts to load br_netfilter if you need this.
[    1.792107] Ebtables v2.0 registered
[    1.792531] can: controller area network core (rev 20170425 abi 9)
[    1.792571] NET: Registered protocol family 29
[    1.792581] can: raw protocol (rev 20170425)
[    1.792589] can: broadcast manager protocol (rev 20170425 t)
[    1.792602] can: netlink gateway (rev 20170425) max_hops=1
[    1.792727] Bluetooth: RFCOMM TTY layer initialized
[    1.792740] Bluetooth: RFCOMM socket layer initialized
[    1.792760] Bluetooth: RFCOMM ver 1.11
[    1.792772] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[    1.792779] Bluetooth: BNEP filters: protocol multicast
[    1.792791] Bluetooth: BNEP socket layer initialized
[    1.792800] Bluetooth: HIDP (Human Interface Emulation) ver 1.2
[    1.792814] Bluetooth: HIDP socket layer initialized
[    1.792975] 9pnet: Installing 9P2000 support
[    1.793001] Key type dns_resolver registered
[    1.793513] registered taskstats version 1
[    1.793913] Btrfs loaded, crc32c=crc32c-generic
[    1.800696] ff000000.serial: ttyPS1 at MMIO 0xff000000 (irq = 40, base_baud = 6249999) is a xuartps
[    1.801591] ff010000.serial: ttyPS0 at MMIO 0xff010000 (irq = 41, base_baud = 6249999) is a xuartps
[    1.868523] mmc0: error -110 whilst initialising SD card
[    3.337586] console [ttyPS0] enabled
[    3.342551] xilinx-psgtr fd400000.zynqmp_phy: Lane:1 type:8 protocol:4 pll_locked:yes
[    3.350727] PLL: shutdown
[    3.353395] PLL: shutdown
[    3.356361] PLL: enable
[    3.358861] PLL: shutdown
[    3.362304] PLL: enable
[    3.364779] xilinx-dp-snd-codec fd4a0000.zynqmp-display:zynqmp_dp_snd_codec0: Xilinx DisplayPort Sound Codec probed
[    3.375371] xilinx-dp-snd-pcm zynqmp_dp_snd_pcm0: Xilinx DisplayPort Sound PCM probed
[    3.383332] xilinx-dp-snd-pcm zynqmp_dp_snd_pcm1: Xilinx DisplayPort Sound PCM probed
[    3.391671] xilinx-dp-snd-card fd4a0000.zynqmp-display:zynqmp_dp_snd_card: xilinx-dp-snd-codec-dai <-> xilinx-dp-snd-codec-dai mapping ok
[    3.404056] xilinx-dp-snd-card fd4a0000.zynqmp-display:zynqmp_dp_snd_card: xilinx-dp-snd-codec-dai <-> xilinx-dp-snd-codec-dai mapping ok
[    3.416734] xilinx-dp-snd-card fd4a0000.zynqmp-display:zynqmp_dp_snd_card: Xilinx DisplayPort Sound Card probed
[    3.426839] OF: graph: no port node found in /amba/zynqmp-display@fd4a0000
[    3.433741] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
[    3.440272] [drm] No driver support for vblank timestamp query.
[    3.446247] xlnx-drm xlnx-drm.0: bound fd4a0000.zynqmp-display (ops 0xffffff8008af7228)
[    3.475433] PLL: enable
[    3.596080] Console: switching to colour frame buffer device 128x48
[    3.621401] zynqmp-display fd4a0000.zynqmp-display: fb0:  frame buffer device
[    3.628740] [drm] Initialized xlnx 1.0.0 20130509 for fd4a0000.zynqmp-display on minor 0
[    3.636846] zynqmp-display fd4a0000.zynqmp-display: ZynqMP DisplayPort Subsystem driver probed
[    3.645796] dwc3-of-simple ff9d0000.usb0: dwc3_simple_set_phydata: Can't find usb3-phy
[    3.654849] xhci-hcd xhci-hcd.0.auto: xHCI Host Controller
[    3.660325] xhci-hcd xhci-hcd.0.auto: new USB bus registered, assigned bus number 1
[    3.668220] xhci-hcd xhci-hcd.0.auto: hcc params 0x0238f625 hci version 0x100 quirks 0x22010010
[    3.676958] xhci-hcd xhci-hcd.0.auto: irq 46, io mem 0xfe200000
[    3.682987] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
[    3.689759] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    3.696961] usb usb1: Product: xHCI Host Controller
[    3.701802] usb usb1: Manufacturer: Linux 4.14.0-xilinx-v2018.2 xhci-hcd
[    3.708500] usb usb1: SerialNumber: xhci-hcd.0.auto
[    3.713652] hub 1-0:1.0: USB hub found
[    3.717378] hub 1-0:1.0: 1 port detected
[    3.721459] xhci-hcd xhci-hcd.0.auto: xHCI Host Controller
[    3.726927] xhci-hcd xhci-hcd.0.auto: new USB bus registered, assigned bus number 2
[    3.734623] usb usb2: We don't know the algorithms for LPM for this host, disabling LPM.
[    3.742780] usb usb2: New USB device found, idVendor=1d6b, idProduct=0003
[    3.749550] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    3.756756] usb usb2: Product: xHCI Host Controller
[    3.761596] usb usb2: Manufacturer: Linux 4.14.0-xilinx-v2018.2 xhci-hcd
[    3.770526] usb usb2: SerialNumber: xhci-hcd.0.auto
[    3.777796] hub 2-0:1.0: USB hub found
[    3.783731] hub 2-0:1.0: 1 port detected
[    3.790031] dwc3 fe200000.dwc3: couldn't register cable notifier
[    3.798262] dwc3 fe200000.dwc3: failed to initialize dual-role
[    3.806361] platform fe200000.dwc3: runtime PM trying to suspend device but active child
[    3.816760] dwc3: probe of fe200000.dwc3 failed with error -22
[    3.825310] dwc3-of-simple ff9e0000.usb1: dwc3_simple_set_phydata: Can't find usb3-phy
[    3.836885] xhci-hcd xhci-hcd.1.auto: xHCI Host Controller
[    3.844667] xhci-hcd xhci-hcd.1.auto: new USB bus registered, assigned bus number 3
[    3.854984] xhci-hcd xhci-hcd.1.auto: hcc params 0x0238f625 hci version 0x100 quirks 0x22010010
[    3.866001] xhci-hcd xhci-hcd.1.auto: irq 49, io mem 0xfe300000
[    3.874267] usb usb3: New USB device found, idVendor=1d6b, idProduct=0002
[    3.883295] usb usb3: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    3.892734] usb usb3: Product: xHCI Host Controller
[    3.899800] usb usb3: Manufacturer: Linux 4.14.0-xilinx-v2018.2 xhci-hcd
[    3.908685] usb usb3: SerialNumber: xhci-hcd.1.auto
[    3.915983] hub 3-0:1.0: USB hub found
[    3.921863] hub 3-0:1.0: 1 port detected
[    3.928036] xhci-hcd xhci-hcd.1.auto: xHCI Host Controller
[    3.935609] xhci-hcd xhci-hcd.1.auto: new USB bus registered, assigned bus number 4
[    3.945405] usb usb4: We don't know the algorithms for LPM for this host, disabling LPM.
[    3.955680] usb usb4: New USB device found, idVendor=1d6b, idProduct=0003
[    3.964547] usb usb4: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    3.973866] usb usb4: Product: xHCI Host Controller
[    3.980824] usb usb4: Manufacturer: Linux 4.14.0-xilinx-v2018.2 xhci-hcd
[    3.989600] usb usb4: SerialNumber: xhci-hcd.1.auto
[    3.996758] hub 4-0:1.0: USB hub found
[    4.002536] hub 4-0:1.0: 1 port detected
[    4.008615] dwc3 fe300000.dwc3: couldn't register cable notifier
[    4.016592] dwc3 fe300000.dwc3: failed to initialize dual-role
[    4.024416] platform fe300000.dwc3: runtime PM trying to suspend device but active child
[    4.034494] dwc3: probe of fe300000.dwc3 failed with error -22
[    4.043378] rtc_zynqmp ffa60000.rtc: setting system clock to 1970-01-01 00:00:08 UTC (8)
[    4.053601] clk: Not disabling unused clocks
[    4.059922] ALSA device list:
[    4.064865]   #0: DisplayPort monitor
[    4.071142] Freeing unused kernel memory: 512K
INIT: version 2.88 booting
Starting udev
[    4.193831] udevd[1702]: starting version 3.2.2
[    4.205490] udevd[1703]: starting eudev-3.2.2
Mon Feb 18 12:46:35 UTC 2019
Starting internet superserver: inetd.
Configuring packages on first boot....
 (This may take several minutes. Please do not power off the machine.)
Running postinst /etc/rpm-postinsts/100-sysvinit-inittab...
update-rc.d: /etc/init.d/run-postinsts exists during rc.d purge (continuing)
INIT: Entering runlevel: 5
Configuring network interfaces... Cannot find device "eth0"
Starting Dropbear SSH server: Generating key, this may take a while...
Public key portion is:
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCUGFzO00efnXsncyQHUufMsAetLDsuUTWcifAJBzhnXPHcMZayHVUMxn93QVDtzEO+13NHy0mC5LY3uGb0e3PaZCF66aBR1yr7nHHeyxHbUMpm5TGBgbNhSP5kh4HYhCvKae3XZztuJlCxiYt76PkEjJ18bm2QDzePrN09nt5UooAhToGJ4I3aHdTPg5xH5gpQc6869OfaeUkJMnkoAvnYt5EOTaL6WV0fBH/pCUy2+Cs5ytqrBsJDmT4FTPnRrPY+ksm/JZ++5+O+x6u++g1PqqfM4yIZVglNY+hDdl0ArE7b7H6MjUaOwsnIwG4VlUX909APccrrfFWQ9xMzqDs/ root@cam_test_ov5642_182
Fingerprint: md5 6d:2f:72:10:6e:db:cc:32:d4:e4:fa:a4:b0:20:dd:f0
dropbear.
Starting syslogd/klogd: done
Starting tcf-agent: OK

PetaLinux 2018.2 cam_test_ov5642_182 /dev/ttyPS0

cam_test_ov5642_182 login: 

  1. 2019年02月19日 05:22 |
  2. PetaLinux
  3. | トラックバック:0
  4. | コメント:0

Docker 上のUbuntu 16.04 のPetaLinux 2018.2 でビルドしてみた2

Docker 上のUbuntu 16.04 のPetaLinux 2018.2 でビルドしてみた1”の続き。

前回は、”Ultra96-PYNQをビルドしてみた”のDocker Container にはPetaLinux 2018.2 がインストールしてあるので、試しにビルドを行うということで、petalinux-build までを行った。今回は残りのビルドをやっていこう。

まずは、前回までの cam_test_ov5642_182/images/linux ディレクトリの内容を示す。
PetaLinux_12_190216.png

uImage をビルドしよう。
petalinux-package --image -c kernel --format uImage
を実行した。エラーになった。やはり、ロケールのエラーだった。
PetaLinux_13_190216.png

LANG=en_US.UTF-8 petalinux-package --image -c kernel --format uImage
だと成功した。
PetaLinux_14_190216.png

cam_test_ov5642_182/images/linux ディレクトリの内容を示す。uImage がビルドできている。
PetaLinux_15_190216.png

ログを示す。

masaaki@d601aa5658aa:~/PetaLProj/cam_test_ov5642_182$ LANG=en_US.UTF-8 petalinux-package --image -c kernel --format uImage
SDK environment now set up; additionally you may now run devtool to perform development tasks.
Run devtool --help for further details.

### Shell environment set up for builds. ###

You can now run 'bitbake <target>'

Common targets are:
    core-image-minimal
    core-image-sato
    meta-toolchain
    meta-ide-support

You can also run generated qemu images with a command like 'runqemu qemux86'
NOTE: Starting bitbake server...
INFO: Adding user layer: /home/masaaki/PetaLProj/cam_test_ov5642_182/project-spec/meta-user
NOTE: Starting bitbake server...
INFO: generating uImage
INFO: bitbake -R /home/masaaki/PetaLProj/cam_test_ov5642_182/build/conf/kerneltype.conf virtual/kernel 
Parsing recipes: 100% |##########################################| Time: 0:01:25
Parsing of 2552 .bb files complete (0 cached, 2552 parsed). 3441 targets, 139 skipped, 0 masked, 0 errors.
NOTE: Resolving any missing task queue dependencies
Initialising tasks: 100% |#######################################| Time: 0:00:06
Checking sstate mirror object availability: 100% |###############| Time: 0:00:09
NOTE: Executing SetScene Tasks
NOTE: Executing RunQueue Tasks
NOTE: fsbl: compiling from external source tree /home/masaaki/pkg/petalinux/tools/hsm/data/embeddedsw
NOTE: pmu-firmware: compiling from external source tree /home/masaaki/pkg/petalinux/tools/hsm/data/embeddedsw
WARNING: petalinux-user-image-1.0-r0 do_rootfs: [log_check] petalinux-user-image: found 1 warning message in the logfile:
[log_check] warning: %post(sysvinit-inittab-2.88dsf-r10.plnx_zynqmp) scriptlet failed, exit status 1

NOTE: Tasks Summary: Attempted 2383 tasks of which 2310 didn't need to be rerun and all succeeded.

Summary: There was 1 WARNING message shown.
masaaki@d601aa5658aa:~/PetaLProj/cam_test_ov5642_182



BOOT.bin をビルドしよう。
LANG=en_US.UTF-8 petalinux-package --boot --fsbl /home/masaaki/PetaLProj/cam_test_ov5642_182/components/plnx_workspace/fsbl/fsbl/Release/fsbl.elf --fpga /home/masaaki/PetaLProj/cam_test_ov5642_182/components/plnx_workspace/fsbl/fsbl_hwproj/cam_test_wrapper.bit --pmufw /home/masaaki/PetaLProj/cam_test_ov5642_182/images/linux/pmufw.elf --u-boot
を実行した。
PetaLinux_16_190216.png

BOOT.bin がビルドできている。
PetaLinux_17_190216.png

次にはビルドできたイメージをQEMU で起動してみよう。
まずは、prebuilt を作成する。
LANG=en_US.UTF-8 petalinux-package --prebuilt --fpga /home/masaaki/PetaLProj/cam_test_ov5642_182/components/plnx_workspace/fsbl/fsbl_hwproj/cam_test_wrapper.bit
PetaLinux_19_190217.png

pre-built ディレクトリが生成された。

システムのブートを行う。
petalinux-boot --qemu --prebuilt 3
PetaLinux_20_190217.png
PetaLinux_21_190217.png

ここで、キーボードの入力に反応しなくなった。
仕方がないので、CTRL-P, CTRL-Q でホストに制御を戻して、
docker ps
で docker のコンテナID を見てから
docker stop 722533dbc823
でコンテナを停止した。
もう一度、
docker ps
でみるとコンテナは消えていた。
PetaLinux_22_190217.png

ログを示す。

masaaki@722533dbc823:~/PetaLProj/cam_test_ov5642_182$ petalinux-boot --qemu --prebuilt 3
WARNING: Failed to load PMUFW, doesn't exist in prebuilts.See help to load custom PMUFW
petalinux-boot: line 1406: xxd: command not found
petalinux-boot: line 1417: xxd: command not found
petalinux-boot: line 1406: xxd: command not found
petalinux-boot: line 1417: xxd: command not found
petalinux-boot: line 1406: xxd: command not found
petalinux-boot: line 1417: xxd: command not found
INFO: No DTB has been specified, use the default one "/home/masaaki/PetaLProj/cam_test_ov5642_182/pre-built/linux/images/system.dtb".
INFO: No DTB has been specified, use the default one "/home/masaaki/PetaLProj/cam_test_ov5642_182/pre-built/linux/images/system.dtb".
INFO: Set QEMU tftp to /home/masaaki/PetaLProj/cam_test_ov5642_182/images/linux 
petalinux-qemu-boot: line 88: xxd: command not found
INFO: TCP PORT is free 
INFO: Starting aarch64 QEMU
INFO:  qemu-system-aarch64 -M arm-generic-fdt   -serial mon:stdio -serial /dev/null -display none -device loader,file=/tmp/tmp.ljJNJfCqew,cpu-num=0 -gdb tcp::9000 -dtb /home/masaaki/PetaLProj/cam_test_ov5642_182/pre-built/linux/images/system.dtb     -hw-dtb /home/masaaki/PetaLProj/cam_test_ov5642_182/images/linux/zynqmp-qemu-multiarch-arm.dtb -machine-path /tmp/tmp.bdgrcojgBS -global xlnx,zynqmp-boot.cpu-num=0 -global xlnx,zynqmp-boot.use-pmufw=true  -m 4G
qemu-system-aarch64: Failed to connect socket /tmp/tmp.bdgrcojgBS/qemu-rport-_pmu@0: No such file or directory
qemu-system-aarch64: info: QEMU waiting for connection on: disconnected:unix:/tmp/tmp.bdgrcojgBS/qemu-rport-_pmu@0,server

  1. 2019年02月18日 04:30 |
  2. PetaLinux
  3. | トラックバック:0
  4. | コメント:0
»