К1921ВГ015 FreeRTOS

32-разрядные микроконтроллеры разработки АО "НИИЭТ"

Модераторы: ea, dav, bkolbov, Alis, pip, _sva_

dav
Сообщения: 224
Зарегистрирован: 14 дек 2015, 08:21
Предприятие: АО НИИЭТ
Откуда: АО НИИЭТ, Воронеж

Re: К1921ВГ015 FreeRTOS

Сообщение dav »

dezna писал(а): 16 янв 2025, 13:00 так же помогло просто отлючить в компиляторе деление

Код: Выделить всё

#         FLAGS     += -march=rv32imc -mabi=ilp32
          FLAGS     += -march=rv32imfc -mabi=ilp32f -mno-fdiv
каждый день что то новенькое...
В файлах FreeRTOS некорректно сохранялся контекст регистров fpu. Все исправили в файле "FreeRTOS\RISC-V\chip_specific_extensions\RV32IF_CLINT_float_extension\freertos_risc_v_chip_specific_extensions.h", скорректированная версия FreeRTOS доступна в репозитории: niiet_riscv_sdk
aem
Сообщения: 1
Зарегистрирован: 17 янв 2025, 08:53
Предприятие: АО НИИЭТ

Re: К1921ВГ015 FreeRTOS

Сообщение aem »

dezna писал(а): 27 дек 2024, 15:08 грешил на кварц... в РП на картинке кварц указан в диапазоне 8...24МГц, дальше по описанию 10...30МГц!
к сожалению картинки не смог вставить.
чему верить?
В таблице 2.5 указаны частоты для работы с кварцевым резонатором (8-24МГц) и внешним генератором (2-30МГц) без PLL.
В разделе 4.2 указывается входная частота PLL (10-30МГц).
Соответственно, если необходимо работать с PLL и кварцевым резонатором, то диапазон частот резонатора будет от 10 до 24МГц.
На рисунке 4.1 частота указываться не должна, исправим.
dezna
Сообщения: 36
Зарегистрирован: 20 дек 2024, 08:23
Предприятие: avtomatica

Re: К1921ВГ015 FreeRTOS

Сообщение dezna »

aem писал(а): 17 янв 2025, 09:22 В таблице 2.5 указаны частоты для работы с кварцевым резонатором (8-24МГц) и внешним генератором (2-30МГц) без PLL.
В разделе 4.2 указывается входная частота PLL (10-30МГц).
Соответственно, если необходимо работать с PLL и кварцевым резонатором, то диапазон частот резонатора будет от 10 до 24МГц.
ясно, спасибо!
как то не явно получается... без разъяснений то и не понял...
вам бы это в руководство как-то вставить...
а то все в разных местах, и не сообразил получается...
dezna
Сообщения: 36
Зарегистрирован: 20 дек 2024, 08:23
Предприятие: avtomatica

Re: К1921ВГ015 FreeRTOS

Сообщение dezna »

dav писал(а): 16 янв 2025, 17:15
dezna писал(а): 16 янв 2025, 13:00

Код: Выделить всё

          FLAGS     += -march=rv32imfc -mabi=ilp32f
В файлах FreeRTOS некорректно сохранялся контекст регистров fpu.
Все исправили в файле "FreeRTOS\RISC-V\chip_specific_extensions\RV32IF_CLINT_float_extension\freertos_risc_v_chip_specific_extensions.h"
спасибо!
все заработало!
я вообще как-то про ОС не подумал... странно, что только деление не работало...
но учитывая что в руководстве FPU не описан, шансов разобраться было мало...
там вообще отсутствовало сохранение / восстановление...
dezna
Сообщения: 36
Зарегистрирован: 20 дек 2024, 08:23
Предприятие: avtomatica

Re: К1921ВГ015 FreeRTOS

Сообщение dezna »

Добрый день!
вот такая проблема случилась:

Код: Выделить всё

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 даже не доходит дело.
ches
Сообщения: 58
Зарегистрирован: 07 сен 2022, 17:08
Предприятие: АО НИИЭТ
Откуда: Воронеж

Re: К1921ВГ015 FreeRTOS

Сообщение ches »

dezna писал(а): 27 янв 2025, 14:00 пробовал воспользоваться полным стиранием, но до обработки команды записи в SRVCTL даже не доходит дело.
Добрый день!
Для запуска микроконтроллера в сервисном режиме и дальнейшего проведения сервисного стирания всей flash-памяти микроконтроллера при подаче питания/сбросе вывод SERVEN (вывод №50) должен быть подтянут к уровню логической единицы.
dezna
Сообщения: 36
Зарегистрирован: 20 дек 2024, 08:23
Предприятие: avtomatica

Re: К1921ВГ015 FreeRTOS

Сообщение dezna »

продолжается забег по минному полю...
перепаял мк.
добавлял процессы в ОС, накосячил с выделением стэка.
мк отрубился вообще!
никаких признаков жизни... ни дебагер...
думал может где КЗ устроил и мк погорел...
стал замерять напряжения, так вместо 1.2В на выходе LDO - 0.8В.
вывести мк на сторону света получилось только подав снаружи 1.2В на кондер LDO...
это конечно не дело, когда дебагер не может вообще достучаться до мк...
а если подключено батарейное питание, то нужно еще додуматься, что нужно выдернуть батарейку...
далее..
включил IWDG... и понеслось... опять... вроде стирание прошло, так виснет на прошивке программы... передергивай питание, выдирай батарейку, только тогда прошивается...
хочу попробовать отключать сначала через дебагер IWDG, чтоб не сбрасывал мк в процессе программирования...
dezna
Сообщения: 36
Зарегистрирован: 20 дек 2024, 08:23
Предприятие: avtomatica

Re: К1921ВГ015 FreeRTOS

Сообщение dezna »

ches писал(а): 29 янв 2025, 16:26 Добрый день!
Для запуска микроконтроллера в сервисном режиме и дальнейшего проведения сервисного стирания всей flash-памяти микроконтроллера при подаче питания/сбросе вывод SERVEN (вывод №50) должен быть подтянут к уровню логической единицы.
Добрый день!
спасибо, но я почти все перепробовал. дебагер не доступен был
dmcontrol=0x0 выдавал в любых вариантах...
не пробовал вынимать батарейку, с передергиванием питания...
перепаял мк в итоге. лежит. может когда впаяю обратно попробовать.
выше описал танцы с бубном со следующим мк.
dezna
Сообщения: 36
Зарегистрирован: 20 дек 2024, 08:23
Предприятие: avtomatica

Re: К1921ВГ015 FreeRTOS

Сообщение dezna »

рекомендация от себя...
добавить область размещения переменных для инициализации только по включению питания. хотя бы нулем.

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
sys_init.c :

Код: Выделить всё

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__;
это позволит при сбросе мк не по питанию никак это визуально не проявить!
вероятность повреждения данных весьма низкая, ну и программу нужно строить с учетом максимального количества проработанных исключений.
все крнечно не предусмотришь, что нить всегда упустишь...
Ответить

Вернуться в «32-разрядные микроконтроллеры»