Skip to content

Commit

Permalink
add cJSON library
Browse files Browse the repository at this point in the history
  • Loading branch information
user authored and YuzukiTsuru committed Dec 8, 2023
1 parent ab97aaf commit 38a6a37
Show file tree
Hide file tree
Showing 62 changed files with 9,181 additions and 672 deletions.
13 changes: 12 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -85,12 +85,14 @@ set(LINK_SCRIPT_BIN ${CMAKE_SOURCE_DIR}/link/link_bin.ld)

include_directories(
include
include/cli
include/arch
include/drivers
include/reg
include/lib/fatfs
include/lib/fdt
include/lib/elf
include/lib/cJSON
${PROJECT_BINARY_DIR}
)

Expand All @@ -103,11 +105,19 @@ add_library(SyterKit
src/string/memcpy.S
src/string/memset.S
src/string/memcmp.S
# cli
src/cli/commands.c
src/cli/history.c
src/cli/lineedit.c
src/cli/parse.c
src/cli/shell.c
# exception & common
src/exception.c
src/common.c
src/jmp.c
src/uart.c
src/ctype.c
src/fdt_wrapper.c
# deiver
drivers/sys-clk.c
drivers/sys-dma.c
Expand All @@ -120,9 +130,10 @@ add_library(SyterKit
drivers/sys-sid.c
drivers/sys-timer.c
drivers/sys-uart.c
drivers/sys-wdt.c
)

target_link_libraries(SyterKit gcc)
target_link_libraries(SyterKit gcc fdt)

add_subdirectory(lib)

Expand Down
6 changes: 6 additions & 0 deletions app/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,14 @@ add_subdirectory(read_chip_efuse)

add_subdirectory(syter_boot)

add_subdirectory(syter_bootargs)

add_subdirectory(load_e907)

add_subdirectory(syter_amp)

add_subdirectory(fdt_parser)

add_subdirectory(cli_test)

add_subdirectory(fdt_cli)
7 changes: 7 additions & 0 deletions app/cli_test/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# SPDX-License-Identifier: Apache-2.0

add_syterkit_app(cli_test
start.S
main.c
eabi_compat.c
)
14 changes: 14 additions & 0 deletions app/cli_test/eabi_compat.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
/* SPDX-License-Identifier: Apache-2.0 */

void abort(void) {
while (1)
;
}

int raise(int signum) {
return 0;
}

/* Dummy function to avoid linker complaints */
void __aeabi_unwind_cpp_pr0(void) {
}
46 changes: 46 additions & 0 deletions app/cli_test/main.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
/* SPDX-License-Identifier: Apache-2.0 */

#include <stdbool.h>
#include <stddef.h>
#include <stdint.h>
#include <types.h>

#include <log.h>

#include <common.h>

#include <cli.h>
#include <cli_shell.h>
#include <cli_termesc.h>

sunxi_serial_t uart_dbg = {
.base = 0x02500000,
.id = 0,
.gpio_tx = {GPIO_PIN(PORTH, 9), GPIO_PERIPH_MUX5},
.gpio_rx = {GPIO_PIN(PORTH, 10), GPIO_PERIPH_MUX5},
};

msh_declare_command(helloworld);

msh_define_help(helloworld, "display helloworld", "Usage: helloworld\n");
int cmd_helloworld(int argc, const char **argv) {
printk(LOG_LEVEL_MUTE, "Hello World!\n");
return 0;
}

const msh_command_entry commands[] = {
msh_define_command(helloworld),
msh_command_end,
};

int main(void) {
sunxi_serial_init(&uart_dbg);

sunxi_clk_init();

printk(LOG_LEVEL_INFO, "Hello World!\n");

syterkit_shell_attach(commands);

return 0;
}
226 changes: 226 additions & 0 deletions app/cli_test/start.S
Original file line number Diff line number Diff line change
@@ -0,0 +1,226 @@
/* SPDX-License-Identifier: Apache-2.0 */

#include <linkage.h>

#define ARMV7_USR_MODE 0x10
#define ARMV7_FIQ_MODE 0x11
#define ARMV7_IRQ_MODE 0x12
#define ARMV7_SVC_MODE 0x13
#define ARMV7_MON_MODE 0x16
#define ARMV7_ABT_MODE 0x17
#define ARMV7_UND_MODE 0x1b
#define ARMV7_SYSTEM_MODE 0x1f
#define ARMV7_MODE_MASK 0x1f
#define ARMV7_FIQ_MASK 0x40
#define ARMV7_IRQ_MASK 0x80

.arm
.globl reset
.text

reset:
/* Boot head information for BROM */
.long 0xea000016
.byte 'e', 'G', 'O', 'N', '.', 'B', 'T', '0'
.long 0x12345678 /* checksum */
.long __spl_size /* spl size */
.long 0x30 /* boot header size */
.long 0x30303033 /* boot header version */
.long 0x00020000 /* return value */
.long 0x00028000 /* run address */
.long 0x0 /* eGON version */
.byte 0x00, 0x00, 0x00, 0x00 /* platform information - 8byte */
.byte 0x34, 0x2e, 0x30, 0x00

/*
* The actual reset code
*/
mrs r0, cpsr
bic r0, r0, #ARMV7_MODE_MASK
orr r0, r0, #ARMV7_SVC_MODE
orr r0, r0, #(ARMV7_IRQ_MASK | ARMV7_FIQ_MASK)
bic r0, r0, #(1<<9) @set little-endian
msr cpsr_c, r0

/* Set vector base address register */

ldr r0, =_vector
mcr p15, 0, r0, c12, c0, 0
mrc p15, 0, r0, c1, c0, 0
bic r0, #(1 << 13)
mcr p15, 0, r0, c1, c0, 0

mrc p15, 0, r0, c1, c0, 0
bic r0, r0, #0x00002000 @ clear bits 13 (--V-)
bic r0, r0, #0x00000007 @ clear bits 2:0 (-CAM)
orr r0, r0, #0x00000800 @ set bit 11 (Z---) BTB
bic r0, r0, #0x00001000 @ clear bit 12 (I) I-cache
mcr p15, 0, r0, c1, c0, 0

/* Enable neon/vfp unit */
mrc p15, 0, r0, c1, c0, 2
orr r0, r0, #(0xf << 20)
mcr p15, 0, r0, c1, c0, 2
isb
mov r0, #0x40000000
vmsr fpexc, r0

/* Set stack pointer */
ldr sp, =__stack_srv_end

bl clear_bss

/*
* disable interrupts (FIQ and IRQ), also set the cpu to SVC32 mode,
* except if in HYP mode already
*/
mrs r0, cpsr
and r1, r0, #0x1f @ mask mode bits
teq r1, #0x1a @ test for HYP mode
bicne r0, r0, #0x1f @ clear all mode bits
orrne r0, r0, #0x13 @ set SVC mode
orr r0, r0, #0xc0 @ disable FIQ and IRQ
msr cpsr,r0

@set cntfrq to 24M
ldr r0, =24000000
mcr p15, 0, r0, c14, c0, 0

bl set_timer_count

bl main

clear_bss:
ldr r0, =_sbss
ldr r1, =_ebss
mov r2, #0

clbss_1:
stmia r0!, {r2}
cmp r0, r1
blt clbss_1

mov pc, lr

_vector:
b reset
ldr pc, _undefined_instruction
ldr pc, _software_interrupt
ldr pc, _prefetch_abort
ldr pc, _data_abort
ldr pc, _not_used
ldr pc, _irq
ldr pc, _fiq

_undefined_instruction:
.word undefined_instruction
_software_interrupt:
.word software_interrupt
_prefetch_abort:
.word prefetch_abort
_data_abort:
.word data_abort
_not_used:
.word not_used
_irq:
.word irq
_fiq:
.word fiq

.macro save_regs
str lr, [sp, #-4]
mrs lr, spsr_all
str lr, [sp, #-8]
str r1, [sp, #-12]
str r0, [sp, #-16]
mov r0, sp
cps #0x13
ldr r1, [r0, #-4]
str r1, [sp, #-4]!
ldr r1, [r0, #-8]
str r1, [sp, #-(4 * 16)]
ldr r1, [r0, #-12]
ldr r0, [r0, #-16]
stmdb sp, {r0 - r14}^
sub sp, sp, #(4 * 16)
ldr r4, [sp]
and r0, r4, #0x1f
cmp r0, #0x10
beq 10f
cmp r0, #0x13
beq 11f
b .
11: add r1, sp, #(4 * 17)
str r1, [sp, #(4 * 14)]
str lr, [sp, #(4 * 15)]
10: add r1, sp, #(4 * 17)
str r1, [sp, #-4]!
mov r0, sp
.endm

.macro restore_regs
mov r12, sp
ldr sp, [r12], #4
ldr r1, [r12], #4
msr spsr_cxsf, r1
and r0, r1, #0x1f
cmp r0, #0x10
beq 20f
cmp r0, #0x13
beq 21f
b .
20: ldr lr, [r12, #(4 * 15)]
ldmia r12, {r0 - r14}^
movs pc, lr
21: ldm r12, {r0 - r15}^
mov r0, r0
.endm

/*
* Exception handlers
*/
.align 5
undefined_instruction:
sub lr, lr, #4
save_regs
bl arm32_do_undefined_instruction
restore_regs

.align 5
software_interrupt:
sub lr, lr, #4
save_regs
bl arm32_do_software_interrupt
restore_regs

.align 5
prefetch_abort:
sub lr, lr, #4
save_regs
bl arm32_do_prefetch_abort
restore_regs

.align 5
data_abort:
sub lr, lr, #8
save_regs
bl arm32_do_data_abort
restore_regs

.align 5
not_used:
b .

.align 5
irq:
sub lr, lr, #4
save_regs
bl arm32_do_irq
restore_regs

.align 5
fiq:
sub lr, lr, #4
save_regs
bl arm32_do_fiq
restore_regs
7 changes: 7 additions & 0 deletions app/fdt_cli/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# SPDX-License-Identifier: Apache-2.0

add_syterkit_app(fdt_cli
start.S
main.c
eabi_compat.c
)
14 changes: 14 additions & 0 deletions app/fdt_cli/eabi_compat.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
/* SPDX-License-Identifier: Apache-2.0 */

void abort(void) {
while (1)
;
}

int raise(int signum) {
return 0;
}

/* Dummy function to avoid linker complaints */
void __aeabi_unwind_cpp_pr0(void) {
}
Loading

0 comments on commit 38a6a37

Please sign in to comment.