리눅스 환경세팅을 위해 복사하여 저장 1번 egg파일을 압축풀면 이렇게 생긴다 우분투는 6개월마다 배포(4월, 10월) 짝수년도 4월꺼를 LTS 버전이라고 한다 5년간 모든 패키지를 다 지원한다 BSP 개발 버전이 20.04의 라이브러리를 이용해서 했다. 커널
우분투를 키면 DHCP 공유기로 자동으로 연결된 상태ISP에서 인터넷 공인IP를 1개만 받아 공유해주는 기능을 하는 것이 공유기무선으로 ip 할당하기 위해 허브/AP모드 사용apt : 패키지를 관리해주는 서버모든 패키지가 있는 것은 아니고 기본적인 것들이 들어있다.ro
교재 : 사물인터넷을 위한 리눅스 프로그래밍 with 라즈베리파이 Linux BSP(Board Support Package) 부트로드 커널 디바이스 드라이브 파일 시스템 나만의 커널 만들기 어셈블리 코드로 LED 제어 C로 부트로드에서 기능 추가 커널에서 부팅 이미지
빨간색 선은 제외하고 3개만 사용검정색은 GND흰색은 8번(TXD0)초록색은 10번(RXD0)통신장치관리자에서 port-this is not \~~ 제거하기/드라이버 삭제 체크 후그러면 이렇게 된다근데 이것만 해서 되는건 아니고, 라즈베리파이에서 시리얼을 enable
공유 폴더에 PPT 복사하기putty 설정에 대한 설명우분투에서 명령을 실행한다패스워드를 초기화는 가능하지만 알 수 없다이렇게 암호화 되어있다
임베디드 시스템 특정한 기능, 목적을 수행하도록 마이크로 프로세서와 입출력 장치(peripheral)와, 제어하는 프로그램이(소프트웨어) 내장되어있는 전자기기, 가전제품, 제어장치 PC는 범용이라 임베디드가 아니고, 특정한 목적만을 수행하는 pc는 임베디드로 보기도 한
모든 명령어는 조건부 실행이 가능메모리 참조 명령, 상대주소 지정방식<->적치 데이터immediate 상수는 32비트 명령어 내 표시32비트 고정 명령 길이를 사용해서 pipeline 구성이 용이하고 빠르며, 디코더 구현이 쉽다ARM 명령어 요약코드의 크기를 줄일
위 파일은 ~/pibsp/u-boot/common 에 있는 cmdkcci_led.c 파일이다 이 내용은 u-boot에서 ./build.sh를 통해 bin 파일을 만들고 라즈베리파이의 /boot/firware에 넣으면 부팅할 때 위 내용으로 부팅된다 이상으로 부트로더
vcb
Yocto Project : 임베디드 리눅스 빌드 프로그램 / 빌드 후 이론 수업을 하기로 했다루트 파일 시스템 : 루트 폴더(최상위 디렉토리)에 부팅에 필요한 파일들을 모아놓은 것실무에서 yocto를 많이 사용함임베디드 파일 시스템은 크기가 작다38 shift g38
복습시그널을 사용할 때 exit를 이용해서 종료하도록 할 수 있다. 만약 안하면 무한루프 때문에 끝나지 않아 kill을 사용해야 한다일반 함수는 main에서 호출하지만 signal_handler는 커널이 호출한다sleep이랑 alarm은 같은 타이머를 쓴다 -> 같이
개발 환경 점검samba, nfs를 사용하기 위해 SD카드를 빼서 다시 이미지를 받아야한다홈 디렉토리의이것이고 용량은 이정도 된다우분투와 SD카드를 연결하고명령어로마운트 되었는지 확인한다이제 write 해보자다 쓰여졌으면 라즈베리파이를 킨다근데 커널 버전이 다르기 때문
<전날 과제 리뷰>gets 대신 fgets를 사용하자gets는 시작주소만 넘겨주지만 fgets는 시작주소와 사이즈를 같이 넘겨준다그래서 버퍼 오버플로가 안일어난다시스템 콜 함수, 디바이스 드라이버 모두 커널에서 동작해서 같은 함수를 사용할 수 있다setup 하드웨
시스템 콜 함수 단점커널 소스가 비표준임커널 소스를 빌드하고 업그레이드하고 재부팅을 해야함디바이스 드라이버는 필요에 따라 동적으로 적재하고 내렸다LED를 다양한 형태로 제어하고 싶은데 제어하는 어플리케이션이 필요하다어플리케이션과 디바이스 드라이버 간의 file_oper
지난 시간에는 1바이트만 보냈는데 이제 더 많은 데이터를 보내려 한다8바이트를 보내보자파일 이름만 수정한다Makefile 수정Pi에서 잘 되는 것 확인했다이제 배열로 바꾼다app.c 파일 수정한다dev.c 파일에서 1바이트때는 getuser 해도 됐지만, 여러개면 배열
get_jiffies_64() : 현재 시간을 가져오는 함수kerneltimer_func : 커널이 호출한다
복습isr : interrupt service routin모든 함수, 구조체에 static을 넣어준다디바이스 드라이버 만들고 실행시키는 법1\. dev파일, Makefile 작성(우분투)2\. make 실행(우분투)3\. mknod로 device 등록(파이) - 안할
프린트물 p17 참고pc는 조립을 하면서 어떤 장치를 셋업할지 알 수 없다운영체제는 드라이브가 픽스되어 커널 안에 넣으면 사용하지 않을 것인데 부팅 때 마다 적재되고할당된 메모리, 코드 사이즈만큼 사용된다 임베디드 최적 시스템에는 디바이스 드라이버가 픽스된다pc는 장치