1. u-boot Base Code 준비하기.
1) u-boot 다운로드 : http://lifeseed.tistory.com/1 를 참조
2) 사용버전 Tag : v2009.06-rc1
다운 받은 코드 해당 Tag로 변환하기 : git checkout -b mybranch v2009.06-rc1
2. 개발보드용 BSP 파일 추가
- 편의상 개발보드 이름을 smdk2440으로 하였다. 물론 메리테크에서 판매하는 개발보드가 아니다.
1) board 파일 생성
- board 관련 파일 추가
: 가장 유사한 board 폴더를 카피하여 이름을 smdk2440으로 변경하자. board/samsung/smdk2410 을 이용하였다.
- cpu header file 추가 및 SPEC 수정
: include 폴더에 s3c24x0.h 파일에 2440 관련 레지스터 정보를 추가한 후, incloude 폴더에 s3c2440.h 가 없다면, s3c2410.h를 카피한 후 SPEC 변경사항을 적용한다.
- board 관련 config header를 추가하자.
: 역시나 include/configs/smdk2410_config.h를 카피한 후 이름을 변경하였다.
- Makefile에 보드 컴파일 관련 config 추가
: smdk2410_config 를 참조하여 smdk2440_config를 추가한다. 보드 명칭만 smdk2410에서 smdk2440으로 변경하면 된다.
2) board config header 를 개발보드의 정보에 변경
- CONFIG_XXXX define 명 및 기타 2410관련 사항을 2440으로 변경
- UART Setting관련 정보 수정 : default로 Hardware 흐름제어로 되어있다. 흐름제어 없음으로 변경하기 위해여 "#undef CONFIG_HWFLOW" 를 선언
- Flash 관련 정보 변경 : Flash 종류, Sector 개수, Phygical Address & Size, ENV Address 등
3) cpu start up code 및 pll 수정
- cpu/arm920t/start.S 및 cpu/arm920t/s3c24x0/* 파일 수정.
cf) CONFIG_S3C2440 define을 이용하여 코드 적용
- board\samsung\smdk2440 에 있는 파일들 수정
cf) flash.c 는 지금 당장 수정 할 필요가 없다. 3. 에서 수정하자.
4) CONFIG_S3C2410 및 CONFIG_SMDK2410 관련 코드를 참조하여 2440 관련 코드 추가
- 소스코드에서 2410관련 define을 context search를 이용하여 검색한 후 해당 파일들에 대하여 2440관련 define 추가
- 3)에서 추가한 사항을 제외한 나머지 코드들에 대하여 CONFIG_S3C2440 및 CONFIG_SMDK2440 define을 추가한다.
Serial Terminal에서 프롬프트를 볼 수 있다. 그러나 env 관련 파일을 저장및 읽기가 불가능하다.
왜?? 당근 flash driver가 틀려서 그렇지. 그럼 다음 작업은 flash driver 작업이다.
3. flash driver (NOR) 구현
- board/samsung/smdk2440 폴더에 있는 flash.c 파일을 해당 flash에 맞도록 수정하자.
: INTE: 28F128J3을 사용한다.
- erase, write 만 구현 하면 된다. read야 어차피 direct access니 그냥 읽으면 되고, 추가적으로 chip id 확인 루틴을 추가하자.
env read/write 및 flash erase, write가 가능하다. (write 테스트는 아직... ㅡ,.ㅡ)
다음 작업은 Ethernet 을 살려서 tftp로 바이너리를 전송하는 기능을 추가한다.
- 2009-05-19
4. ethernet 설정 하여 tftp로 코드 다운 받기
- CS8900이 사용되며, BANK 1에 연결되어 있다. 관련 설정만 하면 OK
1) lowlevel_init.S BANK 설정 변경
- #define B1_BWSCON (DW16+WAIT) 인지 확인
- BANK1CON 설정 변경
#define B1_Tacs 0x0
#define B1_Tcos 0x3
#define B1_Tacc 0x7
#define B1_Tcoh 0x0 -> 0x1
#define B1_Tah 0x0 -> 0x3
#define B1_Tacp 0x0 -> 0x3
#define B1_PMC 0x0
2) smdk2440.c 의 board_init에서 EINT 및 GPIO 관련 I/O port 설정 확인
3) smdk2440.h 에서 CS8900 base address 변경
#define CS8900_BASE 0x08000300 // NOR Boot 의 경우 BANK1 Address : 0x80000000, CS8900 BASE Address Offset : 0x300
이상의 동작으로 TFTP를 이용한 바이너리 전송이 가능하다.
- 2005.05.20
CF) 우분투에서 TFTP 서버 설정 하는 방법
1) TFTP 서버 설치
- sudo apt-get install xinetd tftp tftpd
2) 설치완료후 /etc/xinetd.d/tftp 파일 작성
3) 파일 저장후 xinetd 서버 다시 시작
- sudo /etc/init.d/xinetd restart
1) u-boot 다운로드 : http://lifeseed.tistory.com/1 를 참조
2) 사용버전 Tag : v2009.06-rc1
다운 받은 코드 해당 Tag로 변환하기 : git checkout -b mybranch v2009.06-rc1
2. 개발보드용 BSP 파일 추가
- 편의상 개발보드 이름을 smdk2440으로 하였다. 물론 메리테크에서 판매하는 개발보드가 아니다.
1) board 파일 생성
- board 관련 파일 추가
: 가장 유사한 board 폴더를 카피하여 이름을 smdk2440으로 변경하자. board/samsung/smdk2410 을 이용하였다.
- cpu header file 추가 및 SPEC 수정
: include 폴더에 s3c24x0.h 파일에 2440 관련 레지스터 정보를 추가한 후, incloude 폴더에 s3c2440.h 가 없다면, s3c2410.h를 카피한 후 SPEC 변경사항을 적용한다.
- board 관련 config header를 추가하자.
: 역시나 include/configs/smdk2410_config.h를 카피한 후 이름을 변경하였다.
- Makefile에 보드 컴파일 관련 config 추가
: smdk2410_config 를 참조하여 smdk2440_config를 추가한다. 보드 명칭만 smdk2410에서 smdk2440으로 변경하면 된다.
2) board config header 를 개발보드의 정보에 변경
- CONFIG_XXXX define 명 및 기타 2410관련 사항을 2440으로 변경
- UART Setting관련 정보 수정 : default로 Hardware 흐름제어로 되어있다. 흐름제어 없음으로 변경하기 위해여 "#undef CONFIG_HWFLOW" 를 선언
- Flash 관련 정보 변경 : Flash 종류, Sector 개수, Phygical Address & Size, ENV Address 등
3) cpu start up code 및 pll 수정
- cpu/arm920t/start.S 및 cpu/arm920t/s3c24x0/* 파일 수정.
cf) CONFIG_S3C2440 define을 이용하여 코드 적용
- board\samsung\smdk2440 에 있는 파일들 수정
cf) flash.c 는 지금 당장 수정 할 필요가 없다. 3. 에서 수정하자.
4) CONFIG_S3C2410 및 CONFIG_SMDK2410 관련 코드를 참조하여 2440 관련 코드 추가
- 소스코드에서 2410관련 define을 context search를 이용하여 검색한 후 해당 파일들에 대하여 2440관련 define 추가
- 3)에서 추가한 사항을 제외한 나머지 코드들에 대하여 CONFIG_S3C2440 및 CONFIG_SMDK2440 define을 추가한다.
Serial Terminal에서 프롬프트를 볼 수 있다. 그러나 env 관련 파일을 저장및 읽기가 불가능하다.
왜?? 당근 flash driver가 틀려서 그렇지. 그럼 다음 작업은 flash driver 작업이다.
3. flash driver (NOR) 구현
- board/samsung/smdk2440 폴더에 있는 flash.c 파일을 해당 flash에 맞도록 수정하자.
: INTE: 28F128J3을 사용한다.
- erase, write 만 구현 하면 된다. read야 어차피 direct access니 그냥 읽으면 되고, 추가적으로 chip id 확인 루틴을 추가하자.
env read/write 및 flash erase, write가 가능하다. (write 테스트는 아직... ㅡ,.ㅡ)
다음 작업은 Ethernet 을 살려서 tftp로 바이너리를 전송하는 기능을 추가한다.
- 2009-05-19
>> 지금 까지 작업 Patch하기..
1) 첨부파일을 u-boot 폴더가 있는 곳에 저장한다.
2) u-boot 폴더로 들어간 후 "patch -p1 < ../diff1.patch" 명령을 실행.
1) 첨부파일을 u-boot 폴더가 있는 곳에 저장한다.
2) u-boot 폴더로 들어간 후 "patch -p1 < ../diff1.patch" 명령을 실행.
4. ethernet 설정 하여 tftp로 코드 다운 받기
- CS8900이 사용되며, BANK 1에 연결되어 있다. 관련 설정만 하면 OK
1) lowlevel_init.S BANK 설정 변경
- #define B1_BWSCON (DW16+WAIT) 인지 확인
- BANK1CON 설정 변경
#define B1_Tacs 0x0
#define B1_Tcos 0x3
#define B1_Tacc 0x7
#define B1_Tcoh 0x0 -> 0x1
#define B1_Tah 0x0 -> 0x3
#define B1_Tacp 0x0 -> 0x3
#define B1_PMC 0x0
2) smdk2440.c 의 board_init에서 EINT 및 GPIO 관련 I/O port 설정 확인
3) smdk2440.h 에서 CS8900 base address 변경
#define CS8900_BASE 0x08000300 // NOR Boot 의 경우 BANK1 Address : 0x80000000, CS8900 BASE Address Offset : 0x300
이상의 동작으로 TFTP를 이용한 바이너리 전송이 가능하다.
- 2005.05.20
>> 지금 까지 작업 Patch하기..
1) 첨부파일을 u-boot 폴더가 있는 곳에 저장한다.
2) u-boot 폴더로 들어간 후 "patch -p1 < ../diff2.patch" 명령을 실행.
3) 반듯이 순서대로 patch하여야 한다.
1) 첨부파일을 u-boot 폴더가 있는 곳에 저장한다.
2) u-boot 폴더로 들어간 후 "patch -p1 < ../diff2.patch" 명령을 실행.
3) 반듯이 순서대로 patch하여야 한다.
CF) 우분투에서 TFTP 서버 설정 하는 방법
1) TFTP 서버 설치
- sudo apt-get install xinetd tftp tftpd
2) 설치완료후 /etc/xinetd.d/tftp 파일 작성
service tftp
{
disable=no
user = root
soket_type = dgram
protocol = udp
wait = yes
server = /usr/sbin/in.tftpd
server_args = -s /tftpboot
per_source = 11
cps = 100 2
flags = IPv4
}
{
disable=no
user = root
soket_type = dgram
protocol = udp
wait = yes
server = /usr/sbin/in.tftpd
server_args = -s /tftpboot
per_source = 11
cps = 100 2
flags = IPv4
}
3) 파일 저장후 xinetd 서버 다시 시작
- sudo /etc/init.d/xinetd restart