embeded/odroid2023. 9. 5. 11:08

라즈베리 파이 3b

$ cat /proc/cpuinfo 
processor : 0
BogoMIPS : 38.40
Features : fp asimd evtstrm crc32 cpuid
CPU implementer : 0x41
CPU architecture: 8
CPU variant : 0x0
CPU part : 0xd03
CPU revision : 4

 

odroid-c2

$ cat /proc/cpuinfo 
processor : 0
BogoMIPS : 2.00
Features : fp asimd crc32
CPU implementer : 0x41
CPU architecture: 8
CPU variant : 0x0
CPU part : 0xd03
CPU revision : 4

 

소스코드

#include <stdint.h>
#include "timer.h"

void main()
{
opal_sys_timer_freq();
}
#ifndef OPAL_SYS_ARCH_TIMER_H
#define OPAL_SYS_ARCH_TIMER_H 1

#include <sys/times.h>

typedef uint64_t opal_timer_t;

static inline opal_timer_t
opal_sys_timer_get_cycles(void)
{
    opal_timer_t ret;

    __asm__ __volatile__ ("isb" ::: "memory");
    __asm__ __volatile__ ("mrs %0,  CNTVCT_EL0" : "=r" (ret));

    return ret;
}


static inline opal_timer_t
opal_sys_timer_freq(void)
{
    opal_timer_t freq;
    __asm__ __volatile__ ("mrs %0,  CNTFRQ_EL0" : "=r" (freq));
    return (opal_timer_t)(freq);
}

#define OPAL_HAVE_SYS_TIMER_GET_CYCLES 1

#endif /* ! OPAL_SYS_ARCH_TIMER_H */

 

실행파일 디스어셈블

