일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 노키아
- 프라하
- GMF2011
- 5800
- Nell
- Paris
- Zaanse Schans
- free i-sms
- 파리
- BMW Museum
- 카를교
- 나리타 공항
- Interlaken
- london
- Narita
- i-sms
- 바티칸
- 루브르
- Amsterdam
- N5800
- BMW 박물관
- 어플
- 베르사유 궁전
- 융프라우
- 프랑스
- 익뮤
- 타워브릿지
- 통신이론
- Jekyll & Hyde
- 프라하성
- Today
- Total
기억
목요일 강의자료 본문
리눅스 커널 심층분석 - 에이콘출판사
코드로 ~~~하는 커널
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()시 소멸, 메모리에 생성 , 다수생성 가능.