segunda-feira, 7 de outubro de 2024

MILK-V Duo 256 - CARACTERÍSTICAS E DICAS

 

,


Características

Processador

  • Processadores RISC-V C906 de 1 GHz e 700 MHz
  • 8051 com SRAM de 8/6 KB
  • TPU CVITEK integrado para detecção inteligente
  • Suporta codificação de vídeo H.264/H.265, até 2880×1620@20fps
  • Compatível com sensores CMOS de alta definição
  • Saída de frequência programável para relógio do sensor
  • Recursos abrangentes de ISP para otimização de imagem
  • Suporte parcial à biblioteca OpenCV com aceleração de hardware CV
  • Codec de áudio de 16 bits com funções de entrada e saída de microfone integradas
  • Configurações de rede flexíveis com 1 Ethernet PHY

CSI-2 (câmera serial MIPI)

  • Possui uma interface FPC de 16 pinos para entrada de câmera MIPI de 2 pistas
  • Opera sinais I2C, CLK e RST em um nível de tensão de 1,8 V

Ethernet

  • Milk-V Duo inclui chip CV1800B com PHY de 100 Mbps
  • PHY está ligado a uma almofada de solda de 5 pinos
  • Transformador externo e soquete RJ45 são necessários para uso Ethernet

USB

  • Compatível com USB 2.0, compatível com versões anteriores de USB 1.1
  • Suporta vários modos de velocidade, funcionalidade Host/Dispositivo e protocolos de transferência
  • Interfaces expansíveis via Hub USB (até 127 dispositivos)
  • Modo de economia de energia, suporta dispositivos HID
  • Funciona como dispositivo escravo USB com software configurável
  • USB Tipo C para acesso à mídia de armazenamento

Micro SD

  • SDIO0 é compatível com o protocolo Secure Digital Memory (SD 3.0)

Sem WiFi (mas Ethernet via USB)

  • não tem WiFi (use ESP8266 ou ESP32 no gateway WiFi via UART, mas esse tipo contradiz todo o conceito de placa única)
  • O conector USB(-C) pode ser usado no modo de função dupla: como fonte de alimentação e pseudo rede chamada RNDIS (Ethernet virtual sobre USB)

Sem HDMI / Saída de vídeo

  • não tem saída de vídeo, na melhor das hipóteses pode ser conectado LCD baseado em I2C ou SPI e funcionar como framebuffer (veja este post como um começo)

Pinagem


  • Até 26 pinos GPIO no HEADER MilkV-Duo de 40 pinos fornecem acesso a periféricos internos, como SDIO, I2C, PWM, SPI, J-TAG e UART
  • Até 3x I2C
  • Até 5x UART
  • Até 1x SDIO1
  • Até 1x SPI
  • Até 2x ADC
  • Até 7x PWM
  • Até 1x RUN
  • Até 1x JTAG
LUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
[    0.000000] rcu: Preemptible hierarchical RCU implementation.
[    0.000000] rcu: 	RCU event tracing is enabled.
[    0.000000] 	Trampoline variant of Tasks RCU enabled.
[    0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 25 jiffies.
[    0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0
[    0.000000] riscv-intc: 64 local interrupts mapped
[    0.000000] plic: interrupt-controller@70000000: mapped 101 interrupts with 1 handlers for 2 contexts.
[    0.000000] random: get_random_bytes called from start_kernel+0x2e0/0x41c with crng_init=0
[    0.000000] riscv_timer_init_dt: Registering clocksource cpuid [0] hartid [0]
[    0.000000] clocksource: riscv_clocksource: mask: 0xffffffffffffffff max_cycles: 0x5c40939b5, max_idle_ns: 440795202646 ns
[    0.000009] sched_clock: 64 bits at 25MHz, resolution 40ns, wraps every 4398046511100ns
[    0.008425] Calibrating delay loop (skipped), value calculated using timer frequency.. 50.00 BogoMIPS (lpj=100000)
[    0.019128] pid_max: default: 4096 minimum: 301
[    0.024025] Mount-cache hash table entries: 512 (order: 0, 4096 bytes, linear)
[    0.031444] Mountpoint-cache hash table entries: 512 (order: 0, 4096 bytes, linear)
[    0.041119] ASID allocator initialised with 65536 entries
[    0.046849] rcu: Hierarchical SRCU implementation.
[    0.052223] EFI services will not be available.
[    0.057313] devtmpfs: initialized
[    0.066807] early_time_log: do_initcalls: 4548979us
[    0.072472] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns
[    0.082528] futex hash table entries: 16 (order: -4, 384 bytes, linear)
[    0.089496] pinctrl core: initialized pinctrl subsystem
[    0.095414] NET: Registered protocol family 16
[    0.100480] DMA: preallocated 128 KiB GFP_KERNEL pool for atomic allocations
[    0.107813] DMA: preallocated 128 KiB GFP_KERNEL|GFP_DMA32 pool for atomic allocations
[    0.116713] thermal_sys: Registered thermal governor 'step_wise'
[    0.132538] OF: /gpio@03020000/gpio-controller@0: could not find phandle
[    0.145753] OF: /gpio@03021000/gpio-controller@1: could not find phandle
[    0.152748] OF: /gpio@03022000/gpio-controller@2: could not find phandle
[    0.159737] OF: /gpio@03023000/gpio-controller@3: could not find phandle
[    0.166722] OF: /gpio@05021000/gpio-controller@4: could not find phandle
[    0.175540] clk reset: nr_reset=64 resource_size=8
[    0.181130] get audio clk=24576000
[    0.184672] cvitek-i2s-subsys 4108000.i2s_subsys: Set clk_sdma_aud0~3 to 24576000
[    0.205405] dw_dmac 4330000.dma: CVITEK DMA Controller, 8 channels, probe done!
[    0.213805] SCSI subsystem initialized
[    0.218237] usbcore: registered new interface driver usbfs
[    0.224017] usbcore: registered new interface driver hub
[    0.229634] usbcore: registered new device driver usb
[    0.238395] Ion: ion_parse_dt_heap_common: id 0 type 2 name carveout align 1000
[    0.246344] Ion: rmem_ion_device_init: heap carveout base 0x0000000082473000 size 0x0000000001acd000 dev (____ptrval____)
[    0.257624] ion_carveout_heap_create, size=0x1acd000
[    0.262937] cvi_get_rtos_ion_size, rtos ion_size get:0x0
[    0.398272] platform carveout: [ion] add heap id 0, type 2, base 0x82473000, size 0x1acd000
[    0.407276] Advanced Linux Sound Architecture Driver Initialized.
[    0.414938] clocksource: Switched to clocksource riscv_clocksource
[    0.423536] NET: Registered protocol family 2
[    0.429180] tcp_listen_portaddr_hash hash table entries: 256 (order: 0, 4096 bytes, linear)
[    0.437895] TCP established hash table entries: 512 (order: 0, 4096 bytes, linear)
[    0.445680] TCP bind hash table entries: 512 (order: 0, 4096 bytes, linear)
[    0.452950] TCP: Hash tables configured (established 512 bind 512)
[    0.459557] UDP hash table entries: 128 (order: 0, 4096 bytes, linear)
[    0.466324] UDP-Lite hash table entries: 128 (order: 0, 4096 bytes, linear)
[    0.473794] NET: Registered protocol family 1
[    0.479012] RPC: Registered named UNIX socket transport module.
[    0.485127] RPC: Registered udp transport module.
[    0.490010] RPC: Registered tcp transport module.
[    0.494934] RPC: Registered tcp NFSv4.1 backchannel transport module.
[    0.504220] Initialise system trusted keyrings
[    0.509141] workingset: timestamp_bits=62 max_order=13 bucket_order=0
[    0.524041] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[    0.531324] jffs2: version 2.2. (NAND) © 2001-2006 Red Hat, Inc.
[    0.538516] Key type asymmetric registered
[    0.542733] Asymmetric key parser 'x509' registered
[    0.554087] Serial: 8250/16550 driver, 5 ports, IRQ sharing disabled
[    0.562710] printk: console [ttyS0] disabled
[    0.567239] 4140000.serial: ttyS0 at MMIO 0x4140000 (irq = 15, base_baud = 1562500) is a 16550A
[    0.576276] printk: console [ttyS0] enabled
[    0.584875] printk: bootconsole [sbi0] disabled
[    0.595241] 41c0000.serial: ttyS4 at MMIO 0x41c0000 (irq = 16, base_baud = 1562500) is a 16550A
[    0.607812] cvi-spif 10000000.cvi-spif: unrecognized JEDEC id bytes: 00 00 00 00 00 00
[    0.616044] cvi-spif 10000000.cvi-spif: device scan failed
[    0.621769] cvi-spif 10000000.cvi-spif: unable to setup flash chip
[    0.635092] libphy: Fixed MDIO Bus: probed
[    0.639938] bm-dwmac 4070000.ethernet: IRQ eth_wake_irq not found
[    0.646304] bm-dwmac 4070000.ethernet: IRQ eth_lpi not found
[    0.652286] bm-dwmac 4070000.ethernet: Hash table entries set to unexpected value 0
[    0.660361] bm-dwmac 4070000.ethernet: no reset control found
[    0.666605] bm-dwmac 4070000.ethernet: User ID: 0x10, Synopsys ID: 0x37
[    0.673525] bm-dwmac 4070000.ethernet: 	DWMAC1000
[    0.678424] bm-dwmac 4070000.ethernet: DMA HW capability register supported
[    0.685641] bm-dwmac 4070000.ethernet: RX Checksum Offload Engine supported
[    0.692858] bm-dwmac 4070000.ethernet: COE Type 2
[    0.697743] bm-dwmac 4070000.ethernet: TX Checksum insertion supported
[    0.704512] bm-dwmac 4070000.ethernet: Normal descriptors
[    0.710115] bm-dwmac 4070000.ethernet: Ring mode enabled
[    0.715630] bm-dwmac 4070000.ethernet: Enable RX Mitigation via HW Watchdog Timer
[    0.723389] bm-dwmac 4070000.ethernet: device MAC address 96:8d:89:ed:5b:ca
[    0.758200] libphy: stmmac: probed
[    0.763554] bm-dwmac 4070000.ethernet: Cannot get clk_500m_eth!
[    0.769815] bm-dwmac 4070000.ethernet: Cannot get gate_clk_axi4!
[    0.777191] dwc2 4340000.usb: axi clk installed
[    0.781982] dwc2 4340000.usb: apb clk installed
[    0.786726] dwc2 4340000.usb: 125m clk installed
[    0.791530] dwc2 4340000.usb: 33k clk installed
[    0.796239] dwc2 4340000.usb: 12m clk installed
[    0.801042] dwc2 4340000.usb: EPs: 8, dedicated fifos, 3072 entries in SPRAM
[    0.808950] dwc2 4340000.usb: DWC OTG Controller
[    0.813824] dwc2 4340000.usb: new USB bus registered, assigned bus number 1
[    0.821096] dwc2 4340000.usb: irq 36, io mem 0x04340000
[    0.827545] hub 1-0:1.0: USB hub found
[    0.831570] hub 1-0:1.0: 1 port detected
[    0.837416] usbcore: registered new interface driver usb-storage
[    0.844106] i2c /dev entries driver
[    0.849865] sdhci: Secure Digital Host Controller Interface driver
[    0.856316] sdhci: Copyright(c) Pierre Ossman
[    0.860841] sdhci-pltfm: SDHCI platform and OF driver helper
[    0.867007] cvi:sdhci_cvi_probe
[    0.914963] mmc0: SDHCI controller on 4310000.cv-sd [4310000.cv-sd] using ADMA 64-bit
[    0.923131] cvi_proc_init cvi_host 0x(____ptrval____)
[    0.929146] usbcore: registered new interface driver usbhid
[    0.938965] usbhid: USB HID core driver
[    0.944921] cvitek-i2s 4100000.i2s: cvi_i2s_probe
[    0.955198] cvitek-i2s 4130000.i2s: cvi_i2s_probe
[    0.960922] cviteka-adc sound_adc: cviteka_adc_probe, dev name=sound_adc
[    0.968044] cviteka-adc sound_adc: cviteka_adc_probe start devm_snd_soc_register_card
[    0.976650] cvitekaadc 300a100.adc: cvitekaadc_probe
[    0.987619] cviteka-dac sound_dac: cviteka_dac_probe, dev name=sound_dac
[    0.995091] cvitekadac 300a000.dac: cvitekadac_probe
[    1.000685] cvitekadac_probe gpio_is_valid mute_pin_l
[    1.006585] NET: Registered protocol family 17
[    1.011477] Loading compiled-in X.509 certificates
[    1.039015] mmc0: new SDHC card at address 0001
[    1.051483] mmcblk0: mmc0:0001 MSD20 14.6 GiB 
[    1.061126] cviteka-adc sound_adc: cviteka_adc_probe, dev name=sound_adc
[    1.068302] cviteka-adc sound_adc: cviteka_adc_probe start devm_snd_soc_register_card
[    1.080491]  mmcblk0: p1 p2 p3
[    1.088431] cviteka-dac sound_dac: cviteka_dac_probe, dev name=sound_dac
[    1.101557] cfg80211: Loading compiled-in X.509 certificates for regulatory database
[    1.112515] cfg80211: Loaded X.509 cert 'sforshee: 00b28ddf47aef9cea7'
[    1.119630] cfg80211: failed to load regulatory.db
[    1.124824] ALSA device list:
[    1.128383] dw-apb-uart 4140000.serial: forbid DMA for kernel console
[    1.148546] EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Opts: (null)
[    1.157087] VFS: Mounted root (ext4 filesystem) on device 179:2.
[    1.166212] devtmpfs: mounted
[    1.169547] Freeing unused kernel memory: 144K
[    1.174226] Kernel memory protection not selected by kernel config.
[    1.180757] Run /sbin/init as init process
[    1.185024]   with arguments:
[    1.188116]     /sbin/init
[    1.190917]   with environment:
[    1.194189]     HOME=/
[    1.196652]     TERM=linux
[    1.199477] early_time_log: run_init_process: 5681657us
[    1.307708] EXT4-fs (mmcblk0p2): re-mounted. Opts: errors=remount-ro
[    1.395862] random: fast init done
[    1.511578] random: dd: uninitialized urandom read (512 bytes read)
[    1.725888] random: dhcpcd: uninitialized urandom read (112 bytes read)
[    1.817530] bm-dwmac 4070000.ethernet eth0: PHY [stmmac-0:00] driver [Generic PHY] (irq=POLL)
[    1.839025] dwmac1000: Master AXI performs any burst length
[    1.845702] bm-dwmac 4070000.ethernet eth0: No Safety Features support found
[    1.853923] bm-dwmac 4070000.ethernet eth0: IEEE 1588-2002 Timestamp supported
[    1.862474] bm-dwmac 4070000.ethernet eth0: configuring for phy/rmii link mode
[    7.195361] random: dnsmasq: uninitialized urandom read (128 bytes read)
[    7.202528] random: dnsmasq: uninitialized urandom read (48 bytes read)
[    7.250085] cv180x_sys: bad vermagic: kernel tainted.
[    7.255425] Disabling lock debugging due to kernel taint
[    7.261336] cv180x_sys: loading out-of-tree module taints kernel.
[    7.294527] res-reg: start: 0xa0c8000, end: 0xa0c801f, virt-addr(ffffffd0040c9000).
[    7.303316] CVITEK CHIP ID = 22
[    7.318433] cvi_rtos_cmdqu_probe start ---
[    7.322806] name=1900000.rtos_cmdqu
[    7.327194] res-reg: start: 0x1900000, end: 0x1900fff, virt-addr(ffffffd004228000).
[    7.335254] cvi_rtos_cmdqu_probe DONE
[    7.339691] [cvi_spinlock_init] success
[    7.377509] cif a0c2000.cif: cam0 clk installed
[    7.382321] cif a0c2000.cif: cam1 clk installed
[    7.387481] cif a0c2000.cif: vip_sys_2 clk installed
[    7.392945] cif a0c2000.cif: clk_mipimpll clk installed (____ptrval____)
[    7.400203] cif a0c2000.cif: clk_disppll clk installed (____ptrval____)
[    7.407370] cif a0c2000.cif: clk_fpll clk installed (____ptrval____)
[    7.414298] cif a0c2000.cif: (0) res-reg: start: 0xa0c2000, end: 0xa0c3fff.
[    7.421797] cif a0c2000.cif:  virt-addr((____ptrval____))
[    7.427690] cif a0c2000.cif: (1) res-reg: start: 0xa0d0000, end: 0xa0d0fff.
[    7.435183] cif a0c2000.cif:  virt-addr((____ptrval____))
[    7.441074] cif a0c2000.cif: (2) res-reg: start: 0xa0c4000, end: 0xa0c5fff.
[    7.448559] cif a0c2000.cif:  virt-addr((____ptrval____))
[    7.454448] cif a0c2000.cif: (3) res-reg: start: 0x3001c30, end: 0x3001c5f.
[    7.461933] cif a0c2000.cif:  virt-addr((____ptrval____))
[    7.467824] cif a0c2000.cif: no pad_ctrl for cif
[    7.472974] cif a0c2000.cif: request irq-26 as cif-irq0
[    7.478759] cif a0c2000.cif: request irq-27 as cif-irq1
[    7.484514] cif a0c2000.cif: rst_pin = 424, pol = 1
[    7.499342] snsr_i2c snsr_i2c: i2c:-------hook 0
[    7.504362] snsr_i2c snsr_i2c: i2c:-------hook 1
[    7.509771] snsr_i2c snsr_i2c: i2c:-------hook 2
[    7.515073] snsr_i2c snsr_i2c: i2c:-------hook 3
[    7.519993] snsr_i2c snsr_i2c: i2c:-------hook 4
[    7.596322] vi_core_probe:203(): res-reg: start: 0xa000000, end: 0xa07ffff, virt-addr(ffffffd004400000).
[    7.606219] vi_core_probe:216(): irq(28) for isp get from platform driver.
[    7.614260] vi_tuning_buf_setup:253(): tuning fe_addr[0]=0x8183f490, be_addr[0]=0x81837290, post_addr[0]=0x81820000
[    7.625482] vi_tuning_buf_setup:253(): tuning fe_addr[1]=0x8193f490, be_addr[1]=0x81937290, post_addr[1]=0x81920000
[    7.636654] vi_tuning_buf_setup:253(): tuning fe_addr[2]=0x8185f490, be_addr[2]=0x81857290, post_addr[2]=0x81840000
[    7.647773] sync_task_init:177(): sync_task_init vi_pipe 0
[    7.653739] sync_task_init:177(): sync_task_init vi_pipe 1
[    7.659725] sync_task_init:177(): sync_task_init vi_pipe 2
[    7.666173] vi_core_probe:252(): isp registered as cvi-vi
[    7.750302] cvi_dwa_probe:487(): done with rc(0).
[    7.791388] cv180x-cooling cv180x_cooling: elems of dev-freqs=6
[    7.797661] cv180x-cooling cv180x_cooling: dev_freqs[0]: 850000000 500000000
[    7.805487] cv180x-cooling cv180x_cooling: dev_freqs[1]: 425000000 375000000
[    7.813089] cv180x-cooling cv180x_cooling: dev_freqs[2]: 425000000 300000000
[    7.820782] cv180x-cooling cv180x_cooling: Cooling device registered: cv180x_cooling
[    7.866285] jpu ctrl reg pa = 0xb030000, va = (____ptrval____), size = 256
[    7.873985] end jpu_init result = 0x0
[    8.065890] cvi_vc_drv_init result = 0x0
[    8.080795] sh (172): drop_caches: 3
[    8.261909] using random self ethernet address
[    8.261928] using random host ethernet address
[    8.309722] usb0: HOST MAC 6e:54:6b:61:a9:f5
[    8.312146] usb0: MAC ce:b2:db:da:82:7b
[    8.312220] dwc2 4340000.usb: bound driver configfs-gadget
[    8.346187] dwc2 4340000.usb: new device is high-speed
[    8.391171] dwc2 4340000.usb: new device is high-speed
[    8.682141] dwc2 4340000.usb: new device is high-speed
[    8.750359] dwc2 4340000.usb: new address 14
[   57.067015] random: crng init done

Nota: usb0: HOST MAC e MAC são definidos aleatoriamente e mudam após cada (re)inicialização.

/proc/cpuinfo

[root@milkv-duo]~# more /proc/cpuinfo 
processor       : 0
hart            : 0
isa             : rv64imafdvcsu
mmu             : sv39

df

[root@milkv-duo]~# df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/root               763327    157774    562136  22% /
devtmpfs                 14680         0     14680   0% /dev
tmpfs                    14752         0     14752   0% /dev/shm
tmpfs                    14752        52     14700   0% /tmp
tmpfs                    14752        28     14724   0% /run

[root@milkv-duo]~# df -h
Filesystem                Size      Used Available Use% Mounted on
/dev/root               745.4M    154.1M    549.0M  22% /
devtmpfs                 14.3M         0     14.3M   0% /dev
tmpfs                    14.4M         0     14.4M   0% /dev/shm
tmpfs                    14.4M     52.0K     14.4M   0% /tmp
tmpfs                    14.4M     28.0K     14.4M   0% /run

ps

PID   USER     COMMAND
    1 root     init
    2 root     [kthreadd]
    3 root     [rcu_gp]
    4 root     [rcu_par_gp]
    5 root     [kworker/0:0-eve]
    7 root     [kworker/u2:0-ev]
    8 root     [mm_percpu_wq]
    9 root     [ksoftirqd/0]
   10 root     [rcu_preempt]
   11 root     [kdevtmpfs]
   12 root     [rcu_tasks_kthre]
   13 root     [oom_reaper]
   14 root     [writeback]
   15 root     [kcompactd0]
   24 root     [kblockd]
   25 root     [watchdogd]
   27 root     [kworker/0:1H-mm]
   28 root     [rpciod]
   29 root     [kworker/u3:0]
   30 root     [xprtiod]
   31 root     [cfg80211]
   32 root     [kswapd0]
   33 root     [nfsiod]
   34 root     [spi0]
   35 root     [spi1]
   36 root     [stmmac_wq]
   37 root     [kworker/u2:1]
   70 root     [irq/45-cviusb-o]
   71 root     [irq/46-cd-gpio-]
   72 root     [sdhci]
   73 root     [irq/23-mmc0]
   75 root     [ion_system_heap]
   76 root     [mmc_complete]
   81 root     [jbd2/mmcblk0p2-]
   82 root     [ext4-rsv-conver]
   97 root     /sbin/syslogd -n
  101 root     /sbin/klogd -n
  131 dhcpcd   dhcpcd: [master] [ip4]
  132 root     dhcpcd: [privileged actioneer]
  133 dhcpcd   dhcpcd: [network proxy]
  134 dhcpcd   dhcpcd: [control proxy]
  147 root     [kworker/0:3-eve]
  156 root     /usr/sbin/ntpd -g -p /var/run/ntpd.pid
  165 root     /usr/sbin/dropbear -R
  170 nobody   /usr/sbin/dnsmasq
  180 root     [cvitask_isp_pre]
  181 root     [cvitask_isp_bla]
  182 root     [cvitask_isp_err]
  184 root     [cvitask_vpss_0]
  185 root     [cvitask_vpss_1]
  187 root     [gdc_work]
  192 root     [cvitask_tpu_wor]
  198 root     {S99user} /bin/sh /etc/init.d/S99user start
  199 root     [kworker/0:2H]
  211 root     -sh
 1297 root     /usr/sbin/dropbear -R
 1302 root     -sh
 1331 root     sleep 0.5
 1332 root     ps

/bin

[root@milkv-duo]~# ls /bin
arch           dmesg          linux64        nuke           sleep
ash            dnsdomainname  ln             pidof          stty
base32         dumpkmap       login          ping           su
base64         echo           ls             pipe_progress  sync
busybox        egrep          lsattr         printenv       tar
cat            false          mk_cmds        ps             touch
chattr         fdflush        mkdir          pwd            true
chgrp          fgrep          mknod          resume         umount
chmod          getopt         mktemp         rm             uname
chown          grep           more           rmdir          usleep
compile_et     gunzip         mount          run-parts      vi
cp             gzip           mountpoint     sed            watch
cpio           hostname       mt             setarch        zcat
date           kill           mv             setpriv
dd             link           netstat        setserial
df             linux32        nice           sh

/usr/bin

[root@milkv-duo]~# ls /usr/bin/
[                  fold               od                 tee
[[                 free               openvt             telnet
ar                 fuser              passwd             test
ascii              gcore              paste              tftp
awk                gdb                patch              time
basename           gdb-add-index      pip                top
bc                 head               pip3               tr
bunzip2            hexdump            pip3.9             traceroute
bzcat              hexedit            printf             truncate
chrt               hostid             pyserial-miniterm  ts
chvt               htop               pyserial-ports     tty
cksum              id                 python             uniq
clear              install            python3            unix2dos
cmp                ipcrm              python3.9          unlink
crc32              ipcs               readlink           unlzma
crontab            killall            realpath           unlzop
cut                last               renice             unxz
cvi_pinmux         less               reset              unzip
dbclient           logger             resize             uptime
dc                 logname            scp                uudecode
deallocvt          lsof               seq                uuencode
diff               lspci              setfattr           vlock
dirname            lsscsi             setkeycodes        w
dos2unix           lsusb              setsid             wc
dropbearconvert    lzcat              sha1sum            wget
dropbearkey        lzma               sha256sum          which
du                 lzopcat            sha3sum            who
easy_install       md5sum             sha512sum          whoami
easy_install-3.9   mesg               shred              xargs
eject              microcom           smtpd.py.9         xmlcatalog
env                mkfifo             sort               xmllint
event_rpcgen.py    mkpasswd           ssh                xmlwf
evtest             nl                 strace             xsltproc
expr               nohup              strace-log-merge   xxd
factor             nproc              strings            xz
fallocate          nslookup           svc                xzcat
find               ntpdate            svok               yes
flock              ntptime            tail

[root@milkv-duo]~# ls -1 /usr/bin/ | wc -l
151

Vários Milk-V Duos / IPs alternativos

Para oferecer suporte a vários Milk-V Duos no mesmo host via USB-C, você atribui a cada placa sua própria rede:

  • placa 1: 192.168.51 .0
  • placa 2: 192.168.52 .0
  • placa 3: 192.168.53 .0

Edite em cada quadro dois arquivos :

/mnt/system/usb-rndis.sh(baseado em buildroot) ou /etc/usb-rndis.sh(outros sistemas):

ifconfig usb0 192.168.51.1

/etc/dnsmasq.conf:

dhcp-range=192.168.51.2,192.168.51.242,1h

Para adicionar uma nova placa, faça login em 192.168.42.1 como de costume e altere para 192.168.52.1 e assim por diante.

Redimensionando Disco (16Gb)

Por padrão, todo o espaço disponível no cartão SD é de apenas 1 GB (ou 2 GB caso você use outra distribuição), mas você pode disponibilizar o restante do cartão SD, /datapor exemplo

%     
% fdisk /dev/mmcblk0
n (new partition)
p (primary partition)
4
<RETURN> (confirm start selection)
<RETURN> (confirm end selection)
w
q

% reboot

e faça login novamente, continue com:

% mkfs.ext4 /dev/mmcblk0p4
% echo "/dev/mmcblk0p4 /data ext4 defaults 0 0" >> /etc/fstab
% reboot


ao efetuar login novamente, você verá o novo espaço disponível:

mount /dev/mmcblk0p4 /mnt

Iniciar script na inicialização

A partir da imagem do sistema V1.0.4, o /etc/init.d/S99userexecuta /mnt/data/auto.shse existir:

% mkdir /mnt/data
% vi /mnt/data/auto.sh

e liste cada um dos processos:

/path/to/my/script.sh &
python /path/to/another/script.py &

TinyCC

I2C: SSD1306 OLED

Imagem de disco personalizada BuildRoot Milk-V Duo

Acesso à Internet para Milk-V Duo

RNDIS (Ethernet Virtual sobre USB)

IP estático para host com RNDIS

A SMARTCORE FORNECE CHIPS E MÓDULOS PARA IOT, COMUNICAÇÃO WIRELESS, BIOMETRIA, CONECTIVIDADE, RASTREAMENTO E AUTOMAÇÃO. NOSSO PORTFÓLIO INCLUI MODEM 2G/3G/4G/NB-IOT, SATELITAL, MÓDULOS WIFI, BLUETOOTH, GPS, SIGFOX, LORA, LEITOR DE CARTÃO, LEITOR QR CCODE, MECANISMO DE IMPRESSÃO, MINI-BOARD PC, ANTENA, PIGTAIL, BATERIA, REPETIDOR GPS E SENSORES. 

Nenhum comentário:

Postar um comentário