JH721 SW자율차 [디바이스 드라이버] //7주차-3

JH·2021년 5월 26일
0

자율 자동차 SW 개발

목록 보기
11/37
post-thumbnail

부트로더🐱‍👤

p.64 ~ 66: 메모리 시스템
NAND는 원래 부팅을 하지 못하는데 점퍼를 이용해 SROM을 사용해 부팅

초기화 코드 작성시고려
watch dog : CPU에 문제가 있으면 알아서 해결(부팅했을 때 꺼있어야 됨)
memory bank init : 메모리 뱅크가 8개 있는데 없는 경우에 체크 해주는 것, 메모리의 물성치를 CPU에게 알려줌
stack init : 스택 설정
set up Excption Handler : 문제가 생기면 보내줌 (4비트 가상 메모리)

GPIO : 많은 포트가 있지만 역시 많은 디바이스가 사용해야됨 그렇기에 만들기 어려운 것만 연결할 수 있도록 하자
Port A : 16개 이상인 이유 출력/부가기능만 사용가능

core : Cache,MMU(memoery Management Unit), Write Buffer, TCM(Tightly Coupled Memory), BIC(Bus Interface Unit)
AHV(빠른) 버스 인터페이스 지원 ↔ ASV
Big-Endian은 버젼 업되면 못씀 ↔ Little-Endian은 호환성이 됨
jazelle : 자바 가속 기능

MPLL : 속도를 뻥튀기 시키는 것
ADC : 아날로그 신호를 디지털 신호로 바꿔주는 것

p.74 148 : MPLL 설정 기준표
PLL Lock Time : 속도가 변할 때에 에러가 뜰 수 있기 때문에 안정될 때까지 막아줌

부트 로더 실습 -> 포팅까지 했는데 아직 어렵다.


디바이스 드라이버🐱‍🐉

개요

선점형 - 빠릿빠릿한 동작을 할 수 있게 도와줌
O(1) : 가장 빠른 알고리즘 시간
리눅스 : 16램 /8플래시메모리 /cpu 32bit /MMU -> 최소 사항들

디바이스 넘버 : major(12 bit) /minor(20 bit)
ALSA는 좋은 음질을 지원해줌(무겁다) -> 안드로이드는 넣음 /임베디드는 아직
#modinfo test.ko // #명령어 디바이스 이름
치면 -> 정보가 나옴
다른 명령어 : modprobe, inmod, rmmod, depmod, lsmod

리눅스 구조 : 책(p.17 참고)
/dev/ 디렉토리에 파일들
c : character /b : block /major number : 정해져있음
car /proc/devices 하면 장치의 넘버가 나옴

실습1(p.58)💖(아직은 모듈을 보는 것과 같음)
.c 파일과 Makefile을 make 해서 .ko 파일을 만듦
(보드 재부팅 후)테라텀에 issmod 하면 실행됨
안 될 경우 : gedit ~/.bashrc 로 들어가서 마지막 줄에
"export CROSS_COMPILE=arm-none-linux-gnueabi-" 추가
dmesg : 리눅스를 체크하면서 (디버깅하면서) 간단한 에러를 알려줌
file hello.ko 하면 정보를 줌

디바이스 드라이버를 이용해서 하드웨어를 바꿀 수 있음
드라이버가 틀리면 운영체제가 같이 죽음
모듈 적재과정(p.60)

라이센스
MODULE_LICENSE("GPL");
MODULE_AUTHOR("Peter Jay Salzman");
이거 안쓰면 하드웨어 사용할 때 동작 안할 수 있기 때문에 라이센스 동의한다고 해줘야됨
perm : 접근 속석 (chmod 777 같이 접근 권한을 주는 것)

profile
JH.velog

0개의 댓글