회원 및 비회원 모두 열람이 가능합니다. 최대 업로드 가능한 용량은 20MB 입니다.

안녕하세요.

고도리입니다.

pollux보드의 MLC nand에 ubi/ubifs/ubiblk를 올려봤습니다.
커널 버전은 ubifs-v2.6.24 고요.

ubi는 mtd위에 올라가는 logical volume manager라고 보시면 되고요.

ubifs는 ubi위에 올라가는 새로운 filesystem입니다.

조만간 yaffs는 거의 없어질 듯 보여지고요.

2.6.27 커널서부터는 공식으로 들어간댑니다........ㅎㅎ

ubiblk는 ubi위에 올라가는 block device이고요.
vfat/ext3등을 direct로 nand위에 올릴 수 있습니다.

ㅎㅎ

일단 ubifs를 올린 로그를 올립니다. 아주 재밌고, 오묘합니다.


자료가 너무 없어서 엄청 고생했습니다.
특히 MLC nand에 올리는게 엄청나게 힘들더군요....ㅎㅎ

참, HW ECC를 썼습니다.

ubiblk에는 vfat을 올려봤는데, 훌륭합니다.......read속도는 훌륭합니다.
write는 MLC라...쩝...

===================================================
U-Boot 1.1.6 (Aug  8 2008 - 00:02:17)

U-Boot code: 83680000 -> 836AFF10  BSS: -> 836B52D4
RAM Configuration:
Bank #0: 80000000 2112 MB
manufacture ID = 191lx
device ID = 9051lx
flash_protect ON: from 0x00000000 to 0x0002FF0F
protect on 0
protect on 1
protect on 2
flash_protect ON: from 0x00030000 to 0x0003FFFF
protect on 3
Flash:  4 MB
NAND:  maf:dev = ec:d3
1024 MiB
In:    serial
Out:   serial
Err:   serial
found DM9000 ID:90000a46
DM9000 work in 16 bus width
fmd_Init: 1
fmd_Init: reset done
maf: 0xec
dev: 0xd3
NAND_PAGE_SIZE      = 2048
NAND_BLOCK_CNT      = 4096
NAND_PAGE_CNT       = 128
NAND_BLOCK_SIZE     = 262144
### main_loop entered: bootdelay=3

### main_loop: bootcmd="tftp 0x82000000 uImage; bootm 0x82000000"
Hit any key to stop autoboot:  0
DM9000 work in 16 bus width
8:0:3e:26:a:5b:TFTP from server 192.168.0.250; our IP address is 192.168.0.101
Filename 'uImage'.
Load address: 0x82000000
Loading: #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         ####
done
Bytes transferred = 3679080 (382368 hex)
## Booting image at 82000000 ...
   Image Name:   Linux-2.6.24-g4448eca6-dirty
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    3679016 Bytes =  3.5 MB
   Load Address: 80008000
   Entry Point:  80008000
   Verifying Checksum ... OK
OK
No initrd
## Transferring control to Linux (at address 80008000) ...

Starting kernel ...

Linux version 2.6.24-g4448eca6-dirty (root@pollux) (gcc version 4.0.2) #34 Wed Aug 13 10:53:46 KST 2008
CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00053177
Machine: AESOP_POLLUX
Memory policy: ECC disabled, Data cache writeback
clkmodereg = 0x05010480
pollux_cmr.cpu0_div    = 0
pollux_cmr.cpu0_src_pll= 0
pollux_cmr.cpu0_AHB_div= 2
pollux_cmr.bclk_div    = 0
pollux_cmr.bclk_src_pll= 1
pollux_cmr.pll_pdown1  = 0
pll 0 = 533250000
pll 1 = 147000000
ARM926 fclk      = 533250000 Hz
ARM926 AHB clock = 177750000 Hz
       BCLK      = 147000000 Hz
       PCLK      =  73500000 Hz
   DRAM CLK      =  73500000 Hz
