К1921ВГ015 общее

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

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

p_k
Сообщения: 3
Зарегистрирован: 16 май 2025, 10:32
Предприятие: i.d

Re: К1921ВГ015 общее

Сообщение p_k »

Добрый день!

Разбираюсь с отладочной платой на этом МК, и вообще не могу заставить работать проект ни собранный с помощью Syntacore, ни собранный вручную через makefile+riscv-gcc. Все вроде бы делаю по гайду Быстрого старта. Прооект RunLeds собирается в Syntacore, при попытке начать дебаг прошивается (правда жутко медленно, тоже неясно почему, и с jlink и с eljtag ft2232). Со скрипом начинается отладка, но при попытке паузы или брейкпоинта сыпятся ошибки The target is not running when halt was requested, stopping GDB. При этом МК видимо не стартует, т.к. gpio молчат. При сборке makefile+riscv-gcc еще интереснее, собирается elf и hex с начальным адресом 0x40000000 (хотя линковщики из тулчейна брал), естественно оpenocd дает ошибку при загрузке. Добавил генерацию bin, принудительно зашил ее по 0х80000000, верификацию проходит, но камень молчит. Образец Мейкфайла брал из официального SDK опять же. На всякий случай привожу его.
Вопросы: Как поправить генерацию elf? Может ли быть дело в аппаратной части? Плата в целом новая полностью.
| Показать
#==============================================================================
# Makefile NIIET K1921VG015
# Created by NIIET
# free to use
#==============================================================================
TARGET_NAME = Blank_proj

COMPILER_PATH = C:/sc-dt/riscv-gcc/bin/

SOURCES_PATH = ./src
LIBS_PATH = $(COMPILER_PATH)../riscv64-unknown-elf/lib/rv32imfc_zicsr/ilp32f/
ADD_LIBS_PATH = $(COMPILER_PATH)../lib/gcc/riscv64-unknown-elf/14.2.0/rv32imfc_zicsr/ilp32f/
INC_PATH = ./include
LINKER_PATH = ./ldscripts
BUILD_NAME = build
BUILD_PATH = ./$(BUILD_NAME)

