diff --git a/scripts/configure_rpi.bat b/.attic/configure_rpi.bat similarity index 100% rename from scripts/configure_rpi.bat rename to .attic/configure_rpi.bat diff --git a/scripts/configure_rpi2.bat b/.attic/configure_rpi2.bat similarity index 100% rename from scripts/configure_rpi2.bat rename to .attic/configure_rpi2.bat diff --git a/scripts/configure_rpi2.sh b/.attic/configure_rpi2.sh similarity index 100% rename from scripts/configure_rpi2.sh rename to .attic/configure_rpi2.sh diff --git a/scripts/configure_rpibplus.bat b/.attic/configure_rpibplus.bat similarity index 100% rename from scripts/configure_rpibplus.bat rename to .attic/configure_rpibplus.bat diff --git a/scripts/configure_rpibplus.sh b/.attic/configure_rpibplus.sh similarity index 100% rename from scripts/configure_rpibplus.sh rename to .attic/configure_rpibplus.sh diff --git a/toolchain-arm-none-eabi-rpi2.cmake b/.attic/toolchain-arm-none-eabi-rpi2.cmake similarity index 100% rename from toolchain-arm-none-eabi-rpi2.cmake rename to .attic/toolchain-arm-none-eabi-rpi2.cmake diff --git a/toolchain-arm-none-eabi-rpibplus.cmake b/.attic/toolchain-arm-none-eabi-rpibplus.cmake similarity index 100% rename from toolchain-arm-none-eabi-rpibplus.cmake rename to .attic/toolchain-arm-none-eabi-rpibplus.cmake diff --git a/.gitignore b/.gitignore index cc2083a..7d4a77f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ # Created by https://www.gitignore.io/api/osx,windows,git,c,c++,visualstudio,visualstudiocode,sublimetext,netbeans,intellij,sublimetext,cmake,codeblocks,assembler,atmelstudio,eclipse,jetbrains,linux,macos scripts/deploy.sh +bin/ ### Intellij ### # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm @@ -91,9 +92,6 @@ Temporary Items *.o *.ko *.obj -*.elf -*.bin -*.img # Linker output *.ilk diff --git a/CMakeLists.txt b/CMakeLists.txt index d130834..e8a8b10 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -34,31 +34,35 @@ cmake_minimum_required( VERSION 2.8 ) # Mark the language as C so that CMake doesn't try to test the C++ # cross-compiler's ability to compile a simple program because that will fail project( bare-metal-rpi-kernel C ASM ) +enable_language(C ASM) + +set( TARGET_FILE "kernel") +set( TARGET_BUILD "${TARGET_FILE}.elf") +set( TARGET_OUTPUT "${TARGET_FILE}.img") # Add any C compiler flags here. The C flags concerned with processor tuning # are in the toolchain files toolchain-arm-none-eabi-bcm2835.cmake, etc. set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O4" ) set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall" ) set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -nostartfiles" ) -set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -I ../includes/" ) +set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -I src/includes/" ) # Set the linker flags so that we use our "custom" linker script -set( CMAKE_EXE_LINKER_FLAGS "-Wl,-T,${PROJECT_SOURCE_DIR}/CMakeLinker.x" ) +set( CMAKE_EXE_LINKER_FLAGS "-Wl,-T,src/CMakeLinker.x" ) -AUX_SOURCE_DIRECTORY(includes/ kernelIncludes) -AUX_SOURCE_DIRECTORY(includes/rpi rpiIncludes) +AUX_SOURCE_DIRECTORY(src source) +AUX_SOURCE_DIRECTORY(src/includes/ kernelIncludes) +AUX_SOURCE_DIRECTORY(src/includes/rpi rpiIncludes) -add_executable( kernel.elf - kernel.c - cstartup.c - cstubs.c - armStart.S +add_executable( ${TARGET_BUILD} + src/armStart.S + ${source} ${kernelIncludes} ${rpiIncludes} ) add_custom_command( - TARGET kernel.elf POST_BUILD - COMMAND ${CMAKE_OBJCOPY} ./kernel.elf -O binary ./kernel.img + TARGET ${TARGET_BUILD} POST_BUILD + COMMAND ${CMAKE_OBJCOPY} ${TARGET_BUILD} -O binary ${TARGET_OUTPUT} WORKING_DIRECTORY ${CMAKE_BINARY_DIR} COMMENT "Convert the ELF output file to a binary image" ) diff --git a/build b/build new file mode 100755 index 0000000..7e01c73 --- /dev/null +++ b/build @@ -0,0 +1,3 @@ +#!/bin/bash + +./configure && make && ./deploy diff --git a/configure b/configure new file mode 100755 index 0000000..118311c --- /dev/null +++ b/configure @@ -0,0 +1,3 @@ +#!/bin/sh + +cmake -G "Unix Makefiles" -DCMAKE_TOOLCHAIN_FILE=./src/toolchain-arm-none-eabi-rpi.cmake ./ diff --git a/deploy b/deploy new file mode 100755 index 0000000..3d8b52a --- /dev/null +++ b/deploy @@ -0,0 +1,3 @@ +#!/bin/bash + +cp kernel.img /Volumes/boot/ && sudo umount /Volumes/boot diff --git a/kernel.elf b/kernel.elf new file mode 100755 index 0000000..8da3874 Binary files /dev/null and b/kernel.elf differ diff --git a/kernel.img b/kernel.img new file mode 100755 index 0000000..ee27941 Binary files /dev/null and b/kernel.img differ diff --git a/scripts/configure_rpi.sh b/scripts/configure_rpi.sh deleted file mode 100644 index 94192c4..0000000 --- a/scripts/configure_rpi.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh - -cmake -G "CodeBlocks - Unix Makefiles" -DCMAKE_TOOLCHAIN_FILE=../toolchain-arm-none-eabi-rpi.cmake ../ diff --git a/CMakeLinker.x b/src/CMakeLinker.x similarity index 100% rename from CMakeLinker.x rename to src/CMakeLinker.x diff --git a/cstartup.c b/src/cstartup.c similarity index 100% rename from cstartup.c rename to src/cstartup.c diff --git a/cstubs.c b/src/cstubs.c similarity index 100% rename from cstubs.c rename to src/cstubs.c diff --git a/includes/kernel/util.c b/src/includes/kernel/util.c similarity index 100% rename from includes/kernel/util.c rename to src/includes/kernel/util.c diff --git a/includes/kernel/util.h b/src/includes/kernel/util.h similarity index 100% rename from includes/kernel/util.h rename to src/includes/kernel/util.h diff --git a/includes/rpi/armtimer.c b/src/includes/rpi/armtimer.c similarity index 100% rename from includes/rpi/armtimer.c rename to src/includes/rpi/armtimer.c diff --git a/includes/rpi/armtimer.h b/src/includes/rpi/armtimer.h similarity index 100% rename from includes/rpi/armtimer.h rename to src/includes/rpi/armtimer.h diff --git a/includes/rpi/aux.c b/src/includes/rpi/aux.c similarity index 100% rename from includes/rpi/aux.c rename to src/includes/rpi/aux.c diff --git a/includes/rpi/aux.h b/src/includes/rpi/aux.h similarity index 100% rename from includes/rpi/aux.h rename to src/includes/rpi/aux.h diff --git a/includes/rpi/base.h b/src/includes/rpi/base.h similarity index 100% rename from includes/rpi/base.h rename to src/includes/rpi/base.h diff --git a/includes/rpi/gpio.c b/src/includes/rpi/gpio.c similarity index 100% rename from includes/rpi/gpio.c rename to src/includes/rpi/gpio.c diff --git a/includes/rpi/gpio.h b/src/includes/rpi/gpio.h similarity index 100% rename from includes/rpi/gpio.h rename to src/includes/rpi/gpio.h diff --git a/includes/rpi/interrupts.c b/src/includes/rpi/interrupts.c similarity index 100% rename from includes/rpi/interrupts.c rename to src/includes/rpi/interrupts.c diff --git a/includes/rpi/interrupts.h b/src/includes/rpi/interrupts.h similarity index 100% rename from includes/rpi/interrupts.h rename to src/includes/rpi/interrupts.h diff --git a/includes/rpi/mailbox-interface.c b/src/includes/rpi/mailbox-interface.c similarity index 100% rename from includes/rpi/mailbox-interface.c rename to src/includes/rpi/mailbox-interface.c diff --git a/includes/rpi/mailbox-interface.h b/src/includes/rpi/mailbox-interface.h similarity index 100% rename from includes/rpi/mailbox-interface.h rename to src/includes/rpi/mailbox-interface.h diff --git a/includes/rpi/mailbox.c b/src/includes/rpi/mailbox.c similarity index 100% rename from includes/rpi/mailbox.c rename to src/includes/rpi/mailbox.c diff --git a/includes/rpi/mailbox.h b/src/includes/rpi/mailbox.h similarity index 100% rename from includes/rpi/mailbox.h rename to src/includes/rpi/mailbox.h diff --git a/includes/rpi/systimer.c b/src/includes/rpi/systimer.c similarity index 100% rename from includes/rpi/systimer.c rename to src/includes/rpi/systimer.c diff --git a/includes/rpi/systimer.h b/src/includes/rpi/systimer.h similarity index 100% rename from includes/rpi/systimer.h rename to src/includes/rpi/systimer.h diff --git a/kernel.c b/src/kernel.c similarity index 100% rename from kernel.c rename to src/kernel.c diff --git a/toolchain-arm-none-eabi-rpi.cmake b/src/toolchain-arm-none-eabi-rpi.cmake similarity index 100% rename from toolchain-arm-none-eabi-rpi.cmake rename to src/toolchain-arm-none-eabi-rpi.cmake