본문 바로가기

분류 전체보기

virtual file system diagram 안녕하세요. 오늘은 말도많고 복잡하기로도 유명한 linux 의 virtual file system 을 보겠습니다. virtual 은 각 file system layer 에의 상위에 위치하며 공통의 interface 를 user 단에 재공하여, user 단에서 사용하고 있는 file system 에 상관없이 구현을 하도록 돕는 역할을 하고 있습니다. =========================================================== ------------------------------- virtual file system ------------------------------- file system (UBI, ext4, nf.. 더보기
mknod 의 의미 원문 : http://blog.naver.com/venezia99?Redirect=Log&logNo=30010552572 이 명령어는 insmod에서 등록한 디바이스 드라이버는 커널에 등록하는 명령어입니다. 일단 응용 프로그램은 이러한 드라이버를 인식할 수 없습니다. 응용 프로그램은 파일이라는 개념으로 접근하기 때문에 응용 프로그램이 인식할 수 있는 장치 파일로 만들어 주어야 됩니다. 본 명령어가 장치 파일로 만들어 주는 명령어 입니다. 글쓴이 : 박철 (2003년 01월 12일 오후 02:49) 읽은수: 8,084 [ 임베디드강좌/박철 ] 지금까지 진행해온 과정은 insmod를 하였을 때 수행되는 과정까지를 정리하였다. 디바이스 드라이버는 결국 사용자에게는 파일로 인식되어야 한다. 이를 위한 전단계 과.. 더보기
The cost of inline functions The cost of inline functions [Posted April 28, 2004 by corbet] The kernel makes heavy use of inline functions. In many cases, inline expansion of functions is necessary; some of these functions employ various sorts of assembly language trickery that must be part of the calling function. In many other cases, though, inline functions are used as a way of improving performance. The thinking is that.. 더보기
Serial(uart) port 를 통한 consol 출력에 대해서.. linux 를 다루다 보면 의외로 간단한 부분이지만 linux 가 자체 지원해 주어서 잘 모르는 부분이 있습니다. 그중에 하나가 serial port 에 관련된 부분인데요. 내용을 간단하게 다뤄 봅시다. 우선 사용되는 node 는 다음 위치에 있습니다. /dev/ttySAC0 .. 1 .. 2 .. 3 어느 port 를 사용할 것인지는 kernel 에 boot param 으로 넘기게 되어 있지요. console=console=ttySAC2,115200n8 요렇게 셋팅해주면 kernel 에서 ttySAC2 node 를 mknod 해 주어서 자동으로 consol 에 물려줍니다. 실제로 다음과 같이 입력해 보면 동일한 메세지가 consol 에 출력되는것을 보실 수 있습니다. # echo "test messag.. 더보기
GPIO control 을 user 에 넘기는 세련된 방법 아주 특별한 경우에 있어서 gpio control 을 user application 에 넘기는 경우가 있습니다. 저는 sysfs 를 사용할까 했었는데 더 세련된 방법이 있더군요. gpio_request(gpio, "Test_Pin"); gpio_cfgpin(gpio, GPIO_OUTPUT); gpio_direction_output(gpio, 1); gpio_export(gpio, 1); 바로 gpio_export() 라는 함수입니다. 이 함수를 사용하면 /sys/class/gpio/ 위치에 해당 포트에 대한 pin node 가 생성되어서 user 단에서 r/w 가 가능해 집니다. 다만 유의할 점은 gpio_free() 함수를 호출하면 export 된 정보가 사라진 다는 점입니다. 따라서 gpio_free.. 더보기
5notes - 포천 아트밸리 러빙유 콘서트 얼마전 가을, five-notes 팀원들과 함께 "포천 아트밸리"에서 공연을 하였습니다. 같은 기가히츠 소속의 "프리허그"와 함께 돌아가면서 공연을 하였지요. 과거 폐광촌이었던 그곳에 여러 예술품들을 모아놓고 공원으로 조성을하여 작년에 오픈하였다고 합니다. 족히 2~300m 는 되어 보이는 절벽아래 + 호수위에 위치한 무대가 너무너무 멋졌는데요, 그 "절벽군"이 소리를 전부다 반사해 주시는 바람에 노래부르기에는 최악의 상황이었습니다. 더군다나 무대 왼쪽 모니터링 스피커는 고장~~ ㅡㅡ;;;; 갑자기 관리소장님(?) 포스의 분이 진행 맨트를 요구하시며, 포천 아트벨리의 자랑을 한껏 하라는 말씀에 맨트발 약한 제가 무척이나 고생했었습니다. 흘흘 ;;; (노래보다 맨트가 훨씬 더 어려워요 ㅡㅡa) 그래도 가을.. 더보기
linux file system 용어 - UBI 얼마전부터 UBI와 UBIFS 를 분석중에 있습니다. 주로 영문 Document 들을 번역하면서 분석중인데요. 제가 file system 을 체계적으로 공부한적도 없고 해서, 용어들이 매우 헷갈리는군요. 다른 입문자 분들을 위해 간단한 용어의 뜻을 정리해 봅니다. 혹시 잘못된 내용이 있으면 댓글 부탁드립니다. - Flash Tree : data 를 저장하는 tree 구조 - TNC : Tree Node Cache - GC : Garbage collection – 무효한 데이터들을 모아서 erase 함으로서 용량을 확보하는 것 - Wear leveling : flash 의 특성상 erase 반복 횟수가 있으므로 이를 flash memory 의 전 block 에 걸쳐 가급적 균등하게 하려는 알고리즘 - LV.. 더보기
또다른 programmer 계산기 - pCalc 안녕하세요. 오늘 또 좋은 프로그래머용 계산기를 발견하여 포스팅을 합니다. 그 이름하여.. 무려 pCalc (지난번 소개해 드린 계산기도 pcalc 였지요. ㅡㅡa programmr calc 라는 의미인데 무려 이 이름으로만 3개의 계산기가 있습니다. 공대생의 작명실력은 어느나라나 마찬가지 임을 깨닫고 왠지 씁쓸해 집니다.) 지난번에 포스팅한 pcacl 는 직관적인 인터페이스에 비해 한가지 치명적인 단점이 있었는데요. 바로 붙여넣기와 결과 복사하기가 안된다는 것이었습니다. 이번 버전은 직관적인 인터페이스와 더불어 위의 문제가 없는 버전입니다. 다음 사이트에서 다운로드 하실 수 있습니다. http://www.analogx.com/contents/download/programming.htm 다음같이 계산식을.. 더보기
boot param의 해석 - __early_param, __sertup mecro 분석 kernel 은 bootloader 부터 각 세부사항들을 parameter 로 전달 받게 됩니다. U-boot 를 쓰신다면 bootloader command mode 에서 printenv 로 출력해 볼 수 있지요. 보통 다음과 같은 형태 입니다. # printenv bootcmd=if mmc rescan 1; then if run loaduimage; then run sdboot; else run ubifsboot; fi; else run ubifsboot; fi bootdelay=0 baudrate=115200 ethaddr=8e:28:0f:fa:3c:39 ipaddr=192.168.129.3 serverip=192.168.129.1 gatewayip=192.168.129.1 netmask=255.25.. 더보기
memory mapping 전에 serial print 사용하기 기본적으로 printk 는 buffer 를 사용하기 때문에 memory mapping 이 되기 전에는 puts 정도밖에 사용할 수 없습니다. 따라서 debugging 을 할때 변수값등을 볼 수 없어서 어려움이 있는데요. 2.6.33 kernel 이후 부터는 다음 함수를 사용하면 됩니다. asmlinkage void early_printk(const char *fmt, ...); 더보기
5-notes 2010년 가을정모 5-notes 가을 정모를 무사히 끝냈습니다. 아래는 Misty 리어설 영상~ ^^ 참고로 저음에 들리는 잡음(?)은 부부잴라 성대묘사..ㅎㅎ 더보기
text 기반의 계산기 pcalc text 기반의 계산기 pcalc 입니다. 처음에는 아무것도 없이 text 만 떠서 이건 뭥니 하고 몇개를 쳐봤는데.. 와아~ 생각보다 무지 편함니다. 굳이 버튼을 누를 필요없이 휙휙 계산값이 나오니까 좋군요. 더군다나 프로그래머들에게 꼭 필요한 연산들을 그냥 사용할 수 있습니다. 예 : hex(10) 16 5 >> 1 2 다만 사용법이 자세히 나오지 않은게 아쉽네요. 하지만 직관적이기 때문에 큰 문제는 없을듯 합니다. linux : http://kldp.org/node/91733 window : http://file.naver.com/pc/view.html?fnum=239976&cat=30 숫자 뒤에 '.' 을 찍으면 소수자리까지 계산해 줍니다. 1/2(엔터) 0 1/2.(엔터.. 더보기
kernel 초기화시 지켜야 할 Ram memory size align 단위 kernel 2.6.32 kernel 초기화시 각 영역별로 ram memory 를 잡게 됩니다. 이러한 메모리들은 bank 에 저장되어서 start_kernel 에서 bootmem_init 을 호출하여 초기화 하게 되지요. 조금 더 정확하게 적자면 다음과 같이 boot param 을 bootloader에서 kernel로 전달되게 되면 "meminfo=mem=80M mem=253M@0x40000000 mem=128M@0x50000000" parse_cmdline 에서 early_mem 함수를 호출하여서 해당 구문을 해석하고 arm_add_memory 를 호출합니다. arm_add_memory 는 bank 구조체에 해당 정보를 채우게 되지요. meminfo = ( nr_banks = 0x3, bank = (.. 더보기
배열 초기화 선언 int aaaa[10] = {2,}; 로 선언하면 어떻게 저장될까요? ... 정답은 {2, 0, 0, 0, 0, 0, 0, 0, 0, 0} 나는 2로 다 채워주는 줄 알았을 뿐이고..;;; 더보기
2010년 가을 GigaHits 정기모임 - 10/23 종로3가 둘룰로스 홀 2010 년 후반기 국내최대 아카펠라 동호회인 GigaHits의 정기모임 공연이 그디어 이번주입니다. 얼마전에 연습 동영상을 올렸었던 5-Notes 도 이번 공연에 참가합니다. 많은 기대와 응원 부탁드려요~!! ^^ 이번주 토요일은 기가히츠 정기모임입니다. 매주 토요일은 손꼽아 기다리시는 분들~ 아직 오프라인 모임이 처음이신 분들! 그리고 오래 안나오셨던 올드 멤버분들도 즐거운 마음으로 이번주는 방배동이 아닌 종로3가로 오세요!! ^^ 정모 공연도 보고 그 이후 밤새도록 계속되는 뒤풀이도 함께 해요! 노래가 듣고 싶고 하고 싶어서 몸이 근질근질하지 않으신지요~ 10월 말 따뜻한 정모가 여러분을 기다리고 있습니다. 토요일에 뵈요!!!!!!!! 기가히츠 가을 정기모임 장소: 종로 둘로스홀 일시: 2010년 .. 더보기
shift 연산자(>>)를 이용한 곱셈과 나눗셈 linux kernel code 를 분석하다 보면 가끔 복잡한 shift 연산자 들이 나옵니다. shift 연산자들은 연산의 속도가 빨라서 고수 개발자들에게 사랑받곤 하지만 분석하는 입장에서는 그 의미가 모호해서 답답할 때가 많습니다. 그중 자주 사용되는 shift 연산자를 이용한 나눗셈을 알아 봅시다. totalpages = mtd->size >> mtd->writesize_shift; 이 구문의 이미는 무었일까요? 보통 mtd 는 수많은 page 들로 이루어져 있습니다. page 는 write단위이기도 해서 writesize 와 동일합니다. writesize = 4096 = (2진수)1000000000000 이렇게 됩니다. shift 연산자는 1 을 얼마나 밀었냐 인데요. 위에서 0 의 갯수를 세면 .. 더보기
window 의 계산기 기능설명 계산기는 시중에서 사용되는 일반 계산기의 모든 기능뿐만 아니라 공학용 계산기의 기능도 제공하는 훌륭한 보조 프로그램이다. 이제, 컴퓨터를 이용하면서 별도의 계산기를 준비할 필요가 없게 된 것이다. 계산기는 [시작 - 프로그램 - 보조프로그램 - 계산기]를 선택해서 실행할 수 있다. 계산을 하는 방법은 일반 계산기와 동일하다. 키보드를 이용할 수도 있고, 마우스를 사용해도 된다. 마우스를 사용하는 것은 너무 번거롭게 느껴질 것이다. 키보드의 오른쪽 끝에 붙어있는 숫자 키패드를 이용하는 것이 가장 좋은 방법으로 생각된다. 숫자 키패드를 이용해서 숫자를 입력하기 위해서는 숫자 키패드의 제일 위에 있는 [Num Lock] 키를 눌러서 이 부분에 표시등이 켜져 있어야 한다. 1. 일반 계산기 단순 계산을 하는 방.. 더보기
register_mtd_user() - partition에 융통성 있는 driver 구현하기 안녕하세요. linux device 를 작성하면서 간혹 특정 mtd partition 에 의존하는 코드를 구현할 필요가 있습니다. 이때 해당 partition num 를 hard coding 한다면, partition table 이 변경될때마다 쫒아다니면서 일일이 수정해야 겠지요. 하지만 지금 소개시켜 드리는 함수를 잘 이용하시면, 시스템 초기화시는 물론 시스템 운용중에 변경되는 partition 에 대해서도 유동적으로 대처할 수 있는 융통성 있는 device 를 구현할 수 있습니다. 일단 man page 정보를 먼저 봅시다. NAMEregister_mtd_user - register a 'user' of MTD devices. SYNOPSIS"SYNOPSIS" void register_mtd_user .. 더보기
kernel 에서 user process 실행하기 call_usermodehelper 라는 함수를 사용하면 됩니다. envp 의 0에 실행파일의 path 가 들어가는것을 눈여겨 보시기 바랍니다. #define NAND_DUMP_MAKE_FILE_APPL_PATH "/bin/nand_log_dump_file" #define DEFAULT_LOG_FILE_SAVE_PATH "--to=/mnt/ums/.tmp/debug/" char *argv[] = {NAND_DUMP_MAKE_FILE_APPL_PATH, DEFAULT_LOG_FILE_SAVE_PATH, NULL}; char *envp[] = { "HOME=/", "TERM=linux", "PATH=/usr/bin:/bin", NULL }; rst = call_usermodehelper(argv[0], ar.. 더보기
서울 국제 아카펠라 페스티발 (10/30 ~ 11/8) 오는 10월 30일부터 11월 8일까지 우리나라에서 세계 여러 아카펠라 팀들이 참가하는 '서울 국제 아카펠라 페스티발'이 열립니다. 참고로 저도 스텝으로 참여하고 있습니다.^^ 그동안 작년부터 이 페스티발을 열기 위해서 여러분들이 모여서 많은 노력을 해 왔는데요,우리나라에서 처음 열리는 아카펠라인들의 잔치에 저희 기가식구들도 모두 동참했으면 하는 바람입니다^^ 일단 첫번째로 초청한 외국팀을 먼저 소개 시켜드리겠습니다. 1.Idea of north (호주) 모르시는분은 없겠죠? 그래도 혹시나 모르는분이 계실까봐 조금 설명을 붙인다면^^ 호주 출신의 세계적인 아카펠라 그룹으로 멤버는 - 트리쉬 들라니-브라운 (소프라노) Canberra School of Music에서 재즈전공. 성악 및 재즈 보컬 훈련을 받.. 더보기
c 와 c++ 의 const 내용정리 학생때 쓴 강좌인데 필요로 하시는 분들이 계시내요. 참고 하세요. 아래 static부분이 어서 const 정리 내용입니다. 순서는 다음과 같습니다. 1. const 2. 배열과 const 3. const와 Intenal Linkage 4. 포인터의 const 5. const 함수 6. const 멤버변수 7. const 멤버함수 8. 함수의 파라미터를 (const &)로 쓰자! 빼먹은 부분없이 정리해 볼려고 했는데.. 잘 되었는지는 모르겠내요. 읽어보시고 틀린곳이나 추가할 부분은 지적해 주세요. 많은 도움되길 바랍니다. ^^ =============================================================================== 과거에 상수를 정의할때는 메크로를 썻다.. 더보기
c 와 c++ 의 static 내용정리 학생때 적어놓았던 강좌인데 필요로 하시는 분들이 계시내요. 참고하세요. static와 const를 생각나는데로 죽~ 정리해 봤습니다. static부분 순서는 다음과 같습니다. 1. static 지역변수 - 1 2. static 지역변수 - 2 : 배열/포인터를 리턴하는 함수 3. static 전역변수 4. static 함수 5. static 멤버변수 6. static 멤버함수 빼먹은것 없이 정리할려고 했는데, 잘 되었는지 모르겠군요. 혹시 보시고 틀리거나 잘못된 사항 있으면 지적해 주시구요.. 많은 도움 되었으면 합니다.^^ ================================================================ #include using namespace std; void f.. 더보기
남여가 서로에게 하기 쉬운 실수들 Best3 남자들이 여자를 화나게 하는 실수들 Best 3 무심코 한 행동이나 말이 상대방을 화나게 하는 경우가 있습니다. 때로는 나름 신경써서 말을 했는데 상대방이 심하게 불쾌한 표정을 지을 때가 있습니다. 이럴 때 왜 이런 일이 벌어지는지 알지 못하면 서로 기분이 상하게 되고 싸움으로 번질 수도 있습니다. 다음은 남자들이 여자를 화나게 하는 대표적인 실수들입니다. 왜 화를 돋우는지 알고 나면 다음 부터는 점수를 대폭 깎이고 마는 실수를 줄일 수 있게 될 것입니다. 1. TV를 보거나 다른 일을 하면서 이야기를 듣는다. - 아무리 재미있는 프로그램을 보거나 중요한 일을 하고 있었다 하더라도 여자가 이야기를 청할 때 승락을 했다면 TV를 끄고, 하던 일을 완전히 멈춰야 한다. 승낙을 하고 이야기가 시작되었는데도 T.. 더보기
2010년 10월 01일 부터 자동차 범칙금 상승 ※ 자동차 범칙금 및 벌점 정보 ※ -. 10월01일부터 전지역 고속도로 하이패스 구간 속도 단속한다고 하오니 30Km이상 구간 통과하시지 마세요. 벌금 부과됩니다. -. 어린이 보호구역 통과시 주의하시길 바랍니다. 범칙금 및 벌점 100%로 오릅니다. 2011년 국가 예산이 사상 처음으로 300조원을 돌파했는데 부족한 예산을 어디서 충당할까요? 무조건 규정속도 지키며 안전운전하세요. 위반행위 적용법조 (도로교통법) 과태료 범칙금 및 벌점 범칙금 벌점 통행금지ㆍ제한위반 제6조제1ㆍ2ㆍ4항 없음 4만원 → 8만원 없음 주ㆍ정차 위반 제32ㆍ33ㆍ34조 4만원 → 8만원 4만원 → 8만원 없음 제한속도 (30km/h) 위반 40km/h 초과 제17조제3항 10만원 → 20만원 9만원 → 18만원 30점 → .. 더보기
make menuconfig 화면에서 앞에 문자 삭제 키 make menuconfig 화면에서 간혹 문자를 입력하는 경우가 있습니다. 이때 back space 를 누르면 엉뚱한 동작을 하게 되는데요. 이 화면에서 앞 글자를 삭제하려면 Ctrl + Back Space 를 누르면 됩니다. 더보기
nand flash - ftl(last, ECC, FSOC) 출처 : http://kin.naver.com/open100/detail.nhn?d1id=1&dirId=10103&docId=422528&qb=ZWNjIGJsb2Nr&enc=utf8§ion=kin&rank=1&search_sort=0&spq=0&pid=g6aYQloi5T8ssbtsL8ssss--165317&sid=TKFWy7cioUwAAHDlbYM http://blog.naver.com/gosuyk?Redirect=Log&logNo=50186594 NAND를 많이 써본 경험에 의해 몇가지를 정리해봅니다. 1. NAND의 Write 특성 NAND는 Erase를 하면 모든 데이터가 0xFF로 바뀌게 됩니다. 이를 NAND로직을 통해 비트가 1인 녀석들을 0으로 바꾸게 되는 것이죠. 따라서 비트가 0인.. 더보기
눈으로 보는 ARM - ASM 해석 저 처럼 User Application 을 시작으로 프로그래밍에 접근한 사람들에게는 ASM 은 꽤 귀찮은 언어입니다. 자주 쓰진 않지만, Powerful한 Low Level Debugging 을 위해서는 꼭 알아야 하는것 중에 하나지요. 물론, Document가 잘 되어 있기는 하지만, 봐도 헷갈리는 상황이 많습니다. 따라서 동작하는 모습들을 Trace32 장비를 이용해서 직접 capture 해서 정리해 보았습니다. 자주 사용하는 asm 위주로 준비하였고, 차후에 좀 더 데이터를 모으는데로 업데이트 하도록 하겠습니다. add r11, r13, #0x1c 더보기
Misty - Jazz Music 요즘 연습하고 있는 Misty 라는 곡입니다. 사랑에 흠뻑빠진 자신의 모습을 노래한 곡인데요.. 부르면 부를수록 참 어려운 곡이라는 생각이 듭니다. 하지만 그만큼 보람도 있구요. 10/23일 공연때까지 멋지게 완성하고 싶네요. 여러 싱어들이 부른 misty 를 모아봤습니다. ^^ 당신을 어떤 버전이 가장 마음에 드는지요? Look at me, I'm as helpless as a kitten up a tree and I feel like I'm clinging to a cloud I can't undestand I get misty just holding your hand Walk my way and a thousand violins begin to play or it might be the sound .. 더보기
git 에서 수정사항에 대한 patch file 만들기 git 에서 아래와 같은 수정사항이 있을때 system.h universal.h 의 수정사항만을 patch 파일로 만든다고 한다면, linux-2.6.32]$ git status # On branch master # Changed but not updated: # (use "git add ..." to update what will be committed) # (use "git checkout -- ..." to discard changes in working directory) # # modified: C110_Attach.cmm # modified: arch/arm/kernel/traps.c # modified: arch/arm/mach-s5pv210/include/mach/system.h # mod.. 더보기
MTD 이해하기 원문 : http://dooeui.blogspot.com/2009/01/mtd.html MTD는 memory technology device의 약자로, char. device, block device와 같은 별도의 디바이스그룹이라고 간주하는것이 맞을 것 같다. 전통적으로 OS에서 장치를 char. device 와 block device 로 나누어왔기 때문에 flash memory용 디바이스 드라이버를 둘 중 어떤 것으로 분류 시켜야 하는지 고민이 생기게 된다, MTD는 분명 hdd를 대체하는 장치로 사용되고 있지만, 그 동작 특성이 block device와는 현저히 다르기 때문에 굳이 이를 block device 로 부르는 것은 옳지 않으므로 그냥 MTD 라고 부르는 것이 맞을 것 같다. MTD가 선보이.. 더보기