Skip to content

Commit

Permalink
merge boot
Browse files Browse the repository at this point in the history
Signed-off-by: Zone.N <[email protected]>
  • Loading branch information
MRNIU committed Feb 11, 2025
2 parents e7e3080 + b96c2c0 commit 55724a7
Show file tree
Hide file tree
Showing 9 changed files with 117 additions and 79 deletions.
15 changes: 12 additions & 3 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,18 @@
[submodule "3rd/cpu_io"]
path = 3rd/cpu_io
url = https://github.com/MRNIU/cpu_io.git
[submodule "3rd/smccc"]
path = 3rd/smccc
url = https://github.com/MRNIU/smccc.git
[submodule "3rd/arm-trusted-firmware"]
path = 3rd/arm-trusted-firmware
url = https://github.com/ARM-software/arm-trusted-firmware.git
[submodule "3rd/smccc"]
path = 3rd/smccc
url = https://github.com/MRNIU/smccc.git
[submodule "3rd/optee/optee_os"]
path = 3rd/optee/optee_os
url = https://github.com/OP-TEE/optee_os.git
[submodule "3rd/optee/build"]
path = 3rd/optee/build
url = https://github.com/OP-TEE/build.git
[submodule "3rd/optee/optee_client"]
path = 3rd/optee/optee_client
url = https://github.com/OP-TEE/optee_client.git
14 changes: 7 additions & 7 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -22,13 +22,13 @@ repos:
- id: clang-format
args:
- --style=file
# - id: clang-tidy
# args:
# - --checks=.clang-tidy
# - -p=/root/SimpleKernel/build_aarch64/compiler_commands.json
# - -extra-arg=--std=c++2b
# - --fix
# - --header-filter=^(/root/SimpleKernel/build_aarch64/src/).*
- id: clang-tidy
args:
- --checks=.clang-tidy
- -p=/root/SimpleKernel/build_aarch64/compiler_commands.json
- -extra-arg=--std=c++2b
- --fix
- --header-filter=^(/root/SimpleKernel/build_aarch64/src/).*
# - --exclude-header-filter=^(?/root/SimpleKernel/build_aarch64/src/arch/x86_64|/root/SimpleKernel/build_aarch64/src/arch/aarch64).*
# - id: clang-tidy
# args:
Expand Down
1 change: 1 addition & 0 deletions 3rd/optee/build
Submodule build added at 0ea181
1 change: 1 addition & 0 deletions 3rd/optee/optee_client
Submodule optee_client added at 648677
1 change: 1 addition & 0 deletions 3rd/optee/optee_os
Submodule optee_os added at 71aed2
13 changes: 6 additions & 7 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ ELSEIF(CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64")
APPEND
QEMU_FLAGS
-machine
virt,gic-version=3
virt,secure=on,gic_version=3
-cpu
cortex-a72
-m
Expand All @@ -92,13 +92,10 @@ ELSEIF(CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64")
4
-net
none
-bios
${arm-trusted-firmware_BINARY_DIR}/flash.bin
-kernel
$<TARGET_FILE:kernel>
# -bios
# ${ovmf_BINARY_DIR}/OVMF_${CMAKE_SYSTEM_PROCESSOR}.fd
# -hda
# fat:rw:./image/
)
$<TARGET_FILE:kernel>)
ENDIF()

# 添加要编译的目录
Expand All @@ -114,6 +111,8 @@ ADD_RUN_TARGET (
$<$<STREQUAL:${CMAKE_SYSTEM_PROCESSOR},x86_64>:boot>
$<$<STREQUAL:${CMAKE_SYSTEM_PROCESSOR},riscv64>:boot>
$<$<STREQUAL:${CMAKE_SYSTEM_PROCESSOR},aarch64>:boot>
$<$<STREQUAL:${CMAKE_SYSTEM_PROCESSOR},aarch64>:optee_os>
$<$<STREQUAL:${CMAKE_SYSTEM_PROCESSOR},aarch64>:arm-trusted-firmware>
kernel
WORKING_DIRECTORY
${PROJECT_BINARY_DIR}
Expand Down
71 changes: 45 additions & 26 deletions cmake/3rd.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,20 @@ ADD_CUSTOM_TARGET (
SET_DIRECTORY_PROPERTIES (PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES
${CMAKE_SOURCE_DIR}/.gdbinit)

# ovmf
# @todo 使用互联网连接或从 edk2 编译
# https://efi.akeo.ie/QEMU_EFI/QEMU_EFI-AA64.zip
SET (ovmf_SOURCE_DIR ${CMAKE_SOURCE_DIR}/tools/ovmf)
SET (ovmf_BINARY_DIR ${CMAKE_BINARY_DIR}/3rd/ovmf)
ADD_CUSTOM_TARGET (
ovmf
COMMENT "build ovmf ..."
# make 时编译
ALL
WORKING_DIRECTORY ${ovmf_SOURCE_DIR}
COMMAND ${CMAKE_COMMAND} -E make_directory ${ovmf_BINARY_DIR}
COMMAND ${CMAKE_COMMAND} -E copy ${ovmf_SOURCE_DIR}/* ${ovmf_BINARY_DIR})

# https://github.com/MRNIU/printf_bare_metal.git
ADD_SUBDIRECTORY (3rd/printf_bare_metal)

Expand All @@ -98,6 +112,24 @@ ADD_SUBDIRECTORY (3rd/cpu_io)
ADD_SUBDIRECTORY (3rd/smccc)

IF(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "aarch64")
# https://github.com/OP-TEE/optee_os.git
SET (optee_os_SOURCE_DIR ${CMAKE_SOURCE_DIR}/3rd/optee/optee_os)
SET (optee_os_BINARY_DIR ${CMAKE_BINARY_DIR}/3rd/optee/optee_os)
ADD_CUSTOM_TARGET (
optee_os
COMMENT "build optee_os..."
# make 时编译
ALL
WORKING_DIRECTORY ${optee_os_SOURCE_DIR}
COMMAND ${CMAKE_COMMAND} -E make_directory ${optee_os_BINARY_DIR}
COMMAND
make CFG_ARM64_core=y CFG_TEE_BENCHMARK=n CFG_TEE_CORE_LOG_LEVEL=3
CROSS_COMPILE=${TOOLCHAIN_PREFIX}
CROSS_COMPILE_core=${TOOLCHAIN_PREFIX}
CROSS_COMPILE_ta_arm32=${TOOLCHAIN_PREFIX32}
CROSS_COMPILE_ta_arm64=${TOOLCHAIN_PREFIX} DEBUG=1
O=${optee_os_BINARY_DIR} PLATFORM=vexpress-qemu_armv8a)

# https://github.com/ARM-software/arm-trusted-firmware
# 编译 atf
SET (arm-trusted-firmware_SOURCE_DIR
Expand All @@ -113,19 +145,20 @@ IF(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "aarch64")
COMMAND ${CMAKE_COMMAND} -E make_directory
${arm-trusted-firmware_BINARY_DIR}
COMMAND
make CROSS_COMPILE=${TOOLCHAIN_PREFIX} FW_JUMP=y
FW_JUMP_ADDR=0x80210000 PLATFORM_RISCV_XLEN=64 PLATFORM=generic
O=${arm-trusted-firmware_BINARY_DIR}
make DEBUG=1 CROSS_COMPILE=${TOOLCHAIN_PREFIX} PLAT=qemu
BUILD_BASE=${arm-trusted-firmware_BINARY_DIR}
BL32=${optee_os_BINARY_DIR}/core/tee-header_v2.bin
BL32_EXTRA1=${optee_os_BINARY_DIR}/core/tee-pager_v2.bin
BL32_EXTRA2=${optee_os_BINARY_DIR}/core/tee-pageable_v2.bin
BL33=${ovmf_BINARY_DIR}/OVMF_aarch64.fd BL32_RAM_LOCATION=tdram
QEMU_USE_GIC_DRIVER=QEMU_GICV3 SPD=opteed all fip
COMMAND
${CMAKE_COMMAND} -E copy_directory
${arm-trusted-firmware_SOURCE_DIR}/include
${arm-trusted-firmware_BINARY_DIR}/include)
ADD_LIBRARY (arm-trusted-firmware-fw_jump INTERFACE)
ADD_DEPENDENCIES (arm-trusted-firmware-fw_jump arm-trusted-firmware)
TARGET_INCLUDE_DIRECTORIES (arm-trusted-firmware-fw_jump
INTERFACE ${dtc_BINARY_DIR}/libfdt)
TARGET_LINK_LIBRARIES (arm-trusted-firmware-fw_jump
INTERFACE ${dtc_BINARY_DIR}/libfdt/libfdt.a)
dd if=${arm-trusted-firmware_BINARY_DIR}/qemu/debug/bl1.bin
of=${arm-trusted-firmware_BINARY_DIR}/flash.bin bs=4096 conv=notrunc
COMMAND
dd if=${arm-trusted-firmware_BINARY_DIR}/qemu/debug/fip.bin
of=${arm-trusted-firmware_BINARY_DIR}/flash.bin seek=64 bs=4096
conv=notrunc)
ENDIF()

IF(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "riscv64")
Expand Down Expand Up @@ -243,20 +276,6 @@ TARGET_LINK_LIBRARIES (
${gnu-efi_BINARY_DIR}/gnuefi/libgnuefi.a
${gnu-efi_BINARY_DIR}/lib/libefi.a)

# ovmf
# @todo 使用互联网连接或从 edk2 编译
# https://efi.akeo.ie/QEMU_EFI/QEMU_EFI-AA64.zip
SET (ovmf_SOURCE_DIR ${CMAKE_SOURCE_DIR}/tools/ovmf)
SET (ovmf_BINARY_DIR ${CMAKE_BINARY_DIR}/3rd/ovmf)
ADD_CUSTOM_TARGET (
ovmf
COMMENT "build ovmf ..."
# make 时编译
ALL
WORKING_DIRECTORY ${ovmf_SOURCE_DIR}
COMMAND ${CMAKE_COMMAND} -E make_directory ${ovmf_BINARY_DIR}
COMMAND ${CMAKE_COMMAND} -E copy ${ovmf_SOURCE_DIR}/* ${ovmf_BINARY_DIR})

# gdb
FIND_PROGRAM (GDB_EXE gdb)
IF(NOT GDB_EXE)
Expand Down
72 changes: 39 additions & 33 deletions cmake/aarch64-gcc.cmake
Original file line number Diff line number Diff line change
@@ -1,39 +1,45 @@

# This file is a part of Simple-XX/SimpleKernel
# (https://github.com/Simple-XX/SimpleKernel).
#
#
# aarch64-gcc.cmake for Simple-XX/SimpleKernel.

if (NOT UNIX)
message(FATAL_ERROR "Only support Linux.")
endif ()
IF(NOT UNIX)
MESSAGE (FATAL_ERROR "Only support Linux.")
ENDIF()

IF(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "aarch64")
FIND_PROGRAM (Compiler_gcc g++)
IF(NOT Compiler_gcc)
MESSAGE (
FATAL_ERROR "g++ not found.\n"
"Run `sudo apt-get install -y gcc g++` to install.")
ELSE()
MESSAGE (STATUS "Found g++ ${Compiler_gcc}")
ENDIF()

if (CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "aarch64")
find_program(Compiler_gcc g++)
if (NOT Compiler_gcc)
message(FATAL_ERROR "g++ not found.\n"
"Run `sudo apt-get install -y gcc g++` to install.")
else ()
message(STATUS "Found g++ ${Compiler_gcc}")
endif ()
elseif (CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "x86_64")
find_program(Compiler_gcc aarch64-linux-gnu-g++)
if (NOT Compiler_gcc)
message(FATAL_ERROR "aarch64-linux-gnu-g++ not found.\n"
"Run `sudo apt install -y gcc-aarch64-linux-gnu g++-aarch64-linux-gnu` to install.")
else ()
message(STATUS "Found aarch64-linux-gnu-g++ ${Compiler_gcc}")
endif ()
SET (TOOLCHAIN_PREFIX32 arm-linux-gnueabihf-)
ELSEIF(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "x86_64")
FIND_PROGRAM (Compiler_gcc aarch64-linux-gnu-g++)
IF(NOT Compiler_gcc)
MESSAGE (
FATAL_ERROR
"aarch64-linux-gnu-g++ not found.\n"
"Run `sudo apt install -y gcc-aarch64-linux-gnu g++-aarch64-linux-gnu` to install."
)
ELSE()
MESSAGE (STATUS "Found aarch64-linux-gnu-g++ ${Compiler_gcc}")
ENDIF()

set(TOOLCHAIN_PREFIX aarch64-linux-gnu-)
set(CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}gcc)
set(CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}g++)
set(CMAKE_READELF ${TOOLCHAIN_PREFIX}readelf)
set(CMAKE_AR ${TOOLCHAIN_PREFIX}ar)
set(CMAKE_LINKER ${TOOLCHAIN_PREFIX}ld)
set(CMAKE_NM ${TOOLCHAIN_PREFIX}nm)
set(CMAKE_OBJDUMP ${TOOLCHAIN_PREFIX}objdump)
set(CMAKE_RANLIB ${TOOLCHAIN_PREFIX}ranlib)
else ()
message(FATAL_ERROR "NOT support ${CMAKE_HOST_SYSTEM_PROCESSOR}")
endif ()
SET (TOOLCHAIN_PREFIX aarch64-linux-gnu-)
SET (CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}gcc)
SET (CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}g++)
SET (CMAKE_READELF ${TOOLCHAIN_PREFIX}readelf)
SET (CMAKE_AR ${TOOLCHAIN_PREFIX}ar)
SET (CMAKE_LINKER ${TOOLCHAIN_PREFIX}ld)
SET (CMAKE_NM ${TOOLCHAIN_PREFIX}nm)
SET (CMAKE_OBJDUMP ${TOOLCHAIN_PREFIX}objdump)
SET (CMAKE_RANLIB ${TOOLCHAIN_PREFIX}ranlib)
SET (TOOLCHAIN_PREFIX32 arm-linux-gnueabihf-)
ELSE()
MESSAGE (FATAL_ERROR "NOT support ${CMAKE_HOST_SYSTEM_PROCESSOR}")
ENDIF()
8 changes: 5 additions & 3 deletions tools/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -71,16 +71,18 @@ RUN apt install --no-install-recommends --fix-missing -y \
pkg-config \
flex \
bison \
device-tree-compiler
device-tree-compiler \
python3-cryptography \
python3-pyelftools
RUN apt install --no-install-recommends --fix-missing -y \
gcc \
g++ \
gcc-riscv64-linux-gnu \
g++-riscv64-linux-gnu \
gcc-aarch64-linux-gnu \
g++-aarch64-linux-gnu \
gcc-riscv64-linux-gnu \
g++-riscv64-linux-gnu \
gcc-arm-linux-gnueabihf \
g++-arm-linux-gnueabihf \
gcc-x86-64-linux-gnu \
g++-x86-64-linux-gnu

Expand Down

0 comments on commit 55724a7

Please sign in to comment.