1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/Nuclei-Software-nuclei-linux-sdk

Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Nuclei Linux SDK

Сборка и тестирование Linux SDK

Сборка Docker-образа Linux SDK

Пожалуйста, ознакомьтесь с описанием каждой ветки, чтобы узнать, какую ветку следует выбрать.

Тестированные конфигурации

Docker

Если вы хотите использовать его в Docker-образе, пожалуйста, следуйте шагам ниже:

Не тестировалось для загрузки freeloader, требуется USB-соединение.

См. Как оценить Nuclei Linux SDK в Docker

Ubuntu 20.04 x86_64 хост

  • Статус: Работает
  • Зависимости сборки
  • Получите предварительно собранный qemu и openocd 2023.10 из Nuclei Development Tools
  • Настройте qemu и openocd и добавьте их в PATH
  • Версия mtools >= 4.0.24

Инструкции по сборке

Установка зависимостей

Установите программные зависимости, требуемые этим SDK, с помощью команды:

sudo xargs apt-get install -y < .github/apt.txt
sudo pip3 install -r .github/pipreq.txt

Установка Nuclei Tools

Скачайте предварительно собранные 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

Исправление проблемы запуска nuclei riscv gdb

Вы можете столкнуться с этой проблемой: 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 на желаемую ветку.

  • Если у вас есть хорошее сетевое соединение с GitHub, вы можете клонировать этот репозиторий с помощью команды git clone -b dev_nuclei_next https://github.com/Nuclei-Software/nuclei-linux-sdk
  • В противном случае, вы можете попробовать методы, предоставленные на https://github.com/Nuclei-Software/nuclei-linux-sdk/issues/10
  • Если HTTPS нестабилен, вы можете попробовать SSH, пожалуйста, поищите информацию о разнице между git clone ssh/https
  • Затем вам нужно будет клонировать все связанные подмодули с помощью:

    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 Linux SDK.

  • Linux 5.10
  • Uboot v2021.01
  • OpenSBI v0.9
  • Buildroot 2020.11.2

Наши изменения для поддержки 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, пожалуйста, используйте эту конфигурацию.
  • Вы можете добавить поддержку своего SoC, добавив конфигурацию в папку 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: зависит от реализации, вы можете изменить частоту таймера на другое значение для перезаписи значения в dts.
  • CPU_HZ: зависит от реализации, вы можете изменить частоту процессора на другое значение для перезаписи значения в dts.
  • PERIPH_HZ: зависит от реализации, вы можете изменить частоту периферии на другое значение для перезаписи значения в dts.
  • SIMULATION: зависит от реализации, если SIMULATION=1, только периферия, которая может быть смоделирована в RTL, будет присутствовать в dts, для demosoc/evalsoc будет присутствовать только UART, QSPI не будет.

TIMER_HZ/CPU_HZ/PERIPH_HZ зависят от реализации, они требуют реализации этой функции в dts вашего SoC, demosoc/evalsoc поддерживают это.

Для каждого SoC в conf/$SOC также содержится файл freeloader.mk, который используется для настройки функции freeloader для установки конфигурации процессора при запуске, например, настройка кэша, TLB, SMP функций. Для подробностей см. исходный код freeloader.

  • Устарело: Если вы хотите компилировать и запускать с использованием симулятора xl-spike, пожалуйста, ознакомьтесь с шагами, описанными в Загрузка Linux на Nuclei xl-spike
  • Если вы хотите компилировать и запускать с использованием FPGA оценочной платы, пожалуйста, ознакомьтесь с шагами, описанными в Загрузка Linux на Nuclei FPGA Оценочной Плате

Загрузка Linux на Nuclei xl-spike

Примечание: инструмент xl_spike должен быть установлен и добавлен в PATH заранее. Свяжитесь с нашими продажами по электронной почте contact@nucleisys.com, чтобы получить инструменты xl_spike.

Эта функция устарела сейчас, пожалуйста, используйте Nuclei Qemu.

Запуск на xl_spike

Если вы уже выполнили команду 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.

Загрузка Linux на Nuclei QEMU

С июня 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:/#

Загрузка Linux на Nuclei FPGA Оценочной Плате

Получение FPGA битстрима Nuclei Eval SoC от Nuclei

Демонстрационный 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.

  • По умолчанию частота CPU/periph и таймера составляет 16 МГц и 32768 Гц для demosoc.
  • По умолчанию частота CPU/periph и таймера составляет 100 МГц и 32768 Гц для evalsoc v1, базовый адрес DDR 0xA0000000.

Для получения подробной информации о 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 для этого случая).

Сборка Freeloader

Убедитесь, что у вас есть доступ к интернету, так как buildroot будет загружать необходимые пакеты в процессе сборки.

freeloader — это первая стадия загрузчика, которая содержит opensbi, uboot и dtb бинарные файлы. При запуске он включает кэши I/D и загружает opensbi, uboot и dtb из встроенной NOR-флеш-памяти в DDR, а затем переходит к входной точке opensbi.

Для сборки freeloader вам нужно выполнить команду make freeloader

Загрузка Freeloader на плату FPGA

Если вы подключили вашу плату к вашей среде разработки Linux и настроили драйверы JTAG, тогда вы можете выполнить команду make upload_freeloader, чтобы загрузить work/$SOC/freeloader/freeloader.elf на вашу плату.

Вы также можете использовать riscv-nuclei-elf-gdb и openocd для самостоятельной загрузки этой программы. Для простых шагов, пожалуйста, см. Известные проблемы и часто задаваемые вопросы.

Сборка образов загрузки с SD-карты

Если 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 следующее:

  • kernel.dtb : опционально, двоичный файл устройства tree, этот dtb опционален сейчас, так как freeloader.elf уже содержит dtb, мы можем использовать dtb внутри freeloader.elf, и если вы хотите использовать другое устройство tree для ядра Linux, вы можете изменить этот dtb и поместить его на SD-карту, иначе этот dtb не является обязательным файлом для SD-карты.
  • boot.scr : обязательно, скрипт загрузки, используемый uboot, сгенерирован из ./conf/evalsoc/uboot.cmd
  • uImage.lz4 : обязательно, сжатый архив ядра
  • uInitrd.lz4 : обязательно, сжатый архив корневой файловой системы

Рекомендуется использовать формат SDHC для SD-карты. SD-карта должна быть отформатирована в формат FAT32 с одной партицией.

Запуск Linux

Когда все вышеуказанное выполнено, вы можете перезагрузить плату, затем 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 )

Вы можете оставить комментарий после Вход в систему

Введение

Описание недоступно Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/Nuclei-Software-nuclei-linux-sdk.git
git@api.gitlife.ru:oschina-mirror/Nuclei-Software-nuclei-linux-sdk.git
oschina-mirror
Nuclei-Software-nuclei-linux-sdk
Nuclei-Software-nuclei-linux-sdk
dev_nuclei_next