0000000000000724 <opal_sys_timer_freq>:
 724: d10043ff  sub sp, sp, #0x10
 728: d53be000  mrs x0, cntfrq_el0
 72c: f90007e0  str x0, [sp, #8]
 730: f94007e0  ldr x0, [sp, #8]
 734: 910043ff  add sp, sp, #0x10
 738: d65f03c0  ret

 

라즈베리 파이(좌), odroid-c2(우)

(gdb) r
Starting program: /home/pi/src/a.out 
[Inferior 1 (process 2762) exited normally]


(gdb) r
Starting program: /root/src/a.out 

Program received signal SIGILL, Illegal instruction.
0x0000005555555720 in opal_sys_timer_freq ()

 

MRS
Move the contents of the CPSR or SPSR to a general-purpose register.

Usage
Use MRS in combination with MSR as part of a read-modify-write sequence for updating a PSR, for example to change processor mode, or to clear the Q flag.

Caution
You must not attempt to access the SPSR when the processor is in User or System mode. This is your responsibility. The assembler cannot warn you about this as it does not know what processor mode code will be executed in.

Architectures
This instruction is available in ARM architecture versions 3 and above.

[링크 : https://developer.arm.com/documentation/dui0068/b/ARM-Instruction-Reference/Miscellaneous-ARM-instructions/MRS]

 

MSR
Load specified fields of the CPSR or SPSR with an immediate constant, or from the contents of a general-purpose register.

Architectures
This instruction is available in ARM architecture versions 3 and above.

[링크 : https://developer.arm.com/documentation/dui0068/b/ARM-Instruction-Reference/Miscellaneous-ARM-instructions/MSR]

 

 

[링크 :https://developer.arm.com/documentation/ddi0601/2022-03/AArch64-Registers/CNTFRQ-EL0--Counter-timer-Frequency-register]

 

 

Saved Process Status Register

[링크 : https://developer.arm.com/documentation/den0024/a/ARMv8-Registers/AArch64-special-registers/Saved-Process-Status-Register]

 

AArch64 (ARM64)에서는 ARMv7의 CPSR (Current Program Status Register)과 directly 연결되는 개념을 갖고 있지 않다. 그 대신 AArch64에서는 CPSR field의 각 값을 PSTATE로 정의하였다.

[링크 : https://gongpd.tistory.com/9]

 

EL이라는 것에 따라서 PSR 접근이 달라지는 거라면.. 명령어도 illegal이 될 수 있으려나?

[링크 : https://developer.arm.com/documentation/den0024/a/ARMv8-Registers/AArch64-special-registers]

 

EL0 = ARMv7의 User 모드
EL1 = ARMv7의 Supervisor 모드(커널 코드 실행)
EL2 = 하이퍼바이저 모드(하이퍼바이저 실행)
EL3 = Secure 모드(트러스트 존 실행)

[링크 : https://blog.naver.com/crushhh/222093330435]

 

분위기를 보아하니.. cpu ring level(privilige mode) 에 따라서 접근 가능한 레지스터가 바뀌는데

그러면서 특정 명령어가 사용불능이 되기도 하는건가 싶은데

 

라즈베리 파이 3b / 64 odroid c2
$ uname -a
Linux raspberrypi 6.1.21-v8+ #1642 SMP PREEMPT Mon Apr  3 17:24:16 BST 2023 aarch64 GNU/Linux
# uname -a
Linux odroid 3.16.85-65 #1 SMP PREEMPT Mon Jan 18 13:32:38 UTC 2021 aarch64 aarch64 aarch64 GNU/Linux

 

설마 커널 버전에 따른 atf 혹은 el 설정방법 차이나 누락으로 인해 이런 문제가 발생하는건가?

 

시간나면 odroid-c2용 armbian 으로 시도해봐야겠다. 커널 버전이 너무 차이나네..

Armbian 23.8 Bookworm
Kernel 6.1, Size: 467Mb, Release date: Aug 31, 2023

[링크 : https://www.armbian.com/odroid-c2/]

 

+

걍 armbian 하니 잘 된다. 커널 버전이나 aarch64 지원이 미흡한 구버전 커널이라 그럴수도 있을 듯 하다.

minimonk@odroidc2:~$ mpirun
--------------------------------------------------------------------------
mpirun could not find anything to do.

It is possible that you forgot to specify how many processes to run
via the "-np" argument.
--------------------------------------------------------------------------

'embeded > odroid' 카테고리의 다른 글

wayland on odroid-c2  (0) 2021.11.22
odroid c2 gpio 와 wiringpi  (0) 2021.09.29
g_mass_storage rpi - odroid c2  (0) 2021.09.28
g_mass_storage ins/rm 실패  (0) 2021.09.28
odroid c2 ubuntu 18.04, 20.04 kernel 버전 정보  (0) 2021.09.27
Posted by 구차니
embeded/odroid2021. 11. 22. 22:17

라즈베리 파이랑 비슷하네

일단 odroid-c2 / Ubuntu 20.04.3 LTS (GNU/Linux 3.16.85-65 aarch64) 버전인데

$ sudo apt-cache search wayland
libwayland-client++0 - wayland compositor infrastructure - client library C++ bindings
libwayland-client-extra++0 - wayland compositor infrastructure - client library extra C++ bindings
libwayland-cursor++0 - wayland compositor infrastructure - cursor library C++ bindings
libwayland-egl++0 - wayland compositor infrastructure - EGL library C++ bindings
libwayland-egl1-mesa - transitional dummy package
libweston-8-0 - reference implementation of a wayland compositor (shared libs)
libweston-8-dev - reference implementation of a wayland compositor (shared libs)
weston - reference implementation of a wayland compositor

 

그나저나.. 패키지가 라즈베리에 비하면 많이 적어 보이네

$ sudo apt-get install weston
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
  libegl1-mesa libfreerdp2-2 libpipewire-0.2-1 libweston-8-0 libwinpr2-2 libxcb-composite0
Suggested packages:
  freerdp2-x11
The following NEW packages will be installed:
  libegl1-mesa libfreerdp2-2 libpipewire-0.2-1 libweston-8-0 libwinpr2-2 libxcb-composite0 weston
0 upgraded, 7 newly installed, 0 to remove and 119 not upgraded.
Need to get 3942 kB of archives.
After this operation, 17.5 MB of additional disk space will be used.
Do you want to continue? [Y/n]

 

그래도.. 라즈베리 보단 메모리가 큰데 돌려볼만 하려나?

아니면 저사양에서도 문제없이 잘 돌아가려나?

'embeded > odroid' 카테고리의 다른 글

ordroid c2 - mrs 명령어 고찰  (0) 2023.09.05
odroid c2 gpio 와 wiringpi  (0) 2021.09.29
g_mass_storage rpi - odroid c2  (0) 2021.09.28
g_mass_storage ins/rm 실패  (0) 2021.09.28
odroid c2 ubuntu 18.04, 20.04 kernel 버전 정보  (0) 2021.09.27
Posted by 구차니
embeded/odroid2021. 9. 29. 17:50

ADC 제외하고는 3.3V

라즈베리와 동일한 전압레벨이니 ok

[링크 : https://wiki.odroid.com/odroid-c2/hardware/expansion_connectors]

 

이런저런 경고가 뜨지만 무시하고 설치!

$ sudo apt install software-properties-common
$ sudo add-apt-repository ppa:hardkernel/ppa
$ sudo apt update
$ sudo apt install odroid-wiringpi
$ gpio readall
 +-----+-----+---------+------+---+--- C2 ---+---+------+---------+-----+-----+
 | I/O | wPi |   Name  | Mode | V | Physical | V | Mode |  Name   | wPi | I/O |
 +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
 |     |     |    3.3V |      |   |  1 || 2  |   |      | 5V      |     |     |
 | 205 |   8 |   SDA.1 |   IN | 1 |  3 || 4  |   |      | 5V      |     |     |
 | 206 |   9 |   SCL.1 |   IN | 1 |  5 || 6  |   |      | 0V      |     |     |
 | 249 |   7 |  IO.249 |   IN | 1 |  7 || 8  |   |      | TxD1    | 15  |     |
 |     |     |      0V |      |   |  9 || 10 |   |      | RxD1    | 16  |     |
 | 247 |   0 |  IO.247 |   IN | 1 | 11 || 12 | 1 | IN   | IO.238  | 1   | 238 |
 | 239 |   2 |  IO.239 |   IN | 1 | 13 || 14 |   |      | 0V      |     |     |
 | 237 |   3 |  IO.237 |   IN | 1 | 15 || 16 | 1 | IN   | IO.236  | 4   | 236 |
 |     |     |    3.3V |      |   | 17 || 18 | 1 | IN   | IO.233  | 5   | 233 |
 | 235 |  12 |  IO.235 |   IN | 1 | 19 || 20 |   |      | 0V      |     |     |
 | 232 |  13 |  IO.232 |   IN | 1 | 21 || 22 | 1 | IN   | IO.231  | 6   | 231 |
 | 230 |  14 |  IO.230 |   IN | 1 | 23 || 24 | 1 | IN   | IO.229  | 10  | 229 |
 |     |     |      0V |      |   | 25 || 26 | 1 | OUT  | IO.225  | 11  | 225 |
 |     |  30 |   SDA.2 |      |   | 27 || 28 |   |      | SCL.2   | 31  |     |
 | 228 |  21 |  IO.228 |   IN | 1 | 29 || 30 |   |      | 0V      |     |     |
 | 219 |  22 |  IO.219 |   IN | 1 | 31 || 32 | 1 | IN   | IO.224  | 26  | 224 |
 | 234 |  23 |  IO.234 |   IN | 0 | 33 || 34 |   |      | 0V      |     |     |
 | 214 |  24 |  IO.214 |   IN | 1 | 35 || 36 | 1 | IN   | IO.218  | 27  | 218 |
 |     |  25 |   AIN.1 |      |   | 37 || 38 |   |      | 1V8     | 28  |     |
 |     |     |      0V |      |   | 39 || 40 |   |      | AIN.0   | 29  |     |
 +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
 | I/O | wPi |   Name  | Mode | V | Physical | V | Mode |  Name   | wPi | I/O |
 +-----+-----+---------+------+---+--- C2 ---+---+------+---------+-----+-----+

Err:3 http://deb.odroid.in/c2 bionic InRelease
  The following signatures were invalid: EXPKEYSIG 5360FB9DAB19BAC9 Mauro Ribeiro (mdrjr) <mauro.ribeiro@hardkernel.com>

Reading package lists... Done
W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: http://deb.odroid.in/c2 bionic InRelease: The following signatures were invalid: EXPKEYSIG 5360FB9DAB19BAC9 Mauro Ribeiro (mdrjr) <mauro.ribeiro@hardkernel.com>
W: Failed to fetch http://deb.odroid.in/c2/dists/bionic/InRelease  The following signatures were invalid: EXPKEYSIG 5360FB9DAB19BAC9 Mauro Ribeiro (mdrjr) <mauro.ribeiro@hardkernel.com>
W: Some index files failed to download. They have been ignored, or old ones used instead.

[링크 : https://wiki.odroid.com/odroid-c2/application_note/gpio/wiringpi]

'embeded > odroid' 카테고리의 다른 글

ordroid c2 - mrs 명령어 고찰  (0) 2023.09.05
wayland on odroid-c2  (0) 2021.11.22
g_mass_storage rpi - odroid c2  (0) 2021.09.28
g_mass_storage ins/rm 실패  (0) 2021.09.28
odroid c2 ubuntu 18.04, 20.04 kernel 버전 정보  (0) 2021.09.27
Posted by 구차니
embeded/odroid2021. 9. 28. 23:37

dd 해서 파일기반 파일시스템을 만들고 mkfs를 하지 않으면 g_mass_storage에 연결은 되어있지만

USB HOST 측에서 마운트를 할 수 없다(파일 시스템을 알 수 없어 마운트 불가)

// odroid c2 에서 작업
# dd if=/dev/zero of=otg.drive bs=1M count=128
# mkfs -t ext4 otg.drive
# modprobe g_mass_storage filename=otg.drive

 

USB HOST 측에서는 단순하게 마운트 해서 쓰면 되는데

// rpi 2b 에서 작업
$ sudo mount /dev/sda /mnt
$ sudo touch /mnt/tt
$ sudo umount /mnt

 

odroid의 mmcblk0p1을 연결했을 때는 sync 하면 쓰이는게 보였던 것 같은데

파일 기반 파일시스템이라 그런가 rpi 2b에서 파일을 생성하고 sync 해도 변화가 없고, umount를 해도 변화가 없었다.

odroid c2 에서 해당 파일을 umount 하고 mount 해야 변경점이 보이는데

물리 장칙 아니라 그런진 모르겠다.

 

[링크 : https://linuxconfig.org/how-to-create-a-file-based-filesystem-using-dd-command-on-linux]

[링크 : https://www.kernel.org/doc/Documentation/usb/mass-storage.txt]

'embeded > odroid' 카테고리의 다른 글

wayland on odroid-c2  (0) 2021.11.22
odroid c2 gpio 와 wiringpi  (0) 2021.09.29
g_mass_storage ins/rm 실패  (0) 2021.09.28
odroid c2 ubuntu 18.04, 20.04 kernel 버전 정보  (0) 2021.09.27
odroid c2 usb otg, libcomposite usb hid  (0) 2021.09.26
Posted by 구차니
embeded/odroid2021. 9. 28. 22:32

[링크 : https://www.raspberrypi.org/forums/viewtopic.php?t=216810]

 

[링크 : https://linuxlink.timesys.com/docs/wiki/engineering/HOWTO_Use_USB_Gadget_File_Storage]

[링크 : https://www.kernel.org/doc/Documentation/usb/mass-storage.txt]

[링크 : https://linux-sunxi.org/USB_Gadget/Mass_storage]

 

 

# modprobe g_mass_storage file=/dev/mmcblk0p1 removable=y
# dmesg
[   41.197852] Mass Storage Function, version: 2009/09/11
[   41.197867] LUN: removable file: (no medium)
[   41.197950] LUN: removable file: /dev/mmcblk0p1
[   41.197956] Number of LUNs=1
[   41.197965] Number of LUNs=1
[   41.198085] g_mass_storage gadget: Mass Storage Gadget, version: 2009/09/11
[   41.198092] g_mass_storage gadget: userspace failed to provide iSerialNumber
[   41.198097] g_mass_storage gadget: g_mass_storage ready
[   41.504544] USB RESET
[   41.583840] usb 1-1.3: new high-speed USB device number 3 using dwc_otg
[   41.587991] USB RESET
[   41.685839] g_mass_storage gadget: high-speed config #1: Linux File-Backed Storage
[   41.686316] usb-storage 1-1.3:1.0: USB Mass Storage device detected
[   41.686873] usb-storage 1-1.3:1.0: Quirks match for vid 0525 pid a4a5: 10000
[   41.686927] scsi0 : usb-storage 1-1.3:1.0
[   42.684797] scsi 0:0:0:0: Direct-Access     Linux    File-Stor Gadget 0316 PQ: 0 ANSI: 2
[   42.688020] sd 0:0:0:0: [sda] 262144 512-byte logical blocks: (134 MB/128 MiB)
[   42.688133] WARN::dwc_otg_pcd_ep_halt:2432: 1 IN XFer In process
[   42.696834] sd 0:0:0:0: Attached scsi generic sg0 type 0
[   42.794589] sd 0:0:0:0: [sda] Write Protect is off
[   42.794603] sd 0:0:0:0: [sda] Mode Sense: 0f 00 00 00
[   42.794783] WARN::dwc_otg_pcd_ep_halt:2432: 1 IN XFer In process
[   42.904614] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[   42.906940] WARN::dwc_otg_pcd_ep_halt:2432: 1 IN XFer In process
[   43.014729] WARN::dwc_otg_pcd_ep_halt:2432: 1 IN XFer In process
[   43.125146]  sda:
[   43.127871] WARN::dwc_otg_pcd_ep_halt:2432: 1 IN XFer In process
[   43.235032] WARN::dwc_otg_pcd_ep_halt:2432: 1 IN XFer In process
[   43.344734] sd 0:0:0:0: [sda] Attached SCSI removable disk
# lsmod
Module                  Size  Used by
sg                     31094  0
g_mass_storage          2587  0
usb_f_mass_storage     35010  2 g_mass_storage
libcomposite           46311  2 usb_f_mass_storage,g_mass_storage
ir_lirc_codec           4934  3
lirc_dev               10879  1 ir_lirc_codec
ir_mce_kbd_decoder      3426  0
ir_rc6_decoder          2010  0
ir_sanyo_decoder        1657  0
ir_sony_decoder         1663  0
ir_jvc_decoder          1725  0
ir_rc5_decoder          1586  0
ir_nec_decoder          1789  0
meson_ir                3356  0
w1_gpio                 3801  0
wire                   28614  1 w1_gpio
gxbb_wdt                3395  0
meson_gpiomem           4040  0
sch_fq_codel            7827  2
ip_tables              17220  0
ipv6                  387317  18
autofs4                27592  2
# rmmod g_mass_storage
root@odroid:~# lsmod
Module                  Size  Used by
sg                     31094  0
usb_f_mass_storage     35010  0
libcomposite           46311  1 usb_f_mass_storage
ir_lirc_codec           4934  3
lirc_dev               10879  1 ir_lirc_codec
ir_mce_kbd_decoder      3426  0
ir_rc6_decoder          2010  0
ir_sanyo_decoder        1657  0
ir_sony_decoder         1663  0
ir_jvc_decoder          1725  0
ir_rc5_decoder          1586  0
ir_nec_decoder          1789  0
meson_ir                3356  0
w1_gpio                 3801  0
wire                   28614  1 w1_gpio
gxbb_wdt                3395  0
meson_gpiomem           4040  0
sch_fq_codel            7827  2
ip_tables              17220  0
ipv6                  387317  18
autofs4                27592  2
# modprobe g_mass_storage file=/dev/mmcblk0p1 removable=y
modprobe: ERROR: could not insert 'g_mass_storage': Device or resource busy

[링크 : https://developer.ridgerun.com/wiki/index.php?title=How_to_use_mass_storage_gadget]

Posted by 구차니
embeded/odroid2021. 9. 27. 17:21

odroid c2용 18.04 버전정보를 보니 커널이 3.16

# uname -a
Linux odroid 3.16.72-46 #1 SMP PREEMPT Tue Aug 13 18:09:58 -03 2019 aarch64 aarch64 aarch64 GNU/Linux

 

20.04는 커널 버전이 올라갔으려나?

ubuntu-18.04.3-3.16-minimal-odroid-c2-20190814.img
ubuntu-20.04-3.16-minimal-odroid-c2-20210201.img

파일명을 보아하니.. 커널은 둘다 동일하게 3.16이고 배포판 버전만 올라간듯..

 

[링크 : https://wiki.odroid.com/getting_started/os_installation_guide#tab__odroid-c2]

[링크 : https://dn.odroid.com/S905/Ubuntu/]

 

4.17에 대한 글은 2018년도에 멈춰있네..

[링크 : https://www.hardkernel.com/ko/tag/odroid-c2/]

[링크 : https://forum.odroid.com/viewtopic.php?f=135&t=22717&start=850#p226092]

 

'embeded > odroid' 카테고리의 다른 글

g_mass_storage rpi - odroid c2  (0) 2021.09.28
g_mass_storage ins/rm 실패  (0) 2021.09.28
odroid c2 usb otg, libcomposite usb hid  (0) 2021.09.26
odorid c2 usb otg gadget keyboard as hid  (0) 2021.09.23
odroid c2 OTG와 mass storage  (0) 2021.09.19
Posted by 구차니
embeded/odroid2021. 9. 26. 08:51

방법들은 비슷한데.. 따라하는데 영 안되네?

functions 디렉토리에 hid.usb0 디렉토리를 생성하는데 에러가 발생.

#!/bin/bash
# From the README at https://github.com/girst/hardpass

dtoverlay dwc2
modprobe dwc2
modprobe libcomposite
cd /sys/kernel/config/usb_gadget/
mkdir -p g1
cd g1
echo 0x1d6b > idVendor # Linux Foundation
echo 0x0104 > idProduct # Multifunction Composite Gadget
echo 0x0100 > bcdDevice # v1.0.0
echo 0x0200 > bcdUSB # USB2
mkdir -p strings/0x409
echo "fedcba9876543210" > strings/0x409/serialnumber
echo "girst" > strings/0x409/manufacturer
echo "Hardpass" > strings/0x409/product

N="usb0"
mkdir -p functions/hid.$N
echo 1 > functions/hid.usb0/protocol
echo 1 > functions/hid.usb0/subclass
echo 8 > functions/hid.usb0/report_length

echo -ne \\x05\\x01\\x09\\x06\\xa1\\x01\\x85\\x01\\x05\\x07\\x19\\xe0\\x29\\xe7\\x15\\x00\\x25\\x01\\x75\\x01\\x95\\x08\\x81\\x02\\x95\\x01\\x75\\x08\\x81\\x03\\x95\\x05\\x75\\x01\\x05\\x08\\x19\\x01\\x29\\x05\\x91\\x02\\x95\\x01\\x75\\x03\\x91\\x03\\x95\\x05\\x75\\x08\\x15\\x00\\x25\\x65\\x05\\x07\\x19\\x00\\x29\\x65\\x81\\x00\\xc0\\x05\\x01\\x09\\x02\\xa1\\x01\\x09\\x01\\xa1\\x00\\x85\\x02\\x05\\x09\\x19\\x01\\x29\\x03\\x15\\x00\\x25\\x01\\x95\\x03\\x75\\x01\\x81\\x02\\x95\\x01\\x75\\x05\\x81\\x03\\x05\\x01\\x09\\x30\\x09\\x31\\x15\\x81\\x25\\x7f\\x75\\x08\\x95\\x02\\x81\\x06\\xC0\\xC0 > functions/hid.usb0/report_desc

C=1
mkdir -p configs/c.$C/strings/0x409
echo "Config $C: ECM network" > configs/c.$C/strings/0x409/configuration
echo 250 > configs/c.$C/MaxPower
ln -s functions/hid.usb0 configs/c.$C/

ls /sys/class/udc > UDC

[링크 : https://ndb796.tistory.com/481]

[링크 : https://www.isticktoit.net/?p=1383]

[링크 : https://www.sysnet.pe.kr/2/0/11363]

 

혹시 권한 문제인가 해서 추가해도 안되고..

sysfs 특성이라 드라이버에서 허가되지 않는 파일은 생성이 안되는 것 같은데 왜 일까..

# ls -al
drwxr-xr-x 2 root root    0 Sep 26 09:15 functions

# chmod 777 functions/
# ls -al
drwxrwxrwx 2 root root    0 Sep 26 09:15 functions

# mkdir hid.usb0
mkdir: cannot create directory 'hid.usb0': No such file or directory
# touch hid.usb0
touch: cannot touch 'hid.usb0': Permission denied

 

 

+

3.16 커널인데 3.19 이후 부터 된다고. 드라이버 지원(하드웨어 가속)을 포기하고 신버전을 써봐야 할지도?

# ll /lib/modules/3.16.72-46/kernel/drivers/usb/gadget/
total 804
drwxr-xr-x 2 root root  4096 Aug 13  2019 ./
drwxr-xr-x 7 root root  4096 Aug 13  2019 ../
-rw-r--r-- 1 root root 14424 Aug 13  2019 g_acm_ms.ko
-rw-r--r-- 1 root root 23784 Aug 13  2019 g_audio.ko
-rw-r--r-- 1 root root 12048 Aug 13  2019 g_cdc.ko
-rw-r--r-- 1 root root 14920 Aug 13  2019 g_ether.ko
-rw-r--r-- 1 root root 19632 Aug 13  2019 g_ffs.ko
-rw-r--r-- 1 root root 24208 Aug 13  2019 g_hid.ko

# insmod g_hid
insmod: ERROR: could not load module g_hid: No such file or directory

# modprobe g_hid
modprobe: ERROR: could not insert 'g_hid': No such device

# uname -a
Linux odroid 3.16.72-46 #1 SMP PREEMPT Tue Aug 13 18:09:58 -03 2019 aarch64 aarch64 aarch64 GNU/Linux

[링크 : https://forum.odroid.com/viewtopic.php?t=36602]

[링크 : https://forum.odroid.com/viewtopic.php?t=30267]

'embeded > odroid' 카테고리의 다른 글

g_mass_storage ins/rm 실패  (0) 2021.09.28
odroid c2 ubuntu 18.04, 20.04 kernel 버전 정보  (0) 2021.09.27
odorid c2 usb otg gadget keyboard as hid  (0) 2021.09.23
odroid c2 OTG와 mass storage  (0) 2021.09.19
odroid c2 ADC  (0) 2021.09.19
Posted by 구차니
embeded/odroid2021. 9. 23. 18:57

 

# zcat /proc/config.gz  | grep -i dwc
CONFIG_USB_DWC_OTG_HCD=y
# CONFIG_USB_DWC3 is not set
# CONFIG_USB_DWC2 is not set

# dmesg | grep dwc2
[    2.488359] dwc_otg dwc2_b: DWC OTG Controller
[    2.492647] dwc_otg dwc2_b: new USB bus registered, assigned bus number 1
[    2.499387] dwc_otg dwc2_b: irq 63, io mem 0x00000000
[    2.572237] dwc_otg dwc2_a: DWC OTG Controller
[    2.576584] dwc_otg dwc2_a: new USB bus registered, assigned bus number 2
[    2.583313] dwc_otg dwc2_a: irq 62, io mem 0x00000000

# modprobe libcomposite
# lsmod | grep -i libcomposite
libcomposite           46311  0

# dmesg | tail
[  119.062507] SRP: Device mode
[  119.062520] SRP Fail

# ls -al /sys/kernel/config/usb_gadget/
total 0
drwxr-xr-x 2 root root 0 Sep 26 08:44 .
drwxr-xr-x 3 root root 0 Sep 26 08:44 ..

[링크 : https://forum.odroid.com/viewtopic.php?t=36602]

 

hid.usb0 라는걸 생성하려고 하니 생성이 불가능하다고 나온다. 왜일까 ㅠㅠ

# /usr/bin/isticktoit_usb
mkdir: cannot create directory 'functions/hid.usb0': No such file or directory
/usr/bin/isticktoit_usb: line 19: functions/hid.usb0/protocol: No such file or directory
/usr/bin/isticktoit_usb: line 20: functions/hid.usb0/subclass: No such file or directory
/usr/bin/isticktoit_usb: line 21: functions/hid.usb0/report_length: No such file or directory
/usr/bin/isticktoit_usb: line 22: functions/hid.usb0/report_desc: No such file or directory
ln: failed to create symbolic link 'configs/c.1/hid.usb0': No such file or directory
ls: write error: Invalid argument

[링크 : https://randomnerdtutorials.com/raspberry-pi-zero-usb-keyboard-hid/]

 

'embeded > odroid' 카테고리의 다른 글

odroid c2 ubuntu 18.04, 20.04 kernel 버전 정보  (0) 2021.09.27
odroid c2 usb otg, libcomposite usb hid  (0) 2021.09.26
odroid c2 OTG와 mass storage  (0) 2021.09.19
odroid c2 ADC  (0) 2021.09.19
odroid c2 lircd output 성공  (0) 2021.09.18
Posted by 구차니
embeded/odroid2021. 9. 19. 20:01

J1핀을 제거하면 USB OTG 포트를 전원 입력으로 사용할 수 없게 된다.

이 것은 전원 소비와 발열을 크게 감소시킬 것이다.

odroid-c2는 비디오 재생이나 몇몇 주변장치를 사용하는데 0.8Amp 이상을 소비하는데

USB port에 장치가 연결되면 1.5 A 이상을 연결하길 권장한다.

 

그런데 OTG가 도대체 (?) 머길래 전원 소비와 발열을 줄인다는거지?

Remove the Jumper on J1 if you don't use the USB OTG port as a power input
It will reduce the power consumption and heat significantly.

Since ODROID-C2 can consume current more than 0.8Amp by itself while playing a video file or with some peripherals - keyboard/mouse/WiFi dongle - are attached to USB port, we strongly recommend to use 5V USB charger with minimal 1.5Amp+ can be supplied. Please note that still DC jack works with the same specification of ODROID-C2 apart from USB OTG for power supplying.

[링크 : https://wiki.odroid.com/odroid-c2/hardware/otg_power_enable]

 

일단은 다행히(!) odroid u3에 쓰던 어댑터가 맞는것 같으니 바로 테스트 해봐야겠다..

 

+

 

# modprobe g_mass_storage
modprobe: ERROR: could not insert 'g_mass_storage': Invalid argument
modprobe g_mass_storage file=/dev/mmcblk0p1
# dmesg
[  267.930878] Mass Storage Function, version: 2009/09/11
[  267.930893] LUN: removable file: (no medium)
[  267.930919] no file given for LUN0
[  267.931020] g_mass_storage dwc2_a: failed to start g_mass_storage: -22
[  283.639994] Mass Storage Function, version: 2009/09/11
[  283.640008] LUN: removable file: (no medium)
[  283.640082] LUN: file: /dev/mmcblk0p1
[  283.640088] Number of LUNs=1
[  283.640097] Number of LUNs=1
[  283.640233] g_mass_storage gadget: Mass Storage Gadget, version: 2009/09/11
[  283.640239] g_mass_storage gadget: userspace failed to provide iSerialNumber
[  283.640244] g_mass_storage gadget: g_mass_storage ready

 

아쉽게도(?) otg 꽂힌채로는 바로 인식되진 않고 한번 뽑았다 꽂아주어야 인식을 한다.=

# dmesg
[  352.483089] USB RESET
[  352.562416] usb 1-1.4: new high-speed USB device number 3 using dwc_otg
[  352.566533] USB RESET
[  352.664381] g_mass_storage gadget: high-speed config #1: Linux File-Backed Storage
[  352.665021] usb-storage 1-1.4:1.0: USB Mass Storage device detected
[  352.666447] usb-storage 1-1.4:1.0: Quirks match for vid 0525 pid a4a5: 10000
[  352.666520] scsi0 : usb-storage 1-1.4:1.0
[  353.663221] scsi 0:0:0:0: Direct-Access     Linux    File-Stor Gadget 0316 PQ: 0 ANSI: 2
[  353.664962] sd 0:0:0:0: [sda] 262144 512-byte logical blocks: (134 MB/128 MiB)
[  353.665053] WARN::dwc_otg_pcd_ep_halt:2432: 1 IN XFer In process
[  353.674196] sd 0:0:0:0: Attached scsi generic sg0 type 0
[  353.772882] sd 0:0:0:0: [sda] Write Protect is off
[  353.772895] sd 0:0:0:0: [sda] Mode Sense: 0f 00 00 00
[  353.773086] WARN::dwc_otg_pcd_ep_halt:2432: 1 IN XFer In process
[  353.882776] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[  353.883855] WARN::dwc_otg_pcd_ep_halt:2432: 1 IN XFer In process
[  353.993016] WARN::dwc_otg_pcd_ep_halt:2432: 1 IN XFer In process
[  354.103316]  sda:
[  354.104539] WARN::dwc_otg_pcd_ep_halt:2432: 1 IN XFer In process
[  354.213075] WARN::dwc_otg_pcd_ep_halt:2432: 1 IN XFer In process
[  354.322785] sd 0:0:0:0: [sda] Attached SCSI disk
[  354.323219] WARN::dwc_otg_pcd_ep_halt:2432: 1 IN XFer In process

 

일단 /dev/sda로 인식이 되었으니 마운트 하고 쓰고 sync도 해보고, umount도 해봄

OTG를 통해 쓰는거다 보니 바로 써지진 않고 sync나 umount 이후에 갱신되는게 확인된다.

# mount /dev/sda /mnt
# ls -al /mnt
total 20862
drwxr-xr-x  3 root root    16384 Jan  1  1970  .
drwxr-xr-x 21 root root     4096 Jan 28  2018  ..
-rwxr-xr-x  1 root root 13622832 Aug 13  2019  Image
drwxr-xr-x  2 root root     2048 Sep 17 21:05 'System Volume Information'
-rwxr-xr-x  1 root root     6816 Jun 12  2018  boot.ini
-rwxr-xr-x  1 root root      988 Jan  5  2017  boot.ini.default
-rwxr-xr-x  1 root root      120 Jan  1  1980  display.bin
-rwxr-xr-x  1 root root      256 Jan  1  1980  edid.bin
-rwxr-xr-x  1 root root    29959 Aug 13  2019  meson64_odroidc2.dtb
-rwxr-xr-x  1 root root  7671719 Aug 13  2019  uInitrd

/mnt# touch test
/mnt# ls -al
total 20862
drwxr-xr-x  3 root root    16384 Sep 19 14:55  .
drwxr-xr-x 21 root root     4096 Jan 28  2018  ..
-rwxr-xr-x  1 root root 13622832 Aug 13  2019  Image
drwxr-xr-x  2 root root     2048 Sep 17 21:05 'System Volume Information'
-rwxr-xr-x  1 root root     6816 Jun 12  2018  boot.ini
-rwxr-xr-x  1 root root      988 Jan  5  2017  boot.ini.default
-rwxr-xr-x  1 root root      120 Jan  1  1980  display.bin
-rwxr-xr-x  1 root root      256 Jan  1  1980  edid.bin
-rwxr-xr-x  1 root root    29959 Aug 13  2019  meson64_odroidc2.dtb
-rwxr-xr-x  1 root root        0 Sep 19 14:55  test
-rwxr-xr-x  1 root root  7671719 Aug 13  2019  uInitrd

# cd /media/boot/
media/boot# ls -al
total 20862
drwxrwxrwx 3 root root    16384 Jan  1  1970  .
drwxr-xr-x 3 root root     4096 Jun 12  2018  ..
-rwxrwxrwx 1 root root 13622832 Aug 13  2019  Image
drwxrwxrwx 2 root root     2048 Sep 17 21:05 'System Volume Information'
-rwxrwxrwx 1 root root     6816 Jun 12  2018  boot.ini
-rwxrwxrwx 1 root root      988 Jan  5  2017  boot.ini.default
-rwxrwxrwx 1 root root      120 Jan  1  1980  display.bin
-rwxrwxrwx 1 root root      256 Jan  1  1980  edid.bin
-rwxrwxrwx 1 root root    29959 Aug 13  2019  meson64_odroidc2.dtb
-rwxrwxrwx 1 root root  7671719 Aug 13  2019  uInitrd

/media/boot# sync
/media/boot# ls -al
total 20862
drwxrwxrwx 3 root root    16384 Jan  1  1970  .
drwxr-xr-x 3 root root     4096 Jun 12  2018  ..
-rwxrwxrwx 1 root root 13622832 Aug 13  2019  Image
drwxrwxrwx 2 root root     2048 Sep 17 21:05 'System Volume Information'
-rwxrwxrwx 1 root root     6816 Jun 12  2018  boot.ini
-rwxrwxrwx 1 root root      988 Jan  5  2017  boot.ini.default
-rwxrwxrwx 1 root root      120 Jan  1  1980  display.bin
-rwxrwxrwx 1 root root      256 Jan  1  1980  edid.bin
-rwxrwxrwx 1 root root    29959 Aug 13  2019  meson64_odroidc2.dtb
-rwxrwxrwx 1 root root        0 Sep 19 14:55  test
-rwxrwxrwx 1 root root  7671719 Aug 13  2019  uInitrd

/media/boot# touch /mnt/t2
:/media/boot# ls -al
total 20862
drwxrwxrwx 3 root root    16384 Jan  1  1970  .
drwxr-xr-x 3 root root     4096 Jun 12  2018  ..
-rwxrwxrwx 1 root root 13622832 Aug 13  2019  Image
drwxrwxrwx 2 root root     2048 Sep 17 21:05 'System Volume Information'
-rwxrwxrwx 1 root root     6816 Jun 12  2018  boot.ini
-rwxrwxrwx 1 root root      988 Jan  5  2017  boot.ini.default
-rwxrwxrwx 1 root root      120 Jan  1  1980  display.bin
-rwxrwxrwx 1 root root      256 Jan  1  1980  edid.bin
-rwxrwxrwx 1 root root    29959 Aug 13  2019  meson64_odroidc2.dtb
-rwxrwxrwx 1 root root        0 Sep 19 14:55  test
-rwxrwxrwx 1 root root  7671719 Aug 13  2019  uInitrd

/media/boot# umount /mnt
/media/boot# ls -al
total 20862
drwxrwxrwx 3 root root    16384 Jan  1  1970  .
drwxr-xr-x 3 root root     4096 Jun 12  2018  ..
-rwxrwxrwx 1 root root 13622832 Aug 13  2019  Image
drwxrwxrwx 2 root root     2048 Sep 17 21:05 'System Volume Information'
-rwxrwxrwx 1 root root     6816 Jun 12  2018  boot.ini
-rwxrwxrwx 1 root root      988 Jan  5  2017  boot.ini.default
-rwxrwxrwx 1 root root      120 Jan  1  1980  display.bin
-rwxrwxrwx 1 root root      256 Jan  1  1980  edid.bin
-rwxrwxrwx 1 root root    29959 Aug 13  2019  meson64_odroidc2.dtb
-rwxrwxrwx 1 root root        0 Sep 19 14:56  t2
-rwxrwxrwx 1 root root        0 Sep 19 14:55  test
-rwxrwxrwx 1 root root  7671719 Aug 13  2019  uInitrd

 

다른 리눅스 노트북과는 연결이 되는데, 윈도우에서도 시도는 해봐야 할 듯.

[링크 : https://forum.odroid.com/viewtopic.php?t=32840]

 

+

멀티 가젯은 머지?

[링크 : https://ndb796.tistory.com/479]

 

+

21.09.26

msg  ㅋㅋㅋㅋ

[링크 : https://www.kernel.org/doc/html/latest/usb/mass-storage.html]

'embeded > odroid' 카테고리의 다른 글

odroid c2 usb otg, libcomposite usb hid  (0) 2021.09.26
odorid c2 usb otg gadget keyboard as hid  (0) 2021.09.23
odroid c2 ADC  (0) 2021.09.19
odroid c2 lircd output 성공  (0) 2021.09.18
lirc irrecord, odroid c2 성공 (ubuntu 18.04.3)  (0) 2021.09.17
Posted by 구차니
embeded/odroid2021. 9. 19. 18:40

1.8 V를 머하는데 쓰지 -ㅁ-?!?!? ㅠㅠ

 

Pin #37 Pin #40
ADC.AIN1 ADC.AIN

/sys/class/saradc/ch1 /sys/class/saradc/ch0

 

ADC's maximum sample rate is 50kSPS. ODROID-C2 has 10bit resolution (0~1023). ODROID-C4/N2 has 12bit resolution (0~4095).
But the actual sample rate is 8kSPS if you access it via sysfs due to the limited file IO speed.

[링크 : https://wiki.odroid.com/odroid-c2/application_note/gpio/adc]

'embeded > odroid' 카테고리의 다른 글

odorid c2 usb otg gadget keyboard as hid  (0) 2021.09.23
odroid c2 OTG와 mass storage  (0) 2021.09.19
odroid c2 lircd output 성공  (0) 2021.09.18
lirc irrecord, odroid c2 성공 (ubuntu 18.04.3)  (0) 2021.09.17
odroid c2 lirc  (0) 2021.09.14
Posted by 구차니