ELF_O_FILES := $(patsubst %.c, %.o, $(wildcard *.c)) $(patsubst %.c, %.o,$(wildcard $(SOURCES_PATH)/*.c)) $(patsubst %.S, %.o, $(wildcard $(SOURCES_PATH)/*.S))



INCLUDE_FOLDER = -I$(INC_PATH)

LIBS = -L$(LINKER_PATH) -L$(LIBS_PATH) -L$(ADD_LIBS_PATH)
LIBS_ACR = -lc_nano -lg_nano -lgcc

LD_SRC := $(LINKER_PATH)/k1921vg015_ram.ld
#MARCH := rv32imfc_zicsr
MARCH := rv32imfc_zba_zbb_zbc_zbs_zicsr

MABI := ilp32f
LD_FLAGS = -Map=$(BUILD_PATH)/$(TARGET_NAME).map -static -march=$(MARCH) -melf32lriscv $(LIBS) $(LIBS_ACR)
DEFINES = -D SYSCLK_HSE -D HSECLK_VAL=16000000 -D RETARGET -D CKO_HSE

export RISCV-GCC ?= $(CROSS_PREFIX)gcc.exe -c -Wall -Og -g -ggdb3 $(DEFINES) -march=$(MARCH) -mabi=$(MABI) $(INCLUDE_FOLDER) -static -std=gnu11 $(LIBS) $(LIBS_ACR)
export CROSS_PREFIX ?= $(COMPILER_PATH)riscv64-unknown-elf-
export RISCV-AS ?= $(CROSS_PREFIX)as.exe -march=$(MARCH) -mno-arch-attr
export RISCV-LD ?= $(CROSS_PREFIX)ld.exe
export RISCV-OBJDUMP ?= $(CROSS_PREFIX)objdump.exe -S
export RISCV-OBJCOPY ?= $(CROSS_PREFIX)objcopy.exe
export RISCV-SIZE ?= $(CROSS_PREFIX)size.exe

make_build:
-mkdir $(BUILD_NAME)
-mkdir $(BUILD_NAME)\src

help:
@ echo "help:\nmake all\nclean\nload"

header:
@ echo "NIIET K1921VG015 MAKEFILE v.1.0 "$^""

%.o: %.c
@ echo "COMPILE "$^""
$(RISCV-GCC) $^ -o $(BUILD_PATH)/$@
@ echo "...DONE"

%.o: %.S
@ echo "ASSEMBLY "$^""
$(RISCV-GCC) $^ -o $(BUILD_PATH)/$@
@ echo "...DONE"

%.elf: $(ELF_O_FILES)
@ echo "LINK "$^""
$(RISCV-LD) -o $@ -L$(LINKER_PATH) -T $(LD_SRC) $(patsubst %.o, $(BUILD_PATH)/%.o, $^) $(LD_FLAGS)
@ echo "...DONE"

%.dump: %.elf
@ echo "DUMP "$^""
$(RISCV-OBJDUMP) $^ > $@
@ echo "...DONE"

size: $(BUILD_PATH)/$(TARGET_NAME).elf
@ echo "~~SIZE~~ """
$(RISCV-SIZE) $^

clean:
@ echo "CLEANING "$^""
del /S *.o
del /S *.elf
del /S *.hex
@ echo "...DONE"

hex:
@ echo "HEX "
$(RISCV-OBJCOPY) -O ihex $(BUILD_PATH)/$(TARGET_NAME).elf $(BUILD_PATH)/$(TARGET_NAME).hex
@ echo "...DONE"

bin:
$(RISCV-OBJCOPY) -O binary $(BUILD_PATH)/$(TARGET_NAME).elf $(BUILD_PATH)/$(TARGET_NAME).bin


all: header make_build clean $(BUILD_PATH)/$(TARGET_NAME).elf $(BUILD_PATH)/$(TARGET_NAME).dump hex size bin
Последний раз редактировалось p_k 16 май 2025, 14:42, всего редактировалось 3 раза.
p_k
Сообщения: 3
Зарегистрирован: 16 май 2025, 10:32
Предприятие: i.d

Re: К1921ВГ015 общее

Сообщение p_k »

Разобрался, линкер в мейкфайле почему то на для ram области был указан
p_k
Сообщения: 3
Зарегистрирован: 16 май 2025, 10:32
Предприятие: i.d

Re: К1921ВГ015 общее

Сообщение p_k »

Если у кого то получилось запустить отладку в Vscode+кортекс Debug/Native Debug буду очень благодарен за конфиг.
Vcoder
Сообщения: 15
Зарегистрирован: 01 май 2025, 14:50
Предприятие: .
Откуда: Уфа

Re: К1921ВГ015 общее

Сообщение Vcoder »

Я пока упражняюсь с примером на базе Run_leds. Только добавил в platform/source/system_k1921vg015.c раздел для установленного у меня 8-мегагерцового кварца:

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

#if (HSECLK_VAL == 8000000)
	RCU->PLLSYSCFG0 =( 7 << RCU_PLLSYSCFG0_PD1B_Pos)   |  //PD1B
			 ( 7 << RCU_PLLSYSCFG0_PD1A_Pos)   |  //PD1A
			 ( 1 << RCU_PLLSYSCFG0_PD0B_Pos)   |  //PD0B
			 ( 3 << RCU_PLLSYSCFG0_PD0A_Pos)   |  //PD0A
			 ( 1 << RCU_PLLSYSCFG0_REFDIV_Pos) |  //refdiv
			 ( 0 << RCU_PLLSYSCFG0_FOUTEN_Pos) |  //fouten
			 ( 0 << RCU_PLLSYSCFG0_DSMEN_Pos)  |  //dsmen
			 ( 0 << RCU_PLLSYSCFG0_DACEN_Pos)  |  //dacen
			 ( 3 << RCU_PLLSYSCFG0_BYP_Pos)    |  //bypass
			 ( 1 << RCU_PLLSYSCFG0_PLLEN_Pos);    //en
	RCU->PLLSYSCFG1 = 0;          //FRAC = 0					 
	RCU->PLLSYSCFG2 = 50;         //FBDIV
Сейчас попробовал со стиранием. Команда "k1921vg015 srv_erase" успешно стёрла память, но на результат последующей попытки выключения JTAG-а это не повлияло.

Попробовал зайти с другой стороны.
В руководстве пользователя в разделе 7.1 "Flash-память" написано:
Помимо основной области памяти (1 Мбайт), доступной как через глобальное адресное пространство, так и через регистры контроллера, существует дополнительная NVR область (две страницы по 4 Кбайт в диапазоне 0x0000 – 0x1FFF). В последней ячейке второй страницы NVR области располагается конфигурационное слово микроконтроллера CFGWORD.
Пробуем прочитать:

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

$ openocd -f connect_jlink_jtag.cfg -c "k1921vg015 read nvr 0x1FF0" -c "resume" -c "exit"
...
Read MFLASH nvr region:
    addr = 0x1ff0, data = 0xffffffff
    addr = 0x1ff4, data = 0xffffffff
    addr = 0x1ff8, data = 0xffffffff
    addr = 0x1ffc, data = 0xffffffff
Везде FF.
Ок, давайте запишем туда что-нибудь вручную.
Смотрим таблицу 7.3: бит 0 - защита основной памяти, бит 1 - защита области NVR, бит 2 - вкл/выкл JTAG. Попробуем сбросить все три:

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

$ openocd -f connect_jlink_jtag.cfg -c "k1921vg015 write nvr erase 0x1FF0 0xFFFFFFFF 0xFFFFFFFF 0xFFFFFFFF 0xFFFFFFF8" -c "resume" -c "exit"
...
Write MFLASH nvr region (erase sector data):
    addr = 0x1ff0, data = 0xffffffff,
    addr = 0x1ff4, data = 0xffffffff,
    addr = 0x1ff8, data = 0xffffffff,
    addr = 0x1ffc, data = 0xfffffff8,
    Please wait ... 
done!
Отключаем питание у платы и программатора. Несколько секунд ждём. Для верности коротим цепь VAON на землю. Подключаем всё обратно и пробуем прочитать:

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

$ openocd -f connect_jlink_jtag.cfg -c "k1921vg015 read nvr 0x1FF0" -c "resume" -c "exit"
...
Read MFLASH nvr region:
    addr = 0x1ff0, data = 0xffffffff
    addr = 0x1ff4, data = 0xffffffff
    addr = 0x1ff8, data = 0xffffffff
    addr = 0x1ffc, data = 0xfffffff8
JTAG работает. Восьмёрка на месте.
Попытка записать во flash память прошивку проходит успешно.

В общем, призываю на помощь НИИЭТ.
Аватара пользователя
ejsan
Сообщения: 28
Зарегистрирован: 15 авг 2022, 21:17
Предприятие: vbrspb.ru

Re: К1921ВГ015 общее

Сообщение ejsan »

Vcoder писал(а): 16 май 2025, 19:37 JTAG работает. Восьмёрка на месте.
Попытка записать во flash память прошивку проходит успешно.
А вот у меня кое-что получилось! Предлагаю обсудить здесь: viewtopic.php?t=41048
Vcoder
Сообщения: 15
Зарегистрирован: 01 май 2025, 14:50
Предприятие: .
Откуда: Уфа

Re: К1921ВГ015 общее

Сообщение Vcoder »

Просьба к НИИЭТ: выложите пожалуйста запись семинара. Чтобы те, кто не смог участвовать онлайн, имели возможность ознакомиться с материалами в записи.
ea
Администратор
Сообщения: 72
Зарегистрирован: 10 окт 2014, 09:08

Re: К1921ВГ015 общее

Сообщение ea »

Vcoder писал(а): 19 май 2025, 11:11 Просьба к НИИЭТ: выложите пожалуйста запись семинара. Чтобы те, кто не смог участвовать онлайн, имели возможность ознакомиться с материалами в записи.
Запись семинара выложена на нашем сайта в разделе "Семинары" - https://niiet.ru/seminars/
fog
Сообщения: 4
Зарегистрирован: 21 май 2025, 09:32
Предприятие: ***

Re: К1921ВГ015 общее

Сообщение fog »

Имеется адаптер арм-USB-OCD-H, драйвера WinUSB в Windows достаточно установить для интерфейса 0 или также и для интерфейса 1 (на сайте olimex.com пример только установка для интерфейса 0) ?
В быстром старте К1921ВГ015 для этого адаптера не указано нужно ли менять -f jlink.cfg в Debug Configuration->Debugger->Config option, оставить jlink.cfg?
Аватара пользователя
ejsan
Сообщения: 28
Зарегистрирован: 15 авг 2022, 21:17
Предприятие: vbrspb.ru

Re: К1921ВГ015 общее

Сообщение ejsan »

fog писал(а): 21 май 2025, 14:21 Имеется адаптер арм-USB-OCD-H, драйвера WinUSB в Windows достаточно установить для интерфейса 0 или также и для интерфейса 1 (на сайте olimex.com пример только установка для интерфейса 0) ?
Судя по информации из интернетов, это очередная (хоть и болгарская) самоделка на многострадальном FT2232. А значит, то, что в целом пишут про FT2232, должно быть справедливо и для неё. А пишут о том, что в данном чипе JTAG-ом можно заставить работать именно interface0. Поскольку interface1 работает только UART-ом, то драва для него логично оставить родные FTDI.
fog писал(а): 21 май 2025, 14:21 В быстром старте К1921ВГ015 для этого адаптера не указано нужно ли менять -f jlink.cfg в Debug Configuration->Debugger->Config option, оставить jlink.cfg?
Ну какой же это jlink? :lol: По крайней мере у себя в папке \tools\share\openocd\scripts\interface\ftdi я обнаружил готовый конфиг под названием olimex-арм-usb-ocd-h.cfg. Вот его и попробуйте: -f olimex-арм-usb-ocd-h.cfg
Да, и ещё: похоже в вашей коробке есть вход по имени VREF, и его нужно подключать на +3,3В питания вашей платы с контроллером!
fog
Сообщения: 4
Зарегистрирован: 21 май 2025, 09:32
Предприятие: ***

Re: К1921ВГ015 общее

Сообщение fog »

ejsan писал(а): 22 май 2025, 00:55 то драва для него логично оставить родные FTDI.
про интерфейс 1 понял.
ejsan писал(а): 22 май 2025, 00:55 я обнаружил готовый конфиг под названием olimex-арм-usb-ocd-h.cfg
Посмотрел только в папке интерфейс, в папку ftdi не догадался заглянуть. Получается его нужно скопировать в папку interface?
ejsan писал(а): 22 май 2025, 00:55 в вашей коробке есть вход по имени VREF, и его нужно подключать на +3,3В питания вашей платы с контроллером
Экспериментальную плату (еще не приехала) развел без VREF, но это исправим.

Спасибо за информацию, и еще вопрос: на пине 15 разъема JTAG есть сигнал TSRST, есть возможность его активировать в Syntacore_ide?

Почему-то форум заменяет слово арм.
Ответить

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