Chinaunix首页 | 论坛 | 博客
  • 博客访问: 281229
  • 博文数量: 19
  • 博客积分: 757
  • 博客等级: 军士长
  • 技术积分: 321
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-08 07:55
个人简介

醉卧沙场君莫笑

文章分类

全部博文(19)

文章存档

2016年(5)

2015年(2)

2014年(3)

2013年(1)

2012年(5)

2011年(3)

分类: LINUX

2016-05-08 20:09:49


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) |
给主人留下些什么吧!~~