Embedded Linux 를 위해 ARM Asm 을 공부해볼까 합니다.

alsgo123의 이미지

제목대로 임베디드 리눅스 개발보드에 리눅스 커널을 포팅 해볼려고 생각중입니다.

Target 은 StrongARM 입니다.
보드 구매시 커널 코드가 함께 오긴 하지만 assembly 는 한번도 접한적이 없어
고민끝에 질문 드립니다.

* ARM Assembly 학습은 어떻게 하는게 좋은지..........
* 관련된 자료,책,링크들이 있으면 추천 부탁 드립니다. ^^

감사합니다.

alsong의 이미지

인텔에서 나온 메뉴얼을 보시는것도 괜찮을듯 싶은데..

그나저나 백수 언제 탈출하냐... ㅡㅡ; 배고파라.

crimsoncream의 이미지

ARM ARM 입니다. 다들 이게 제일 필수라고 권하더군요.
간혹 보드에 따라서는 번들로 이 책을 주기도 합니다.

http://www.amazon.com/exec/obidos/tg/detail/-/0201737191/qid=1059973350/sr=1-1/ref=sr_1_1/103-0206102-8951035?v=glance&s=books

오늘 우리는 동지를 땅에 묻었습니다. 그러나 땅은 이제 우리들의 것입니다.
아직도 우리의 적은 강합니다. 그러나 우리는 그들보다 많습니다.
항상 많을 것입니다.

코너리의 이미지

먼저 StrongARM Architecture에 대한 메뉴얼이 있을 겁니다.

그걸 먼저 보시고 공부하시면 어셈블은 생각보다 쉽게 이해가 가실겁니다.

프로세서 메뉴얼 생각보다 어렵진 않습니다.

다만 진정 어려운건 언어가 아닐까 하는데 영어에 자신있으시다면 OK.

The difficulty in life is the choice.

alsgo123의 이미지

좋은 정보와 조언 정말 감사드립니다. ^^ 꾸뻑

mach337의 이미지

[url]http://doc.kldp.org/old/개발자(developer)_코너/Assembly/[/url]
을 참고하시어 x86 에서 먼저 조금은 할 수 있습니다.
그 다음에 위에 분들이 말씀하신 책들을 참고로 명령어를 하나씩 바꾸어서
컴파일하고 링크한다음 타겟보드에서 실행해보면 되겠지요.
아...그리고 C Code 를 컴파일 할때 Assembly Code 를 생성해 주는 Gcc 옵션이
아마 -S 이었을 겁니다. 대문자 입니다.
C Code 로 간단하게 만든다음 Arm 컴파일러로 Assembly Code 를
만들어서 보면 많은 도움이 됩니다.

gcc -S -o test.s test.c
arm-gcc -S -o arm-test.s test.c

여기서 test.s 는 x86 용, arm-test.s 는 arm 용의 Assembly Code 가 되겠지요.

나중에 아시겠지만 RISC 머신이라 코드가 특이하게 나올 경우가 있습니다.
예를 들어 branch 같은 것을 할때죠. 이런 코드는 RISC 의 특성인 파이프라인 구조를
알아야 이해 할 수 있습니다. 참고하시길...

그럼...

mach337의 이미지

아참... 그리고
GAS Manual 이 참고가 될지도 모르겠군요.
gnu.org

Viz의 이미지

개인적으로는... 일단 ARM 어셈블리에 대해 조금이라도 감을 잡게 되신다면, Strongarm 에서 사용하는 여러가지 부트로더 중 하나를 분석해 보시는게 많은 도움이 될 듯 합니다.
물론 부트로더도 많은 부분 C로 이루어지지만, 처음 부트했을때 메모리쪽을 비롯해서 여러가지 설정을 해주는 코드들은 어셈블리로 이루어져 있지요.(제가 지금 그렇게 보고 있답니다)

그럼~

My Passion for the Vision!

daihoon의 이미지

어셈을 공부하시다면 약간 주제가 다를수는 있습니다만,

(이미 알고 계실지 모르겠습니다만)

암에 커널 포팅을 원하신다면 이곳을 추천합니다.

암리눅스 관련 한글 자료가 많이 있구요.

암어셈으로 작성된 부트로더 관련자료가 있습니다.

www.kelp.or.kr
www.kesl.org

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.