Skip to content

Commit

Permalink
Merge pull request #33 from kendryte/develop
Browse files Browse the repository at this point in the history
Release 0.7.0
  • Loading branch information
sunnycase authored Dec 21, 2018
2 parents d63ede3 + 7ec66a6 commit bb46837
Show file tree
Hide file tree
Showing 431 changed files with 157,983 additions and 161 deletions.
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,5 @@ CMakeSettings.json
.idea
*.tar
*.tar.*
cmake-build-*
cmake-build-*
/third_party/userland
3 changes: 1 addition & 2 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -22,5 +22,4 @@ add_subdirectory(third_party)

# compile project
add_source_files(src/${PROJ}/*.c src/${PROJ}/*.s src/${PROJ}/*.S src/${PROJ}/*.cpp)
include(./cmake/executable.cmake)

include(./cmake/executable.cmake)
4 changes: 1 addition & 3 deletions cmake/common.cmake
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
cmake_minimum_required(VERSION 3.0)
cmake_policy(VERSION 3.10)
cmake_policy(VERSION 3.0)

include(${CMAKE_CURRENT_LIST_DIR}/macros.cmake)
include(${CMAKE_CURRENT_LIST_DIR}/macros.internal.cmake)
Expand Down Expand Up @@ -37,7 +37,5 @@ include(${CMAKE_CURRENT_LIST_DIR}/compile-flags.cmake)

include(${CMAKE_CURRENT_LIST_DIR}/fix-9985.cmake)

#add_source_files(${CMAKE_CURRENT_LIST_DIR}/../lib/bsp/crt.S)

removeDuplicateSubstring(${CMAKE_C_FLAGS} CMAKE_C_FLAGS)
removeDuplicateSubstring(${CMAKE_CXX_FLAGS} CMAKE_CXX_FLAGS)
2 changes: 1 addition & 1 deletion cmake/compile-flags.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ add_compile_flags(BOTH
-fdata-sections
-fstrict-volatile-bitfields
-fno-zero-initialized-in-bss
-Os
-O2
-ggdb
)

Expand Down
6 changes: 5 additions & 1 deletion cmake/executable.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,14 @@ set_target_properties(${PROJECT_NAME} PROPERTIES LINKER_LANGUAGE C)

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

if (EXISTS ${SDK_ROOT}/src/${PROJ}/project.cmake)
include(${SDK_ROOT}/src/${PROJ}/project.cmake)
endif ()

IF(SUFFIX)
SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES SUFFIX ${SUFFIX})
ENDIF()
Expand Down
3 changes: 3 additions & 0 deletions cmake/toolchain.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,9 @@ global_set(CMAKE_AR "${TOOLCHAIN}/riscv64-unknown-elf-ar${EXT}")
global_set(CMAKE_OBJCOPY "${TOOLCHAIN}/riscv64-unknown-elf-objcopy${EXT}")
global_set(CMAKE_SIZE "${TOOLCHAIN}/riscv64-unknown-elf-size${EXT}")
global_set(CMAKE_OBJDUMP "${TOOLCHAIN}/riscv64-unknown-elf-objdump${EXT}")
if (WIN32)
global_set(CMAKE_MAKE_PROGRAM "${TOOLCHAIN}/mingw32-make${EXT}")
endif ()

execute_process(COMMAND ${CMAKE_C_COMPILER} -print-file-name=crt0.o OUTPUT_STRIP_TRAILING_WHITESPACE OUTPUT_VARIABLE CRT0_OBJ)
execute_process(COMMAND ${CMAKE_C_COMPILER} -print-file-name=crtbegin.o OUTPUT_STRIP_TRAILING_WHITESPACE OUTPUT_VARIABLE CRTBEGIN_OBJ)
Expand Down
3 changes: 2 additions & 1 deletion lds/kendryte.ld
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ SECTIONS
.text.start :
{
KEEP( *(.text.start) )
KEEP( *(.text.systick) )
} > ram : DATA

.init :
Expand Down Expand Up @@ -83,7 +84,6 @@ SECTIONS
{
*(.sdata2 .sdata2.* .gnu.linkonce.s2.*)
} > ram : DATA
.sbss2 : { *(.sbss2 .sbss2.* .gnu.linkonce.sb2.*) } > ram : DYN_DATA
/* Exception handling */
.eh_frame :
{
Expand Down Expand Up @@ -165,6 +165,7 @@ SECTIONS

. = .;
__bss_start = .;
.sbss2 : { *(.sbss2 .sbss2.* .gnu.linkonce.sb2.*) } > ram : DYN_DATA
.sbss :
{
*(.dynsbss)
Expand Down
3 changes: 2 additions & 1 deletion lib/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,5 @@ INCLUDE_DIRECTORIES(${SDK_ROOT}/third_party)
ADD_SUBDIRECTORY(hal)
ADD_SUBDIRECTORY(freertos)
ADD_SUBDIRECTORY(bsp)
ADD_SUBDIRECTORY(drivers)
ADD_SUBDIRECTORY(drivers)
ADD_SUBDIRECTORY(posix)
2 changes: 2 additions & 0 deletions lib/arch/include/platform.h
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,10 @@
#define _BSP_PLATFORM_H

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

/* clang-format off */
Expand Down
14 changes: 1 addition & 13 deletions lib/bsp/crt.S
Original file line number Diff line number Diff line change
Expand Up @@ -468,16 +468,4 @@ _init:
_fini:
ret
.size _init, .-_init
.size _fini, .-_fini

.section ".tdata.begin"
.globl _tdata_begin
_tdata_begin:

.section ".tdata.end"
.globl _tdata_end
_tdata_end:

.section ".tbss.end"
.globl _tbss_end
_tbss_end:
.size _fini, .-_fini
3 changes: 3 additions & 0 deletions lib/bsp/device/dmac.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -586,6 +586,9 @@ class k_dma_driver : public dma_driver, public static_object, public exclusive_o

xSemaphoreGiveFromISR(driver.session_.completion_event, &xHigherPriorityTaskWoken);
}

if (xHigherPriorityTaskWoken)
portYIELD();
}

static int is_memory(uintptr_t address)
Expand Down
47 changes: 41 additions & 6 deletions lib/bsp/device/rtc.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -44,11 +44,10 @@ class k_rtc_driver : public rtc_driver, public static_object, public free_object
{
sysctl_clock_enable(clock_);

rtc_timer_set_mode(RTC_TIMER_SETTING);
/* Unprotect RTC */
rtc_protect_set( 0);
rtc_protect_set(0);
/* Set RTC clock frequency */
rtc_timer_set_clock_frequency(sysctl_clock_get_freq(SYSCTL_CLOCK_PLL0));
rtc_timer_set_clock_frequency(sysctl_clock_get_freq(SYSCTL_CLOCK_IN0));
rtc_timer_set_clock_count_value(1);

/* Set RTC mode to timer running mode */
Expand All @@ -62,15 +61,18 @@ class k_rtc_driver : public rtc_driver, public static_object, public free_object

virtual void get_datetime(tm &datetime) override
{
if (rtc_timer_get_mode() != RTC_TIMER_RUNNING)
return;

rtc_date_t timer_date = read_pod(rtc_.date);
rtc_time_t timer_time = read_pod(rtc_.time);
rtc_extended_t timer_extended = read_pod(rtc_.extended);

datetime.tm_sec = timer_time.second % 60;
datetime.tm_min = timer_time.minute % 60;
datetime.tm_hour = timer_time.hour % 24;
datetime.tm_mday = timer_date.day % 31;
datetime.tm_mon = (timer_date.month % 12) - 1;
datetime.tm_mday = (timer_date.day - 1)% 31 + 1;
datetime.tm_mon = (timer_date.month - 1) % 12;
datetime.tm_year = (timer_date.year % 100) + (timer_extended.century * 100) - 1900;
datetime.tm_wday = timer_date.week;
datetime.tm_yday = rtc_get_yday(datetime.tm_year + 1900, datetime.tm_mon + 1, datetime.tm_mday);
Expand Down Expand Up @@ -224,6 +226,35 @@ class k_rtc_driver : public rtc_driver, public static_object, public free_object
return 0;
}

rtc_timer_mode_t rtc_timer_get_mode(void)
{
rtc_register_ctrl_t register_ctrl = read_pod(rtc_.register_ctrl);
rtc_timer_mode_t timer_mode = RTC_TIMER_PAUSE;

if ((!register_ctrl.read_enable) && (!register_ctrl.write_enable))
{
/* RTC_TIMER_PAUSE */
timer_mode = RTC_TIMER_PAUSE;
}
else if ((register_ctrl.read_enable) && (!register_ctrl.write_enable))
{
/* RTC_TIMER_RUNNING */
timer_mode = RTC_TIMER_RUNNING;
}
else if ((!register_ctrl.read_enable) && (register_ctrl.write_enable))
{
/* RTC_TIMER_SETTING */
timer_mode = RTC_TIMER_SETTING;
}
else
{
/* Something is error, reset timer mode */
rtc_timer_set_mode(timer_mode);
}

return timer_mode;
}

int rtc_protect_set(int enable)
{
rtc_register_ctrl_t register_ctrl = read_pod(rtc_.register_ctrl);
Expand Down Expand Up @@ -286,9 +317,11 @@ class k_rtc_driver : public rtc_driver, public static_object, public free_object
int rtc_timer_set_clock_frequency(unsigned int frequency)
{
rtc_initial_count_t initial_count;

initial_count.count = frequency;
rtc_timer_set_mode(RTC_TIMER_SETTING);
write_pod(rtc_.initial_count, initial_count);
rtc_timer_set_mode(RTC_TIMER_RUNNING);
return 0;
}

Expand All @@ -297,7 +330,9 @@ class k_rtc_driver : public rtc_driver, public static_object, public free_object
rtc_current_count_t current_count;

current_count.count = count;
rtc_timer_set_mode(RTC_TIMER_SETTING);
write_pod(rtc_.current_count, current_count);
rtc_timer_set_mode(RTC_TIMER_RUNNING);
return 0;
}

Expand Down
Loading

0 comments on commit bb46837

Please sign in to comment.