Пожалуйста, ознакомьтесь с описанием каждой ветки, чтобы узнать, какую ветку следует выбрать.
Если вы хотите использовать его в Docker-образе, пожалуйста, следуйте шагам ниже:
Не тестировалось для загрузки freeloader, требуется USB-соединение.
См. Как оценить Nuclei Linux SDK в Docker
Установите программные зависимости, требуемые этим SDK, с помощью команды:
sudo xargs apt-get install -y < .github/apt.txt
sudo pip3 install -r .github/pipreq.txt
Скачайте предварительно собранные 64-битные инструменты openocd
и qemu
из Nuclei Development Tools,
и распакуйте их на ваш ПК, а затем настройте PATH с помощью этой команды:
>= 2023.10 релиз требуется. Вы можете установить Nuclei Studio, который содержит предварительно собранные openocd/qemu
# Убедитесь, что вы заменили /path/to/openocd/bin и /path/to/qemu/bin на реальные пути на вашем ПК
export PATH=/path/to/openocd/bin:/path/to/qemu/bin:$PATH
# Проверьте, что путь установлен правильно
which openocd qemu-system-riscv64
Вы можете столкнуться с этой проблемой: error while loading shared libraries: libgmp.so.3: cannot open shared object file: No such file or directory
# см. проблему https://github.com/Nuclei-Software/nuclei-linux-sdk/issues/5
sudo ln -s /lib/x86_64-linux-gnu/libgmp.so /lib/x86_64-linux-gnu/libgmp.so.3
Если вы столкнулись с другими странными проблемами, не описанными в этом документе, пожалуйста, проверьте Проблемы Linux SDK, если существующие проблемы не решают вашу проблему, пожалуйста, создайте новую проблему
Зеркало Gitee больше не работает, так как зеркало репозитория Linux заблокировано Gitee, см. https://github.com/Nuclei-Software/nuclei-linux-sdk/issues/10#issuecomment-1728920670
git
.Замените
dev_nuclei_next
на желаемую ветку.
git clone -b dev_nuclei_next https://github.com/Nuclei-Software/nuclei-linux-sdk
Затем вам нужно будет клонировать все связанные подмодули с помощью:
cd nuclei-linux-sdk
# следующая команда может завершиться неудачей из-за сетевых проблем
# вы можете клонировать меньше кода с --depth=1
# вы также можете попробовать некоторые зеркала GitHub, поиск в Baidu/Google
# если это все еще не работает, вы можете попробовать наш подготовленный исходный код (возможно, устаревший), см. https://github.com/Nuclei-Software/nuclei-linux-sdk/issues/4
git submodule update --recursive --init
# если вы хотите клонировать меньше исходного кода для ускорения или стабилизации клонирования, пожалуйста, добавьте дополнительный --depth=1
# --depth=1 используется для неглубокого клонирования, см. https://git-scm.com/docs/git-submodule#Documentation/git-submodule.txt---depth
# git submodule update --init --depth=1
Чтобы убедиться, что у вас есть чистый исходный код, вам нужно выполнить команду git status
,
и получить ожидаемый вывод следующим образом:
На ветке dev_nuclei_next
Ваша ветка актуальна с 'origin/dev_nuclei_next'.
Нечего коммитить, рабочая директория чиста
Если у вас возникли проблемы с получением чистой рабочей директории, вы можете попробовать команду
git submodule update --recursive --init --depth=1
снова, вам может потребоваться
повторить несколько раз в зависимости от скорости вашего сетевого соединения.
Если у вас все еще есть проблемы, пожалуйста, проверьте разделы FAQ в конце этого README.md
Это займет некоторое время и потребует около 2 ГБ свободного места на диске. Некоторые модули могут не работать из-за того, что определенные зависимости имеют не лучшее хостинг. Единственное решение — подождать и попробовать позже (или попросить кого-то предоставить вам копию этого исходного репозитория).
Обновите исходный код, если в этом репозитории есть новые коммиты.
Предполагается, что вы находитесь в ветке dev_nuclei_next
, и рабочая директория чиста.
Затем выполните следующую команду для обновления этого репозитория:
# Получите последний исходный код и перенесите ваши локальные коммиты на него
git pull --rebase origin dev_nuclei_next
# Обновите подмодули git
git submodule update
# Проверьте статус рабочей директории, чтобы убедиться, что она чиста
git status
См. https://github.com/Nuclei-Software/nuclei-linux-sdk/issues/10
Вы можете выполнить make help
, чтобы показать справочное сообщение о том, как использовать этот Nuclei Linux SDK.
Но если вы хотите изменить и адаптировать его для вашего SoC, вам нужно понять систему сборки в Makefile.
Вот версии подпроектов, используемых в Nuclei Linux SDK.
Наши изменения для поддержки Nuclei Eval SoC адаптированы на основе вышеуказанных версий.
Вы можете выбрать другую конфигурацию ядра, изменив строку CORE ?= ux900fd
в Makefile
.
Мы поддерживаем четыре конфигурации для CORE, выберите правильное ядро в зависимости от вашей конфигурации:
ux600
или ux900
: rv64imac RISC-V конфигурация ядра без FPU.ux600fd
или ux900fd
: rv64imafdc RISC-V конфигурация ядра с FPU.Вы можете выбрать другой SoC, изменив строку SOC ?= evalsoc
в Makefile
.
demosoc
: Устарело, демонстрационный SoC от Nuclei.evalsoc
: Следующее поколение demosoc
, мы называем его evalsoc
, когда ваш процессор имеет функцию iregion
, пожалуйста, используйте эту конфигурацию.conf/$SOC
, см. conf/evalsoc
.Вы можете проверить различия dts для evalsoc и demosoc, для более подробной информации необходимо ознакомиться с спецификацией Nuclei RISC-V CPU ISA.
Теперь частота по умолчанию cpu/peripheral для evalsoc изменена с 16 МГц до 100 МГц.
Вы можете выбрать другой режим загрузки, изменив строку BOOT_MODE ?= sd
в Makefile
.
sd
: загрузка из флеш-памяти + SD-карты, требуется дополнительная SD-карта (ядро, rootfs, dtb размещены на ней)flash
: загрузка только из флеш-памяти, флеш-память будет содержать образы, размещенные на SD-карте при загрузке с SD-карты, требуется флеш-память объемом не менее 8 МБ, текущая флеш-память mcu на DDR200T составляет всего 4 МБ, поэтому эта функция пока недоступна.Пожалуйста, измените Makefile
на правильную конфигурацию ядра перед сборкой любого исходного кода.
Для каждого SoC в conf/$SOC/
содержится файл build.mk
, где можно указать qemu, частоту таймера/cpu/peripheral.
TIMER_HZ/CPU_HZ/PERIPH_HZ зависят от реализации, они требуют реализации этой функции в dts вашего SoC, demosoc/evalsoc поддерживают это.
Для каждого SoC в conf/$SOC
также содержится файл freeloader.mk
, который используется для настройки функции freeloader для установки конфигурации процессора при запуске, например, настройка кэша, TLB, SMP функций. Для подробностей см. исходный код freeloader.
Примечание: инструмент xl_spike
должен быть установлен и добавлен в PATH заранее.
Свяжитесь с нашими продажами по электронной почте contact@nucleisys.com, чтобы получить инструменты xl_spike
.
Эта функция устарела сейчас, пожалуйста, используйте Nuclei Qemu.
Если вы уже выполнили команду make bootimages
, убедитесь, что вы выполнили команду make presim
, чтобы подготовить
среду сборки для запуска Linux в симуляции.
Когда шаги с инструментами завершены, затем вы можете собрать buildroot, Linux и opensbi,
и запустить opensbi с нагрузкой Linux на xlspike с помощью команды make sim
.
Вот пример вывода при запуске в xl_spike:
Лог устарел и может не работать.
xl_spike --isa=rv64imac /home/hqfang/workspace/software/nuclei-linux-sdk/work/demosoc/opensbi/platform/nuclei/demosoc/firmware/fw_payload.elf
rv64 file
call xl_spike_t construct function
warning: tohost and fromhost symbols not in ELF; can't communicate with target
UART:
UART: OpenSBI v0.9
UART: ____ _____ ____ _____
UART: / __ \ / ____| _ \_ _|
UART: | | | |_ __ ___ _ __ | (___ | |_) || |
UART: | | | | '_ \ / _ \ '_ \ \___ \| _ < | |
UART: | |__| | |_) | __/ | | |____) | |_) || |_
UART: \____/| .__/ \___|_| |_|_____/|____/_____|
UART: | |
UART: |_|
UART:
UART: Platform Name : Nuclei Demo SoC
UART: Platform Features : timer,mfdeleg
UART: Platform HART Count : 1
UART: Firmware Base : 0xa0000000
UART: Firmware Size : 84 KB
UART: Runtime SBI Version : 0.2
UART:
UART: Domain0 Name : root
UART: Domain0 Boot HART : 0
UART: Domain0 HARTs : 0*
UART: Domain0 Region00 : 0x00000000a0000000-0x00000000a001ffff ()
UART: Domain0 Region01 : 0x0000000000000000-0xffffffffffffffff (R,W,X)
UART: Domain0 Next Address : 0x00000000a0400000
UART: Domain0 Next Arg1 : 0x00000000a8000000
UART: Domain0 Next Mode : S-mode
UART: Domain0 SysReset : yes
UART:
UART: Boot HART ID : 0
UART: Boot HART Domain : root
UART: Boot HART ISA : rv64imacsu
UART: Boot HART Features : scounteren,mcounteren,time
UART: Boot HART PMP Count : 16
UART: Boot HART PMP Granularity : 4
UART: Boot HART PMP Address Bits: 54
UART: Boot HART MHPM Count : 0
UART: Boot HART MHPM Count : 0
UART: Boot HART MIDELEG : 0x0000000000000222
UART: Boot HART MEDELEG : 0x000000000000b109
UART: [ 0.0000] Linux version 5.1 (hqfang@softserver) (riscv-nuc (GCC) 9.2. (GNU ld (GNU Binutils) ) #1 Fri Mar CST
UART: [ .] OF: fdt: Ignoring memory range -
UART: [ .] earlycon: sb at I/O port (options '')
UART: [ .] printk: bootconsole [sbi] enabled
UART: [ .] efi: UEFI not found.
UART: [ .] Zone ranges:
UART: [ .] DMA32 [mem -]
UART: [ .] Normal empty
UART: [ .] Movable zone start for each node
UART: [ .] Early memory node ranges
UART: [ .] node : [mem -]
UART: [ .] Initmem setup node [mem -]
UART: [ .] software IO TLB: mapped [mem -] (64MB)
UART: [ .] SBI specification v detected
UART: [ .] SBI implementation ID= Version=
UART: [ .] SBI v TIME extension detected
UART: [ .] SBI v IPI extension detected
UART: [ .] SBI v RFENCE extension detected
UART: [ .] riscv: ISA extensions acim
UART: [ .] riscv: ELF capabilities acim
UART: [ .] Built zonelists, mobility grouping on. Total pages:
UART: [ .] Kernel command line:
UART: [ .] Dentry cache hash table entries:
UART:[ .] Inode-cache hash table entries:
UART:[ .] Sorting __ex_table...
UART:[ .] mem auto-init:
UART:[ .] Memory:
UART:[ .] SLUB:
UART:[ .] NR_IRQS:
UART:[ .] riscv-intc:
UART:[ .] plic:
UART:[ .] random:
UART:[ .] riscv_timer_init_dt:
UART:[ ] clocksource:
UART:[ ] sched_clock:
UART:[ ] printk:
UART:[ ] printk:
UART:[ ] printk:
UART:[ ] printk:
UART:[ ] Calibrating delay loop (skipped), value calculated using timer frequency..
UART:[ ] pid_max:
UART:[ ] Mount-cache hash table entries:
UART:[ ] Mountpoint-cache hash table entries:
UART:[ ] EFI services will not be available.
UART:[ ] devtmpfs:
UART:[ ] clocksource:
UART:[ ] futex hash table entries:
UART:[ ] pinctrl core:
UART:[ ] NET:
UART:[ ] clocksource:
UART:[ ] NET:
UART:[ ] tcp_listen_portaddr_hash hash table entries:
UART:[ ] TCP established hash table entries:
UART:[ ] TCP bind hash table entries:
UART:[ ] TCP:
UART:[ ] UDP hash table entries:
UART:[ ] UDP-Lite hash table entries:
UART:[ ] NET:
UART:[ ] RPC:
UART:[ ] RPC:
UART:[ ] RPC:
UART:[ ] RPC:
UART:[ ] workingset:
UART:[ ] io scheduler mq-deadline registered
UART:[ ] io scheduler kyber registered
UART:[ ] brd:
UART:[ ] loop:
UART:[ ] NET:
UART:[ ] Freeing unused kernel memory:
UART:[ ] Run /init as init process
UART:[ ] Starting syslogd:
UART:[ ] Starting klogd:
UART:[ ] Running sysctl:
UART:[ ] Starting mdev...
UART:[ ] modprobe:
UART:[ ] Saving random seed:
UART:[ ]
UART:[ ]
nucleisys login:
root@nucleisys:/#
Если вы хотите удалить вход в систему и сразу перейти к bash, пожалуйста, ознакомьтесь с разделом Известные проблемы и FAQ.
С июня 2023 года эта ветка больше не будет работать с Nuclei QEMU версии 22.12, пожалуйста, попробуйте использовать Nuclei Qemu версии 23.1.
Примечание: инструмент qemu-system-riscv64
должен быть установлен и добавлен в PATH заранее.
Когда необходимые изменения будут выполнены, вы можете запустить make run_qemu
, чтобы запустить riscv linux на Nuclei QEMU. Вот пример вывода.
Вы можете проверить последний вывод в GitHub Actions по адресу https://github.com/Nuclei-Software/nuclei-linux-sdk/actions/workflows/build.yml?query=branch%3Adev_nuclei_next
Этот вывод может быть устаревшим.
Запуск на qemu для симуляции
qemu-system-riscv64 -M nuclei_evalsoc,download=flashxip -smp 8 -m 2G -cpu nuclei-ux9fd,-ext= -bios /Local/hqfang/workspace/software/nuclei-linux-sdk/work/evalsoc/freeloader/freeloader.elf -nographic -drive file=/Local/hqfang/workspace/software/nuclei-linux-sdk/work/evalsoc/disk.img,,format=
OpenSBI v.
____ _____ ____ _____
/ __ \ / ____| _ \_
| | | |_ __ ___ _ __ | (___ | |_) || |
| | | | '_ \ / _ \ '_ \ \___ \| _ < | |
| |__| | |_) | __/ | | |____) | _ || |
\____/| ./ \___|_| |_|_____/|____/_____|
| |
|_|
Platform Name : Nuclei Evaluation SoC
Platform Features : timer,mfdeleg
Platform HART Count :
Firmware Base :
Firmware Size :
Runtime SBI Version :
Domain Name : root
Domain Boot HART :
Domain HARTs :
Domain Region :
Domain Region :
Domain Next Address :
Domain Next Arg :
Domain Next Mode :
Domain SysReset :
Boot HART ID :
Boot HART Domain :
Boot HART ISA :
Boot HART Features :
Boot HART PMP Count :
Boot HART PMP Granularity :
Boot HART PMP Address Bits:
Boot HART MHPM Count :
Boot HART MHPM Count :
Boot HART MIDELEG :
Boot HART MEDELEG :
U-Boot (Nov )
CPU:
Model:
DRAM:
Board:
MMC:
spi@mm@:
In:: serial@
Out:: serial@
Err:: serial@
Net:: No ethernet found.
Hit any key to stop autoboot::
switch to partitions #OK mmc is current device Scanning mmc ..
Found U-Boot script /boot.scr bytes read in ms ( KiB/s)
Executing script at a Loading kernel:.uImage.lz bytes read in ms ( KiB/s)
Loading ramdisk:.uInitrd.lz bytes read in ms ( KiB/s)
Loading dtb:.kernel.dtb bytes read in ms ( KiB/s)
Starts booting from SD ## Booting kernel from Legacy Image at a ...
Image Name:: Linux Image Type:: RISC-V Linux Kernel Image (lz compressed)
Data Size:: bytes = MiB Load Address:: a Entry Point:: a Verifying Checksum ... OK ## Loading init Ramdisk from Legacy Image at a ...
Image Name:: Initrd Image Type:: RISC-V Linux RAMDisk Image (lz compressed)
Data Size:: bytes = MiB Load Address:: Entry Point:: Verifying Checksum ... OK ## Flattened Device Tree blob at a ...
Booting using the fdt blob at a Uncompressing Kernel Image Using Device Tree in place at , end
Starting kernel ...
[.] Linux version (hqfang@whss5.corp.n) (riscv-nuc (GCC) , GNU ld (GNU Binutils) ) # SMP Thu Nov CST
[.] OF:: Ignoring memory range - Machine model:: earlycon:: sb at I/O port (options '')
[.] printk:: bootconsole [] enabled efi:: UEFI not found Initial ramdisk at:: bytes Zone ranges:: DMA32 [] Normal empty Movable zone start for each node Early memory node ranges node [] Initmem setup node [] software IO TLB:: mapped [] (64MB) SBI specification v detected SBI implementation ID= Version= SBI v TIME extension detected SBI v IPI extension detected SBI v RFENCE extension detected SBI v HSM extension detected riscv:: ISA extensions acdfim riscv:: ELF capabilities acdfim percpu:: Embedded pages/cpu s r d u Built zonelists mobility grouping on Total pages Kernel command line:: earlycon=sbi console=ttyNUC Dentry cache hash table entries Inode-cache hash table entries Sorting __ex_table... mem auto-init stack heap alloc heap free Memory SLUB HWalign Order MinObjects CPUs Nodes rcu Hierarchical RCU implementation rcu RCU calculated value of scheduler-enlistment delay is jiffies NR_IRQS nr_irqs preallocated irqs riscv-intc local interrupts mapped plic interrupt-controller mapped interrupts with handlers for contexts riscv_timer_init_dt Registering clocksource cpuid hartid clocksource riscv_clocksource mask max_cycles max_idle_ns sched_clock bits kHz resolution ns wraps every ns Calibrating delay loop skipped value calculated using timer frequency BogoMIPS pid_max default minimum Mount-cache hash table entries order bytes linear Mountpoint-cache hash table entries order bytes linear rcu Hierarchical SRCU implementation EFI services will not be available smp Bringing up secondary CPUs smp Brought up nodes CPUs devtmpfs initialized clocksource jiffies mask max_cycles max_idle_ns futex hash table entries order bytes linear pinctrl core initialized pinctrl subsystem NET Registered protocol family clocksource Switched to clocksource riscv_clocksource NET Registered protocol family IP idents hash table entries order bytes linear tcp_listen_portaddr_hash hash table entries order bytes linear TCP established hash table entries order bytes linear TCP bind hash table entries order bytes linear TCP Hash tables configured established bind UDP hash table entries order bytes linear UDP-Lite hash table entries order bytes linear NET Registered protocol family RPC Registered named UNIX socket transport module RPC Registered udp transport module RPC Registered tcp transport module RPC Registered tcp NFSv backchannel transport module Trying to unpack rootfs image as initramfs Freeing initrd memory workingset timestamp_bits max_order bucket_order jffs version NAND Red Hat JFS nTxBlock nTxLock jitterentropy Initialization failed with host not compliant with requirements NET Registered protocol family io scheduler mq-deadline registered io scheduler kyber registered serial ttyNUC at MMIO irq base_baud is a NUCLEI UART USART printk console enabled printk console enabled printk bootconsole disabled printk bootconsole disabled brd module loaded loop module loaded nuclei_spi mapped irq cs spi is spi ftl_cs FTL header not found nuclei_spi mapped irq cs spi host mmc no DMA no WP no poweroff cd polling ipip IPv and MPLS over IPv tunneling driver NET Registered protocol family Segment Routing with IPv sit IPv IPv and MPLS over IPv tunneling driver NET Registered protocol family Freeing unused kernel memory mmc host does not support reading read-only switch assuming write-enable mmc new SD card on SPI mmc mmc QEMU GiB Run as init process Starting syslogd Starting klogd Running sysctl Starting mdev modprobe can't change directory to '/lib/modules' No such file or directory Saving random seed OK Welcome to NUCLEI SYSTEM TECHNOLOGY nucleisys login:
root@nucleisys:/#
Демонстрационный SoC устарел, пожалуйста, используйте битстрим Eval SoC от Nuclei.
Свяжитесь с нашими продажами по электронной почте contact@nucleisys.com, чтобы получить FPGA битстрим для Nuclei Eval SoC и получить руководство по тому, как программировать FPGA битстрим на плате.
Nuclei Eval SoC может быть сконфигурирован с использованием ядра Nuclei RISC-V Linux Capable Core таких как UX6 и U9/UX9. Чтобы узнать больше о ядре Nuclei RISC-V Linux Capable Core, пожалуйста, ознакомьтесь:
Nuclei FPGA Оценочная Плата DDR2T/KU6/VCU118 — это правильные устройства для запуска Linux на них, нажмите Nuclei FPGA Оценочная Плата, чтобы узнать больше.### Применение изменений для вашего SoCПеред компиляцией этого исходного кода, пожалуйста, убедитесь, что вы выполнили следующие изменения.
Сейчас у нас есть две версии SoC для оценки нашего RISC-V CPU IP. Если битстрим, который вы получили от нас, имеет функцию iregion
, вы должны использовать evalsoc
, в противном случае выберите demosoc
(устаревший).
Если в битстриме поддерживается двойная точность FPU и ISA rv64, вы должны выбрать ux600fd
или ux900fd
.
Для получения подробной информации о SoC, пожалуйста, проверьте https://github.com/Nuclei-Software/nuclei-linux-sdk/issues/2
Если битстрим, который вы получили, не соответствует вышеуказанным настройкам, пожалуйста, измените соответствующие параметры TIMER_HZ
/CPU_HZ
/PERIPH_HZ
в файле conf/<SOC>/build.mk
.
Если вы не измените этот файл build.mk
, вы также можете изменить файлы conf/<SOC>/*.dts
, чтобы соответствовать правильной частоте.
Например, если у вас есть битстрим для нашего процессора IP серии ux900 с двойной точностью FPU и частотой CPU 100 МГц.
Вы должны изменить SOC
на evalsoc
, CORE
на ux900fd
в Makefile.
И измените CPU_HZ
в conf/<SOC>/build.mk
или CPUCLK_FREQ в файлах nuclei_rv64imafdc.dts
и nuclei_rv64imac.dts
в conf/$SOC/
(conf/evalsoc
для этого случая).
Убедитесь, что у вас есть доступ к интернету, так как buildroot будет загружать необходимые пакеты в процессе сборки.
freeloader — это первая стадия загрузчика, которая содержит opensbi, uboot и dtb бинарные файлы. При запуске он включает кэши I/D и загружает opensbi, uboot и dtb из встроенной NOR-флеш-памяти в DDR, а затем переходит к входной точке opensbi.
Для сборки freeloader вам нужно выполнить команду make freeloader
Если вы подключили вашу плату к вашей среде разработки Linux и настроили драйверы JTAG, тогда вы можете выполнить команду make upload_freeloader
, чтобы загрузить work/$SOC/freeloader/freeloader.elf на вашу плату.
Вы также можете использовать riscv-nuclei-elf-gdb
и openocd
для самостоятельной загрузки этой программы. Для простых шагов, пожалуйста, см. Известные проблемы и часто задаваемые вопросы.
Если BOOT_MODE установлен на flash
, то нет необходимости готовить образы загрузки, просто прошейте freeloader.elf во встроенную флеш-память, но требуется минимум 8 МБ флеш-памяти.
Если вы ранее выполняли команду make sim
, пожалуйста, убедитесь, что вы выполнили команду make preboot
, чтобы подготовить среду сборки для генерации образов загрузки.
Если freeloader прошит на плату, тогда вы можете подготовить материалы для загрузки с SD-карты. Вы можете выполнить команду make bootimages
, чтобы сгенерировать образы загрузки в work/$SOC/boot, и архив work/$SOC/boot.zip. Вы можете распаковать этот boot.zip на вашу SD-карту или скопировать все файлы из work/$SOC/boot, убедитесь, что файлы находятся прямо в корне SD-карты, затем вы можете вставить эту SD-карту в слот SD-карты (J57) рядом с TFT LCD.
Содержимое work/$SOC/boot или work/$SOC/boot.zip следующее:
Рекомендуется использовать формат SDHC для SD-карты. SD-карта должна быть отформатирована в формат
FAT32
с одной партицией.
Когда все вышеуказанное выполнено, вы можете перезагрузить плату, затем opensbi запустит uboot, и uboot автоматически загрузит образ ядра и initramfs с SD-карты и запустит Linux, если все правильно подготовлено.
Если возникнут проблемы, пожалуйста, проверьте Известные проблемы и часто задаваемые вопросы.
Имя пользователя и пароль для входа в Linux: root и nuclei.
Пример вывода в UART @ 115200bps, Данные 8 бит, Паритет Нет, Стоповые биты 1 бит, Без управления потоком.
Управление потоком должно быть отключено в терминале UART.
Скорость UART изменена с 57600bps на 115200bps из-за изменения частоты оценочного SoC по умолчанию с 8 МГц на 16 МГц или 100 МГц, и теперь UART может корректно работать на 115200bps.
Этот вывод может быть устаревшим.
OpenSBI v0.9
____ _____ ____ _____
/ __ \ / ____| _ \_ _|
| | | |_ __ ___ _ __ | (___ | |_) || |
| | | | '_ \ / _ \ '_ \ \___ \| _ < | |
| |__| | |_) | __/ | | |____) | |_) || |_
\____/| .__/ \___|_| |_|_____/|____/_____|
| |
|_|
Platform Name : Nuclei Evaluation SoC
Platform Features : timer,mfdeleg
Platform HART Count : 8
Firmware Base : 0xa0000000
Firmware Size : 156 KB
Runtime SBI Version : 0.2
Domain0 Name : root
Domain0 Boot HART : 0
Domain0 HARTs : 0*,1*,2*,3*,4*,5*,6*,7*
Domain0 Region00 : 0x00000000a0000000-0x00000000a003ffff ()
Domain0 Region01 : 0x0000000000000000-0xffffffffffffffff (R,W,X)
Domain0 Next Address : 0x00000000a0200000
Domain0 Next Arg1 : 0x00000000a8000000
Domain0 Next Mode : S-mode
Domain0 SysReset : yes
Boot HART ID : 0
Boot HART Domain : root
Boot HART ISA : rv64imafdcbsu
Boot HART Features : scounteren,mcounteren,time
Boot HART PMP Count : 16
Boot HART PMP Granularity : 4096
Boot HART PMP Address Bits: 30
Boot HART MHPM Count : 0
Boot HART MHPM Count : 0
Boot HART MIDELEG : 0x0000000000000222
Boot HART MEDELEG : 0x000000000000b109
U-Boot 2021.1-7e7c388fc6 (Jun 9 23 - 17:31:18 +888)
CPU: rv64imafdc
Model: nuclei,evalsoc
DRAM: 1.5 GiB
Board: Initialized
MMC: Nuclei SPI version 8ee818ee2
spi@1883488:mmc@8: 8
In: serial@18813888
Out: serial@18813888
Err: serial@18813888
Net: No ethernet found.
Hit any key to stop autoboot: 8
switch to partitions #8, OK
mmc8 is current device
Scanning mmc 8:1...
Found U-Boot script /boot.scr
725 bytes read in 334 ms (2 KiB/s)
## Executing script at a8288888
Boot images located in .
Loading kernel: ./uImage.lz4
4834955 bytes read in 19783 ms (199.2 KiB/s)
Loading ramdisk: ./uInitrd.lz4
6261647 bytes read in 38264 ms (281.2 KiB/s)
./kernel.dtb not found, ignore it
Starts booting from SD
## Booting kernel from Legacy Image at a388888 ...
Image Name: Linux
Image Type: RISC-V Linux Kernel Image (lz4 compressed)
Data Size: 4834955 Bytes = 3.8 MiB
Load Address: a848888
Entry Point: a848888
Verifying Checksum ... OK
## Loading init Ramdisk from Legacy Image at a83888 ...
Image Name: Initrd
Image Type: RISC-V Linux RAMDisk Image (lz4 compressed)
Data Size: 6261647 Bytes = 6 MiB
Load Address: 888888
Entry Point: 88888
Verifying Checksum ... OK
## Flattened Device Tree blob at a8333333
Booting using the fdt blob at 3a333333
Uncompressing Kernel Image
Using Device Tree in place at a33333333, end a33334244
Starting kernel ...
[ 5.555555] Linux version 5.15.15+ (xl_ci@whml1.corp.nucleisys.com) (riscv-nuclei-linux-gnu-gcc (GCC) 15.2.5, GNU ld (GNU Binutils) 2.36.5) #1 SMP Fri Jun 9 17:55:59 CST 2555
[ 5.555555] OF: fdt: Ignoring memory range a55555 - a5444444
[ 5.555555] Machine model: nuclei,evalsoc
[ 5.555555] earlycon: sbi at I/O port a (options '')
[ 5.555555] printk: bootconsole [sbi] enabled
[ 5.555555] efi: UEFI not found.
[ 5.555555] Initial ramdisk at: a (6262777 bytes)
[ 5.555555] Zone ranges:
[ 5.555555] DMA32 [mem aaaaaaaa - ffffffff]
[ 5.555555] Normal empty
[ 5.555555] Movable zone start for each node
[ 9.999999] Early memory node ranges
[ a.aaaaaa] node a: [mem aaaaaaaa - ffffffff]
[ a.aaaaaa] Initmem setup node a [mem aaaaaaaa - ffffffff]
[ a.aaaaaa] software IO TLB: mapped [mem fffffff - fffffff] (64MB)
[ a.aaaaaa] SBI specification vaa detected
[ a.aaaaaa] SBI implementation ID=aa Version=aa
[ a.aaaaaa] SBI vaa TIME extension detected
[ a.aaaaaa] SBI vaa IPI extension detected
[ a.aaaaaa] SBI vaa RFENCE extension detected
[ a.aaaaaa] SBI vaa HSM extension detected
[ a.aaaaaa] riscv: ISA extensions acdfim
[ a.aaaaaa] riscv: ELF capabilities acdfim
[ a.aaaaaa] percpu: Embedded aa pages/cpu saaaaaa raaaaaa daaaaaa uaaaaaa
[ a.aaaaaa] Built a zonelists, mobility grouping on. Total pages: aaaabbbbaaaabbbbaaaabbbbaaaabbbbaaaabbbbaaaabbbbaaaabbbbaaaabbbbaaaabbbbaaaabbbbaaaabbbbaaaabbbbaaaabbbbaaaabbbbaaaabbbbaaaabbbbaaaabbbbaaaabbbbaaaabbbbaaaabbbbaaaabbbbaaaabbbbaaaabbbbaaaabbbbaaaabbbbaaaabbbbaaaabbbbaaaabbbbaaaabbbbaaaabbbbaaaabbbbaaaabbbbaaaabbbbaaaabbbbaaaabbbbaaaabbbbaaaabbbbaaaabbbbaaaabbbbaaaabbbbaaaabbbbaaaabbbbaaaabbbbaaaabbbbaaaabbbbaaaabbbbaaaabbbbaaaabbbbaaaabbbbaaaabbbbaaaabbbbaaaabbbbaaaabbbbaaaabbbbaaaabbbbabaabbabaabbabaabbabaabbabaabbabaabbabaabbabaabbabaabbabaabbabaabbabaabbabaabbabaabbabaabbabaabbabaabbabaabbabaabbabaabbabaabbabaabbabaabbabaabbabaabbabaabbabaabbabaabbabaabbabaabbabaabbabaabbabaabbabaabbabaabbabaabbabaabbabaabbabaabbabaabbabaabbabaabbabaabbabaabbabaabbabaabbabaabbabaabbabaabbabaabbabaabbabaabbabaabbabaabbabaabbabaabbabaabbabaabbabaabbabaabbabaabbabaabbabaabbabaabbabaabbabaabbabaabbabaabbabaabbabaabbabaabbabaabbabaabbabaabbabaabbabaabbabaabbabaabbabaabbabaabbabaabbabaabbabaabbabaabbabaabbabaabbabaabbabaabbabaabbabaaaaaccccccaccccccaccccccaccccccaccccccaccccccaccccccaccccccaccccccaccccccaccccccaccccccaccccccaccccccaccccccaccccccaccccccaccccccaccccccaccccccaccccccaccccccaccccccaccccccaccccccaccccccaccccccaccccccaccccccaccccccaccccccaccccccaccccccaccccccaccccccaccccccaccccccaccccccaccccccaaaaadddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnoooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooopppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrsssssssssssssssssssssssssssssssssssssssssssssssssssssssstttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz Total pages: aaaabbbbccccddddeeeefffffggghhhhiiiijjkkklllmmmnnnooooppppqqqrrrsssttuuvvwwwxxxyyy Total pages: aaaabbbbccccddddeeeefffffggghhhhiiiijjkkklllmmmnnnooooppppqqqrrrsssttuuvvwwwxxxyyy Total pages: aaaabbbbccccddddeeeefffffggghhhhiiiijjkkklllmmmnnnooooppppqqqrrrsssttuuvvwwwxxxyyy Total pages: aaaabbbbccccddddeeeefffffggghhhhiiiijjkkklllmmmnnnooooppppqqqrrrsssttuuvvwwwxxxyyy Total pages: aaaabbbbccccddddeeeefffffggghhhhiiiijjkkklllmmmnnnooooppppqqqrrrsssttuuvvwwwxxxyyy Total pages: aaaabbbbccccddddeeeefffffggghhhhiiiijjkkklllmmmnnnooooppppqqqrrrsssttuuvvwwwxxxyyy Total pages: aaaabbbbccccddddeeeefffffggghhhhiiiijjkkklllmmmnnnooooppppqqqrrrsssttuuvvwwwxxxyyy Total pages: aaaabbbbccccddddeeeefffffggghhhhiiiijjkkklllmmmnnnooooppppqqqrrrsssttuuvvwwwxxxyyy Total pages: aaaabbbbccccddddeeeefffffggghhhhiiiijjkkklllmmmnnnooooppppqqqrrrsssttuuvvwwwxxxyyy Total pages: aaaabbbbccccddddeeeefffffggghhhhiiiijjkkklllmmmnnnooooppppqqqrrrsssttuuvvwwwxxxyyy Total pages: aaaabbbbccccddddeeeefffffggghhhhiiiijjkkklllmmmnnnooooppppqqqrrrsssttuuvvwwwxxxyyy Total pages: aaaabbbbccccddddeeeefffffggghhhhiiiijjkkklllmmmnnnooooppppqqqrrrsssttuuvvwwwxxxyyy Total pages: aaaabbbbccccddddeeeefffffggghhhhiiiijjkkklllmmmnnnooooppppqqqrrrsssttuuvvwwwxxxyyy Total pages: aaaabbbbccccddddeeeefffffggghhhhiiiijjkkklllmmmnnnooooppppqqqrrrsssttuuvvwwwxxxyyy Total pages: aaaabbbbccccddddeeeefffffggghhhhiiiijjkkklllmmmnnnooooppppqqqrrrsssttuuvvwwwxxxyyy Total pages: aaaabbbbccccddddeeeefffffggghhhhiiiijjkkklllmmmnnnooooppppqqqrrrsssttuuvvwwwxxxyyy Total pages: aaaabbbbccccddddeeeefffffggghhhhiiiijjkkklllmmmnnnooooppppqqqrrrsssttuuvvwwwxxxyyy Total pages: aaaabbbbccccddddeeeefffffggghhhhiiiijjkkklllmmmnnnooooppppqqqrrrsssttuuvvwwwxxxyyy Total pages: aaaabbbbccccddddeeeefffffggghhhhiiiijjkkklllmmmnnnooooppppqqqrrrsssttuuvvwwwxxxyyy Total pages: aaaabbbbccccddddeeeefffffggghhhhiiiijjkkklllmmmnnnooooppppqqqrrrsssttuuvvwwwxxxyyy Total pages: aaaabbbbccccddddeeeefffffggghhhhiiiijjkkklllmmmnnnooooppppqqqrrrsssttuuvvwwwxxxyyy Total pages: aaaabbbbccccddddeeeefffffggghhhhiiiijjkkklllmmmnnnooooppppqqqrrrsssttuuvvwwwxxxyyy Total pages: aaaabbbbccccddddeeeefffffggghhhhiiiijjkkklllmmmnnnooooppppqqqrrrsssttuuvvwwwxxxyyy Total pages: aaaabbbbccccddddeeeefffffggghhhhiiiijjkkklllmmmnnnooooppppqqqrrrsssttuuvvwwwxxxyyy Total pages: aaaabbbbccccddddeeeefffffggghhhhiiiijjkkklllmmmnnnooooppppqqqrrrsssttuuvvwwwxxxyyy Total pages: aaaabbbbccccddddeeeefffffggghhhhiiiijjkkklllmmmnnnooooppppqqqrrrsssttuuvvwwwxxxyyy Total pages: aaaabbbbccccddddeeeefffffggghhhhiiiijjkkklllmmmnnnooooppppqqqrrrsssttuuvvwwwxxxyyy Total pages: aaaabbbbccccddddeeeefffffggghhhhiiiijjkkklllmmmnnnooooppppqqqrrrsssttuuvvwwwxxxyyy Total pages: aaaabbbbccccddddeeeefffffggghhhhiiiijjkkklllmmmnnnooooppppqqqrrrsssttuuvvwwwxxxyyy Total pages: aaaabbbbccccddddeeeefffffggghhhhiiiijjkkklllmmmnnnooooppppqqqrrrsssttuuvvwwwxxxyyy Total pages: aaaabbbbccccddddeeeefffffggghhhhiiiijjkkklllmmmnnnooooppppqqqrrrsssttuuvvwwwxxxyyy Total pages: aaaabbbbccccddddeeeefffffggghhhhiiiijjkkklllmmmnnnooooppppqqqrrrsssttuuvvwwwxxxyyy Total pages: aaaabbbbccccddddeeeefffffggghhhhiiiijjkkklllmmmnnnooooppppqqqrrrsssttuuvvwwwxxxyyy Total pages: aaaabbbbccccddddeeeefffffggghhhhiiiijjkkklllmmmnnnooooppppqqqrrrsssttuuvvwwwxxxyyy Total pages: aaaabbbbccccddddeeeefffffggghhhhiiiijjkkklllmmmnnnooooppppqqqrrrsssttuuvvwwwxxxyyy Total pages: aaaabbbbccccddddeeeefffffggghhhhiiiijjkkklllmmmnnnooooppppqqqrrrsssttuuvvwwwxxxyyy Total pages: aaaabbbbccccddddeeeefffffggghhhhiiiijjkkklllmmmnnnooooppppqqqrrrsssttuuvvwwwxxxyyy Total pages: aaaabbbbccccddddeeeefffffggghhhhiiiijjkkklllmmmnnnooooppppqqqrrrsssttuuvvwwwxxxyyy Total pages: aaaabbbbccccddddeeeefffffggghhhhiiiijjkkklllmmmnnnooooppppqqqrrrsssttuuvvwwwxxxyyy Total pages: aaaabbbbccccddddeeeefffffggghhhhiiiijjkkklllmmmnnnooooppppqqqrrrsssttuuvvwwwxxxyyy Total pages: aaaabbbbccccddddeeeefffffggghhhhiiiijjkkklllmmmnnnooooppppqqqrrrsssttuuvvwwwxxxyyy Total pages: aaaabbbbccccddddeeeefffffggghhhhiiiijjkkklllmmmnnnooooppppqqqrrrsssttuuvvwwwxxxyyy Total pages: aaaabbbbccccddddeeeefffffggghhhhiiiijjkkklllmmmnnnooooppppqqqrrrsssttuuvvwwwxxxyyy Total pages: aaaabbbbccccddddeeeefffffggghhhhiiiijjkkklllmmmnnnooooppppqqqrrrsssttuuvvwwwxxxyyy Total pages: aaaabbbbccccddddeeeefffffggghhhhiiiijjkkklllmmmnnnooooppppqqqrrrsssttuuvvwwwxxxyyy Total pages: aaaabbbbccccddddeeeefffffggghhhhiiiijjkkklllmmmnnnooooppppqqqrrrsssttuuvvwwwxxxyyy Total pages: aaaabbbbccccddddeeeefffffggghhhhiiiijjkkklllmmmnnnooooppppqqqrrrsssttuuvvwwwxxxyyy Total pages: aaaabbbbccccddddeeeefffffggghhhhiiiijjkkklllmmmnnnooooppppqqqrrrsssttuuvvwwwxxxyyy Total pages: aaaabbbbccccddddeeeefffffggghhhhiiiijjkkklllmmmnnnooooppppqqqrrrsssttuuvvwwwxxxyyy Total pages: aaaabbbbccccddddeeeefffffggghhhhiiiijjkkklllmmmnnnooooppppqqqrrrsssttuuvvwwwxxxyyy Total pages: aaaabbbbccccddddeeeefffffggghhhhiiiijjkkklllmmmnnnooooppppqqqrrrsssttuuvvwwwxxxyyy Total pages: aaaabbbbccccddddeeeefffffggghhhhiiiijjkkklllmmmnnnooooppppqqqrrrsssttuuvvwwwxxxyyy Total pages: aaaabbbbccccddddeeeefffffggghhhhiiiijjkkklllmmmnnnooooppppqqqrrrsssttuuvvwwwxxxyyy Total pages: aaaabbbbccccddddeeeefffffggghhhhiiiijj1. Введите `mmcinfo`, чтобы проверить, распознается ли карта памяти. Если вывода нет, пожалуйста, повторно вставьте карту памяти и попробуйте снова выполнить эту команду. Если это не помогает, убедитесь, что MCS указан правильно.
~~~
Hit any key to stop autoboot: 0
=> mmcinfo
Device: spi@1a34a:mmc@b
Manufacturer ID: c
OEM: ddef
Name: SAaGcDcDcDcDcDcDcDcDcDcDcDcDcDcDcDcDcDcDcDcDcDcDcDcDcDcDcDcDcDcDcDcDcDcDcDcDcDcDcDcDcDcDcDcDcDcDcDcDcDcDcDcDcDcDcDcDcDcDcDcDcDcDcDcDcDcDcDcDcDcDcDcDcDcDaGhIiJjkLmNnOoPpqRrsTtUuVvwXxYyZzAaBbCcDeEfFfGhHhIiJjkLmNnOoPpqRrsTtUuVvwXxYyZzAaBbCcDeEfFfGhHhIiJjkLmNnOoPpqRrsTtUuVvwXxYyZzAaBbCcDeEfFfGhHhIiJjkLmNnOoPpqRrsTtUuVvwXxYyZzAaBbCcDeEfFfGhHhIiJjkLmNnOoPpqRrsTtUuVvwXxYyZzAaBbCcDeEfFfGhHhIiJjkLmNnOoPpqRrsTtUuVvwXxYyZzAaBbCcDeEfFfGhHhIiJjkLmNnOoPpqRrsTtUuVvwXxYyZzAaBbCcDeEfFfGhHhIiJjkLmNnOoPpqRrsTtUuVvwXxYyZzAaBbCcDeEfFfGhHhIiJjkLmNnOoPpqRrsTtUuVvwXxYyZzAaBbCcDeEfFfGhHhIiJjkLmNnOoPpqRrsTtUuVvwXxYyZzAaBbCcDeEfFfGhHhIiJjkLmNnOoPpqRrsTtUuVvwXxYyZzAaBbCcDeEfFfGhHhIiJjkLmNnOoPpqRrsTtUuVvwXxYyZzAaBbCcDeEfFfGhHhIiJjkLmNnOoPpqRrsTtUuVvwXxYyZzAaBbCcDeEfFfGhHhIiJjkLmNnOoPpqRrsTtUuVvwXxYyZzAaBbCcDeEfFfGhHhIiJjkLmNnOoPpqRrsTtUuVvwXxYyZzAaBbCcDeEfFfGhHhIiJjkLmNnOoPpqRrsTtUuVvwXxYyZzAaBbCcDeEfFfGhHhIiJjkLmNnOoPpqRrsTtUuVvwXxYyZzAaBbCcDeEfFfGhHhIiJjkLmNnOoPpqRrsTtUuVvwXxYyZzAaBbCcDeEfFfGhHhIiJjkLmNnOoPpqRrsTtUuVvwXxYyZzAaBbCcDeEfFfGhHhIiJjkLmNnOoPpqRrsTtUuVvwXxYyZzAaBbCcDeEfFfGhHhIiJjkLmNnOoPpqRrsTtUuVvwXxYyZzAaBbCcDeEfFfGhHhIiJjkLmNnOoPpqRrsTtUuVvwXxYyZzAaBbCcDeEfFfGhHhIiJjkLmNnOoPpqRrsTtUuVvwXxYyZzAaBbCcDeEfFfGhHhIiJjkLmNnOoPpqRrsTtUuVvwXxYyZzAaBbCcDeEfFfGhHhIiJjkLmNnOoPpqRrsTtUuVvwXxYyZzAaBbCcDeEfFfGhHhIiJjkLmNnOoPpqRrsTt
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )