В файлах FreeRTOS некорректно сохранялся контекст регистров fpu. Все исправили в файле "FreeRTOS\RISC-V\chip_specific_extensions\RV32IF_CLINT_float_extension\freertos_risc_v_chip_specific_extensions.h", скорректированная версия FreeRTOS доступна в репозитории: niiet_riscv_sdkdezna писал(а): ↑16 янв 2025, 13:00 так же помогло просто отлючить в компиляторе делениекаждый день что то новенькое...Код: Выделить всё
# FLAGS += -march=rv32imc -mabi=ilp32 FLAGS += -march=rv32imfc -mabi=ilp32f -mno-fdiv
К1921ВГ015 FreeRTOS
Модераторы: ea, dav, bkolbov, Alis, pip, _sva_
-
- Сообщения: 224
- Зарегистрирован: 14 дек 2015, 08:21
- Предприятие: АО НИИЭТ
- Откуда: АО НИИЭТ, Воронеж
Re: К1921ВГ015 FreeRTOS
Re: К1921ВГ015 FreeRTOS
В таблице 2.5 указаны частоты для работы с кварцевым резонатором (8-24МГц) и внешним генератором (2-30МГц) без PLL.
В разделе 4.2 указывается входная частота PLL (10-30МГц).
Соответственно, если необходимо работать с PLL и кварцевым резонатором, то диапазон частот резонатора будет от 10 до 24МГц.
На рисунке 4.1 частота указываться не должна, исправим.
Re: К1921ВГ015 FreeRTOS
ясно, спасибо!aem писал(а): ↑17 янв 2025, 09:22 В таблице 2.5 указаны частоты для работы с кварцевым резонатором (8-24МГц) и внешним генератором (2-30МГц) без PLL.
В разделе 4.2 указывается входная частота PLL (10-30МГц).
Соответственно, если необходимо работать с PLL и кварцевым резонатором, то диапазон частот резонатора будет от 10 до 24МГц.
как то не явно получается... без разъяснений то и не понял...
вам бы это в руководство как-то вставить...
а то все в разных местах, и не сообразил получается...
Re: К1921ВГ015 FreeRTOS
спасибо!
все заработало!
я вообще как-то про ОС не подумал... странно, что только деление не работало...
но учитывая что в руководстве FPU не описан, шансов разобраться было мало...
там вообще отсутствовало сохранение / восстановление...
Re: К1921ВГ015 FreeRTOS
Добрый день!
вот такая проблема случилась:
мк не прошивается совсем.
неделю не трогал, прибор работает, прошитая программа работает, стереть или перепрошить не могу от слова совсем...
может порт подключения JTAG вылетел?
к сожалению не сохранял рабочий лог... не с чем сравнить какие данные присылал мк.
подтяжки 10к по линиям впаял - безрезультатно.
хотелось бы мнение узнать перед перепайкой на новый кристалл...
пробовал воспользоваться полным стиранием, но до обработки команды записи в SRVCTL даже не доходит дело.
вот такая проблема случилась:
Код: Выделить всё
c:\aw\xpack-openocd-0.12.0\bin\openocd.exe -d2 -f interface/ftdi/ftdi_jtag.cfg -f target/k1921vg015.cfg -c init -c targets -c "reset halt" -c "write_memory 0x3000e030 32 {0x1}" -c "flash write_image erase code.elf" -c "
reset run" -c shutdown
xPack Open On-Chip Debugger 0.12.0+dev-00520-gc670187e1-dirty (2023-11-17-06:02)
Licensed under GNU GPL v2
For bug reports, read
http://openocd.org/doc/doxygen/bugs.html
debug_level: 2
sw_reset_halt
Info : clock speed 300 kHz
Info : JTAG tap: K1921VG015.cpu tap/device found: 0x00000d5b (mfg: 0x6ad (CloudBEAR LLC), part: 0x0000, ver: 0x0)
Info : JTAG tap: BSCAN.bscan tap/device found: 0x20c5f44d (mfg: 0x226 (MediaTek), part: 0x0c5f, ver: 0x2)
Error: Debug Module did not become active. dmcontrol=0x0
Warn : target K1921VG015.cpu examination failed
Info : starting gdb server for K1921VG015.cpu on 3333
Info : Listening on port 3333 for gdb connections
TargetName Type Endian TapName State
-- ------------------ ---------- ------ ------------------ ------------
0* K1921VG015.cpu riscv little K1921VG015.cpu unknown
Info : JTAG tap: K1921VG015.cpu tap/device found: 0x00000d5b (mfg: 0x6ad (CloudBEAR LLC), part: 0x0000, ver: 0x0)
Info : JTAG tap: BSCAN.bscan tap/device found: 0x20c5f44d (mfg: 0x226 (MediaTek), part: 0x0c5f, ver: 0x2)
Error: Debug Module did not become active. dmcontrol=0x0
неделю не трогал, прибор работает, прошитая программа работает, стереть или перепрошить не могу от слова совсем...
может порт подключения JTAG вылетел?
к сожалению не сохранял рабочий лог... не с чем сравнить какие данные присылал мк.
подтяжки 10к по линиям впаял - безрезультатно.
хотелось бы мнение узнать перед перепайкой на новый кристалл...
пробовал воспользоваться полным стиранием, но до обработки команды записи в SRVCTL даже не доходит дело.
Re: К1921ВГ015 FreeRTOS
Добрый день!
Для запуска микроконтроллера в сервисном режиме и дальнейшего проведения сервисного стирания всей flash-памяти микроконтроллера при подаче питания/сбросе вывод SERVEN (вывод №50) должен быть подтянут к уровню логической единицы.
Re: К1921ВГ015 FreeRTOS
продолжается забег по минному полю...
перепаял мк.
добавлял процессы в ОС, накосячил с выделением стэка.
мк отрубился вообще!
никаких признаков жизни... ни дебагер...
думал может где КЗ устроил и мк погорел...
стал замерять напряжения, так вместо 1.2В на выходе LDO - 0.8В.
вывести мк на сторону света получилось только подав снаружи 1.2В на кондер LDO...
это конечно не дело, когда дебагер не может вообще достучаться до мк...
а если подключено батарейное питание, то нужно еще додуматься, что нужно выдернуть батарейку...
далее..
включил IWDG... и понеслось... опять... вроде стирание прошло, так виснет на прошивке программы... передергивай питание, выдирай батарейку, только тогда прошивается...
хочу попробовать отключать сначала через дебагер IWDG, чтоб не сбрасывал мк в процессе программирования...
перепаял мк.
добавлял процессы в ОС, накосячил с выделением стэка.
мк отрубился вообще!
никаких признаков жизни... ни дебагер...
думал может где КЗ устроил и мк погорел...
стал замерять напряжения, так вместо 1.2В на выходе LDO - 0.8В.
вывести мк на сторону света получилось только подав снаружи 1.2В на кондер LDO...
это конечно не дело, когда дебагер не может вообще достучаться до мк...
а если подключено батарейное питание, то нужно еще додуматься, что нужно выдернуть батарейку...
далее..
включил IWDG... и понеслось... опять... вроде стирание прошло, так виснет на прошивке программы... передергивай питание, выдирай батарейку, только тогда прошивается...
хочу попробовать отключать сначала через дебагер IWDG, чтоб не сбрасывал мк в процессе программирования...
Re: К1921ВГ015 FreeRTOS
Добрый день!
спасибо, но я почти все перепробовал. дебагер не доступен был
dmcontrol=0x0 выдавал в любых вариантах...
не пробовал вынимать батарейку, с передергиванием питания...
перепаял мк в итоге. лежит. может когда впаяю обратно попробовать.
выше описал танцы с бубном со следующим мк.
Re: К1921ВГ015 FreeRTOS
рекомендация от себя...
добавить область размещения переменных для инициализации только по включению питания. хотя бы нулем.
k1921vg015_common.lds :
sys_init.c :
собсно для упрощения использования дефайн:
и использование
это позволит при сбросе мк не по питанию никак это визуально не проявить!
вероятность повреждения данных весьма низкая, ну и программу нужно строить с учетом максимального количества проработанных исключений.
все крнечно не предусмотришь, что нить всегда упустишь...
добавить область размещения переменных для инициализации только по включению питания. хотя бы нулем.
k1921vg015_common.lds :
Код: Выделить всё
/* .pwroninit section - initialized data only on power on reset*/
.pwroninit : {
. = ALIGN(4);
_spwroninit = .; /* start of .pwroninit label (for startup) */
*(.pwroninit)
*(.pwroninit*)
. = ALIGN(4);
_epwroninit = .; /* end of .pwroninit label (for startup) */
} >REGION_BSS
Код: Выделить всё
extern uint32_t _spwroninit;
extern uint32_t _epwroninit;
void __init plf_init_generic(void)
{
***********
// init on PWRON
uint32_t *pulDest;
if(RCU->RSTSTAT & RCU_RSTSTAT_POR_Msk)
for(pulDest = &_spwroninit; pulDest < &_epwroninit;)
*(pulDest++) = 0;
}
Код: Выделить всё
#define __PWRONINIT__ __attribute__ ((section (".pwroninit")))
Код: Выделить всё
uint16_t var, dim[] __PWRONINIT__;
вероятность повреждения данных весьма низкая, ну и программу нужно строить с учетом максимального количества проработанных исключений.
все крнечно не предусмотришь, что нить всегда упустишь...