라즈베리 파이. 저렴한 ARM 홈서버 사용 가능성. 그리고 OpenPC

Posted at 2012/11/29 14:07 // in Misc // by Daniel

http://ko.wikipedia.org/wiki/%EB%9D%BC%EC%A6%88%EB%B2%A0%EB%A6%AC_%ED%8C%8C%EC%9D%B4

라즈베리 파이(영어: Raspberry Pi)는 영국의 라즈베리 파이 재단이 학교에서 기초 컴퓨터 과학 교육을 증진시키기 위해 만든 싱글 보드 컴퓨터이다.[4][5][6][7][8] 라즈베리 파이는 그래픽 성능이 뛰어나면서도 저렴한 가격(세금을 포함하지 않은 모델 A의 경우 25달러, 모델 B의 경우 35달러)라는 특징을 갖고 있다.

저전력이겠고, (어댑터 효율이 중요하겠지만) ARM기반 배포판이 있는 것 같고 내 맘대로 쓸 수 있다는 장점. 컴파일도 돌려도 되고. SD 메모리를 저장소로 사용. 메모리도 싸니까 사용 무리 없을 것 같다.

대용량 파일 서버는 조금 무리겠지만 어플리케이션 서버로도 사용가능할 것 같음. 데몬도 좀 돌리고.

그런데 한국에서 사기엔 가격이 너무 비싸.. -.- 7만원에 샀다는 사람이 있다. http://xbmc-korea.com/xe/blog/84927 더 좋은 CPU 쓰는 공유기 가격이 만원대인데.. 이건 뭐..

원래 가격은 US$ 35 입니다만 제가 주문한 Element14에선 7만원을 받는군요.
☞ Raspberry Pi의 가격에 대해서는 http://www.raspberrypi.org/archives/826

http://www.icbanq.com/shop/default.asp?file=product_detail.asp&prod_code=P001935674 여기서는 5만원정도면 사겠다.

사양은 대충 이렇습니다. SoC: Broadcom BCM2835 (CPU+GPU+SDRAM) CPU: 700 MHz ARM11 ARM1176JZF-S core GPU: Broadcom VideoCore IV,OpenGL ES 2.0,OpenVG 1080p30 H.264 high-profile encode/decode SDRAM: 256MB USB Port: 2 Video Output: HDMI, Composite Audio: HDMI, 3mm analogue jack Onboard Storage: SD/MMC/SDIO card slot Network: 10/100 wired Ethernet Power: 700mA (3.5 watt) Power source: Micro USB (5V)

신용카드 크기 마이크로USB로 전원이 들어가고 HDMI 케이블. -> 모니터출력 가능. 오디오도 나가겠고 USB 호스트 기능 (키보드, 마우스..) 이더넷 되고.

http://xbmc-korea.com/xe/blog/84927 여기서 미디어기기로 활용등에 대해 보면 좋겠다.

그리고 OpenPC라는 한국 프로젝트가 있군. 상용. http://www.openpc.kr/ 그런데 가격이 19만원.. 좀 애매한 포지션.

이런 오픈소스 기업들의 영속성을 담보받기 위해서는 시장 개척이 중요한데, 1)국가적인 차원에서 '영세민 지원사업' '절전 프로젝트' 형태의 대규모 납품 등을 통한 범국가적인 메시지가 담기게 되거나 2)특화된 업무만 수행하는 공공기관이나 제한적 기능을 요구하는 일부 임베디드 보드 시장을 치고 들어가거나 하는 방법일 것이다.

http://itviewpoint.com/226205

크리에이티브 커먼즈 라이센스
Creative Commons License

arm linux 커널에 system call 추가

Posted at 2009/04/01 17:01 // in Programming // by Daniel

http://barriosstory.blogspot.com/2008/03/arm-linux-kernel-system-call.html

먼저 커널의 다음 3 파일을 수정하여 새로운 system call을 추가하자.
1. arch/arm/kernel/calls.S
2. include/asm-arm/unistd.h
3. 해당 system call을 구현 할 부분(따로 분리해서 구현해도 상관없고 기존의 아무 소스 파일에나 구현해도 상관없다. 단지 makefile만 잘 수정해준다면)

 

마지막으로 해당 system call을 사용하는 application을 작성하여야 한다.

 

http://www.4ellene.net/tt/1168

system call 추가 방법
1. vi /usr/src/linux/arch/i386/kernel/entry.S
: system call 번호를 추가
.long SYMBOL_NAME(sys_mysyscall)  // 240

2. vi /usr/src/linux/include/asm-i386/unistd.h
#define __NR_mysyscall      240

3. vi /usr/src/linux/kernel/test.c
#include <linux/kernel.h>

asmlinkage int sys_mysyscall()
{  
    printk("Hello linux\n");
    return 2007;
}

4. vi /usr/src/linux/kernel/Makefile
obj-y = sched.o dma.o fork.o exec_domain.o panic.o printk.o \
        module.o exit.o itimer.o info.o time.o softirq.o resource.o \
        sysctl.o acct.o capability.o ptrace.o timer.o user.o \
        signal.o sys.o kmod.o context.o test.o 

5. vi app.c

#include <asm-i386/unistd.h>
#include <errno.h>

_syscall0( int, mysyscall );

int main()
{
    int i;
    i = mysyscall();

    printf("%d\n", i );
    return 0;
}

6. cc -I/usr/src/linux/include app.c

7. 커널 컴파일

http://kldp.org/node/87344

시스템 콜을 추가하는 하고자 하는데 잘안되네요
시스템 콜 함수까지는 제대로 구현되는 거는 같은데
그것을 test하는 user application이 잘되지 않네요
_syscall2(int, pedagogictime, int, flag, struct timeval *, thetime);

이런식으로 해주고 user application을 작성해서 컴파일 해주면
'__NR_pedagogictime' undeclared라고 나오네요
분명히 include/asm/arch/unistd.h에서 추가해줬는데 말입니다.

그런데 여러 자료를 보니까 include/asm-arm/unistd.h를 변경해준다고 하고
그런데 거기에 include에 가보니까 asm~~이런 것들이 굉장히 많은데
이것들의 차이는 무언가요 제가 맞게 바꾼거는 맞나요??

 

혹시 arch디렉토리가 없지 않나요?
인텔칩을 사용한다면 include/asm-i386/unistd.h 파일을 수정해주세요.
저 파일에

#define __NR_eventfd            323
#define __NR_pedagogictime            324
#ifdef __KERNEL__

#define NR_syscalls 325

라고 굵은 글씨로 되어 있는 부분을 입력해주시면 됩니다.

asm-???? 들은 각 CPU별로 어셈블리어가 다르기 때문에 CPU별로 나뉘어 있는 것입니다.

크리에이티브 커먼즈 라이센스
Creative Commons License