본문 바로가기

Linux

linux kernel 에서 i2c slave address 등록 위치 커널 버전 : 2.6.24.* 드라이버 코드들을 보다보면 다음과 같이 probe 함수에서 i2c_client 정보를 받아와서 사용하는 경우가 있다. static struct i2c_driver P_i2c_driver = { .driver = { .name = "P_driver", }, .probe = P_probe, ... }; static int P_probe (struct i2c_client *client) { ... if( strcmp(client->name, PROX_DEVICE_NAME) != 0 ) ... else if( (ret = P_dev_init(client)) < 0 ) ... P_dev.client = client; } 이러한 경우에 어느 곳에서 이것을 등록시켜 주어야 할지 난감한 .. 더보기
Limo OS의 linux phone - I8320 오늘 보니 기사가 벌써 떳더라.. 요즘 이거 만드느냐 밤잠을 못자고 있다. ;; Samsung Delivers Linux Handset to Vodafone By Kim Tong-hyung Staff Reporter Samsung Electronics will supply Linux-powered mobile phones to Vodafone, the world's largest wireless carrier, company officials said Friday. The Vodafone 360 H1, a ``smart'' phone that enables Web browsing and multimedia features atop of voice, is the industry's first commerc.. 더보기
linux kernel 에서 file 유무 확인하기 여러 방법이 있겠지만, 다음 방법을 사용하였다. int check_exist_file(char* file_path) { int ret = 0; struct file *temp_file; temp_file = filp_open(file_path, O_RDONLY, 0); if (IS_ERR(temp_file)) ret = -1; else { filp_close(temp_file, NULL); ret = 0; } return ret; } 더보기
커널에서 파일 오퍼레이션 하기(File operation in Kernel) 원문 : http://blog.naver.com/netohk?Redirect=Log&logNo=80045492480 커널에서 파일 오퍼레이션 하기... (드라이버에서 펌웨어 로딩시 유용) #include #ifndef __KERNEL_SYSCALLS__ #define __KERNEL_SYSCALLS__ #endif #incude //#include function() { int fp; mm_segment_t fs; fs = get_fs(); set_fs(KERNEL_DS); open("file", O_RDONLY, 0); size = lseek(fd, 0, 2); //END lseek(fd, 0, 0); //START read(..); close(fp); set_fs(fs); } [출처] 커널에서 파일 .. 더보기
ARM side irq disable api linux../include/include/irqflags.h local_irq_disable() 더보기
Branch Prediction 비록 우리 과제에서는 disable 하기는 했지만, 이런기능도 있다는 것이 흥미롭다. 하지만, enable 했을경우 LCD에서 buffer under run 현상이 발견되어서 임베디드 과제에는 적용이 힘들지도 모르겠다.(혹은 ARM 계열에서만 발생하는 문제일 수 있다.) 원문 : http://minjang.egloos.com/503419 (2008년 6월 21일에 수정) 대부분의 고성능 CPU들은 거의 모두 Out-of-Order Execution이라고 불리는 비순차 실행을 지원하고 있다. Out-of-Order(OOO)의 목적은 하나의 스레드 내에서 최대의 병렬성을 찾는 것이다. 당연한 이야기겠지만 프로그램 코드는 프로그래머가 의도한 대로 위에서 아래로 순차적으로 실행된다. 중간에 if, for, 함수.. 더보기
SecureCRT 에서 menuconfig 보기 SecureCRT 에서 menuconfig 가 깨져서 나올때 아래와 같이 셋팅하면 깔끔하게 나온다. [Terminal ->Emulation] Terminal : Xterm ANSI Color : "check" 더보기
frame buffer 이야기(8)(9) 원문 : http://kelp.or.kr/korweblog/stories.php?story=02/12/08/8598141 http://kelp.or.kr/korweblog/stories.php?story=02/12/10/6611366 글쓴이 : holelee (2002년 12월 08일 오후 08:56) 읽은수: 10,893 [ 임베디드강좌/이규명 ] == 시작하기에 앞서 이 글에 있는 모든 내용은 글쓴이가 가지고 있는 ATI mach 64(2MB) 그래픽 카드가 달려있고 RedHat 8.0이 설치된 PC(또는 Permedia2(8MB) 그래픽 카드가 달려 있는 RedHat 7.3이 설치된 PC)에서 제대로 동작하지만 이 글에 있는 모든 내용이 정확하다고 말씀 드릴 수 없습니다. 이 글에 있는 내용을 따라.. 더보기
frame buffer 이야기(6) (7) 원문 : http://kelp.or.kr/korweblog/stories.php?story=02/11/12/3234889 http://kelp.or.kr/korweblog/stories.php?story=02/11/23/8053717 글쓴이 : holelee (2002년 11월 12일 오후 06:27) 읽은수: 8,786 [ 임베디드강좌/이규명 ] == 시작하기에 앞서 이 글에 있는 모든 내용은 글쓴이가 가지고 있는 ATI mach 64(2MB) 그래픽 카드가 달려있고 RedHat 8.0이 설치된 PC(또는 Permedia2(8MB) 그래픽 카드가 달려 있는 RedHat 7.3이 설치된 PC)에서 제대로 동작하지만 이 글에 있는 모든 내용이 정확하다고 말씀 드릴 수 없습니다. 이 글에 있는 내용을 따라 .. 더보기
frame buffer 이야기(4) (5) 원문 : http://kelp.or.kr/korweblog/stories.php?story=02/11/11/1742716 http://kelp.or.kr/korweblog/stories.php?story=02/11/12/3096836 글쓴이 : holelee (2002년 11월 11일 오후 10:35) 읽은수: 17,354 [ 임베디드강좌/이규명 ] == 시작하기에 앞서 이 글에 있는 모든 내용은 글쓴이가 가지고 있는 ATI mach 64(2MB) 그래픽 카드가 달려있고 RedHat 8.0이 설치된 PC(또는 Permedia2(8MB) 그래픽 카드가 달려 있는 RedHat 7.3이 설치된 PC)에서 제대로 동작하지만 이 글에 있는 모든 내용이 정확하다고 말씀 드릴 수 없습니다. 이 글에 있는 내용을 따라.. 더보기
frame buffer 이야기 (3) 원문 : http://kelp.or.kr/korweblog/stories.php?story=02/11/11/4997781 글쓴이 : holelee (2002년 11월 11일 오후 05:56) 읽은수: 11,169 [ 임베디드강좌/이규명 ] == 시작하기에 앞서 이 글에 있는 모든 내용은 글쓴이가 가지고 있는 ATI mach 64(2MB) 그래픽 카드가 달려있고 RedHat 8.0이 설치된 PC(또는 Permedia2(8MB) 그래픽 카드가 달려 있는 RedHat 7.3이 설치된 PC)에서 제대로 동작하지만 이 글에 있는 모든 내용이 정확하다고 말씀 드릴 수 없습니다. 이 글에 있는 내용을 따라 했을 때 혹 생길 지 모르는 모든 문제에 대해서 글쓴이는 책임을 지지 않습니다. 글의 내용 중에 잘못된 내용이 .. 더보기
frame buffer 이야기 (2) 원문 : http://kelp.or.kr/korweblog/stories.php?story=02/11/09/8670820 글쓴이 : holelee (2002년 11월 09일 오후 10:31) 읽은수: 13,703 [ 임베디드강좌/이규명 ] == 시작하기에 앞서 이 글에 있는 모든 내용은 글쓴이가 가지고 있는 ATI mach 64(2MB) 그래픽 카드가 달려있고 RedHat 8.0이 설치된 PC(또는 Permedia2(8MB) 그래픽 카드가 달려 있는 RedHat 7.3이 설치된 PC)에서 제대로 동작하지만 이 글에 있는 모든 내용이 정확하다고 말씀 드릴 수 없습니다. 이 글에 있는 내용을 따라 했을 때 혹 생길 지 모르는 모든 문제에 대해서 글쓴이는 책임을 지지 않습니다. 글의 내용 중에 잘못된 내용이 .. 더보기
frame buffer 이야기 (1) 요즘 touch device 에 이어서 display module인 v4l2와 frame buffer 등의 업무를 담당하고 있다. 공부를 해 나아가며 찾은 자료들을 이곳에 keeping 하려 한다. 좋은 자료를 만들어 주신분께 먼저 감사를 드린다. 원문 : http://kelp.or.kr/korweblog/stories.php?story=02/11/09/8557035 글쓴이 : holelee (2002년 11월 09일 오후 10:29) 읽은수: 22,783 [ 임베디드강좌/이규명 ] == 시작하기에 앞서 이 글에 있는 모든 내용은 글쓴이가 가지고 있는 ATI mach 64(2MB) 그래픽 카드가 달려있고 RedHat 8.0이 설치된 PC(또는 Permedia2(8MB) 그래픽 카드가 달려 있는 RedHa.. 더보기
udev debuging 방법 udev 에서 파일 호출하는 녀석이 갑자기 동작이 안되어서 재대로 호출되는지 알고 싶었다. 구글링중 다음과 같이 setting 하면 로그를 볼 수 있다고 한다. 하지만 사실 원인은 파일 호출 권한 문제 였다능.. # udevd --daemon --debug-trace --verbose &>udevd-debug.log # udevcontrol log_priority=debug # udevcontrol env STARTUP=1 # udevmonitor --env 더보기
Linux kernel compile 시 stdio.h / stdlib.h 애러 얼마전 커널에서 동작하는 간단한 프로그램을 만들었다. 컴파일 하는데..앵.. 왠걸.. 엄청난 애러가 났다. kernel/syscall_interpret/auditex_string.c:1:20: error: stdlib.h: No such file or directory 결론부터 말하면 kernel 에서는 stdlib 들을 사용할 수 없다. standard library 는 glibc 에 연동되어서 돌아가는데, kernel 에서는 이를 이용할 수 없기 때문이다. 따라서 kernel 쪽에서는 이를 대비한 간단한 lib들을 따로 재공 하고 있는데 그 위치는 컴파일 환경마다 다르겠지만 보통 다음과 같다. linux-버전명\lib 더보기
Linux Kernel 의 spin lock spin_lock 에 대해서 깔끔하게 정리해 놓았다. Lcd 에 control data 를 보내기 위해서 spin_lock_irqsave() 를 사용해 보았다. 보통은 저 함수가 인터럽트를 disable 해주기 때문에 인터럽트 핸들러에서 주로 사용된다고 한다. 그렇다면 disable 된 인터럽트들은 어떻게 되는 것일까? 누구 아는 사람?!! 원문 : http://blog.naver.com/ryswin?Redirect=Log&logNo=140043664262 * spin_lock_irqsave()와 spin_lock_irq() 둘다 interrupt를 disable 시킨 이후에 spin lock을 획득하는 것은 동일하지만, spin_lock_irqsave()는 CPU의 flag 레지스터를 보관했다가 spi.. 더보기
페도라 7 테마로 꾸미기 원문 : http://blog.naver.com/hwang_jt?Redirect=Log&logNo=130026193180 위젯의 설치는 리눅스 데스크탑을 보다 깔끔하고 아기자기하게 보이기 위해서 이다. 개인용 컴퓨터에서 GUI의 시작은 맥시스템에서 이다. 상황이 이렇다 보니 그래픽데스크탑에 있어 맥시스템의 그것은 누구나 한번쯤 흉내 내고 싶은 것들이다. fedora7에서는 gdesklets이라는 것을 설치하는 방법이 제일쉬운 선택이다. 타배포판의 경우는 screenlets http://screenlets.org을 사용하는 것으로 알고 있다. 좀 부족하지만 gdesklets을 설치하는 것은 싱거울 정도로 쉽다. 콘솔창에서 아래와 같이 실행해 준다. yum install gdesklets screenlets.. 더보기
kernel 에서 ntoa 사용하기 kernel 에 user 쪽에서 사용하던 코드를 포팅하다 난감한 상황이 발생했다. 바로 inet_ntoa 함수가 kernel 쪽에 없는것. 한시간 가량 구글링을 한끝에 해법을 찾았다. define 문은 kernel.h 파일에 있다. #ifndef __SAMSUNG_AUDIT_LOGGING_PARAM__ tprintf("inet_addr(\"%s\")", inet_ntoa(sinp->sin_addr)); #else tprintf("inet_addr(\"" NIPQUAD_FMT "\")", NIPQUAD(sinp->sin_addr)); #endif 더보기
[Linux][kernel] __user 키워드 kernel 코드를 보다보니 다음과 같이 생소한 키워드가 보였다. void __user *sival_ptr; 따라가 보니 다음과 같다.. 이것은 뭥미? ㅁ_ㅁ # define __user __attribute__((noderef, address_space(1))) 일단.. noderef 에 대해서 http://lkml.org/lkml/2004/9/12/230 의 글 타래를 읽어보니까, noderef는 no dereference라는 뜻이더군요. address_space에 대한 얘기는 없고... address_space는 뭐, 유저 스페이스 커널 스페이스등등 나눠놓고... 몇번째에 해당한다는 것 같은데요...(제 생각) 맞나요? 아시는 분? no dereference로 선언된 포인터 변수는 dereferen.. 더보기
nfs 로 fedora 설치할때 network 설정하기 fedora 7 DVD 를 꼬진 P30 노트북에서 인식하지 못한다. 결국 DVD reader 가 있는 다른 pc에서 mount 해서 nfs 서비스를 올렸다. 그후에 fedora 7 rescure cd 로 설치 매뉴에 들어가면 NFS 설치 메뉴가 있다. 여기서 NFS 서버를 잡아주면 자동으로 설치가 된다. 처음에는 아무리 셋팅을 바꾸어봐도 nfs 에 접속이 안되었다. 결국 다음과 같이 셋팅을 하여야 한다. IPv4 : 10.89.45.167 / 10.89.45 GW : 10.89.45.1 name server 10.32.192.11 결국 subnet mask 대신에 prefix 를 입력하는건데 ip주소와 동일하게 입력해서 계속 삽질을 했었던 것이다.;;; 더보기
Samba Server 셋팅하기 원문 : http://www.linux4u.co.kr/RedhatAS/s1-samba-configuring.html 1. Window 에서 접속할때 id 부분이 비활성화 되고 guest 로 고정되어 있어서 몇일을 삽질했다. 이것은 뒤에 나오겠지만 samba -> server settings -> sevurity 탭 -> authentication mode 를 use 로 해 놓아야 암호를 넣을 수 있다. 2. 그 이후에도 쓰기 권한을 주었는데도 불구하고 쓰기가 계속 안되었다. 이번 문제는 SELinux 설정이었다. 설치할때 분명 disable 로 해 놓고 설치해서 완전히 믿고 있었는데, 나중에 들어가 보니 그게 아니었다. > vi /etc/selinux/config 보면 SELINUX = disable 로.. 더보기
arm 에서 system call 을 호출할때 4개 이상의 파라미터를 어떻게 처리하는가? 다음과 같이 arm 컴파일러를 지정해 주면 arm 용으로 컴파일이 가능하다. /opt/toolchains/arm-linux-4.1.1/bin/arm-linux-gcc -o test test.c 이때 -S 옵션을 주면 어셈형태의 파일이 나와서 직접 asm 파일을 볼 수 있다. /opt/toolchains/arm-linux-4.1.1/bin/arm-linux-gcc -S test.c 다음과 같이 파라미터가 6개인 sendto system call 에 가상으로 파라미터들을 넣어서 추적해 보았다. #include #include #include int main() { int _s=0x11; void *_msg = (void*)0x22; size_t _len = 0x33; int _flags = 0x44; str.. 더보기
fallocate system call 원문 : http://lwn.net/Articles/239738/ fallocate 는 일련된 메모리 블럭을 예약할 수 있는 시스템 콜이다. 이 system call 은 파일시스템 단위에서 지원되어야 사용할 수 있으며 현재 Ext4와 XFS에서 지원하고 있다고 한다. 향후 다양한 플렛폼 및 파일시스템에 이식 되어 널리 사용될 것이라고 한다. 현재는 이러한 기능을 사용하기 위해서는 posix_fallocate 를 사용해야 하는데 이 syscall은 메모리 블럭을 잡은후 fregmantaion 을 막기위해 0으로 체워둔다고 한다. 이러한 낭비를 막기 위해서 fallocate syscall 에 대한 필요성이 대두되고 있다. root@onegun-ubuntu:~/2_hdisk/Project/Mobibench/s.. 더보기
swap - samba 서버 설정을 외부 window pc에서 하자. 원문 1 : http://unix.co.kr/bbs/board.php?bo_table=02_23&wr_id=21 원문 2 : http://www.opensourcehowto.org/how-to/samba/swat-samba-web-administration-tool.html 원문 3 : http://forum.falinux.com/zbxe/?mid=lecture_tip&page=3&document_srl=405974&listStyle=&cpage= 당장 회사에서는 port 가 방화벽으로 막혀있어서 쓰기 힘들겠지만, 사용할 수 있다면 무척 편리한 기능일 것이다. 아래는 퍼온글이니 보이지 않는 그림 링크는 직접 찾아가길 바란다. S.W.A.T stands for Samba Web Administration .. 더보기
wait 를 이용한 프로세스 종료 상태 원문 : http://database.sarang.net/study/glibc/23.htm 23. 6 프로세스 종료 이 절에서 설명하고 있는 함수들은 자식 프로세스가 종료하거나 멈추도록 기다리는데 사용되고, 그러한 상황인지의 여부를 알아보는데 사용된다. 그들 함수들은 헤더파일 `sys/wait. h'에 선언되어 있다. 함수 : pid_t waitpid (pid_t pid, int *status_ptr, int options) waitpid 함수는 프로세스 ID를 pid로 가진 자식 프로세스로 부터 상황 정보를 요청하는데 사용된다. 일반적으로, 호출된 프로세스는 자식 프로세스가 종료됨으로써 유용한 상황정보를 만들 때까지 잠시 중지되어 있다. pid 인수를 위한 다른 값들은 특별한 뜻을 갖는다. -1의 값이.. 더보기
wati(), wait4(), waitpid() 함수의 status 반환값 원문 : http://forum.falinux.com/zbxe/?mid=C_LIB&page=4&document_srl=408551 안그래도 strace 소스 분석하는데 status 에 따라 상당히 많은 분기문이 있어서 정확한 의미를 파악해야 했다. 이 문서가 상당히 많은 도움이 된다. wati()나 waitpid()에서 자식 프로세스의 종료 상태를 확인하기 위해서 인수로 전달했던 변수 status 값을 직접 확인해야 했습니다. 이값은 아래와 같이 값이 구성된다고 했지만 앞으로 시스템이 발전하면, 이와 같은 내용이 바뀌지 않는다는 보장이 없습니다. 즉, 8비트 2개에서 16비트 2개로 늘려질 수 있다는 것이죠. 8비트 8비트 정상 종료 프로세스 반환 값 0 비정상 종료 0 종료 시킨 시그널 번호 또한 직접.. 더보기
Playing with ptrace, Part I 원문 : http://www.linuxjournal.com/article/6100 ptrace 는 리눅스에 입문한 나에게 마법과 같은 기능이다. 물론 제약이 있겠지만, 언듯 보면 이것은 Linux의 process 보호의 컨샙을 넘나들며, 동작을 한다. 이 놀라운 기능을 조금씩 알아가는것은 나에게 커다란 즐거움이다. Using ptrace allows you to set up system call interception and modification at the user level. Have you ever wondered how system calls can be intercepted? Have you ever tried fooling the kernel by changing system call arg.. 더보기
Playing with ptrace, Part II 원문 : http://www.linuxjournal.com/node/6210/print In Part II of his series on ptrace, Pradeep tackles the more advanced topics of setting breakpoints and injecting code into running processes. In Part I of this article [LJ, November 2002], we saw how ptrace can be used to trace system calls and change system call arguments. In this article, we investigate advanced techniques like setting breakpoi.. 더보기
paper on debugging kernel oops or hang 출처 : http://mail.nl.linux.org/kernelnewbies/2003-08/msg00347.html To: "'kernelnewbies@nl.linux.org'" Subject: paper on debugging kernel oops or hang From: "HABBINGA,ERIK (HP-Loveland,ex1)" Date: Mon, 25 Aug 2003 14:30:10 -0700 List-archive: List-help: List-owner: List-post: List-software: Listar version 1.0.0 List-subscribe: List-unsubscribe: Original-Recipient: rfc822;kernelnewbies-archive@nl.l.. 더보기
diff 를 이용한 kernel patch 만들기 - 또다른 문서 원문 : http://wiki.kldp.org/wiki.php/SubmittingPatches How to Get Your Change Into the Linux Kernel or Care And Operation Of Your Linus Torvalds 리눅스 커널에 여러분의 패치(역자주:원본에는 change를 사용하였으나 문맥상 patch로 번역함)를 반영하는 법 혹은 여러분의 Linux Torvalds를 치료하고 수술하는 법 For a person or company who wishes to submit a change to the Linux kernel, the process can sometimes be daunting if you're not familiar with "the system." .. 더보기