Skip to content

Commit

Permalink
Merge pull request #28 from kendryte/develop
Browse files Browse the repository at this point in the history
Release 0.6.0
  • Loading branch information
sunnycase authored Nov 2, 2018
2 parents ffc728b + 03b7fcb commit d63ede3
Show file tree
Hide file tree
Showing 196 changed files with 42,927 additions and 6,803 deletions.
4 changes: 1 addition & 3 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,7 @@ INCLUDE_DIRECTORIES(${CMAKE_CURRENT_LIST_DIR}/lib/arch/include ${CMAKE_CURRENT_L
header_directories(${SDK_ROOT}/lib)
# build library first
add_subdirectory(lib SDK)

# TODO
#add_subdirectory(third_party)
add_subdirectory(third_party)

# compile project
add_source_files(src/${PROJ}/*.c src/${PROJ}/*.s src/${PROJ}/*.S src/${PROJ}/*.cpp)
Expand Down
1 change: 1 addition & 0 deletions cmake/compile-flags.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ add_compile_flags(LD
# C Flags Settings
add_compile_flags(BOTH
-mcmodel=medany
-march=rv64imafdc
-fno-common
-ffunction-sections
-fdata-sections
Expand Down
2 changes: 1 addition & 1 deletion cmake/executable.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ set_target_properties(${PROJECT_NAME} PROPERTIES LINKER_LANGUAGE C)

target_link_libraries(${PROJECT_NAME}
-Wl,--start-group
m freertos bsp
m freertos c bsp drivers
-Wl,--end-group
)

Expand Down
11 changes: 6 additions & 5 deletions cmake/toolchain.cmake
Original file line number Diff line number Diff line change
@@ -1,7 +1,3 @@
if (NOT TOOLCHAIN)
message(FATAL_ERROR "TOOLCHAIN must be set, to absolute path of kendryte-toolchain dist/bin folder.")
endif ()

if (WIN32)
set(EXT ".exe")
else ()
Expand All @@ -11,11 +7,16 @@ endif ()
message(STATUS "Check for RISCV toolchain ...")

if(NOT TOOLCHAIN)
# do nothing
find_path(_TOOLCHAIN riscv64-unknown-elf-gcc${EXT})
global_set(TOOLCHAIN "${_TOOLCHAIN}")
elseif(NOT "${TOOLCHAIN}" MATCHES "/$")
global_set(TOOLCHAIN "${TOOLCHAIN}")
endif()

if (NOT TOOLCHAIN)
message(FATAL_ERROR "TOOLCHAIN must be set, to absolute path of kendryte-toolchain dist/bin folder.")
endif ()

message(STATUS "Using ${TOOLCHAIN} RISCV toolchain")

global_set(CMAKE_C_COMPILER "${TOOLCHAIN}/riscv64-unknown-elf-gcc${EXT}")
Expand Down
23 changes: 18 additions & 5 deletions lds/kendryte.ld
Original file line number Diff line number Diff line change
Expand Up @@ -73,14 +73,26 @@ SECTIONS
{
KEEP (*(SORT_NONE(.fini)))
} > ram : DATA
PROVIDE (__etext = .);
PROVIDE (_etext = .);
PROVIDE (etext = .);

/* Read-only data segment */
.rodata :
.rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } > ram : DATA
.rodata1 : { *(.rodata1) } > ram : DATA
.sdata2 :
{
*(.rdata)
*(.rodata .rodata.*)
*(.gnu.linkonce.r.*)
*(.sdata2 .sdata2.* .gnu.linkonce.s2.*)
} > ram : DATA
.sbss2 : { *(.sbss2 .sbss2.* .gnu.linkonce.sb2.*) } > ram : DYN_DATA
/* Exception handling */
.eh_frame :
{
KEEP (*(.eh_frame)) *(.eh_frame.*)
. = ALIGN(8);
} > ram : DATA
.gnu_extab : { *(.gnu_extab) } > ram : DATA
.gcc_except_table : { *(.gcc_except_table .gcc_except_table.*) } > ram : DATA
.exception_ranges : { *(.exception_ranges .exception_ranges*) } > ram : DATA

.preinit_array :
{
Expand Down Expand Up @@ -139,6 +151,7 @@ SECTIONS
*(.data .data.* .gnu.linkonce.d.*)
SORT(CONSTRUCTORS)
} > ram : DATA
.data1 : { *(.data1) } > ram : DATA
/* We want the small data sections together, so single-instruction offsets
can access them all, and initialized data all before uninitialized, so
we can shorten the on-disk segment size. */
Expand Down
7 changes: 7 additions & 0 deletions lib/.clang-format
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
BasedOnStyle: WebKit
BreakBeforeBraces: Allman
ConstructorInitializerAllOnOneLineOrOnePerLine: 'true'
UseTab: Never
PointerAlignment: Right
...
7 changes: 5 additions & 2 deletions lib/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
#project(kendryte)

ADD_SUBDIRECTORY(drivers)
INCLUDE_DIRECTORIES(${SDK_ROOT}/third_party)

ADD_SUBDIRECTORY(hal)
ADD_SUBDIRECTORY(freertos)
ADD_SUBDIRECTORY(bsp)
ADD_SUBDIRECTORY(bsp)
ADD_SUBDIRECTORY(drivers)
5 changes: 5 additions & 0 deletions lib/arch/include/platform.h
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,11 @@
#ifndef _BSP_PLATFORM_H
#define _BSP_PLATFORM_H

#ifdef __INTELLISENSE__
#define __attribute__(x)
#define _HAS_CXX17 1
#endif

/* clang-format off */
/* Register base address */

Expand Down
2 changes: 1 addition & 1 deletion lib/bsp/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -19,4 +19,4 @@ SET_SOURCE_FILES_PROPERTIES(${ASSEMBLY_FILES} PROPERTIES COMPILE_FLAGS "-x assem

ADD_LIBRARY(bsp STATIC ${LIB_SRC})
SET_TARGET_PROPERTIES(bsp PROPERTIES LINKER_LANGUAGE C)
TARGET_LINK_LIBRARIES(bsp PRIVATE drivers freertos)
TARGET_LINK_LIBRARIES(bsp PRIVATE hal freertos)
80 changes: 70 additions & 10 deletions lib/bsp/crt.S
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
.globl _start
_start:
j 1f
.half 0x0000
.word 0xdeadbeef
1:
csrw mideleg, 0
Expand Down Expand Up @@ -239,10 +240,79 @@ trap_entry:
.handle_syscall:
ld t0, 0x0(sp)
addi sp, sp, REGBYTES
addi sp, sp, -29 * REGBYTES

sd ra, 0 * REGBYTES(sp)
sd t0, 1 * REGBYTES(sp)
sd t1, 2 * REGBYTES(sp)
sd t2, 3 * REGBYTES(sp)
sd a6, 4 * REGBYTES(sp)
sd t3, 5 * REGBYTES(sp)
sd t4, 6 * REGBYTES(sp)
sd t5, 7 * REGBYTES(sp)
sd t6, 8 * REGBYTES(sp)

fsd ft0, ( 0 + 9) * REGBYTES(sp)
fsd ft1, ( 1 + 9) * REGBYTES(sp)
fsd ft2, ( 2 + 9) * REGBYTES(sp)
fsd ft3, ( 3 + 9) * REGBYTES(sp)
fsd ft4, ( 4 + 9) * REGBYTES(sp)
fsd ft5, ( 5 + 9) * REGBYTES(sp)
fsd ft6, ( 6 + 9) * REGBYTES(sp)
fsd ft7, ( 7 + 9) * REGBYTES(sp)
fsd fa0, ( 8 + 9) * REGBYTES(sp)
fsd fa1, ( 9 + 9) * REGBYTES(sp)
fsd fa2, (10 + 9) * REGBYTES(sp)
fsd fa3, (11 + 9) * REGBYTES(sp)
fsd fa4, (12 + 9) * REGBYTES(sp)
fsd fa5, (13 + 9) * REGBYTES(sp)
fsd fa6, (14 + 9) * REGBYTES(sp)
fsd fa7, (15 + 9) * REGBYTES(sp)
fsd ft8, (16 + 9) * REGBYTES(sp)
fsd ft9, (17 + 9) * REGBYTES(sp)
fsd ft10, (18 + 9) * REGBYTES(sp)
fsd ft11, (19 + 9) * REGBYTES(sp)

csrr a6, mepc
jal handle_syscall
csrw mepc, a1

# /* Run in machine mode */
li t0, MSTATUS_MPP | MSTATUS_MPIE
csrs mstatus, t0

ld ra, 0 * REGBYTES(sp)
ld t0, 1 * REGBYTES(sp)
ld t1, 2 * REGBYTES(sp)
ld t2, 3 * REGBYTES(sp)
ld a6, 4 * REGBYTES(sp)
ld t3, 5 * REGBYTES(sp)
ld t4, 6 * REGBYTES(sp)
ld t5, 7 * REGBYTES(sp)
ld t6, 8 * REGBYTES(sp)

fld ft0, ( 0 + 9) * REGBYTES(sp)
fld ft1, ( 1 + 9) * REGBYTES(sp)
fld ft2, ( 2 + 9) * REGBYTES(sp)
fld ft3, ( 3 + 9) * REGBYTES(sp)
fld ft4, ( 4 + 9) * REGBYTES(sp)
fld ft5, ( 5 + 9) * REGBYTES(sp)
fld ft6, ( 6 + 9) * REGBYTES(sp)
fld ft7, ( 7 + 9) * REGBYTES(sp)
fld fa0, ( 8 + 9) * REGBYTES(sp)
fld fa1, ( 9 + 9) * REGBYTES(sp)
fld fa2, (10 + 9) * REGBYTES(sp)
fld fa3, (11 + 9) * REGBYTES(sp)
fld fa4, (12 + 9) * REGBYTES(sp)
fld fa5, (13 + 9) * REGBYTES(sp)
fld fa6, (14 + 9) * REGBYTES(sp)
fld fa7, (15 + 9) * REGBYTES(sp)
fld ft8, (16 + 9) * REGBYTES(sp)
fld ft9, (17 + 9) * REGBYTES(sp)
fld ft10, (18 + 9) * REGBYTES(sp)
fld ft11, (19 + 9) * REGBYTES(sp)

addi sp, sp, 29 * REGBYTES
mret
.handle_except:
ld t0, 0x0(sp)
Expand Down Expand Up @@ -400,16 +470,6 @@ _fini:
.size _init, .-_init
.size _fini, .-_fini

.global __register_frame_info
.type __register_frame_info, @function
.global __deregister_frame_info
.type __deregister_frame_info, @function
__register_frame_info:
__deregister_frame_info:
ret
.size __register_frame_info, .-__register_frame_info
.size __deregister_frame_info, .-__deregister_frame_info

.section ".tdata.begin"
.globl _tdata_begin
_tdata_begin:
Expand Down
Loading

0 comments on commit d63ede3

Please sign in to comment.