ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Среда
26 марта
1504567 Топик полностью
Связанные сообщения
Ch32
В приличном обществе принят BOM (Byte Order Mark). 0xEF 0xBB 0xBF в начале файла.2025-03-04
нашел на китайской версии сайта WCH ннфографику про семество riscv ch32 - сделал картинку. теперь легче понять отличия. удобно ч...2023-12-11
SciFi (09.03.2025 09:36, просмотров: 330) ответил Eddy_Em на Кстати, у кого-нибудь получилось вменяемый сишный стартап для CH32 написать?
Вот моё творчество: 

link.ld

SECTIONS
{
  .init :
  {
    _sinit = .;
    . = ALIGN(4);
    LONG((_start << 20) | 0x6f) /* encode 'j _start' instruction, must be below 2K */
    KEEP(*(.init.vectors))
    KEEP(*(.init))
    . = ALIGN(4);
    _einit = .;
  } >FLASH AT>FLASH
  .text :
  {

startup.c

#include "ch32v00x.h"
#include <string.h>
static void trap(void) { int volatile w = 1; while (w) ; }
void __attribute__((naked, section(".init"))) _start(void) { extern int main(void); __asm volatile( " j 3f \n\t" "1: .word __global_pointer$ \n\t" // literal pool of two constants "2: .word _eusrstack \n\t" // keeps compiler from replacing them with registers "3: lw gp, 1b \n\t" // load gp " lw sp, 2b \n\t" // load sp " li t0, 0x80 \n\t" " csrw mstatus, t0 \n\t" " csrwi 0x804, 3 \n\t" " csrwi mtvec, 3 \n\t" " la t0, main \n\t" " csrw mepc, t0 \n\t"); extern char _data_lma[], _data_vma[], _edata[]; memcpy(_data_vma, _data_lma, _edata - _data_vma); extern char _sbss[], _ebss[]; memset(_sbss, 0, _ebss - _sbss); main(); }
extern void SysTick_Handler(void); extern void adc_handler(void);
static void (*const vectab[])(void) __attribute__((used, section(".init.vectors"))) = { [-1 + NonMaskableInt_IRQn] = trap, [-1 + HardFault_IRQn ] = trap, [-1 + SysTick_IRQn ] = SysTick_Handler, [-1 + ADC_IRQn ] = adc_handler, };
ส็็็็็็็็็็็็็็็็็็็็็็็็็༼ ຈل͜ຈ༽ส้้้้้้้้้้้้้้้้้้้้้้้