v4l2src 관련해서 기존에 웹캠에서 지원하는 모드들 찾는다고 고생했는데 간단한 유틸리티를 알게 됨 -_-

 

$ man gst-device-monitor-1.0
SYNOPSIS
       gst-device-monitor-1.0 [DEVICE_CLASSES[:FILTER_CAPS]] [DEVICE_CLASSES[:FILTER_CAPS]]

 

$ gst-device-monitor-1.0 Video/Source
Probing devices...


Device found:

name  : 720p HD Camera
class : Video/Source
caps  : image/jpeg, width=1280, height=720, framerate=30/1
        image/jpeg, width=640, height=480, framerate=30/1
        image/jpeg, width=640, height=360, framerate=30/1
        image/jpeg, width=352, height=288, framerate=30/1
        image/jpeg, width=320, height=240, framerate=30/1
        image/jpeg, width=160, height=120, framerate=30/1
        video/x-raw, format=YUY2, width=1280, height=720, framerate=10/1
        video/x-raw, format=YUY2, width=640, height=480, framerate=30/1
        video/x-raw, format=YUY2, width=640, height=360, framerate=30/1
        video/x-raw, format=YUY2, width=352, height=288, framerate=30/1
        video/x-raw, format=YUY2, width=320, height=240, framerate=30/1
        video/x-raw, format=YUY2, width=160, height=120, framerate=30/1
properties:
object.path = v4l2:/dev/video0
device.api = v4l2
media.class = Video/Source
device.product.id = 308
device.vendor.id = 11134
api.v4l2.path = /dev/video0
api.v4l2.cap.driver = uvcvideo
api.v4l2.cap.card = "720p\ HD\ Camera:\ 720p\ HD\ Camera"
api.v4l2.cap.bus_info = usb-0000:00:14.0-6
api.v4l2.cap.version = 6.2.16
api.v4l2.cap.capabilities = 84a00001
api.v4l2.cap.device-caps = 04200001
device.id = 33
node.name = v4l2_input.pci-0000_00_14.0-usb-0_6_1.0
node.description = "720p\ HD\ Camera"
factory.name = api.v4l2.source
node.pause-on-idle = false
factory.id = 10
client.id = 32
clock.quantum-limit = 8192
media.role = Camera
node.driver = true
object.id = 35
object.serial = 35
gst-launch-1.0 pipewiresrc path=35 ! ...

'프로그램 사용 > gstreamer' 카테고리의 다른 글

gstreamer parse_launch  (0) 2024.01.11
nnstreamer  (0) 2023.12.20
gstremaer videobox + videomixer  (0) 2023.04.10
gst-inspector.c  (0) 2023.04.06
gstreamer videomixer 반쪽 성공  (0) 2023.03.27
Posted by 구차니
프로그램 사용/minicom2023. 10. 24. 14:58

minicom으로 통신을 하는데(시리얼)

창을 넓혀도 top 등을 실행할때 창의 폭이 넓어지지 않을때

아래의 명령을 넣어주면 폭이 조절된다.

$ stty columns 150

