포럼 회원으로 등록하신분만 다운로드가 가능합니다. 최대 업로드 가능한 용량은 1GB 입니다.

목적 : 회사에서 양산하고 있는 미디어 제품에 NTFS로 파티션된 하드디스크를 읽고 쓰기 기능을 적용하기 위해서 우선 이솝보드 포팅을 한다.

1.문서 출처 및 수정사항

Original Author : 이채원 ([email protected])  http://user.chollian.net/~hebb/
        이채원님의 문서는 MIP환경이며 관련 문서는 위에 홈페이지에서 확인가능

Modify for ARM : 이영재 ( [email protected] ) http://blog.naver.com/airhank

이솝보드의 서브보드를(2차, 3차) 전부 갖고 있는 관계로 Kernel 2.4.20 과 Kernel 2.6.13에 모두 적용하려 하였으나 Kernel 2.4.20의 경우 Fuse 컴파일에서 문제가 발생하여 확인한 결과 Kernel 2.4.21 이후 버전들에만 적용이 가능한 것을 확인하였음.
따라서 현재 이솝보드 개발환경에서는 kernel 2.6.x 만을 적용함.

2. FUSE
http://fuse.sourceforge.net/

Filesystem in userspace의 약자로 커널이 아닌 User 영역에서 File system을 구현한 방식임.
이를 기반으로 한 수 많은 파일 시스템들이 개발되어 있음.

3. ntfs-3G
http://www.ntfs-3g.org/

FUSE를 기반으로 만들어진 파일시스템 중 ntfs Read/Write가 되는 것임.
이는 먼저 FUSE를 컴파일 한 후에 컴파일 할 수 있게 되어 있음

4. ARM 보드용으로의 컴파일
컴파일을 위해서는 우선 FUSE 소스와 ntfs-3G 소스 2개를 모두 받아야 함.

4.1 FUSE 컴파일

4.1.1 소스 다운로드
http://fuse.sourceforge.net/ 의 download에서 소스를 받음.
(2007년 8월 현재 fuse-2.7.0.tar.gz)

4.1.2 소스 수정
1) 다운받은 압축 파일을 임의의 폴더에 놓고 압축을 푼다.
2) 압축을 풀면 fuse-2.7.0 폴더가 나오며 이 안으로 이동.
3) 아래와 같이 총 3부분을 수정해야 한다.
3-1) fuse-2.7.0/lib 폴더 안에서
# grep -R "symver" *
를 입력하면 symver 에 해당하는 부분들이 죽 나옴.
이 부분들을 모두 주석처리한다.

수정해야 할 파일들은 모두 6개임:
- fuse.c, fuse_lowlevel.c, fuse_session.c, helper.c, mount.c, fuse_mt.c


3-2) fuse-2.7.0/kernel 폴더의 fuse_i.h 파일의 45~47 번째 줄을 아래와 같이 수정

//#if defined(__arm__) && LINUX_VERSION_CODE < KERNEL_VERSION(2,6,20)
#define DCACHE_BUG
//#endif

4.1.3 소스 컴파일
1) 아래와 같이 입력
# mkdir out // 보드용 파일들이 만들어질 위치.
#./configure --with-kernel=/korea-dokdo/aesop2440-2613-123board --host=arm-linux --prefix=$(pwd)/out --enable-kernel-module --disable-mtab

그 후 kernel 폴더 안으로 가서 Makefile을 열고 11번째 줄에서 아래를 수정한다.

// kernel/Makefile 수정 전
fusemoduledir = /lib/modules/2.6.13-h1940-aesop2440/kernel/fs/fuse

// kernel/Makefile 수정 후
fusemoduledir = ../out

이제 다시 상위 폴더로 간다.
# cd ..

그리고 아래와 같이 실행한다.

# make
# make install

2) 이 후 out 폴더 안을 가 보면 bin 과 lib 폴더, 그리고 fuse.ko가 만들어져 있는 것을 확인한다.


4.2 ntfs-3G 컴파일

4.2.1 소스 다운로드
http://www.ntfs-3g.org/ 의 Download에서 파일을 받는다.
(2007년 8월 ntfs-3g-1.810.tgz)

4.2.2 소스 컴파일
1) 다운받은 압축 파일을 임의의 폴더에 놓고 압축을 푼다.
2) 압축을 풀면 ntfs-3g-1.810 폴더가 나오며 이 안으로 이동.
3) 아래와 같이 입력
# mkdir out // 보드용 파일들이 만들어질 위치.
# export PKG_CONFIG_PATH=(fuse-2.7.0 폴더 아래의 out/lib/pkgconfig/ 폴더의 절대위치)
(예) export PKG_CONFIG_PATH /home/aesop/fuse-2.7.0/out/lib/pkgconfig

./configure --with-kernel=/korea-dokdo/aesop2440-2613-123board --host=arm-linux --prefix=$(pwd)/out --exec-prefix=$(pwd)/out
# make
# make install

4) 이 후 out 폴더 안을 가 보면 bin 과 lib 폴더가 만들어져 있는 것을 확인한다.

5. 보드에서의 테스트
1) 만들어진 2개의 /lib 폴더의 내용은 모두 보드의 /lib 과 /usr/lib 안에 복사한다.
2) 만들어진 2개의 /bin 폴더의 내용은 모두 보드의 /bin 안에 복사한다.
3) fuse.ko 를 insmod 한다.

root@godori:/# lsmod
Module                  Size  Used by    Not tainted
fuse 44212 0 - Live 0xbf000000

