uboot에 관해서

kyi111의 이미지

안녕하세요? uboot에 관하여 궁금한점을 여쭤봅니다. 삼성보드 SMDK2440을 참조로 해서 보드를 만들고 있는데요. 지금까지는 uboot.bin 파일을 SMC카드에다가 복사해놓고 SMC카드로부터 uboot로 부팅을 해서 커널이미지와 루트파일시스템이미지를 각각 tftp를 이용해서 메모리에 복사한후 uboot에서 제공되어지는 nandE, nandW 이런커맨드를 이용해서 저장을 했는데요. 저는 SMC카드가 없고 대신에 인텔 28F128J 플래쉬롬을 CS0에 붙여서 여기다가 uboot.bin을 우선 라이팅해서(롬라이터로 무식하게 일단은) 여기로 우선 부팅을 하고자합니다. 컴파일되서 만들어진 uboot.bin을 그대로 인텔플래쉬로 구어도 부팅을 될까요? 꼭좀 답변부탁드려요. 수정을 해야한다면 어느부분이 되어야할지? 그리고 만약 부팅이 되었다고 가정하구요. 또 궁금한건 uboot커맨드에서 tftp로 메모리에 커널이미지를 로딩하고 파일시스템이미지를 로딩하고 만약 인텔플래쉬롬에 라이트하게끔 uboot를 수정했다고 가정하면 커널이나 파일시스템이미지를 실제 어느주소에 저장을 해야되는지 알려주세요? 이와 관련해서 uboot가 부팅되면서 키입력이 없으면 리눅스로 점프하잖아요? 바로 점프되는 주소가 리눅스이미지가 저장되어야할곳인가요? 그렇다면 uboot소스중에 어디를 보면 알수 있나요? 루트파일시스템이 저장되는 주소는 또 어딘지? 꼭 답변좀 부탁드려요....

kgykingdom의 이미지

잘 알지는 못하지만 아는 한도내에서 말씀을 드리자면..

uboot 이미지를 플래시에 직접 구워서도 부팅됩니다...

저 같은 경우는 전에 지니라는 에뮬레이터로 플래시 썼는데..

회사에서는 플래시를 라이터로 쓴다음에 보드에 납땜해서 개발하기도 하더군요.

그리고 커널이나 ramdisk, 유저 파일 시스템의 경우는 정해진게 아니고 메모리맵에 따라서 주소가 다릅니다. 즉 사용자 맘이죠..ㅡㅡ; 부트로더 코드에 보시면 메모리 맵을 설정하는 파일이 있을 겁니다.. 기억으로는 memset.s였나.. (확실치 않음)

kelp.org에 가시면 s3c2440 보드 관련 자료가 좀 있을 겁니다. 그리고 uboot 자료도 있고요..

johlim의 이미지

-------------------------
지금까지는 uboot.bin 파일을 SMC카드에다가 복사해놓고 SMC카드로부터 uboot로 부팅을 해서
-------------------------
smc카드에는 어떻게 복사하나요 !
저는 2440은 아니고 2410보드를 하나 얻었는데
smc 카드에 이미지 굽는 방법을 몰라서 고민중입니다.

A better tomorrow

saxboy의 이미지

kyi111 wrote:
안녕하세요? uboot에 관하여 궁금한점을 여쭤봅니다. 삼성보드 SMDK2440을 참조로 해서 보드를 만들고 있는데요. 지금까지는 uboot.bin 파일을 SMC카드에다가 복사해놓고 SMC카드로부터 uboot로 부팅을 해서 커널이미지와 루트파일시스템이미지를 각각 tftp를 이용해서 메모리에 복사한후 uboot에서 제공되어지는 nandE, nandW 이런커맨드를 이용해서 저장을 했는데요. 저는 SMC카드가 없고 대신에 인텔 28F128J 플래쉬롬을 CS0에 붙여서 여기다가 uboot.bin을 우선 라이팅해서(롬라이터로 무식하게 일단은) 여기로 우선 부팅을 하고자합니다. 컴파일되서 만들어진 uboot.bin을 그대로 인텔플래쉬로 구어도 부팅을 될까요? 꼭좀 답변부탁드려요. 수정을 해야한다면 어느부분이 되어야할지? 그리고 만약 부팅이 되었다고 가정하구요. 또 궁금한건 uboot커맨드에서 tftp로 메모리에 커널이미지를 로딩하고 파일시스템이미지를 로딩하고 만약 인텔플래쉬롬에 라이트하게끔 uboot를 수정했다고 가정하면 커널이나 파일시스템이미지를 실제 어느주소에 저장을 해야되는지 알려주세요? 이와 관련해서 uboot가 부팅되면서 키입력이 없으면 리눅스로 점프하잖아요? 바로 점프되는 주소가 리눅스이미지가 저장되어야할곳인가요? 그렇다면 uboot소스중에 어디를 보면 알수 있나요? 루트파일시스템이 저장되는 주소는 또 어딘지? 꼭 답변좀 부탁드려요....

