기억

목요일 강의자료 본문

카테고리 없음

목요일 강의자료

Engrave 2013. 7. 18. 16:53

리눅스 커널 심층분석 - 에이콘출판사

코드로 ~~~하는 커널

http://www.iamroot.org/xe/Kernel_8_ARM/49640

리눅스 디바이스 드라이버 - Oreily,  한빛미디어

http://www.kandroid.org/board/board.php?board=linux&command=body&no=2

코드로 읽는 리눅스 디바이스 드라이버 - 에이콘 출판사

 

root=192.168.100.2:/tftpboot/rootfs 를 사용하면 nfs로 부팅할 수 있음.

 

p.133

NAND는 bad sector가 생길 수 있기때문에 각각의 파티션 사이에는 여유영역이 있음.

0xaa를 0x55로 바꾸기 위해서는 0xaa 지워서 0xff로 바꾸고 1111 1111을 0101 0101로 바꿔야 됨.

 

client에서

tftp 30100000 zImage

--> 0x1c9a60 size의 zImage --> 0x400의 배수로 해야되기 때문에 1cc000의 size

nandw t 30100000 80000 1cc000

--> 80000 (32번 block)

 

tftp 30100000 ramdisk.gz

-->size가 39068c

nandw t 30100000 280000 394000

 

---------------------------------

nandr t 30c00000 80000 1cc000  [=tftp 30c00000 zImage]

nandr t 30800000 280000 394000 [=tftp 30800000 ramdisk.gz]

go linux

nandr t 30c00000 80000 1cc000;nandr t 30800000 280000 394000; go linux

 

 

el2440-uboot1.1.1-v2.2/include/configs/el2440.h에서

#define CONFIG_BOOTCOMMAND "~~~~~~~~~~~요기에" 위에서쓴

[nandr t 30c00000 80000 1cc000;nandr t 30800000 280000 394000; go linux] 입력

 

 

 

Bootloader : Boot + Loader

1.Boot (=Bootstrap) -> 초기화 역할, assembly code(PIC)

1. H/W 초기화

a. Clock 설정(PLL)

b. memory controller setting (CS, Refresh clk setting --> DRAM active!)

 

2. S/W 초기화

a. Self Copy to RAM (.text, .data 재배치) : C code 실행을 위한 재배치.

b. .bss clear, .stack 설정

 

2. Loader -> 커널 이미지를 램으로 다운로드 하여 실행, 보통 C 코드로 작성한다.

 

 

==============================================

ulong    addr;

addr = 0x30c00000;

 

rc = ((ulog(*)(int, char *[]))addr) (--argc, &argv[1]);

 

ㅇㅇㅇㅇㅇㅇㅇㅇㅇ

 

 

 

void function (void);

main()

{

int a,b;

function();

((void (*)(int,int))function)a(a,b);

}

Linux의 Filesystem

<~/include/linux/fs.h>

1. struct inode : 디스크에 저장된 파일의 정보를 갖는다.

dev_t                i_rdev;[ 12bit(주번호) | 20bit(부번호) ]

 

<장치파일생성>

mknod /dev/led c 240 0

 

<드라이버 설치>

insmod el2440_led.ko ==> 커널에 240번으로 file_operations 를 등록

 

<응용 프로그램실행>

int fd = open("dev/led", O_RDWR);

read(fd,buf_in, MAX_BUFFER);

write(fd,buf_out,MAX_BUFFER);

close(fd);

 

2. struct file : open()시 생성, close()시 소멸, 메모리에 생성 , 다수생성 가능.

 

Comments