Files
libretiny/cores/realtek-ambz2/base/lt_api.c
2023-05-29 22:25:23 +02:00

139 lines
2.9 KiB
C

/* Copyright (c) Kuba Szczodrzyński 2023-05-22. */
#include <libretiny.h>
#include <sdk_private.h>
extern uint8_t lt_uart_port;
void lt_init_family() {
// make the SDK less verbose by default
ConfigDebugErr = _DBG_MISC_ | _DBG_FAULT_ | _DBG_BOOT_;
ConfigDebugWarn = 0;
ConfigDebugInfo = 0;
lt_uart_port = LT_UART_DEFAULT_PORT;
}
/* _____ _____ _ _
/ ____| __ \| | | |
| | | |__) | | | |
| | | ___/| | | |
| |____| | | |__| |
\_____|_| \____*/
lt_cpu_model_t lt_cpu_get_model() {
uint32_t *addr = (uint32_t *)0x40000038;
uint8_t flash_mode = (addr[0] >> 5) & 0b11;
uint32_t chip_id = 0;
hal_get_chip_id(&chip_id);
chip_id <<= 2;
return CPU_MODEL_ENUM(FAMILY, (chip_id & 0xFF) | flash_mode);
}
const char *lt_cpu_get_core_type() {
return "ARM Cortex-M33 (ARMv8-M)";
}
uint32_t lt_cpu_get_freq() {
return hal_syson_query_sys_clk();
}
/*_____ _
| __ \ (_)
| | | | _____ ___ ___ ___
| | | |/ _ \ \ / / |/ __/ _ \
| |__| | __/\ V /| | (_| __/
|_____/ \___| \_/ |_|\___\__*/
void lt_get_device_mac(uint8_t *mac) {
efuse_logical_read(0x11A, 6, mac);
}
void lt_reboot() {
sys_cpu_reset();
while (1) {}
}
bool lt_reboot_download_mode() {
sys_uart_download_mode();
while (1) {}
return true;
}
lt_reboot_reason_t lt_get_reboot_reason() {
hal_reset_reason_t reason = -1;
rtl8710c_reset_reason_get(&reason);
switch (reason) {
case HAL_RESET_REASON_POWER_ON:
return REBOOT_REASON_POWER;
case HAL_RESET_REASON_SOFTWARE:
return REBOOT_REASON_SOFTWARE;
case HAL_RESET_REASON_WATCHDOG:
return REBOOT_REASON_WATCHDOG;
case HAL_RESET_REASON_JTAG:
return REBOOT_REASON_DEBUGGER;
default:
return REBOOT_REASON_UNKNOWN;
}
}
bool lt_set_debug_mode(lt_debug_mode_t mode) {
switch (mode) {
case DEBUG_MODE_OFF:
if (hal_misc_jtag_pin_ctrl(0) != HAL_OK)
return false;
if (hal_misc_swd_pin_ctrl(0) != HAL_OK)
return false;
return true;
case DEBUG_MODE_JTAG:
if (hal_misc_swd_pin_ctrl(0) != HAL_OK)
return false;
if (hal_misc_jtag_pin_ctrl(1) != HAL_OK)
return false;
return true;
case DEBUG_MODE_SWD:
if (hal_misc_jtag_pin_ctrl(0) != HAL_OK)
return false;
if (hal_misc_swd_pin_ctrl(1) != HAL_OK)
return false;
return true;
default:
return false;
}
}
/*__ __
| \/ |
| \ / | ___ _ __ ___ ___ _ __ _ _
| |\/| |/ _ \ '_ ` _ \ / _ \| '__| | | |
| | | | __/ | | | | | (_) | | | |_| |
|_| |_|\___|_| |_| |_|\___/|_| \__, |
__/ |
|__*/
uint32_t lt_ram_get_size() {
return 256 * 1024;
}
/* ____ _______
/ __ \__ __|/\
| | | | | | / \
| | | | | | / /\ \
| |__| | | |/ ____ \
\____/ |_/_/ \*/
lt_ota_type_t lt_ota_get_type() {
return OTA_TYPE_DUAL;
}
bool lt_ota_is_valid(uint8_t index) {
return false;
}
uint8_t lt_ota_dual_get_current() {
return 0;
}
uint8_t lt_ota_dual_get_stored() {
return 0;
}
bool lt_ota_switch(bool revert) {
return false;
}