음. 조금 길군요.. :cry:

부트로더가 실행되는 과정을 추적하시려면 먼저 arm 코어에 리셋신호가 들어온 후 어떤 과정을 거치는지 살펴보세요. nor flash가 어떻게 메모리 맵에서 표현되는지 살펴보시면 되겠지요.
부트로더가 하는 일은 플래시 읽고 쓰기나 커널을 읽어오기 위한 각종 네트워크 스택을 제외하면 굉장히 간단합니다.
실제로 부트로더가 하는 일은 플래시나 네트워크 어딘가에서 커널 이미지를 읽어서 메모리 어딘가로 옮긴후 pc 를 그 어딘가로 옮기는 일 뿐이지요. 부트로더의 나머지 모든 기능은 전부 부가 기능에 불과합니다. 찾아보시려고 한다면 실제로 pc를 셋팅하는 부분, C로 표현한다면 함수포인터를 호출하는 부분 정도가 되겠지요.

hb_kim의 이미지

johlim wrote:
-------------------------
지금까지는 uboot.bin 파일을 SMC카드에다가 복사해놓고 SMC카드로부터 uboot로 부팅을 해서
-------------------------
smc카드에는 어떻게 복사하나요 !
저는 2440은 아니고 2410보드를 하나 얻었는데
smc 카드에 이미지 굽는 방법을 몰라서 고민중입니다.

같이 따라온 CD 에 보면 어떻게 하는지 나올겁니다.
만약 AMD flash 에 원래 있던 usb bootloader 가 아직 있다면 AMD flash 로 부팅해서 diag 프로그램을 로딩해서 SMC flash를 할수 있습니다.

Flash 에 부트로더가 깨져 있다면, wiggler 프린터 케이블이나 ICE 둘중 하나가 있어야 됩니다.

johlim의 이미지

hb_kim wrote:
johlim wrote:
-------------------------
지금까지는 uboot.bin 파일을 SMC카드에다가 복사해놓고 SMC카드로부터 uboot로 부팅을 해서
-------------------------
smc카드에는 어떻게 복사하나요 !
저는 2440은 아니고 2410보드를 하나 얻었는데
smc 카드에 이미지 굽는 방법을 몰라서 고민중입니다.

같이 따라온 CD 에 보면 어떻게 하는지 나올겁니다.
만약 AMD flash 에 원래 있던 usb bootloader 가 아직 있다면 AMD flash 로 부팅해서 diag 프로그램을 로딩해서 SMC flash를 할수 있습니다.

Flash 에 부트로더가 깨져 있다면, wiggler 프린터 케이블이나 ICE 둘중 하나가 있어야 됩니다.

1. 제가 가진 2410보드는 clabsys에서 제작한 보드인데
함께온 CD에는 SMC 카드에 이미지 굽는 방법이 나오지 않습니다
2. 자체적으로 Armdown이라는 유틸리티를 제공하긴 하는데
이 windows app을 사용하면 정해진 Flash Memory 공간에만
다운로드 할 수 있습니다.
현재 제공되는 옵션은 Nor flash와 Nand flash만 있고 SMC 카드라는 옵션은 없습니다. 즉 AMD flash에 있는 부트로더는 terminal 상으로 interact 할 수는 없고 Windows app과 interact하는데 app 가 제공하는 옵션에는 SMC 카드를 선택할 수 없습니다.

제가 사용하는 환경과 많이 다른 것 같네요..--a

Thanks in advance

A better tomorrow

dude7853의 이미지