[링크 : https://acet.pe.kr/17]

 

posix 표준은 아니지만 columns N 하면 된다.

# stty --help
Usage: stty [-F DEVICE | --file=DEVICE] [SETTING]...
  or:  stty [-F DEVICE | --file=DEVICE] [-a|--all]
  or:  stty [-F DEVICE | --file=DEVICE] [-g|--save]
Print or change terminal characteristics.

Mandatory arguments to long options are mandatory for short options too.
  -a, --all          print all current settings in human-readable form
  -g, --save         print all current settings in a stty-readable form
  -F, --file=DEVICE  open and use the specified DEVICE instead of stdin
      --help     이 도움말을 표시하고 끝냅니다
      --version  버전 정보를 출력하고 끝냅니다

Optional - before SETTING indicates negation.  An * marks non-POSIX
settings.  The underlying system defines which settings are available.

Special characters:
 * discard CHAR  CHAR will toggle discarding of output
   eof CHAR      CHAR will send an end of file (terminate the input)
   eol CHAR      CHAR will end the line
 * eol2 CHAR     alternate CHAR for ending the line
   erase CHAR    CHAR will erase the last character typed
   intr CHAR     CHAR will send an interrupt signal
   kill CHAR     CHAR will erase the current line
 * lnext CHAR    CHAR will enter the next character quoted
   quit CHAR     CHAR will send a quit signal
 * rprnt CHAR    CHAR will redraw the current line
   start CHAR    CHAR will restart the output after stopping it
   stop CHAR     CHAR will stop the output
   susp CHAR     CHAR will send a terminal stop signal
 * swtch CHAR    CHAR will switch to a different shell layer
 * werase CHAR   CHAR will erase the last word typed

Special settings:
   N             set the input and output speeds to N bauds
 * cols N        tell the kernel that the terminal has N columns
 * columns N     same as cols N
 * [-]drain      wait for transmission before applying settings (on by default)
   ispeed N      set the input speed to N
 * line N        use line discipline N
   min N         with -icanon, set N characters minimum for a completed read
   ospeed N      set the output speed to N
 * rows N        tell the kernel that the terminal has N rows
 * size          print the number of rows and columns according to the kernel
   speed         print the terminal speed
   time N        with -icanon, set read timeout of N tenths of a second

'프로그램 사용 > minicom' 카테고리의 다른 글

minicom color  (0) 2024.11.06
minicom lf에 cr 붙이기  (0) 2023.01.05
minicom 16진수로 보기  (0) 2022.08.25
minicom 로그 저장하기  (0) 2021.09.16
minicom timestamp  (0) 2021.09.16
Posted by 구차니
프로그램 사용/Blender2023. 10. 20. 20:16

2.8에서는 삭제되어 2.79 까지만 남아있는 듯. 현재 3.x대로 이행되었으니 흔적도 없이 사라졌을 것 같다.

Following its removal from the official version of Blender, an unofficial fork of the game engine source code was created, named UPBGE.[4] This was done with the aim of maintaining and modernizing the engine. Since then, UPBGE has been updated with support for Blender's new realtime renderer, Eevee, and runs on top of Blender 3.0 source code.[5]

[링크 : https://en.wikipedia.org/wiki/Blender_Game_Engine]

[링크 : https://upbge.org/#/]

 

망할(!) GPL 때문에 없어질 수 밖에 없었을 듯.

그래서 unity가 신명나게 욕 먹고 대안으로 떠오르는게 BGE가 아니라 godot 게임엔진이 뜨는 듯

내장된 'Game engine save as runtime' 애드온을 사용하면 Windows용으로 빌드할 수 있다.

애드온으로 실행 파일을 만든 때에 GPL 라이선스에 따라 소스 코드를 무조건 까야 한다. BGE 라이센스 참고(영문). 요약하자면, 소프트웨어 및 소스 코드는 GNU GPL에 결합되어 있지만, 블렌더 파일(모델, 텍스처, 소리)은 그렇지 않다.

게임을 구성하는 파이썬 스크립트의 경우 개발자의 지적 재산은 맞지만 내부 에드온으로 빌드하면 GPL 소스 코드와 섞이기 때문에 그 권리가 모호해지는 문제가 있다. 즉, 빌드된 게임 프로그램이 GPL이 되어 버린다.

[링크 : https://namu.wiki/w/BGE]

 

The Godot Engine is a free, all-in-one, cross-platform game engine that makes it easy for you to create 2D and 3D games.

[링크 : https://godotengine.org/]

'프로그램 사용 > Blender' 카테고리의 다른 글

blender cad  (0) 2024.05.07
blender render node  (0) 2024.03.20
blender on macos  (0) 2022.05.24
big bunny blender project file  (0) 2022.05.22
블렌더 강좌? (유료)  (0) 2021.08.07
Posted by 구차니

한동안 신경끄고 살았는데

hwpx라는 사악한(!) 확장자도 추가되었다는걸 새삼 알게됨 -_-

 

[링크 : https://extensions.libreoffice.org/en/extensions/show/27504]

 

+

23.10.24

다운받아서 설치하니 java 11 없다고 배짼다. 깔아야 하나 -_-

 

openjsdk-11 으로는 안되니 패스~

$ sudo apt-get install openjdk-11-jdk

[링크 : https://codechacha.com/ko/ubuntu-install-open-jdk11/]

 

libreoffice-java-common 이라는 패키지로 별도의 java가 제공된다고.. 뭥미

$ sudo apt install libreoffice-java-common

[링크 : https://forums.zotero.org/discussion/97427/issue-with-libre-office-plugin-on-ubuntu-22-04]

Posted by 구차니

실험적으로 나온 결과를 N으로 나눠줘서 쓰고 있었는데

퍼시발의 규칙에 의해 개별 주파수의 진폭은 N개의 샘플에 의해 영향을 받게되고

진폭을 N으로 나누어 평준화해야 한다고 하는데 솔찍히 확 와닫는 소리는 아니다 -_ㅠ

 

[링크 : https://stackoverflow.com/questions/63211851/why-divide-the-output-of-numpy-fft-by-n]

[링크 : https://stackoverflow.com/questions/4855958/normalising-fft-data-fftw]

 

+

2024.08.01

[링크 : https://dsp.stackexchange.com/questions/75749/how-to-use-pffft-fft-library]

'프로그램 사용 > fft, fftw' 카테고리의 다른 글

pffft fft / ifft 테스트  (0) 2024.08.01
FFT RBW  (0) 2023.09.19
tek.com fft 관련 문서  (0) 2023.07.19
sfft  (0) 2023.07.12
fft window type과 진폭 보정계수  (0) 2023.07.04
Posted by 구차니

라고 하는게 맞는진 모르겠지만

500개의 데이터를 1초에 샘플링 할 경우

500개의 데이터를 넣냐

100개의 데이터를 넣냐에 따라 나오는결과가 달라지는데 이걸 어떻게 해석하냐에 대한 내용

 

input data

for ( i = 0; i < n; i++ )
{
in[i] = ( double ) sin ( 2.0f * PI * (double)(i * 10) / n);
}

500 에 10 주기 니까 500SPS일 경우 10Hz에 peak가 떠야 한다.

 

500개를 다 넣으면 10Hz 에서 peak가 뜬다.

같은 애를 x축 크기만 조정해서 출력하면 아래처럼 보인다. (오른쪽은 왼쪽의 그래프를 X축에 대해서 5배 확대한 것)

 

100개만 넣어서 돌리면, 값은 50개만 나오고(100/2+1) peak는 2에서 나온다.

같은 애를 x축 크기만 조정해서 출력하면 아래처럼 보인다. (왼쪽은 오른쪽의 그래프를 X축에 대해서 1/5배로 축소한 것)

 

 

 

상관관계로 보면

샘플링 속도는 동일하고

데이터 갯수가 1/N 만큼 줄어들면

원래 주파수로 환원하기 위해서는 *N을 해야 한다.

 

위의 경우 1/5 였으니까

주파수는 *5를 해야 정상적으로 나오고

다르게 해석하면 5Hz 의 RBW로 분석 주파수 해상도가 낮아졌다 라고 표현하면 될 듯.

'프로그램 사용 > fft, fftw' 카테고리의 다른 글

pffft fft / ifft 테스트  (0) 2024.08.01
fft 결과에 N(입력 샘플 갯수)로 나누는 이유  (0) 2023.09.21
tek.com fft 관련 문서  (0) 2023.07.19
sfft  (0) 2023.07.12
fft window type과 진폭 보정계수  (0) 2023.07.04
Posted by 구차니

윈도우와는 다르게 리눅스에서는

HDMI + touch를 연결하면 자꾸 0번 디스플레이와 새로 연결된 터치가 연결된다.

 

윈도우에서 지금까진 안맞는적은 없었는데, 연결방법 글이 있는걸 보면 아주 없진 않나보다.

아무튼 윈도우는 어떤 시나리오로 되길래 외부 모니터와 touch를 잘 매칭해주는진 모르겠지만

[링크 : https://comterman.tistory.com/2738]

 

wayland 나 x.org 에서는 영~ 매칭이 잘 안된다.

화면 찢어짐 때문에 wayland로 해놨는데 그 여파로 따라해봐도 스크린에 터치가 옮겨가진 않는다.

[링크 : https://askubuntu.com/questions/71768/touchscreen-and-additional-external-monitor]

[링크 : https://unix.stackexchange.com/questions/473721/calibrating-a-touch-screen-on-dual-monitors-one-touch-one-not]

 

libinput-device.c를 보면 아래 함수 두개에 associated 용어를 표현하며

입력 장치를 evdev의 이벤트를 통해 연결하는데, 회사에서 시험해볼때는

touch 장치 쪽에서 연결할 스크린 명칭을 넣어주지 않아서인지 제대로 연결되는걸 못 본 듯.

void
evdev_device_set_calibration(struct evdev_device *device)
{
struct udev *udev;
struct udev_device *udev_device = NULL;
const char *sysname = libinput_device_get_sysname(device->device);
const char *calibration_values;
uint32_t width, height;
struct weston_touch_device_matrix calibration;

if (!libinput_device_config_calibration_has_matrix(device->device))
return;

/* If LIBINPUT_CALIBRATION_MATRIX was set to non-identity, we will not
* override it with WL_CALIBRATION. It also means we don't need an
* output to load a calibration. */
if (libinput_device_config_calibration_get_default_matrix(
device->device,
calibration.m) != 0)
return;

/* touch_set_calibration() has updated the values, do not load old
* values from WL_CALIBRATION.
*/
if (device->override_wl_calibration)
return;

if (!device->output) {
weston_log("input device %s has no enabled output associated "
"(%s named), skipping calibration for now.\n",
sysname, device->output_name ?: "none");
return;
}

void
evdev_device_set_output(struct evdev_device *device,
struct weston_output *output)
{
if (device->output == output)
return;

if (device->output_destroy_listener.notify) {
wl_list_remove(&device->output_destroy_listener.link);
device->output_destroy_listener.notify = NULL;
}

if (!output) {
weston_log("output for input device %s removed\n",
libinput_device_get_sysname(device->device));

device->output = NULL;
return;
}

weston_log("associating input device %s with output %s "
"(%s by udev)\n",
libinput_device_get_sysname(device->device),
output->name,
device->output_name ?: "none");

device->output = output;
device->output_destroy_listener.notify = notify_output_destroy;
wl_signal_add(&output->destroy_signal,
&device->output_destroy_listener);
evdev_device_set_calibration(device);
}

'프로그램 사용 > wayland' 카테고리의 다른 글

weston evdev libinput  (0) 2024.03.11
weston 커서 숨기기  (0) 2024.02.26
wayland atomic commit 패치?  (0) 2022.08.22
weston screen shooter 뜯어보기  (0) 2022.08.17
wayland glreadpixels 실패  (0) 2022.08.16
Posted by 구차니

전체는 아니고 weston 쪽을 기준으로 빌드하는데

소요시간이 1시간

real 62m37.028s
user 0m6.099s
sys 0m0.797s

 

나중에 노트북에서 다시 빌드해 봐야하나?

어째 i7-10510U+ nvme 보다

i5-3570 + sata ssd 가 더 빠른것 같은건 왜지..

 

데스크탑과 노트북이라 차이가 있긴 해도 

벤치상으로는 노트북쪽이 신형이라 빠를텐데..?

'프로그램 사용 > yocto project' 카테고리의 다른 글

bitbake --help  (0) 2023.08.29
Do not use Bitbake as root.  (0) 2023.08.28
imx8 yocto  (0) 2023.08.28
imx8 yocto build on ubuntu 22.04  (0) 2023.02.10
라즈베리 파이 with yocto project  (2) 2015.07.30
Posted by 구차니

wireshark 에서 any 인터페이스로 잡으면 

linux cooked capture 라는 희한한(?) 레이어가 생긴다.

물론 wlo나 eth 와 같이 인터페이스를 지정하면 Ethernet II 이런식으로 뜬다.

 

[링크 : https://byeo.tistory.com/entry/Linux-Cooked-Capture-SLL-protocol]

Posted by 구차니

엥... 

라즈베리 파이 3B 64bit OS 에서는 잘 실행되는데

pi@raspberrypi:~ $ 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.
--------------------------------------------------------------------------

pi@raspberrypi:~ $ mpirun --version
mpirun (Open MPI) 4.1.0

Report bugs to http://www.open-mpi.org/community/help/

 

odroid c2 에서는(aarch64) 에러가 난다

$ mpirun
Illegal instruction

$ mpirun --help
Illegal instruction

$ mpirun --version
mpirun (Open MPI) 4.0.3

Report bugs to http://www.open-mpi.org/community/help/

 

strace라던가 써서 추적해보려는데 패키지가 되먹질 않으니 짜증나네 -_ㅠ

 

odroid c2

geteuid()                               = 1000
openat(AT_FDCWD, "/proc/cpuinfo", O_RDONLY) = 3
--- SIGILL {si_signo=SIGILL, si_code=ILL_ILLOPC, si_addr=0x7fa18b7cfc} ---
+++ killed by SIGILL +++
Illegal instruction

 

라즈베리 파이

geteuid()                               = 1000
openat(AT_FDCWD, "/proc/cpuinfo", O_RDONLY) = 3
close(3)                                = 0
getuid()                                = 1000
geteuid()                               = 1000

 

도대체 고작 /proc/cpuinfo 여는걸로 죽다니 머지?

 

+

gdb로 해보니 뜬금없이 libopen-pal.so.40 에서 죽는다. 도대체 PAL 이 멀하는데 illegal instruction 을 띄울 작업을 하는거지?

$ gdb mpirun
GNU gdb (Ubuntu 9.2-0ubuntu1~20.04.1) 9.2
Copyright (C) 2020 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "aarch64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.

For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from mpirun...
(No debugging symbols found in mpirun)
(gdb) r
Starting program: /usr/bin/mpirun 
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/aarch64-linux-gnu/libthread_db.so.1".

Program received signal SIGILL, Illegal instruction.
0x0000007fb7ec5cfc in ?? () from /usr/lib/aarch64-linux-gnu/libopen-pal.so.40

 

눈이 이상해졌나 open-pam 인 줄.. -_-

아무튼 libopen-pal 혹은 OPAL  이라는 녀석이 현재 문제인데

openmpi는 liboshmem(shared memory 관리?) libmpi 그리고 libopen-pal로 구성된다고 한다.

That is, they are compiled into separate libraries: liboshmem, libmpi, libopen-pal with a strict dependency order: OSHMEM depends on OMPI, OMPI depends on OPAL.

[링크:  https://docs.open-mpi.org/en/v5.0.x/developers/terminology.html]

 

open PAL은 체크포인트 와 프로그램 재시작을 할 수 있도록 해주는 녀석이니..

프로세서에 대해서 잘 알아야 프로그램을 멈추고 실행하게 할테니..

반대로 생각하면 odroid-c2에서 적용된 aarch64 버전이 amlogic 기반의 ap와는 맞지 않게 빌드된걸려나?

Open PAL can involuntarily checkpoint and restart sequential programs. Doing so requires that Open PAL was compiled with thread support and that the back-end checkpointing systems are available at run-time.

[링크 : https://www.open-mpi.org/doc/v4.1/man7/opal_crs.7.php]

 

+

odroid c2 에서 make -j4 로 openmpi-4.1.0 빌드에 걸린시간

중간에 gdb 설치한다고 순수하게 돌리면 24분쯤으로 되지 않았을까?

real 25m20.199s
user 52m9.680s
sys 5m27.920s

 

 

+

빡세게(?) 빌드까지 해서 겨우겨우 돌렸는데 왜 저런 에러가 또 나냐고 ㅠㅠ

Program received signal SIGILL, Illegal instruction.
0x0000007fb7ec236c in opal_timer_linux_find_freq ()
   from /usr/local/lib/libopen-pal.so.40

 

에러를 보니 먼가 함수명이 나와서 추적

$ grep -rn "opal_timer_linux_find_freq" .
Binary file ./opal/mca/timer/linux/.libs/timer_linux_component.o matches
Binary file ./opal/mca/timer/linux/.libs/libmca_timer_linux.a matches
./opal/mca/timer/linux/timer_linux_component.c:105:static int opal_timer_linux_find_freq(void)
./opal/mca/timer/linux/timer_linux_component.c:203:    ret = opal_timer_linux_find_freq();

$ cat opal/mca/timer/linux/timer_linux_component.c
static int opal_timer_linux_find_freq(void)
{
    FILE *fp;
    char *loc;
    float cpu_f;
    int ret;
    char buf[1024];

    fp = fopen("/proc/cpuinfo", "r");
    if (NULL == fp) {
        return OPAL_ERR_IN_ERRNO;
    }

    opal_timer_linux_freq = 0;

#if OPAL_ASSEMBLY_ARCH == OPAL_ARM64
        opal_timer_linux_freq = opal_sys_timer_freq();
#endif


$ grep -rni "opal_sys_timer_freq" .
./mca/timer/linux/timer_linux_component.c:121: opal_timer_linux_freq = opal_sys_timer_freq();
./include/opal/sys/arm64/timer.h:36:opal_sys_timer_freq(void)

$ cat openmpi-4.1.0/opal/include/opal/sys/arm64/timer.h
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);
}

 

레지스터 이름부터가 무시무시하네?

MRS
Move System Register.

Syntax
MRS Xt, (systemreg|Sop0_op1_Cn_Cm_op2)

Where:

Xt
Is the 64-bit name of the general-purpose destination register.
systemreg
Is a System register name.

The System register names are defined in 'AArch64 System Registers' in the System Register XML.

op0
Is an unsigned immediate, and can be either 2 or 3.
op1
Is a 3-bit unsigned immediate, in the range 0 to 7.
Cn
Is a name Cn, with n in the range 0 to 15.
Cm
Is a name Cm, with m in the range 0 to 15.
op2
Is a 3-bit unsigned immediate, in the range 0 to 7.
Usage
Move System Register allows the PE to read an AArch64 System register into a general-purpose register.

[링크 : https://developer.arm.com/documentation/dui0801/h/A64-General-Instructions/MRS]

 

Accessing CNTFRQ_EL0
Accesses to this register use the following encodings in the System register encoding space:

MRS <Xt>, CNTFRQ_EL0
op0

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

 

The two instructions you show above are therefore -

MSR HPFAR_EL2, X0

MSR PSTATEField_SP, #0

[링크 : https://reverseengineering.stackexchange.com/questions/14617/arm-understanding-msr-mrs-instructions]

 

보면.. uboot에도 있는 아주 평범한(?) 녀석인데.. 머지?

unsigned long timer_read_counter(void)
{
unsigned long cntpct;
unsigned long temp;

isb();
asm volatile("mrs %0, cntpct_el0" : "=r" (cntpct));
asm volatile("mrs %0, cntpct_el0" : "=r" (temp));
while (temp != cntpct) {
asm volatile("mrs %0, cntpct_el0" : "=r" (cntpct));
asm volatile("mrs %0, cntpct_el0" : "=r" (temp));
}

return cntpct;
}

[링크 : https://github.com/qemu/u-boot/blob/master/arch/arm/cpu/armv8/generic_timer.c]

 

%0은 이전의 dst 를 의미하는걸려나?

int val = 50;
__asm volatile ("MOV R0, %0":  : "r"(var) );

==> (컴파일러 해석) 

ldr r3, [r7, #4]

mov r0, r3

[링크 : https://dhpark1212.tistory.com/entry/ARM-GCC-Inline-assembly-coding]

 

amlogic 의 Cortex-A53인데 많이 다른가?

ODROID-C2 ODROID-C1+ RPi 3 Model B
CPU
Amlogic S905 SoC
4 x ARM Cortex-A53 1.5GHz
64bit ARMv8 Architecture @28nm
Amlogic S805 SoC
4 x ARM Cortex-A5 1.5GHz
32bit ARMv7 Architecture @28nm
Broadcom BCM2837
4 x ARM Cortex-A53 1.2Ghz
64bit ARMv7 Architecture @40nm

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

'프로그램 사용 > openFOAM' 카테고리의 다른 글

openFOAM + freecad + salome  (0) 2023.06.07
openFOAM tutorial with youtube  (0) 2023.05.24
openfoam on ubuntu  (0) 2023.05.24
openFOAM tutorial  (4) 2023.05.24
openfoam7 on ubuntu 18.04  (0) 2020.08.09
Posted by 구차니