2015/02/12

Zynq Linuxの使用メモリを制限する

はじめに

下記の記事で,device treeのbootargsを編集してLinuxの使用メモリを制限する方法が紹介されていました. 試してみたところKernel panicを起こしてしまいましたので,その対処方法もメモしておきます.

今やってみたいのはZYBOのVGAまたはHDMIからGUIを出力することなのですが,やり方がよくわからず困っています. もっとハードルが低いことからコツコツやった方が早いかも….

DTSのbootargsを編集する

「mem=384M」を加えて,Linuxの使用メモリを384MBに制限してみます. ZYBOはメモリを512MB搭載していますので,アドレス 0x18000000 ~ 0x1fffffff まではLinuxの管理外になるはずです.

Kernel panicが発生して起動しませんでした. わからないなりにログを眺めてみると,Kernelの読込み開始直後に落ちているようです.

Kernel panicの対処方法 / uEnv.txtの編集

原因と対処方法を調べてみると,下記Webページが引っかかりました. u-bootがdevice treeをメモリの上限アドレス付近に配置するため,Kernelの使用メモリを制限するとdevice treeが存在するアドレスを参照できない,ということでしょうか. 対処方法は,u-bootがdevice treeを配置する際の上限アドレス(fdt_high)を変更すれば良いようです.

u-bootのソースコード上では, include/configs/zynq-common.h で 0x20000000 に設定されているようです(自信はないです). ソースコードを編集してu-bootをリビルドするのは面倒なので,uEnv.txtでの設定を試してみました. 下記の1行目を追加しました.

正常に起動しました. /proc/meminfo を参照すると,使用メモリが384MB程度に制限されていることがわかります.

0 件のコメント:

コメントを投稿