[問題] mknod: not found DMA6410開發版

看板LinuxDev作者 (=口="被發現了!)時間13年前 (2011/03/16 21:24), 編輯推噓1(1038)
留言39則, 4人參與, 最新討論串1/1
各位大大好 小弟是Linux 新手 步驟都是照書做 且修改過CC的路徑 試過insmod hello.ko 電腦可以DNW正常show出文字 以下是我將範例的 led.ko 檔加到開發板上的情形 # # cd sdcard # ls LOST.DIR DCIM launchpad.apk apkInstaller.apk MediaPlayer.apk koo_6.apk Big Planet TW 1[1].2.4.apk BigPlanetTracks_2[1].0a.apk u-boot_mmc.bin test.ko RMaps bk_light.ko dc_motor.ko led.ko BigPlanet_maps.sqlitedb BigPlanetTracks pwm.ko # lsmod led 2912 0 - Live 0xbf000000 # rmmod led LED driver release success! # insmod led.ko LED driver register success! # cat /proc/devices Character devices: 1 mem 2 pty 3 ttyp 4 /dev/vc/0 4 tty 5 /dev/tty 5 /dev/console 5 /dev/ptmx 6 lp 7 vcs 10 misc 13 input 14 sound 21 sg 29 fb 30 led 81 video4linux 89 i2c 90 mtd 99 ppdev 108 ppp 116 alsa 128 ptm 136 pts 180 usb 188 ttyUSB 189 usb_device 204 s3c2410_serial 253 usb_endpoint 254 rtc Block devices: 1 ramdisk 7 loop 8 sd 31 mtdblock 65 sd 66 sd 67 sd 68 sd 69 sd 70 sd 71 sd 128 sd 129 sd 130 sd 131 sd 132 sd 133 sd 134 sd 135 sd 179 mmc # mknod /dev/led c 30 0 mknod: not found # 之後就不知道怎麼照書中的繼續了... 苦惱中 led.ko 的內容 是讓ARM開發板的 兩顆LED交互閃爍 可是我目前還是恆亮的狀態 希望有大大能幫我解惑!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 211.23.55.19 ※ 編輯: saveload2001 來自: 211.23.55.19 (03/16 21:27)

03/16 21:57, , 1F
個人猜測兩各可能原因 1. busybox 當初在製作的時候沒有
03/16 21:57, 1F

03/16 21:58, , 2F
把 mknod 這個選項選起來 那自然不會有這指令 2.也許你
03/16 21:58, 2F

03/16 21:59, , 3F
rootfs 路徑出了點問題 你去查查你的 mknod 放到哪邊去..
03/16 21:59, 3F

03/16 23:09, , 4F
糟糕 我只用Makefile編譯檔案 用的是arm-linux-gcc
03/16 23:09, 4F

03/16 23:10, , 5F
我沒有用busybox編譯 感謝ma大提供方法
03/16 23:10, 5F

03/16 23:11, , 6F
但是@@"" 我不知道怎麼用開發版去查 mknod路徑
03/16 23:11, 6F

03/16 23:13, , 7F
明天我再提供我的Makefile檔案
03/16 23:13, 7F

03/17 00:31, , 8F
可以把 toolchain 裡的 *.so 搬到板子的 filesystem 裡
03/17 00:31, 8F

03/17 00:32, , 9F
或是直接編成 statically linked binary 省事點
03/17 00:32, 9F

03/17 00:33, , 10F
編譯選項加上 -statc 再試試吧
03/17 00:33, 10F

03/17 03:23, , 11F
這跟你怎麼 compile 你的 device driver 無關,這是在建置
03/17 03:23, 11F

03/17 03:25, , 12F
你 arm 版開機系統的時候的事情,基本上你可能需要的是
03/17 03:25, 12F

03/17 03:26, , 13F
"重新編譯 busybox", busybox 不是拿來 compile 你的
03/17 03:26, 13F

03/17 03:29, , 14F
driver 用的,又其實你已經在 /dev 下有 led 這個 device
03/17 03:29, 14F

03/17 03:29, , 15F
file 了是嗎(?) 如果已經有了 那倒是不用去考慮 mknod 有
03/17 03:29, 15F

03/17 03:29, , 16F
沒有正常動作XD 反正 mknod 用來產生 device file ...
03/17 03:29, 16F

03/17 03:36, , 17F
又如果你是希望你的 driver 在 insmod 之後馬上讓你的燈
03/17 03:36, 17F

03/17 03:38, , 18F
閃爍 那你要看看你對於燈號的操作是否寫在 init_module()
03/17 03:38, 18F

03/17 03:40, , 19F
裡頭... 還有我是懷疑你 GPIO 腳位有沒有指定好:Q 如果你
03/17 03:40, 19F

03/17 03:42, , 20F
的程式碼 不是從你板子附的文件裡頭一起出來的 那有很大
03/17 03:42, 20F

03/17 03:42, , 21F
機率 driver 控制的腳位 跟你板子實際 LED 接的腳位不同
03/17 03:42, 21F

03/17 03:44, , 22F
所以你應該把你板子的規格書電路接腳拿出來看... 我想...
03/17 03:44, 22F

03/17 03:44, , 23F
Makefile 是不會有什麼太大問題的 .ko 檔都給你編出來了.
03/17 03:44, 23F

03/17 09:27, , 24F
感謝ma大還有roy大 我要檢查一下隨書附贈的led.c檔
03/17 09:27, 24F

03/17 11:17, , 25F
我覺得重點在於... 板子裡有沒有mknod這個command
03/17 11:17, 25F

03/17 11:23, , 26F
他其實應該已經有 device file 了...
03/17 11:23, 26F

03/17 11:24, , 27F
不過如果沒有的話 那的確是還要去把 mknod 生出來...
03/17 11:24, 27F

03/17 11:28, , 28F
當然... 另解是把當初把 rootfs 看板子光碟有沒有附 拿出
03/17 11:28, 28F

03/17 11:29, , 29F
來解壓縮 然後到 外部 linux 環境去先把 device file 建
03/17 11:29, 29F

03/17 11:30, , 30F
好->然後重新打包->燒回板子上 這樣就不用在板子上建立
03/17 11:30, 30F

03/17 11:30, , 31F
mknod 這個指令...
03/17 11:30, 31F

03/17 11:41, , 32F
好的 我試試看 謝謝
03/17 11:41, 32F

03/17 11:59, , 33F
修正... 我漏講很多步驟XD 1. mount cramfs 2.把 mount
03/17 11:59, 33F

03/17 12:00, , 34F
上去的東西 tar 出來 3.把步驟 2 的 tar 檔找個地方解壓
03/17 12:00, 34F

03/17 12:01, , 35F
4.到解壓縮之後的對應目錄夾下 mknod 產生 dev file
03/17 12:01, 35F

03/17 12:02, , 36F
5.重新打包製作 cramfs 6.燒回板子上...
03/17 12:02, 36F

03/17 12:43, , 37F
我純粹針對mknod: not found 這個error message來解釋..
03/17 12:43, 37F

03/17 12:44, , 38F
至於要在板子裡面的file system長出device node..就樓上說的
03/17 12:44, 38F

03/17 12:44, , 39F
那樣子的作法..
03/17 12:44, 39F
推 Adama:locate mknod? 03/17 08:54 → saveload2001:我不懂local是指?? mknod是我下達指令到開發板上的 03/17 09:21 → saveload2001:開發板的kernel是 dma6410L-linux-2.6.27 03/17 09:22 → madoka82:想按 2 但是忍下來了...我發覺你不是個細心的人 一樓講的 03/17 11:09 → madoka82:是 "locate mknod" 用意在找你的 mknod 放到哪邊去,基本 03/17 11:10 → madoka82:上就是我在 linuxdev 回給你的可能原因之一 mknod 你不知 03/17 11:10 → madoka82:到路徑丟到哪邊去了... 03/17 11:11 → madoka82:你想玩開發版 我想對於 Linux 的操作要再熟悉一點...... 03/17 11:11 → saveload2001:感謝ma大! 我找到是busybox的應用了 03/17 21:12 → saveload2001:現在是加 busybox mknod /dev/led 30 0 03/17 21:13 → saveload2001:然後就可以了 03/17 21:13 → saveload2001:只是 ... 兩顆LED燈依然恆亮 03/17 21:14 → saveload2001:我把書的下半部分看完 說要灌android APK對應LED軟體 03/17 21:15 → saveload2001:現在軟體可以驅動 驅動程式 led可以用觸控亮滅了 3Q 03/17 21:16 ※ 編輯: saveload2001 來自: 211.23.55.19 (03/17 21:17)
文章代碼(AID): #1DWBeOW3 (LinuxDev)