CPU0: D VIVT write-back cache
CPU0: I cache: 16384 bytes, associativity 4, 32 byte lines, 128 sets
CPU0: D cache: 16384 bytes, associativity 4, 32 byte lines, 128 sets
Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 13970
Kernel command line: mem=55M ip=192.168.0.101:192.168.0.250:192.168.0.1:255.255.255.0:godori:eth0:off console=ttySAC0,115200n81
PID hash table entries: 256 (order: 8, 1024 bytes)
Console: colour dummy device 80x30
console [ttySAC0] enabled
Dentry cache hash table entries: 8192 (order: 3, 32768 bytes)
Inode-cache hash table entries: 4096 (order: 2, 16384 bytes)
Memory: 55MB = 55MB total
Memory: 51968KB available (3320K code, 314K data, 112K init)
Mount-cache hash table entries: 512
CPU: Testing write buffer coherency: ok
net_namespace: 64 bytes
NET: Registered protocol family 16
SCSI subsystem initialized
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
NET: Registered protocol family 2
IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
TCP established hash table entries: 2048 (order: 2, 16384 bytes)
TCP bind hash table entries: 2048 (order: 1, 8192 bytes)
TCP: Hash tables configured (established 2048 bind 2048)
TCP reno registered
NetWinder Floating Point Emulator V0.97 (double precision)
JFFS2 version 2.2. (NAND) 짤 2001-2006 Red Hat, Inc.
io scheduler noop registered
io scheduler anticipatory registered (default)
io scheduler deadline registered
io scheduler cfq registered
pollux-uart.0: pollux_serial0 at MMIO 0xf0016000 (irq = 44) is a POLLUX
pollux-uart.1: pollux_serial1 at MMIO 0xf0016080 (irq = 48) is a POLLUX
pollux-uart.2: pollux_serial2 at MMIO 0xf0016800 (irq = 52) is a POLLUX
pollux-uart.3: pollux_serial3 at MMIO 0xf0016880 (irq = 56) is a POLLUX
RAMDISK driver initialized: 1 RAM disks of 8192K size 1024 blocksize
loop: module loaded
nbd: registered device at major 43
<DM9KS> I/O: f3000000, VID: 90000a46
Linux video capture interface: v2.00
Uniform Multi-Platform E-IDE driver Revision: 7.00alpha2
ide: Assuming 50MHz system bus speed for PIO modes; override with idebus=xx
Driver 'sd' needs updating - please use bus_type methods
NFTL driver: nftlcore.c $Revision: 1.98 $, nftlmount.c $Revision: 1.41 $
Searching for NAND flash...
NAND device: Manufacturer ID: 0xec, Chip ID: 0xd3 (Samsung NAND 1GiB 3,3V 8-bit)
Scanning device for bad blocks
Pollux Nand: Using static partition definition
Creating 3 MTD partitions on "pollux-nand":
0x00000000-0x08000000 : "d0"
0x08000000-0x18000000 : "d1"
0x18000000-0x40000000 : "d2"
UBI: attaching mtd0 to ubi0
UBI: physical eraseblock size:   262144 bytes (256 KiB)
UBI: logical eraseblock size:    258048 bytes
UBI: smallest flash I/O unit:    2048
UBI: VID header offset:          2048 (aligned 2048)
UBI: data offset:                4096
UBI: attached mtd0 to ubi0
UBI: MTD device name:            "d0"
UBI: MTD device size:            128 MiB
UBI: number of good PEBs:        512
UBI: number of bad PEBs:         0
UBI: max. allowed volumes:       128
UBI: wear-leveling threshold:    4096
UBI: number of internal volumes: 1
UBI: number of user volumes:     1
UBI: available PEBs:             242
UBI: total number of reserved PEBs: 270
UBI: number of PEBs reserved for bad PEB handling: 5
UBI: max/mean erase counter: 2/1
UBI: attaching mtd1 to ubi1
UBI: physical eraseblock size:   262144 bytes (256 KiB)
UBI: logical eraseblock size:    258048 bytes
UBI: smallest flash I/O unit:    2048
UBI: VID header offset:          2048 (aligned 2048)
UBI: data offset:                4096
UBI: background thread "ubi_bgt0d" started, PID 241
UBI: attached mtd1 to ubi1
UBI: MTD device name:            "d1"
UBI: MTD device size:            256 MiB
UBI: number of good PEBs:        1024
UBI: number of bad PEBs:         0
UBI: max. allowed volumes:       128
UBI: wear-leveling threshold:    4096
UBI: number of internal volumes: 1
UBI: number of user volumes:     0
UBI: available PEBs:             1010
UBI: total number of reserved PEBs: 14
UBI: number of PEBs reserved for bad PEB handling: 10
UBI: max/mean erase counter: 1/1
UBI: attaching mtd2 to ubi2
UBI: physical eraseblock size:   262144 bytes (256 KiB)
UBI: logical eraseblock size:    258048 bytes
UBI: smallest flash I/O unit:    2048
UBI: VID header offset:          2048 (aligned 2048)
UBI: data offset:                4096
UBI: background thread "ubi_bgt1d" started, PID 243
UBI: attached mtd2 to ubi2
UBI: MTD device name:            "d2"
UBI: MTD device size:            640 MiB
UBI: number of good PEBs:        2560
UBI: number of bad PEBs:         0
UBI: max. allowed volumes:       128
UBI: wear-leveling threshold:    4096
UBI: number of internal volumes: 1
UBI: number of user volumes:     0
UBI: available PEBs:             2531
UBI: total number of reserved PEBs: 29
UBI: number of PEBs reserved for bad PEB handling: 25
UBI: max/mean erase counter: 1/1
UBI: background thread "ubi_bgt2d" started, PID 245
Initializing USB Mass Storage driver...
usbcore: registered new interface driver usb-storage
USB Mass Storage support registered.
mice: PS/2 mouse device common for all mice
i2c /dev entries driver
usbcore: registered new interface driver usbhid
drivers/hid/usbhid/hid-core.c: v2.6:USB HID core driver
TCP cubic registered
NET: Registered protocol family 1
RPC: Registered udp transport module.
RPC: Registered tcp transport module.
IP-Config: Complete:
      device=eth0, addr=192.168.0.101, mask=255.255.255.0, gw=192.168.0.1,
     host=godori, domain=, nis-domain=(none),
     bootserver=192.168.0.250, rootserver=192.168.0.250, rootpath=
UBIFS: mounted UBI device 0, volume 0, name "rootfs"
UBIFS: file system size: 65028096 bytes (63504 KiB, 62 MiB, 252 LEBs)
UBIFS: journal size: 3354624 bytes (3276 KiB, 3 MiB, 13 LEBs)
UBIFS: default compressor: no compression
UBIFS: media format 4, latest format 4
VFS: Mounted root (ubifs filesystem).
Freeing init memory: 112K
UBIFS: background thread "ubifs_bgt0_0" started, PID 256
INIT: version 2.84 booting
rc.udev start
Initializing udev dynamic device directory.
Starting udevd:  /sbin/udevd --daemon
mount: Mounting /dev/root on / failed: No such file or directory
INIT: Entering runlevel: 3


AESOP Linux

/) /)
(='.'=) <- godori

login[631]: root login  on `tts/0'

root@godori:~# ls -al
drwxr-xr-x    3 root     root          304 Aug 13  2008 .
drwxr-xr-x   16 root     root         1056 Jan  1 00:05 ..
drwxr-xr-x    2 root     root          568 Aug 11  2007 .mplayer
-rwxr-xr-x    1 root     root          110 Aug 13  2008 .profile
root@godori:~# mount
ubi0:rootfs on / type ubifs (rw)
/dev/root on / type ext2 (rw)
/proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
none on /dev/pts type devpts (gid=5,mode=620)

"사람은 자기가 보고 싶은 현실만 볼 뿐이다." - Gaius Julius Caesar
엮인글 :
http://www.aesop.or.kr/index.php?mid=Board_Community_Freeboard&document_srl=7928&act=trackback&key=49c

도찬구

2008.08.15 11:23:02
*.255.53.72

wear-leveling 에 대한 접근이 가능한 건가요.
단순히 정보만 가져온 걸까요?

최근 SSD하드에 빠져서 살고 있는데.. 제대로 쓰려면 리눅스로 환경을 전향해야 하는건가 하는 생각이 가끔듭니다. 저널관리나 스왑관리 등이 윈도우에서 너무 형편없어서...(임베디드용 OS에서나 저널처리가 가능하죠. ㅠㅠ, 스왑은 메모리가 남아 돌아도 맘대로 쌓이고, 스왑때문에 서버 운영체제를 깔자니 공개 바이러스 프로그램을 쓸 수도 없고.. ㅠㅠ)

윈도우 진영 개발자가 아니었다면 진작에 리눅스를 깔아서 쓸텐데.. 닷넷 개발자로 전향한 덕에 쉽지가 않네요.
monodevelop는.. CE쪽은 지원하지도 않고.. GTK# ㅠㅠ

저 혼자 개발한다면 변환기 하나 만들어서 컴파일 전에 GTK코드를 WINFORM으로 연결해서 해 버리면 간단하지만.. 것도 아니고..

앗.. 또 샛길로 빠졌네요.

SSD도 많이 보급되고 있는데 언제쯤 M$는 SSD용 파일시스템을 만들어 낼까요. 일단 2008엔 안 들어있으니, 7에 있을까요.(아무리 HW 안정성이 좋다고 해도 영 불안하게 움직이니... 특히 램덤write는 전체적인 퍼포먼스까지 망가트리니..)

확실히 이럴 때는 리눅스 진영의 개척자 분들이 멋집니다.

[P.S.] 혹 이런 테스트 가능하신가요?
순차Write하고 Random Write하고 속도 비교 가능하실까요?
아마도 별차이 없을 것 같다는 생각이 들긴하는데.. 궁금하네요.

고현철

2008.08.15 22:47:16
*.32.117.22

ubi에서 자동으로 wear leveling을 합니다.

ubi와 ubifs는 현재 구글의 안드로이드 플랫폼이랑 OLPC쪽에서 사용이 되는 기술입니다....^^

장병남

2008.08.16 09:28:30
*.56.24.55

CE할때 FTL의 불확실성으로 인해 고민고민 하고 데이타라이트, 지인정보 등 파일시스템 유료로 구입할려고 수소문 했었는데, 가격이 터무니 없이 비싸서 도입하지 못했습니다... 그런데 이런 좋을것이 있었네요,, ^^ 공부 좀 해야 할듯 하네요,,

도찬구

2008.08.16 18:46:01
*.110.74.245

ubiFS는 MTD 쪽의 FS였군요. ㅠㅠ

열심히 조사해서 알게 된 것은.. 리눅스와 SSD조합은 극상.. 답은 이거더군요.

저널링 파일 시스템(EXT3, ResierFS, XFS등)을 이용하면 SSD사용에 별다른 무리가 없다는 것을 알게 되었습니다. 다만 XFS쪽에서 좀...

SSD자체가 IDE 혹은 SATA 인터페이스를 채용하고 있기 때문에 웨어레벨링 등이나 기타 접근에 대해서 직접 관장할 수가 없더군요.

인터페이스(레이어 개념이겠지만) 형태의 논리적인 계층이 존재하고 저널링이 되는 FS의 경우엔 SSD의 약점인 랜덤 억세스의 최악의 접근속도도 그리 문제가 안된다는 것을 알게 되었습니다.

그런데.. 왜 HDD벤치 프로그램은 직접 접근을 하는지... 어쩌면 윈도우용 파일시스템(NTFS)이 때문에 그러한 접근을 하는 건지도 모르겠네요.

일반적인 사용을 위해서 리눅스를 설치하는 것이 여러므로 안정적일 것 같다는 생각이 들었습니다. /var쪽의 갖가지 로그데이터에 대한 접근을 막을 수도 있고요.(윈도우는 거기다 NTFS는... 아무런 작업을 하지 않아도, 최대한 접근을 막아도 엄청난 억세스를 하는 것과 무척 대조적이더군요.)

한동안 뜸했던 자바쪽이나 모노프로젝트나 가지고 놀아야겠습니다.
List of Articles
번호 제목 글쓴이 날짜 조회 수sort
공지 교육 홍보 및 광고는 "교육 및 세미나 홍보" 게시판을 이용해 ... 관리자 2010-07-15 107998
» [개발] UBI/UbiFS/Ubiblk 을 MLC nand에 올렸습니다. [4] 고도리 2008-08-15 51604
1908 [Origen보드] 새로운 툴체인/RootFS/ramdisk 테스트 [1] 고도리 2011-11-17 50607
1907 ODROID-T를 받으면 해보고 싶은 것. [4] 도찬구 2010-04-25 34607
1906 [ODROID-S] 구동 동영상 및 부팅 로그 [17] 이제현 2010-06-11 28532
1905 단축url url단축 링크줄이기 주소줄이기 링크주소줄이기 짧은링크... 난세상 2021-03-13 19707
1904 [ArndaleBoard] Exynos5250 slackware for arm boot log 고도리 2012-11-02 19569
1903 Ubuntu 9.10 에서 Android 및 Odroid 개발 가능 [8] 이창훈 2009-11-29 18999
1902 kernel 2.6.29 android 부팅로그 (aesop-6410) [5] 김재훈 2009-04-21 18325
1901 ODROID Eclair 2.1 포팅 중간 결과~~ file [7] 이제현 2010-02-04 17485
1900 S5PC110 보드 구동 사진 file [51] 이제현 2010-03-23 17334
1899 AESOP-6410 - 리눅스 최종 배포본 사진 file [3] 김재훈 2009-03-20 16974
1898 갤럭시 S2 폰의 프레임버퍼를 삼성 MFC 코덱으로 처리한 결과... file 파란새 2011-11-25 16859
1897 [참고] aesop-6410 2.6.29-android kernel sound테스트까지 했습... [2] 고현철 2009-04-18 16848
1896 드디여 사이트가 오픈 했습니다...^^ 방창혁 2006-04-05 16683
1895 Samsung Application Processor S5PC110/S5PV210 [11] 고현철 2009-11-15 16550
1894 Android Gstreamer빌드중.. external/webkit/JavaScriptCore/run... [1] 2009-08-15 16410
1893 Cortex A8 보드 제작 [17] 이제현 2009-07-24 16005
1892 [정보] aesop-6410 kernel 2.6.28 기본 포팅 완료 [1] 고현철 2009-03-29 15875
1891 [개발] S3C6400용 커널 sound/fb까지 확인했습니다 [4] 고도리 2008-08-20 15654

사용자 로그인