장소 : 영통 모이자 (3PM ~ 11PM)
인원 : 목태양 외 13명
진도 : 리눅스 커널 내부구조 (Chapter 8 ~P215)
스터디 운영 관련
- 3주차 참석 여부 갱신해주세요 : https://docs.google.com/spreadsheets/d/1QteLbtnsuW9J-SkTv0BqNKOnWtq1n3FR9R0fc42sHoc/edit#gid=0
- 장형원 님이 3주차 이후 스터디 장소로 죽전 단대에 공간 빌릴 수 있는지 알아봐주시기로 했습니다. 주초에 섭외가 잘 안 될 경우 2주차와 동일한 요령으로 5/23(화)까지 참석 인원 취합하여 5/24(수)에 스터디룸 중 가장 나은데로 대여합니다.
- 구글 드라이브 등 뭔가 아카이브를 만들어서, 주차별로 도움이 되는 문서 파일이나 링크 등을 모아서 올리고 스터디 로그에 링크를 공유하려 합니다. 공운학 님이 만들어서 공유해주실 예정입니다.
Linux 및 아키 교재 및 자료 관련
- 3주차부터는 아키텍쳐 교재 강독을 시작하게 됩니다. 교재를 미리 준비해주세요~
- 아키텍쳐는 arch/arm(arm 32bit), 아키텍쳐 교재는 ARM SYSTEM DEVELOPER'S GUIDE
- 해당 아키 교재 관련 참조할만한 iamroot 게시물
ARM System Developer's Guide 학습 범위 (백창우 님 가이드) : http://www.iamroot.org/xe/index.php?document_srl=9759&mid=Study
ARM System Developer's Guide 요약 ppt (김진평 님 공유) : http://www.iamroot.org/xe/index.php?document_srl=23428&mid=Kernel
ARM System Developer's Guide의 문제점 (김용욱 님 공유) : http://www.iamroot.org/xe/index.php?document_srl=20660&mid=Kernel
- 기타 참고할만한 ARM 교재
임베디드 레시피 : http://book.naver.com/bookdb/book_detail.nhn?bid=6224668
ARM으로 베우는 임베디드 리눅스 시스템 : http://book.naver.com/bookdb/book_detail.nhn?bid=7386744
- 리눅스 무료 인강
조광현 님이 링크를 하나 공유해주셨는데, iamroot에서도 두어번 공유된 바 있는 것 같고 평이 좋습니다. 시간이 될 때 한 번 보시면 책 읽으면서 배운 이론적인 내용 정리하는 데에 도움이 될 것 같습니다. 저도 틈틈히 볼 생각입니다 : http://olc.kr/course/course_online_view.jsp?id=35&cid=49&page=4#self
아키텍쳐 스터디 완료 후 코드 분석 진행 관련
- 타겟보드는 라즈베리파이2(Cortex-A7)를 사용하려고 합니다.
- 커널 이미지 구조라든지 부팅 시퀀스 등 교재에 내용이 없지만 알아두면 코드 분석에 도움이 될만한 내용들이 있습니다. 제가 관련 자료를 찾아보고 필요하다 싶은 것은 공유하도록 하겠습니다. 필요하면 스터디 시간 중에 자료를 따로 리뷰하도록 하겠습니다.
- 코드 분석이 막혔을 때 현상(보드 동작)을 확인해보면 도움이 되는 경우가 있습니다. 송원식 님이 개발 환경을 시험삼아 구성해보시고 팀원 분들께 공유해주실 예정입니다.
숙제 정리
- [전원] ARM 아키 교재(ARM SYSTEM DEVELOPER'S GUIDE) 준비, 가능하면 스터디 전 preview
- [장형원 님] 스터디 장소 arrange
- [공운학 님] 아카이브 생성 및 공유
- [목태양 님] 리눅스 교재 / 아키 교재 외에 도움이 될만한 내용 검색 및 정리하여 공유
- [송원식 님] 스터디를 위한 개발 환경 시험삼아 구성해보기 -> 팀원들에 상세한 방법 공유
댓글 6
-
stgssfrehst
2017.05.22 22:26
-
송원식
2017.05.22 23:23
안녕하세요. 개발 환경 구축과 관련해서 아래의 링크에 올려 두었습니다.
내용은 이전에 올라 왔던 글과 동일하며 단지 커널소스를 가져오는 부분을 변경했습니다.
혹시 따라해 보시고 문제가 있으면 코멘트 부탁 드립니다.
http://www.iamroot.org/xe/index.php?mid=Knowledge&document_srl=186059
감사합니다.
-
CLOCK
2017.05.24 22:16
단국대학교 2공학관 203호 빌렸습니다.
-
목태양
2017.05.25 22:00
감데공 님이 공유해주신 스터디 자료 업데이트 경로입니다.
https://drive.google.com/open?id=0BxcakYZENGHVX2FkRHdyS2JxTjA
-
송원식
2017.05.28 01:10
스터디에서 나왔던 내용인데요.
linux커널에서는 유저와 커널 모드만 존재해서
arm에서 irq, exception모드 등은 svc 모드로 이동해서 처리합니다.
irq=>svc 모드로 전환하는 코드 공유합니다.파일: arch\arm\kernel\entry-arm.S
vector_irq =>
vector_\name:
{중략}
mrs r0, cpsr
eor r0, r0, #(\mode ^ SVC_MODE | PSR_ISETSTATE)
msr spsr_cxsf, r0 => 이전 상태를 SVC mode로 바꾼다{중략}
movs pc, lr @ branch to handler in SVC mode
명령어에 S덧붙임 명령어가 있어서 분기하면서 CPSR에 SPSR을 넣어 복구 즉 SVC 모드로 변경 되면서 리턴됨
ENDPROC(vector_\name) -
송원식
2017.05.28 01:39
linux 나누기 코드 확인
확인 결과 arm에서 제공하는 라이브러리의 __aeabi_idiv 함수를 호출하도록 컴파일확인 방법
1) 코드 작성 (test.c)#include <stdio.h>
int div(int a, int b)
{
return a/b;
}
int main(void)
{
int a =10;
int b=2;
int c;
printf("result %d\n", div(a,b) );return 0;
}2) arm 용으로 컴파일
arm-linux-gnueabihf-gcc -S -c test.c3) 어셈코드 확인
div:
@ args = 0, pretend = 0, frame = 8
@ frame_needed = 1, uses_anonymous_args = 0
stmfd sp!, {fp, lr}
add fp, sp, #4
sub sp, sp, #8
str r0, [fp, #-8]
str r1, [fp, #-12]
ldr r0, [fp, #-8]
ldr r1, [fp, #-12]
bl __aeabi_idiv
mov r3, r0
mov r0, r3
sub sp, fp, #4
@ sp needed
ldmfd sp!, {fp, pc}
.size div, .-div
.section .rodata
.align 2
.
감사합니다.