kyi111 wrote:
안녕하세요? uboot에 관하여 궁금한점을 여쭤봅니다. 삼성보드 SMDK2440을 참조로 해서 보드를 만들고 있는데요. 지금까지는 uboot.bin 파일을 SMC카드에다가 복사해놓고 SMC카드로부터 uboot로 부팅을 해서 커널이미지와 루트파일시스템이미지를 각각 tftp를 이용해서 메모리에 복사한후 uboot에서 제공되어지는 nandE, nandW 이런커맨드를 이용해서 저장을 했는데요. 저는 SMC카드가 없고 대신에 인텔 28F128J 플래쉬롬을 CS0에 붙여서 여기다가 uboot.bin을 우선 라이팅해서(롬라이터로 무식하게 일단은) 여기로 우선 부팅을 하고자합니다. 컴파일되서 만들어진 uboot.bin을 그대로 인텔플래쉬로 구어도 부팅을 될까요? 꼭좀 답변부탁드려요. 수정을 해야한다면 어느부분이 되어야할지? 그리고 만약 부팅이 되었다고 가정하구요. 또 궁금한건 uboot커맨드에서 tftp로 메모리에 커널이미지를 로딩하고 파일시스템이미지를 로딩하고 만약 인텔플래쉬롬에 라이트하게끔 uboot를 수정했다고 가정하면 커널이나 파일시스템이미지를 실제 어느주소에 저장을 해야되는지 알려주세요? 이와 관련해서 uboot가 부팅되면서 키입력이 없으면 리눅스로 점프하잖아요? 바로 점프되는 주소가 리눅스이미지가 저장되어야할곳인가요? 그렇다면 uboot소스중에 어디를 보면 알수 있나요? 루트파일시스템이 저장되는 주소는 또 어딘지? 꼭 답변좀 부탁드려요....

부트로더의 경우는 각 타겟보드마다 세부적인 사항이 다릅니다. 저희회사는 장비가 롬 라이터 뿐이어서 :( 컴파일된 부트로더 이미지를 롬 라이터로 플래쉬에 구워서 부팅시킵니다. (물론 제가 사용하는 보드는 소켓 타입의 부트 플래쉬롬과 보드에 붙어있는 메인 플래쉬롬이 구분되어있습니다) 디버깅이요? 수정할때마다 새로 굽죠. 물론 네트워크가 활성화되면 tftp를 이용합니다만.

1. 부트로더의 이미지가 기존에 쓰시던거라면(즉 그 보드에서 부팅해본거라면) 바로 플래쉬에서도 부팅이 가능할것입니다.

2. 주소의 경우는 메모리맵을 어떻게 잡으셨나를 살펴보아야합니다. 간단히 답변드리면 일단 uboot가 부팅하면서 점프하는 곳이 리눅스 커널이 저장되어있는데 맞습니다. 메모리와 플래쉬가 각각 몇번지에 잡혀있는지는 include/configs밑에 보시면 보드별로 헤더파일들이 있는데, 그중 사용하시는 보드의 헤더파일을 살펴보시면 아실수 있을 것입니다.

3. 루트 파일 시스템의 경우는 램디스크를 쓰실건지, MTD를 쓰실건지 알수가 없어서 정확히 말씀 못드리겠네요. 현재 부트로더의 설정을 살펴보시는 것이 좋겠습니다. uboot 프롬프트에서 printenv하신후에 bootcmd항목와 bootargs부분을 잘 살펴보시는 게 좋겠습니다.

lioler의 이미지

음.. 제가 퇴근하고 가끔 가지고 노는 2440보드는 default로 SMC부트로 되어 있더랬죠...
저의 경우 동봉된CD에 메뉴얼을 보니 스위치로 어느쪽 boot image를 사용할 것인지 선택할수 있었습니다..
메뉴얼만큼 좋은 정보는 없는듯.!
(아마 CS를 공용으로 사용하는듯... 응?!)

honeyme의 이미지

s3c24x0은 NAND 플래시 메모리로 부팅하는 방식과 NOR 플래시 메모리로 부팅하는 방법이 다릅니다.

s3c24x0 datasheet에 보시면 OM 이라는 핀이 있는데 이 핀을 어떻게 설정하느냐에 따라 달라지죠.
NOR 플래시에서 부팅되는 uboot.bin를 NAND 플래시로 부팅시키면 동작되지 않습니다. 반대도 마찬가지구요..

NAND로 부팅하게 될때에는 stepping stone이라는 s3c24x0의 internal memory를 이용해 부팅하게 되는데
설명하자면 얘기가 좀 길어지니 datasheet를 보심이 좋을듯합니다.

uboot 소스도 NAND로 부팅하게 될 경우에는, stepping stone을 이용하게 되므로 이를 위해서
수정을 해줘야 했던 것으로 기억합니다.

3년전에 s3c24x0 계열칩을 좀 만져봐서 자세하게 설명을 못드리겠습니다만,
s3c24x0 관련 자료는 인터넷에 널려 있으니 구글신(?)에게 물어보심이 좋을듯 합니다....

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.