1 安装FastModel
FastModel依赖于32位的库,所以在安装前需要安装32位的库:
sudo apt-get install ia32-lib*
安装的过程比较简单。先切换到FastModel安装文件所在目录然后运行setup.sh。
cd Fastmodel/FM000-KT-00005-r8p3-42rel0/FastModels_8-3-042_Linux
./setup.sh
然后就一路点击Next到Install就完成了。
完成安装以后,要设置License以及几个环境变量,我将这几个变量直接设置到了~/.bashrc里面。
PVLIB_HOME设置为安装目录下的FastModelsPortfolio_8.3目录。
MAXCORE_HOME设置为安装目录下的FastModelsTools_8.3目录。如下所示:
export PVLIB_HOME=/FastModelsPortfolio_8.3
export MAXCORE_HOME=/FastModelsTools_8.3
License使用的如下设置:
export LM_LICENSE_FILE=7010@serverip
全部设置好了以后就可以运行FastModelsTools_8.3/bin/中的sgcanvas程序了。
2 编译Cortex-A53的FVP文件
打开sgcanvas,选择File->Load Project,File name选择example中的A53x4的项目文件。位置如下:
/FastModelsPortfolio_8.3/examples/FVP_VE/Build_Cortex-A53x4/FVP_VE_Cortex-A53x4.sgproj.
点击Build,即可编译出相关的FVP文件。
3 编译Linux内核
编译详细步骤请看。
下面给出其中简略步骤:
a 准备toolchain
下载地址在上,我使用的是gcc-linaro 4.7,因为使用4.8的编译内核的时候会报错。
b 编译内核
% mkdir ~/aarch64-kernel
% cd ~/aarch64-kerne
% git clone git://git.linaro.org/kernel/linaro-aarch64.git
% cd linaro-aarch64
% git checkout -b linaro-aarch64 origin/linaro-aarch64
% make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- distclean vexpress_defconfig
% make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j4 Image
c 包装内核
FastModel不能直调试编译出来的内核文件,而是需要使用一个工具对编译出来的内核做一点处理。
% cd ~/aarch64-kernel
% git clone git://git.kernel.org/pub/scm/linux/kernel/git/cmarinas/boot-wrapper-aarch64.git
% cd boot-wrapper-aarch64
% ln -sf ~/aarch64-kernel/linaro-aarch64/scripts/dtc/dtc
% ln -sf ~/aarch64-kernel/linaro-aarch64/arch/arm64/boot/dts/vexpress-v2p-aarch64.dts
% ln -sf ~/aarch64-kernel/linaro-aarch64/arch/arm64/boot/dts/vexpress-foundation-v8.dts
% ln -sf ~/aarch64-kernel/linaro-aarch64/arch/arm64/boot/dts/vexpress-v2m-rs1.dtsi
% ln -sf ~/aarch64-kernel/linaro-aarch64/arch/arm64/boot/dts/skeleton.dtsi
% ln -sf ~/aarch64-kernel/linaro-aarch64/arch/arm64/boot/Image
% ln -sf /home/aarch64-kernel/linaro-aarch64/arch/arm64/boot/dts/vexpress-foundation-v8.dts rtsm_ve-aemv8a.dts
% make clean
% make CROSS_COMPILE=aarch64-linux-gnu- BOOTARGS='"root=/dev/mmcblk0p2 consolelog=9rw console=ttyAMA0"'
% make IMAGE=linux-system-foundation.axf clean
% make CROSS_COMPILE=aarch64-linux-gnu- BOOTARGS='"root=/dev/vda2 consolelog=9 rw console=ttyAMA0"' FDT_SRC=vexpress-foundation-v8.dts IMAGE=linux-system-foundation.axf
执行完以上步骤后会生成linux-system.axf和linux-system-foundation.axf两个文件。
4 准备rootfs
a 编译busybox,在busybox目录里运行make menuconfig设置好工具链prefix,然后esc退出后运行make && make install。如果有编译错误,可以再运行make menuconfig去掉相关的组件。如果成功的话,会在当前目录下生成一个_install目录,里面就是busybox及各个指令的符号链接。
b 准备虚拟block设备
% dd if=/dev/zero of=block.img bs=1M count=400
这里我设置的是400MB的大小,如果太大的话,跑的时候会很卡。
格式化快设备,现在我们要在这个虚拟的设备里面建立两个分区,一个做boot分区,一个做root分区。(虽然我最后并没有使用boot分区,还不会使用 :-< )
{ cat << EOF
n
p
1
2048
+100M
n
p
2
t
1
e
t
2
83
a
1
w
EOF
} | fdisk block.img
以上命令也可以通过打开fdisk boot.img后依次输入。作用是建立两个分区,并设置第一个分区可以作为引导分区。
建立好分区后,运行下面一串命令:
sudo kpartx -av block.img
sudo mkfs.vfat /dev/mapper/loop0p1
sudo mkfs.ext4 /dev/mapper/loop0p1
sudo mount /dev/mapper/loop0p1 /mnt
sudo cp -r /_install/* /mnt
cd /mnt/dev/
sudo cp -a tty[0-9] .
sudo cp -a /dev/console .
cd -
sudo umount /mnt
sudo kpartx -d block.img
运行:
在sgcanvas界面里,点击Debug,选择CADI library,在Application里面选择linux-system-foundation.axf的路径。然后点击OK。在弹出的ModelParameters对话框里找到motherboard.virtioblockdevice,在motherboard.virtioblockdevice.image_path里输入block.img的路径。然后点击OK,OK。
在弹出的ModelDebugger对话框里点击run。
纯命令行运行的方法:
model_shell \
/examples/FVP_VE/Build_Cortex-A53x4/Linux64-Debug-GCC-4.1/cadi_system_Linux64-Debug-GCC-4.1.so \
/linux-system-foundation.axf \
-C motherboard.virtioblockdevice.image_path=/block.img
过了一会就会出现FVP_terminal_0的串口终端
阅读(4305) | 评论(0) | 转发(0) |