{"id":402,"date":"2023-12-08T16:05:24","date_gmt":"2023-12-08T07:05:24","guid":{"rendered":"https:\/\/ahnbk.dev\/?p=402"},"modified":"2023-12-08T16:05:25","modified_gmt":"2023-12-08T07:05:25","slug":"install-xenomai3-on-ubuntu-22-04lts","status":"publish","type":"post","link":"https:\/\/ahnbk.dev\/?p=402","title":{"rendered":"Install Xenomai3 on Ubuntu 22.04LTS"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Xenomai\ub294 \uae30\uc874 Linux \uc2dc\uc2a4\ud15c\uc758 \ucee4\ub110\uacfc \ubcd1\ud589\ud558\uc5ec \uc2e4\ud589\ub418\uba70, Hard Realtime Task\ub97c \uc9c0\uc6d0\ud558\ub294 \uc18c\ud504\ud2b8\uc6e8\uc5b4 \ud504\ub808\uc784\uc6cd\uc785\ub2c8\ub2e4. \uc124\uce58 \ubc29\ubc95\ub3c4 \uac04\ub2e8\ud558\uace0, POSIX \uc778\ud130\ud398\uc774\uc2a4\ub97c \uc9c0\uc6d0\ud558\uc5ec \uac1c\ubc1c\ub3c4 \uc27d\uac8c \ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc778\ud130\ub137\uc5d0\uc11c Xenomai \uc124\uce58 \ubc29\ubc95\uc744 \uac80\uc0c9\ud574\ubcf4\uba74, Xenomai2 \ubc84\uc804\uacfc \uc608\uc804 Linux \ubc84\uc804\uc744 \uae30\uc900\uc73c\ub85c \uc124\uba85\ud574\ub193\ub294 \uac83\ub4e4\uc774 \ub9ce\uace0 (\uadf8\ub9cc\ud07c \uc778\uae30\uac00 \uc5c6\ub2e4\ub294 \uc598\uae30&#8230;) Xenomai3\ub77c\uace0 \ud574\ub3c4 \uc608\uc804 iPipe\ub97c \uc0ac\uc6a9\ud558\ub294 \ubc29\ubc95\uc774 \uc704\uc8fc\ub77c\uc11c, \uac00\uc7a5 \ucd5c\uc2e0 \ubc84\uc804\uc73c\ub85c Xenomai\ub97c \uc124\uce58\ud558\ub294 \ubc29\ubc95\uc744 \uc815\ub9ac\ud574\ubcf4\uc558\uc2b5\ub2c8\ub2e4. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ubb3c\ub860 Xenoami\ub3c4 Xenomai4 \ubc84\uc804\uc774 \ucd9c\uc2dc\ub418\uc5b4\uc788\uae34 \ud558\uc9c0\ub9cc, \uc544\uc9c1\uae4c\uc9c4 \uc131\ub2a5 \uac80\uc99d \ubc0f \uac1c\ubc1c \ubc29\ubc95\uc5d0 \ub300\ud55c \uce5c\uc808\ud55c \ubb38\uc11c\ub97c \ucc3e\uc544\ubcf4\uae30\uac00 \ud798\ub4e4\uc5c8\uc2b5\ub2c8\ub2e4.  \uc774 \ud3ec\uc2a4\ud2b8\ub294 Xenoami3, Ubuntu 22.04 \ubc84\uc804\uc744 \uae30\uc900\uc73c\ub85c \uc124\uba85\ud569\ub2c8\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uba3c\uc800 \ucee4\ub110\uc744 \ube4c\ub4dc\ud558\uae30 \uc704\ud55c \ud234\uc744 \uc124\uce58\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">$ sudo apt install git build-essential libncurses-dev flex bison libelf-dev libssl-dev devscripts debhelper<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ub2e4\uc74c\uc73c\ub85c \uc791\uc5c5\ud560 \uc784\uc2dc \ub514\ub809\ud1a0\ub9ac\ub97c \ud558\ub098 \ub9cc\ub4e4\uace0, \uadf8\uacf3\uc5d0 \ucee4\ub110 \ubc0f Xenomai \ub77c\uc774\ube0c\ub7ec\ub9ac \uc18c\uc2a4\ub97c \ubc1b\uc544\uc635\ub2c8\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">$ mkdir ~\/tmp\n$ cd ~\/tmp\n$ wget https:\/\/source.denx.de\/Xenomai\/linux-dovetail\/-\/archive\/v6.1.61-dovetail1\/linux-dovetail-v6.1.61-dovetail1.tar.gz\n$ wget https:\/\/source.denx.de\/Xenomai\/xenomai\/-\/archive\/v3.2.4\/xenomai-v3.2.4.tar.gz\n\n\n$ tar zxf linux-dovetail-v6.1.61-dovetail1.tar.gz\n$ tar zxf xenomai-v3.2.4.tar.gz<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ucee4\ub110 \ubc84\uc804\uc740 \uc790\uc720\ub86d\uac8c \uc120\ud0dd\uc774 \uac00\ub2a5\ud569\ub2c8\ub2e4. \uc0ac\uc6a9\ud558\ub294 \ub514\ubc14\uc774\uc2a4 \ub4dc\ub77c\uc774\ubc84 \ubc0f \uc18c\ud504\ud2b8\uc6e8\uc5b4 \uac1c\ubc1c\ud658\uacbd\uc5d0 \ub530\ub77c \uc801\uc808\ud788 \uc120\ud0dd\ud574\uc8fc\uba74 \ub429\ub2c8\ub2e4. \uc800\ub294 6.1.61 \ubc84\uc804\uc744 \uc120\ud0dd\ud558\uc600\uc2b5\ub2c8\ub2e4. \uc774\uc804\uc5d0\ub294 ipipe \ud328\uce58\ub97c \ud574\uc918\uc57c \ud588\uc9c0\ub9cc, ipipe\ub294 \uac1c\ubc1c\uc774 \uc885\ub8cc\ub418\uc5c8\uace0, dovetail\uc774 \uadf8 \uae30\ub2a5\uc744 \uc774\uc5b4\ubc1b\uc544 \uac1c\ubc1c \uc911\uc785\ub2c8\ub2e4. \uc704 Repository\uc5d0\uc11c\ub294 dovetail\uc774 \ud328\uce58\ub41c \ucee4\ub110 \uc18c\uc2a4\ub97c \uc81c\uacf5\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4.  Xenomai \ub77c\uc774\ube0c\ub7ec\ub9ac\ub294 \uac00\uc7a5 \ucd5c\uc2e0 \ubc84\uc804\uc778 3.2.4\ub97c \uc0ac\uc6a9\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Xenomai\ub294 \ub450 \uac00\uc9c0 \ubaa8\ub4dc\ub85c \uc2e4\ud589\uc774 \uac00\ub2a5\ud55c\ub370, Cobalt\ub294 \uae30\uc874 \ucee4\ub110\uacfc Xenomai \ucee4\ub110\uc744 \ub3d9\uc2dc\uc5d0 \uc874\uc7ac\ud558\uace0, \ub450 \uac1c\uc758 \ucee4\ub110 \uc0ac\uc774\uc758 \ud1b5\uc2e0\uc744 \uc704\ud574 dovetail\uc744 \uc774\uc6a9\ud569\ub2c8\ub2e4. <\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"380\" height=\"390\" src=\"https:\/\/ahnbk.dev\/wp-content\/uploads\/2023\/12\/image.png\" alt=\"\" class=\"wp-image-403\" style=\"width:339px;height:auto\" srcset=\"https:\/\/ahnbk.dev\/wp-content\/uploads\/2023\/12\/image.png 380w, https:\/\/ahnbk.dev\/wp-content\/uploads\/2023\/12\/image-292x300.png 292w\" sizes=\"auto, (max-width: 380px) 100vw, 380px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\ucee4\ub110\uc744 \ud328\uce58\ud558\uae30 \uc704\ud574 \ud328\uce58\ub97c \uc0dd\uc131\ud558\uace0, \ucee4\ub110 \uc18c\uc2a4\uc5d0 \uc801\uc6a9\ud574 \uc90d\ub2c8\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">$ cd ~\/tmp\/xenomai-v3.2.4\/scripts\n$ .\/prepare-kernel.sh --linux=\/home\/robot\/tmp\/linux-dovetail-v6.1.61-dovetail1 --arch=x86_64 --outpatch=\/home\/robot\/tmp\/patch-cobalt-3.2.4.patch\n\n$ cd ~\/tmp\/linux-dovetail-v6.1.61-dovetail1\n$ patch -p1 &lt; ..\/patch-cobalt-3.2.4.patch<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\uc81c \ucee4\ub110\uc744 \uc124\uc815\ud574\uc90d\ub2c8\ub2e4.  make menuconfig \ub97c \uc774\uc6a9\ud558\uaca0\uc2b5\ub2c8\ub2e4. \ud604\uc7ac \uc124\uce58\ub41c Ubuntu\uc758 \ucee4\ub110 \uc124\uc815\uc744 \ubcf5\uc0ac\ud558\uc5ec \uae30\ubcf8\uc73c\ub85c \uc0ac\uc6a9\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">$ cd ~\/tmp\/linux-dovetail-v6.1.61-dovetail1\n$ cp \/boot\/config-`uname -r` .config\n$ make menuconfig<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uba87\uac00\uc9c0 \ud544\uc218 \uc124\uc815\ub4e4\uc774 \ud544\uc694\ud558\uace0, \uadf8 \uc678\uc5d4 \uc0ac\uc6a9\ud558\ub294 \ud658\uacbd\uc5d0 \ub530\ub77c \ucee4\ub110 \ubaa8\ub4c8 \ubc0f \uc124\uc815\uc744 \ucd94\uac00\/\uc0ad\uc81c\ud558\uba74 \ub429\ub2c8\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"adoc\" class=\"language-adoc\">General setup  --->\n\tPreemption Model (Preemptible Kernel --->\n\t\t(X) Preemptible Kernel (Low-Latency Desktop)\n\nProcessor type and features  --->\n\tProcessor family (Generic-x86-64)  --->\n\t\t(X) Core 2\/newer Xeon\n\n\t[*] Multi-core scheduler support\n\t[ ]   CPU core priorities scheduler support\n\nPower management and ACPI options  --->\n\tCPU Frequency scaling  --->\n\t\t[ ] CPU Frequency scaling\n\n\t[*] ACPI (Advanced Configuration and Power Interface) Support  --->\n\t\t&lt; >   Processor\n\n\tCPU Idle  --->\n\t\t[ ] CPU idle PM support\n\nMemory Management options  --->\n\t[ ] Transparent Hugepage Support\n\t[ ] Allow for memory compaction\n\t[ ] Page migration\n  [ ] Contiguous Memory Allocator\n\n\n[*] Xenomai\/cobalt (NEW)  --->\n\tDrivers  --->\n\t\tRTnet  --->\n\t\t\t&lt;M> RTnet, TCP\/IP socket interface\n\t\t\t\tDrivers  --->\n\n    Real-time IPC drivers  --->\n      &lt;M> RTIPC protocol family\n        [*]   XDDP cross-domain datagram protocol (NEW)\n        [*]   IDDP intra-domain datagram protocol (NEW)\n        (32)    Number of IDDP communication ports (NEW)\n        [*]   Buffer protocol (NEW)\n        (32)    Number of BUFP communication ports (NEW)<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc800\uc7a5\ud558\uace0, \ub2e4\uc2dc \ud130\ubbf8\ub110\ub85c \ub3cc\uc544\uc635\ub2c8\ub2e4. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ube4c\ub4dc\ud558\uae30 \uc804\uc5d0 \uc2dc\uc2a4\ud15c \ud0a4 \uc124 \uc815 \ubc0f \ub514\ubc84\uae45\ucf54\ub4dc \uc0dd\uc131\uc744 \uc911\uc9c0\ud558\ub3c4\ub85d \uc124\uc815\ud574\uc90d\ub2c8\ub2e4. \uc2dc\uc2a4\ud15c \ud0a4 \uc124\uc815\uc740 \ub530\ub85c \ud0a4\ub97c \uc0dd\uc131\ud558\uc9c0 \uc54a\ub294 \ud55c \uc5d0\ub7ec\uac00 \ubc1c\uc0dd\ud558\uace0, \ub514\ubc84\uae45 \ucf54\ub4dc\uc758 \uc0dd\uc131 \uc911\uc9c0\ub294 \ube4c\ub4dc\ub97c \uc870\uae08 \ub354 \ube60\ub974\uac8c \ud574\uc90d\ub2c8\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">$ scripts\/config --disable SYSTEM_TRUSTED_KEYS\n$ scripts\/config --set-str CONFIG_SYSTEM_TRUSTED_KEYS \"\"\n$ scripts\/config --disable SYSTEM_REVOCATION_KEYS\n$ scripts\/config --set-str CONFIG_SYSTEM_REVOCATION_KEYS \"\"\n$ scripts\/config --disable CONFIG_DEBUG_INFO_BTF\n\n$ scripts\/config --disable GDB_SCRIPTS\n$ scripts\/config --disable DEBUG_INFO\n$ scripts\/config --disable DEBUG_INFO_SPLIT\n$ scripts\/config --disable DEBUG_INFO_REDUCED\n$ scripts\/config --disable DEBUG_INFO_COMPRESSED\n$ scripts\/config --set-val DEBUG_INFO_NONE y\n$ scripts\/config --set-val DEBUG_INFO_DWARF5 n\n$ scripts\/config --disable DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\uc81c \ube4c\ub4dc\ub97c \uc9c4\ud589\ud574 \uc90d\ub2c8\ub2e4. (\uc544\uc8fc~~~ \uc88b\uc740 PC\uac00 \uc544\ub2c8\uba74 \ub300\ucda9 1\uc2dc\uac04 \uc0b4\uc9dd \ub118\uac8c \uac78\ub9ac\ub294 \ub4ef \ud569\ub2c8\ub2e4. )<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">$ make -j4 bindeb-pkg<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ube4c\ub4dc\uac00 \uc644\ub8cc\ub418\uba74, \uc0dd\uc131\ub41c deb \ud30c\uc77c\uc744 \uc774\uc6a9\ud558\uc5ec \ucee4\ub110\uc744 \uc124\uce58\ud574\uc90d\ub2c8\ub2e4. <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">$ cd ..\n$ sudo dpkg -i *.deb<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc124\uce58\ub97c \uc644\ub8cc\ud55c \uc774\ud6c4, \uba87\uac00\uc9c0 \uc124\uc815\uc744 \uc9c4\ud589\ud574 \uc90d\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc77c\ub2e8 xenomai \uad00\ub828\ud55c \uae30\ub2a5\uc744 sudo \uba85\ub839\uc5c6\uc774 \uc0ac\uc6a9\ud558\ub3c4\ub85d \ud604\uc7ac \uc720\uc800\ub97c xenomai \uadf8\ub8f9\uc5d0 \ucd94\uac00\ud574\uc90d\ub2c8\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">$ sudo addgroup xenomai\n$ sudo addgroup root xenomai\n$ sudo usermod -aG xenomai $(whoami)<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Group ID (GID)\ub97c \ucc3e\uc544\ubd05\ub2c8\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">$ cat \/etc\/group | grep xenomai\n1001<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub2e4\uc74c\uc73c\ub85c GRUB\uc758 \ubd80\ud305 \uc635\uc158\uc744 \ucd94\uac00\ud574\uc90d\ub2c8\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">$ sudo vi \/etc\/default\/grub<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">GRUB_DEFAULT=saved\nGRUB_SAVEDEFAULT=true\n#GRUB_TIMEOUT_STYLE=menu\nGRUB_TIMEOUT=10\nGRUB_DISTRIBUTOR=`lsb_release -i -s 2> \/dev\/null || echo Debian`\nGRUB_CMDLINE_LINUX_DEFAULT=\"quiet splash nomodeset i915.enable_rc6=0 i915.enable_dc=0 noapic xenomai.allowed_group=1001 isolcpus=0,1 xenomai.supported_cpus=0x3\"\nGRUB_CMDLINE_LINUX=\"\"\n\nGRUB_GFXMODE=1280x1024\nGRUB_GFXPAYLOAD_LINUX=1280x1024<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc635\uc158 \uc911 \uba87 \uac00\uc9c0\ub97c \uc124\uba85\ud574\ubcf4\uba74,<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">xenomai.allowed_group=1001     % \uc0dd\uc131\ud55c \uadf8\ub8f9\uc758 \uc0ac\uc6a9\uc790\ub4e4\uc774 xenomai\ub97c \uc0ac\uc6a9\ud560 \uc218 \uc788\ub3c4\ub85d \uad8c\ud55c \ubd80\uc5ec\nisolcpus=0,1                   % CPU0, CPU1\uc744 \uc77c\ubc18 \ucee4\ub110\uc5d0\uc11c \uc0ac\uc6a9\ud558\uc9c0 \ubabb\ud558\ub3c4\ub85d Isolation\nxenomai.supported_cpus=0x3     % CPU0, CPU1\uc744 Xenomai\uc5d0\uc11c \uc0ac\uc6a9\ud558\ub3c4\ub85d \uc124\uc815<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">update-grub\ub97c \uc2e4\ud589\ud558\uc5ec \ubcc0\uacbd\ub41c \uc635\uc158\uc744 \uc801\uc6a9\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">$ sudo update-grub\n$ sudo reboot<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ub2e4\uc74c\uc73c\ub85c XDDP (\ube44\uc2e4\uc2dc\uac04 \ucee4\ub110\uacfc \uc2e4\uc2dc\uac04 \ucee4\ub110\uacfc\uc758 \ud1b5\uc2e0\uc744 \uc704\ud55c IPC \ubc29\ubc95 \uc911 \ud558\ub098)\ub97c \uc0ac\uc6a9\ud558\uae30 \uc704\ud574 \ud37c\ubbf8\uc158\uc744 \uc124\uc815\ud574\uc90d\ub2c8\ub2e4. udev \ub8f0\uc744 \uc774\uc6a9\ud558\uc5ec \uad8c\ud55c\uc744 \ubd80\uc5ec\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">$ sudo vi \/etc\/udev\/rules.d\/99-xenomai.rules\n\nKERNEL==\"rtp[0-32]*\", MODE=\"0666\"\nSUBSYSTEM==\"rtdm\", MODE=\"0666\"<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ub2e4\uc74c\uc73c\ub85c XDDP \ucee4\ub110 \ubaa8\ub4c8\uc744 \ubd80\ud305 \uc2dc\uc5d0 \uc790\ub3d9\uc73c\ub85c \ub85c\ub529\ud558\ub3c4\ub85d \uc124\uc815\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">$ sudo vi \/etc\/modules\n\nxeno_rtipc<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\uc81c \uc7ac\ubd80\ud305\ud574\uc90d\ub2c8\ub2e4. \uc7ac\ubd80\ud305\uc2dc \uc124\uce58\ub41c \uc2e4\uc2dc\uac04 \ucee4\ub110 \ubc84\uc804\uc744 \uc120\ud0dd\ud574\uc90d\ub2c8\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\">\ucee4\ub110 \ubc84\uc804 \ud655\uc778<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">$ uname -a\nLinux former-0030 6.1.61-xenomai #5 SMP PREEMPT_DYNAMIC IRQ_PIPELINE Fri Nov 17 16:46:35 KST 2023 x86_64 x86_64 x86_64 GNU\/Linux<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">XDDP \ucee4\ub110 \ubaa8\ub4c8 \ub85c\ub529 \ud655\uc778<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">$ lsmod | grep xeno\nxeno_rtipc<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\">Xenomai \ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c \uc124\uce58\ud574\uc90d\ub2c8\ub2e4. \uba3c\uc800 \ube4c\ub4dc\ub97c \uc704\ud55c \ud328\ud0a4\uc9c0 \ud544\uc694 \ud328\ud0a4\uc9c0\ub97c \uc124\uce58\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">$ sudo apt install fuse<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Xenomai \ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c \ube4c\ub4dc\ud558\uace0 \uc124\uce58\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">$ cd ~\/tmp\/xenomai-v3.2.4\n$ .\/scripts\/bootstrap\n$ .\/configure --with-pic --with-core=cobalt --enable-smp --disable-tls --enable-dlopen-libs --disable-clock-monotonic-raw\n$ make -j4\n$ sudo make install<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">PATH \ud658\uacbd\ubcc0\uc218\uc5d0 Xenomai bin \uacbd\ub85c\ub97c \ucd94\uac00\ud558\uace0,<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">$ echo \"export PATH=\/usr\/xenomai\/bin:$PATH\" >> ~\/.bashrc<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c \ucd94\uac00\ud574\uc90d\ub2c8\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">$ sudo vi \/etc\/ld.so.conf.d\/xenomai.conf\n\n\/usr\/xenomai\/lib\n\n$ sudo ldconfig<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc124\uce58 \uc644\ub8cc<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\">\ud14c\uc2a4\ud2b8\uc6a9 \ucf54\ub4dc\ub97c \ud558\ub098 \ub9cc\ub4e4\uc5b4\uc11c \uc798 \ub3d9\uc791\ub418\ub294\uc9c0 \ud655\uc778\ud574\ubcf4\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"cpp\" class=\"language-cpp\">#include &lt;stdio.h>\n#include &lt;signal.h>\n#include &lt;unistd.h>\n#include &lt;alchemy\/task.h>\n\nRT_TASK demo_task;\n\nvoid demo(void *arg)\n{\n  RT_TASK_INFO curtaskinfo;\n  rt_task_inquire(&amp;demo_task, &amp;curtaskinfo);\n  printf(\"Task name : %s \\n\", curtaskinfo.name);\n}\n\nint main(int argc, char* argv[])\n{\n  char *str = \"demo\";\n\n  printf(\"start task\\n\");\n\n  rt_task_create(&amp;demo_task, str, 0, 50, 0);\n  rt_task_start(&amp;demo_task, &amp;demo, 0);\n\n  sleep(1);\n} <\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">$ gcc -o hello_xenomai hello_xenomai.c $(xeno-config --posix --alchemy --cflags) $(xeno-config --posix --alchemy --ldflags)\n$ .\/hello_xenomai \nstart task\nTask name : demo<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Latency\ub3c4 \ud655\uc778\ud574\ubd05\ub2c8\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">$ sudo sh -c \"echo 0 > \/proc\/xenomai\/latency\"\n$ latency\n== Sampling period: 100 us\n== Test mode: periodic user-mode task\n== All results in microseconds\nwarming up...\nRTT|  00:00:01  (periodic user-mode task, 100 us period, priority 99)\nRTH|----lat min|----lat avg|----lat max|-overrun|---msw|---lat best|--lat worst\nRTD|      1.919|      1.963|      3.277|       0|     0|      1.919|      3.277\nRTD|      1.922|      1.964|      4.412|       0|     0|      1.919|      4.412\nRTD|      1.914|      1.958|      3.316|       0|     0|      1.914|      4.412<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc804\uccb4\uc801\uc73c\ub85c 100us \uc81c\uc5b4 \uc8fc\uae30\uc5d0 \uc57d 4us latency\uac00 \ubc1c\uc0dd\ud569\ub2c8\ub2e4. \uc774\ub294 User \ubaa8\ub4dc (dovetail\uc744 \ud1b5\ud574\uc11c xenomai \ucee4\ub110\uc5d0 \uc811\uadfc)\uc778 \uacbd\uc6b0\uc5d0 \uadf8\ub807\uace0, \ucee4\ub110 \ubaa8\ub4dc  or \ucee4\ub110 IRQ \ubaa8\ub4dc\ub85c \uc2e4\ud589\ud558\uba74 \uc880 \ub354 \uc88b\uc740 \uc131\ub2a5\uc774 \ub098\uc635\ub2c8\ub2e4. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc644\ub8cc.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Xenomai\ub294 \uae30\uc874 Linux \uc2dc\uc2a4\ud15c\uc758 \ucee4\ub110\uacfc \ubcd1\ud589\ud558\uc5ec \uc2e4\ud589\ub418\uba70, Hard Realtime Task\ub97c \uc9c0\uc6d0\ud558\ub294 \uc18c\ud504\ud2b8\uc6e8\uc5b4 \ud504\ub808\uc784\uc6cd\uc785\ub2c8\ub2e4. \uc124\uce58 \ubc29\ubc95\ub3c4 \uac04\ub2e8\ud558\uace0, POSIX \uc778\ud130\ud398\uc774\uc2a4\ub97c \uc9c0\uc6d0\ud558\uc5ec \uac1c\ubc1c\ub3c4 \uc27d\uac8c \ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc778\ud130\ub137\uc5d0\uc11c Xenomai \uc124\uce58 \ubc29\ubc95\uc744 \uac80\uc0c9\ud574\ubcf4\uba74, Xenomai2 \ubc84\uc804\uacfc \uc608\uc804 Linux \ubc84\uc804\uc744 \uae30\uc900\uc73c\ub85c \uc124\uba85\ud574\ub193\ub294 \uac83\ub4e4\uc774 \ub9ce\uace0 (\uadf8\ub9cc\ud07c \uc778\uae30\uac00 \uc5c6\ub2e4\ub294 \uc598\uae30&#8230;) Xenomai3\ub77c\uace0 \ud574\ub3c4 \uc608\uc804 iPipe\ub97c \uc0ac\uc6a9\ud558\ub294 \ubc29\ubc95\uc774 \uc704\uc8fc\ub77c\uc11c, \uac00\uc7a5 \ucd5c\uc2e0 \ubc84\uc804\uc73c\ub85c Xenomai\ub97c \uc124\uce58\ud558\ub294 \ubc29\ubc95\uc744 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[86],"tags":[88,90,87,89],"class_list":["post-402","post","type-post","status-publish","format-standard","hentry","category-xenomai","tag-install","tag-ubuntu22-04","tag-xenomai","tag-xenomai3"],"_links":{"self":[{"href":"https:\/\/ahnbk.dev\/index.php?rest_route=\/wp\/v2\/posts\/402","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ahnbk.dev\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ahnbk.dev\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ahnbk.dev\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ahnbk.dev\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=402"}],"version-history":[{"count":1,"href":"https:\/\/ahnbk.dev\/index.php?rest_route=\/wp\/v2\/posts\/402\/revisions"}],"predecessor-version":[{"id":404,"href":"https:\/\/ahnbk.dev\/index.php?rest_route=\/wp\/v2\/posts\/402\/revisions\/404"}],"wp:attachment":[{"href":"https:\/\/ahnbk.dev\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=402"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ahnbk.dev\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=402"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ahnbk.dev\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=402"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}