4) ntfs로 포맷된 HDD를 보드의 USB에 연결한다.
(물론 그 전에 커널에서 USB가 Enable 되어 있어야 한다. 아니면 usbhd-start 명령으로 USB를 동작시켜 줄 수 있다.)

콘솔에서 USB 인식 메시지
root@godori:/# usb 1-1: new full speed USB device using s3c2410-ohci and address 3
usb 1-1: Product: USB2.0 Storage Device
usb 1-1: Manufacturer: Cypress Semiconductor
usb 1-1: SerialNumber: DEF10CAF9794
scsi1 : SCSI emulation for USB Mass Storage devices
  Vendor: SAMSUNG   Model: HD300LD           Rev: 0000
  Type:   Direct-Access                      ANSI SCSI revision: 00
SCSI device sda: 586072368 512-byte hdwr sectors (300069 MB)
sda: assuming drive cache: write through
SCSI device sda: 586072368 512-byte hdwr sectors (300069 MB)
sda: assuming drive cache: write through
sda: sda1
Attached scsi disk sda at scsi1, channel 0, id 0, lun 0
FAT: bogus number of reserved sectors
VFS: Can't find a valid FAT filesystem on dev sda1.
NTFS 이

5) 아래와 같이 하여 마운트 해 본다.

mkdir /mnt/NTFS
# ntfs-3g /dev/sda1 /mnt/NTFS -o force,locale=en_EN.UTF-8


root@godori:/# ntfs-3g /dev/sda1 /mnt/NTFS -o force,locale=en_EN.UTF-8
WARNING: Couldn't set locale to 'en_EN.UTF-8' thus some file names may not
         be correct or visible. Please see the potential solution at
         http://ntfs-3g.org/support.html#locale
/bin/mount: invalid option -- i
root@godori:/#

root@godori:/# mount
none on /dev type ramfs (rw)
/dev/root on / type ext2 (rw)
/proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
/dev/sda1 on /mnt/NTFS type fuseblk (allow_other,blksize=4096)

6. 결과
- NTFS로 마운트 된 것을 확인
- 읽기, 쓰기 동작됨
- 대용량 데이터 전송 확인

문제점
-        이솝보드는 USB host 버전이 1.1인 관계로 대용량 데이터 전송을 하기
위해서는 많은 시간이 필요함.
( 만약 MCU가 USB2.0 HOST를 지원한다면 개선이 가능할 것으로 보임 )

7. To do List
- Porting 과정에서 이해하지 못한 Option 사항 정리 필요.
- Kernel 2.4.21 이후 버전에서 적용 가능하도록 작업필요.

안녕하세요...

이것저것 하고 있는 개발자입니다.

잘부탁드립니다.

엮인글 :
http://www.aesop.or.kr/index.php?mid=Board_Resources_S3C2410&document_srl=38270&act=trackback&key=062

고현철

2007.08.22 00:39:52
*.70.26.87

와우~~~

아주 재미있는 내용이네요. 유용하기도 하고요....^^

aesop site 정비하게 되면 정식 documentation쪽으로 옮기던지
해야겠습니다.

좋은 글들이 많이 올라와서 기분이 갑자기 무쟈게 좋아지네요...

유형목

2007.08.22 11:12:18
*.131.98.102

흐음.. root 권한 없이도 마음대로 마운트가 가능하다는 얘긴가요?

재미있군요. ^^;
List of Articles
번호 제목 글쓴이 날짜 조회 수
162 S3C2410 mizi 2.4.18 kernel sound driver fixed file 고도리 2007-11-04 9463
161 AESOP toolchain에 GDB 포팅하기. 유형목 2007-10-30 9946
160 logo display(framebuffer control 코드) file 고현철 2007-10-13 6512
159 linux kernel 2.6 kthread example file 고현철 2007-10-12 6752
158 SPI 자료 file [2] 이재훈 2007-09-20 6035
157 aesop-2440용 GNUBOY source file [1] 고현철 2007-09-19 5856
156 [HowTo] 이솝보드에 무선 랜 카드 동작시키기 (무선 칩 : RT2... [9] 이영재 2007-09-13 8886
» 이솝보드에서 NTFS HDD 인식시키고 읽기와 쓰기 ( fuse, ntfs-3g... [2] 이영재 2007-08-21 9370
154 [3차보드] JTAG 회로 관련 문제. [6] 유용출 2007-08-16 6448
153 [HowTo] scratchbox설치에서 qtopia까지 삽질기 file [13] 안경식 2007-06-27 7192
152 aesop2440용 cuteos 입니다. file [4] 전병우 2007-06-27 5883
151 S3C2440 24bpp framebuffer driver source file [1] 고현철 2007-06-21 6047
150 [re] S3C2440 24bpp framebuffer driver source 김민식 2007-06-21 5877
149 SDL 기본 화면 띄우기 입니다. file [2] 최현진 2007-06-07 5922
148 Install Quickcam Pro 4000 driver for aesop file [1] 노희준 2007-06-07 5866
147 2.4 Kernel Logo 변환 소스입니다.(코어벨참조) file [2] 김현기 2007-05-24 6047
146 [HowTo](수정완료) 이솝보드로 AXD 와 H-JTAG 으로 펌웨어 프로... [20] 이재명 2007-05-23 10331
145 aEsop JTAG(Byte Blaster MV) 로도 잘되네요 file [3] 윤광윤 2007-05-24 6046
144 SDL TTF를 이용한 한글 display 예제..... file [4] 고현철 2007-05-17 5998
143 smsc91c113 aesop-2440 3차용 2.4.20 driver file [2] 고현철 2007-05-17 5832

사용자 로그인