• gem5——building up-to-date kernels for gem5 running on ARM



    http://gem5.org/ARM_Linux_Kernel


    Prerequisites

    These instructions are for running headless systems. That is a more "server" style system where there is no frame-buffer. The description has been created using the latest known-working tag in the repositories linked below, however the tables in each section list previous tags that are known to work. To built the kernels on an x86 host you'll need ARM cross compilers and the device tree compiler. If you're running a reasonably new version of Ubuntu or Debian you can get required software through apt:

    apt-get install  gcc-arm-linux-gnueabihf gcc-aarch64-linux-gnu device-tree-compiler
    

    If you can't use these pre-made compilers the next easiest way to obtain the required compilers from Linaro.

    Depending on the exact source of your cross compilers, the compiler names used below will required small changes.

    Linux 4.x

    Older gem5 kernels for ARM (v4.x and later) are based on the vanilla Linux kernel and typically have a small number of patches to make them work better with gem5. The patches are optional and you should be able to use a vanilla kernel as well. However, this requires you to configure the kernel yourself. Newer kernels all use the VExpress_GEM5_V1 gem5 platform for both AArch32 and AArch64. The required DTB files to describe the hardware to the OS ship with gem5. To build them, execute this command:

    make -C system/arm/dt
    

    Kernel Checkout

    To checkout the kernel, execute the following command:

    git clone https://github.com/gem5/linux-arm-gem5.git
    

    The repository contains a tag per gem5 kernel releases and working branches for major Linux revisions. Check the GitHub page for a list of release tags. To checkout the v4.3 branch, execute the following in the repository:

    git checkout -b v4.3
    

    AArch32

    To compile the kernel, execute the following commands in the repository:

    make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- gem5_defconfig
    make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j4
    

    Testing the just built kernel:

    ./build/ARM/gem5.opt configs/example/fs.py --kernel=/tmp/linux-arm-gem5/vmlinux --machine-type=VExpress_GEM5_V1 
        --dtb-file=$PWD/system/arm/dt/armv7_gem5_v1_1cpu.dtb
    

    AArch64

    To compile the kernel, execute the following commands in the repository:

    make ARCH=arm64 CROSS_COMPILE=aarch64-none-elf- gem5_defconfig
    make ARCH=arm64 CROSS_COMPILE=aarch64-none-elf- -j4
    

    Testing the just built kernel:

    ./build/ARM/gem5.opt configs/example/fs.py --kernel=/tmp/linux-arm-gem5/vmlinux --machine-type=VExpress_GEM5_V1 
        --dtb-file=$PWD/system/arm/dt/armv8_gem5_v1_1cpu.dtb --disk-image=linaro-minimal-armv8.img
    

    Legacy kernels (pre v4.x)

    Older gem5 kernels for ARM (pre v4.x) are based on Linaro's Linux kernel for ARM. These kernels use either the VExpress_EMM (AArch32) or VExpress_EMM64 (AArch64) gem5 platform. Unlike the newer kernels, there is a separate AArch32 and AArch64 kernel repository and the device tree files are shipped with the kernel.

    32 bit kernel (AArch32)

    These are instructions to generate a 32-bit ARM Linux binary.

    To checkout the aarch32 kernel, execute the following command:

    git clone https://github.com/gem5/linux-arm-gem5.git
    

    The repository contains a tag per gem5 kernel release. Check the GitHub page for a list of release tags. To checkout a tag, execute the following in the repository:

    git checkout -b TAGNAME
    

    To compile the kernel, execute the following commands in the repository:

    make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- vexpress_gem5_server_defconfig
    make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j4
    

    Testing the just built kernel:

    % ./build/ARM/gem5.opt configs/example/fs.py  --kernel=/tmp/linux-arm-gem5/vmlinux 
       --machine-type=VExpress_EMM --dtb-file=/tmp/linux-arm-gem5/arch/arm/boot/dts/vexpress-v2p-ca15-tc1-gem5.dtb 
    

    64 bit kernel (AArch64)

    These are instructions to generate a 64-bit ARM Linux binary.

    To checkout the aarch64 kernel, execute the following command:

    git clone https://github.com/gem5/linux-arm64-gem5.git
    

    The repository contains a tag per gem5 kernel release. Check the GitHub page for a list of release tags. To checkout a tag, execute the following in the repository:

    git checkout -b TAGNAME
    
    make ARCH=arm64 CROSS_COMPILE=aarch64-none-elf- gem5_defconfig
    make ARCH=arm64 CROSS_COMPILE=aarch64-none-elf- -j4
    

    Testing the just built kernel:

    % ./build/ARM/gem5.opt configs/example/fs.py --kernel=/tmp/linux-arm64-gem5/vmlinux --machine-type=VExpress_EMM64 
        --dtb-file=/tmp/linux-arm64-gem5/arch/arm64/boot/dts/aarch64_gem5_server.dtb --disk-image=linaro-minimal-armv8.img
    
    

  • 相关阅读:
    用c语言程序判断谁是小偷
    android获取Button文本 从一个按钮开关中获取文本
    android 让一个控件按钮居于底部的几种方法
    java获取文件夹下所有文件的名称
    解决 apache error 指定网络名不再可用 "an unknown filter was not added: DEFLATE"的问题
    查看window隐藏进程,用微软的ProcessExplorer查看到电脑有个“硬件中断”占用大量CPU 解决办法
    Android中Message机制的灵活应用
    Thread和Looper以及Handler和Message详解 Android开发必读
    Android的Looper类使用的5个要点
    android的消息处理机制(图+源码分析)——Looper,Handler,Message
  • 原文地址:https://www.cnblogs.com/ztguang/p/12646424.html
Copyright © 2020-2023  润新知