重寫了GD32VF103的啟動指令碼和鏈結指令碼

2021-10-12 04:52:22 字數 2100 閱讀 6161

啟動指令碼去掉了中斷向量表表部分,能節省一部分**空間,後續可以自己定義,只要對齊到512位元組(這樣支援最多128個中斷)就可以了。

另外去掉了c的init、c++的構造析構支援。因此不能使用c庫。不使用標準c庫可以省下很多**空間。

/* gd32vf103 startup assembly by mengxp */

#include "riscv_encoding.h"

.section .init

.globl _start

.type _start, @function

_start:

/* disable global interrupt */

csrc csr_mstatus, mstatus_mie

/* jump to the absolute address of 1f */

lui ra, %hi(1f)

jr %lo(1f)(ra)

1: /* enable fpu */

#ifdef __riscv_flen

li t0, mstatus_fs

csrs mstatus, t0

csrw fcsr, x0

#endif

/* load stack pointer */

la sp, _sp

/* load initialized data section */

la a0, _sidata

la a1, _sdata

la a2, _edata

bgeu a1, a2, 2f

1: lw t0, (a0)

sw t0, (a1)

addi a0, a0, 4

addi a1, a1, 4

bltu a1, a2, 1b

2: /* clear bss section */

la a0, _sbss

la a1, _ebss

bgeu a0, a1, 2f

1: sw zero, (a0)

addi a0, a0, 4

bltu a0, a1, 1b

2: /* enable mcycle */

csrci csr_mcountinhibit, 0x5

/* main entry */

call main

_end:

j _end

/* gd32vf103 linker script by mengxp */

output_arch("riscv")

entry(_start)

/* run in flash */

memory

/* run in ram */

/*memory

*//* required amount of stack */

stack_size = 0x400;

sections >flash

/* the program code and other data goes into flash */

.text : >flash

/* constant data goes into flash */

.rodata : >flash

.preinit_array : >flash

.init_array : >flash

.fini_array : >flash

/* used by the startup to initialize data */

provide( _sidata = loadaddr(.data) );

/* initialized data sections goes into ram, load lma copy after code */

.data : >ram at> flash

/* uninitialized data section */

.bss : >ram

.stack origin(ram) + length(ram) - stack_size : >ram

}

GD32之RTC操作注意事項

由於gd32官方例程過於簡單,在實際專案開發中如果套用官方例程往往不能滿足應用中的需求。下面就rtc的操作總結了幾條比較關鍵注意點。一 在操作rtc前要先將rtc和apb介面同步 呼叫函式 rtc register sync wait 由於對rtc的操作要通過apb介面,並且當系統復位或者從低功耗模...

關於GD32除錯JLINK連線不上的問題

最近有乙個專案要用到gd32e230,然後經過了繪畫原理圖 pcb佈線 焊接元件,再到最後一步的除錯,發現用jlink的swd模式無論怎麼也連不上。在和同事糾結了兩天之後,發現了原來是pcb裡面ic的封裝畫錯了。以下把gd32和stm32官方文件中關於封裝的部分作乙個對比。gd32官方文件上關於封裝...

兆易創新GD32微控制器的入坑簡介

一 關於兆易創新gd32的定位 從mcu的市場份額來看,占有率最大莫過於意法半導體st,不得不說生態的建設 包括資料,市場推廣和服務等 確實是下了很多的精力,從2018年的資料來看gd的排名還是個位數,國產化的背景下,市場空間還很大 另外乙個國產品牌新唐的占有率也不是很大,所以國產mcu的道路還有很...