ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
22 июля
1016438
klen (07.07.2020 12:43, просмотров: 1565)
gd32fv103: прошивка для rv-link на LONGAN NANO, немного улучшил кЕтайскую рассу 

суть этой песни

1. у LONGAN NANO есть косяг (вообще то не у платы а у желания ее юзать как rvlink) - в кЕтайской траскрипции (код rvlink для longan nano)почему то usart0 и SRST попадают на одну ногу - pa9. в результат никакого системного ресета у житага нет и поэтому я имел ситуацию 'мы пахали - я и трактор', все после прошивки микросхемы работает без отладчика, с отладчиком улет в трап. причина проста - при перезагрузке питанием - системный ресет сбрасывает микросхему и все чикпок, если это под отладчиком - ресета нет и и все глобальные конструкторы падают еще в crt коде - что логично.

2. сам код по идеологии содран с blackmagic debug probe но с кЕайским видением локальной вселенной. для сборки требуется наличие компилятора для проца gd32fv103, и наличие libc - тут они берут функции работы со строками и строковый ввод-вывод. это нужно чтобы с gdb обмениватся по протоколу MI. в этом месте мне это категорически не нравится, поэтому я забил в код свою версию функций строк и printf - оно побыстрее и без говна (в моей версии нету гуляния по стеку). тесть код эмулятора не имеет внешних зависимостей и его можно собрать в любых условиях - был бы компиллер и ничего более.


в итоге имеем рабочий ресет на pa9, и рабочий vcom для вывода отладочной информации с отлаживаемой платки на pb6 pb7.

пока возюкался с этим вопросом сделал легковесный аналог iostream

  osstream_t<usart_init, usart_deinit, usart_write, usart_write_buff >  log ;

log.clear();
log.color_green();
log << "cpu clock "<< rcu.ck_sys_freq() << "\n" ;
log << "ahb clock "<< rcu.ahb_clock_freq() << "\n" ;
log << "apb1 clock "<< rcu.apb1_clock_freq() << "\n" ;
log << "apb2 clock "<< rcu.apb2_clock_freq() << "\n" ;
log << "usart boud "<< usart0.boud() << "\n\n" ;

удобненько. сделал поддержку некоторых команд VT100 и поэтому можно будет делать "консольные графические" интерфейсы ;) пожже выложу со всем барахлом.


longan-nano_gd32vf103.binсобсно прошивочка

longan-nano_gd32vf103.elf

longan-nano_gd32vf103.hex


кому интересно вот диф от оригинала на сегодняшнюю дату

kgp_rvlink.diff


по умолчанию vcom отключен - нужно ему сказать в сеансе GDB

mon rvl vcom on

он запомнит это соcтояние и будет запускать vcom