forked from Elron_dev/elbear_arduino_bsp
Обновление до версии 0.3.0
- обновлен elbear_fw_bootloader - добавлена проверка контрольной суммы каждой строки hex файла. - в модуль работы с АЦП добавлена функция analogReadResolution(). Функция analogRead() теперь возвращает усредненное по 10 измерениям значение. - общая функция обработки прерываний перенесена в память RAM. Обработчики прерываний модулей External Interrupts и Advanced I/O (функция tone()) так же перенесены в память RAM для увеличения скорости выполнения кода. - в пакет добавлены библиотеки EEPROM, Servo, SoftSerial, NeoPixel, MFRC522 адаптированные для работы с платой Elbear Ace-Uno. - добавлено описание особенностей работы с пакетом
This commit is contained in:
1 parent
7a7c552743
commit
766b7b32ea
114 files changed
+11064
-666
No files matched your search
@@ -10,36 +10,52 @@ MEMORY {
|
||||
}
|
||||
|
||||
STACK_SIZE = 1024;
|
||||
HEAP_SIZE = 1024;
|
||||
|
||||
CL_SIZE = 16;
|
||||
|
||||
SECTIONS {
|
||||
.text ORIGIN(ram) : {
|
||||
PROVIDE(__TEXT_START__ = .);
|
||||
*crt0.o(.text .text.*)
|
||||
*crt0.S.o(.text .text.*)
|
||||
*(.text.smallsysteminit)
|
||||
*(.text.SmallSystemInit)
|
||||
. = ORIGIN(ram) + 0xC0;
|
||||
KEEP(*crt0.o(.trap_text))
|
||||
KEEP(*crt0.S.o(.trap_text))
|
||||
|
||||
*(.text)
|
||||
*(.text.*)
|
||||
*(.rodata)
|
||||
*(.rodata.*)
|
||||
. = ALIGN(CL_SIZE);
|
||||
PROVIDE(__TEXT_END__ = .);
|
||||
} >ram
|
||||
|
||||
.init_array (READONLY) :
|
||||
{
|
||||
PROVIDE_HIDDEN (__init_array_start = .);
|
||||
KEEP (*(SORT_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*)))
|
||||
KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors))
|
||||
PROVIDE_HIDDEN (__init_array_end = .);
|
||||
|
||||
PROVIDE_HIDDEN (__fini_array_start = .);
|
||||
KEEP(*(SORT_BY_INIT_PRIORITY(.fini_array.*)))
|
||||
KEEP(*(.fini_array))
|
||||
PROVIDE_HIDDEN (__fini_array_end = .);
|
||||
|
||||
PROVIDE(__TEXT_END__ = .);
|
||||
} >ram AT>ram
|
||||
|
||||
.data :
|
||||
AT( __TEXT_END__ ) {
|
||||
PROVIDE(__DATA_START__ = .);
|
||||
_gp = .;
|
||||
*(.srodata.cst16) *(.srodata.cst8) *(.srodata.cst4) *(.srodata.cst2) *(.srodata*)
|
||||
*(.sdata .sdata.* .gnu.linkonce.s.*)
|
||||
*(.sdata .sdata.* .sdata* .sdata*.* .gnu.linkonce.s.*)
|
||||
*(.data .data.*)
|
||||
*(.ramfunc)
|
||||
. = ALIGN(CL_SIZE);
|
||||
} >ram
|
||||
|
||||
} >ram
|
||||
|
||||
__DATA_IMAGE_START__ = LOADADDR(.data);
|
||||
__DATA_IMAGE_END__ = LOADADDR(.data) + SIZEOF(.data);
|
||||
ASSERT(__DATA_IMAGE_END__ < ORIGIN(ram) + LENGTH(ram) - STACK_SIZE, "Data image overflows ram section")
|
||||
@@ -72,12 +88,19 @@ SECTIONS {
|
||||
PROVIDE(__BSS_END__ = .);
|
||||
} >ram
|
||||
|
||||
.heap : {
|
||||
PROVIDE(__heap_start = .);
|
||||
. += HEAP_SIZE;
|
||||
. = ALIGN(CL_SIZE);
|
||||
PROVIDE(__heap_end = .);
|
||||
} >ram
|
||||
|
||||
_end = .;
|
||||
PROVIDE(__end = .);
|
||||
|
||||
/* End of uninitalized data segement */
|
||||
|
||||
.stack ORIGIN(ram) + LENGTH(ram) - STACK_SIZE : {
|
||||
.stack ORIGIN(ram) + LENGTH(ram) - STACK_SIZE: {
|
||||
FILL(0);
|
||||
PROVIDE(__STACK_START__ = .);
|
||||
. += STACK_SIZE;
|
||||
|
||||
@@ -21,8 +21,8 @@ SECTIONS {
|
||||
*crt0.S.o(.text .text.*)
|
||||
*(.text.smallsysteminit)
|
||||
*(.text.SmallSystemInit)
|
||||
. = ORIGIN(rom) + 0xC0;
|
||||
KEEP(*crt0.S.o(.trap_text))
|
||||
/*. = ORIGIN(rom) + 0xC0;*/
|
||||
/*KEEP(*crt0.S.o(.trap_text))*/
|
||||
|
||||
*(.text)
|
||||
*(.text.*)
|
||||
@@ -50,15 +50,17 @@ SECTIONS {
|
||||
AT( __TEXT_END__ ) {
|
||||
PROVIDE(__DATA_START__ = .);
|
||||
_gp = .;
|
||||
. = ORIGIN(ram) + 0xC0;
|
||||
KEEP(*crt0.S.o(.trap_text))
|
||||
*(.srodata.cst16) *(.srodata.cst8) *(.srodata.cst4) *(.srodata.cst2) *(.srodata*)
|
||||
*(.sdata .sdata.* .sdata* .sdata*.* .gnu.linkonce.s.*)
|
||||
*(.data .data.*)
|
||||
. = ALIGN(CL_SIZE);
|
||||
PROVIDE(__DATA_END__ = .);
|
||||
} >ram
|
||||
|
||||
__DATA_IMAGE_START__ = LOADADDR(.data);
|
||||
__DATA_IMAGE_END__ = LOADADDR(.data) + SIZEOF(.data);
|
||||
ASSERT(__DATA_IMAGE_END__ < ORIGIN(rom) + LENGTH(rom), "Data image overflows rom section")
|
||||
|
||||
/* thread-local data segment */
|
||||
.tdata : {
|
||||
@@ -84,10 +86,26 @@ SECTIONS {
|
||||
|
||||
.bss : {
|
||||
*(.bss .bss.*)
|
||||
*(COMMON)
|
||||
. = ALIGN(CL_SIZE);
|
||||
PROVIDE(__BSS_END__ = .);
|
||||
} >ram
|
||||
|
||||
/* Code intended to be copied to REGION_RAM before execution */
|
||||
.ram_text :
|
||||
AT( ALIGN(__DATA_IMAGE_END__, CL_SIZE) ) {
|
||||
PROVIDE(__RAM_TEXT_START__ = .);
|
||||
*(.ram_text)
|
||||
. = ALIGN(CL_SIZE);
|
||||
PROVIDE(__RAM_TEXT_END__ = .);
|
||||
} > ram
|
||||
|
||||
__RAM_TEXT_IMAGE_START__ = LOADADDR(.ram_text);
|
||||
__RAM_TEXT_IMAGE_END__ = LOADADDR(.ram_text) + SIZEOF(.ram_text);
|
||||
ASSERT(__RAM_TEXT_IMAGE_END__ < ORIGIN(rom) + LENGTH(rom), "rom segment overflows")
|
||||
|
||||
ASSERT(__RAM_TEXT_END__ < ORIGIN(ram) + LENGTH(ram) - STACK_SIZE - HEAP_SIZE, "REGION_RAM section overflows")
|
||||
|
||||
.heap : {
|
||||
PROVIDE(__heap_start = .);
|
||||
. += HEAP_SIZE;
|
||||
|
||||
File renamed without changes.
@@ -62,6 +62,11 @@ memset_2:
|
||||
|
||||
_start:
|
||||
|
||||
li t0, 128000
|
||||
start_loop_delay:
|
||||
nop
|
||||
addi t0, t0, -1
|
||||
bnez t0, start_loop_delay
|
||||
# Init stack and global pointer
|
||||
#
|
||||
la_abs sp, __C_STACK_TOP__
|
||||
@@ -73,20 +78,19 @@ _start:
|
||||
la_abs a2, __DATA_IMAGE_END__
|
||||
la_abs a3, __DATA_START__
|
||||
memcpy a1, a2, a3, t0
|
||||
|
||||
# Init ramfunc
|
||||
#
|
||||
la_abs a1, __RAM_TEXT_IMAGE_START__
|
||||
la_abs a2, __RAM_TEXT_IMAGE_END__
|
||||
la_abs a3, __RAM_TEXT_START__
|
||||
memcpy a1, a2, a3, t0
|
||||
|
||||
# Clear bss
|
||||
#
|
||||
la_abs a1, __BSS_START__
|
||||
la_abs a2, __BSS_END__
|
||||
memset a1, a2, zero
|
||||
|
||||
#ifdef MIK32V0
|
||||
# Enable pad_config clocking
|
||||
#
|
||||
li t0, (1 << 3)
|
||||
li t1, 0x50014
|
||||
sw t0, (t1)
|
||||
#endif
|
||||
|
||||
jalr_abs ra, SmallSystemInit
|
||||
jalr_abs ra, SystemInit
|
||||
|
||||
Reference in new issue
Block a user