Embedded14 ARM Memory System Memory TypeARM architecture에서 memory는 크게 두 가지 type으로 분류 됨. Normal Memory일반적으로 data나 code가 load되어 처리되는 영역으로서 R/W나 RO로 동작ARM processor는 해당 영역에 대하여 cache 기법을 적용할 수 있음 또한 성능 향상이나 최적화를 위해 하기와 같은 기법을 사용할 수 있음. Merge access연속된 메모리 공간에 접근하는 2개 이상의 명령어를 한번에 처리. ex) 0xF000_0000. 0xF000_0004, 0xF000_0008의 연속된 메모리에 대해 4byte씩 접근하는 경우 3번의 access를 수행하여야 하는데, 이때 다수의 access를 merge하여 0xF000_0000으로 부터 한번의 transact.. 2024. 8. 9. Yocto Project Yocto Project는 임베디드 소프트웨어를 위한 사용자 정의의 리눅스 배포판 생성을 가능하게 하는 절차들과 도구를 만들어내기 위한 오픈소스 프로젝트 Bitbake는 python과 shell script로 작성되어 embedded linux의 크로스 컴파일 과정을 위한 패키지와 관련파일들을 빌드하는데 사용되는 tool(상기 이미지의 파란색 부분) Poky는 yocto의 reference system으로서 가장 2024. 8. 9. [C/C++] Volatile volatile의 필요성/* 작성 코드 */u32 *ptr = (u32 *) 0xE0000300;*ptr = 0x1234;*ptr = *ptr & 0xFF; /* 컴파일러에 의한 최적화 */u32 *ptr = (u32 *) 0xE0000300;*ptr = 0x1234 & 0xFF;상기 예제의 경우 Compiler는 최적화를 위해 *ptr = 0x1234; 를 건너뛰고 맨 마지막 코드처럼 *ptr = 0x1234 & 0xFF; 으로 실행 But, 메모리 주소에 연결된 H/W 레지스터에 값을 쓰는 프로그램의 경우 각각의 write 동작이 H/W에 특정 명령을 전달하는 것이므로, 주소가 같다는 이유만으로 중복되는 write명령을 축약해 최적화 해버리면 H/W가 오동작 이러한 이유에 의해 volitile 키워.. 2024. 8. 9. Memory type 메모리 영역 typeCode 영역: 프로그램 명령 코드 자체를 저장하는 메모리 영역으로, Hex(16진수) 파일이나 BIN(2진수) 파일이 저장되는 영역 Data 영역: 전역변수, 정적변수, 배열, 구조체 등 valid한 값들로 초기화된 변수들이 저장되는 영역초기화 되지 않은 변수는 BSS(Blocked Stated Symbol)영역(= .ZI영역, 0으로 초기화된)에 저장 Heap 영역: malloc(), new() 같은 동적인 메모리를 할당할 때 위치하는 메모리 영역 -> 힙의 경우 하위주소에서 상위주소로 할당을 진행 Stack 영역: 지역변수, 매개변수, 리턴값 등 잠시 사용되었다가 사라지는 임시 데이터를 저장하는 영역 -> 스택의 경우 상위주소에서 하위 주소로 할당을 진행data영역과 bss 영역.. 2024. 8. 9. ARM Memory System Memory TypeARM architecture에서 memory는 크게 두 가지 type으로 분류 됨. Normal Memory일반적으로 data나 code가 load되어 처리되는 영역으로서 R/W나 RO로 동작ARM processor는 해당 영역에 대하여 cache 기법을 적용할 수 있음 또한 성능 향상이나 최적화를 위해 하기와 같은 기법을 사용할 수 있음. Merge access연속된 메모리 공간에 접근하는 2개 이상의 명령어를 한번에 처리. ex) 0xF000_0000. 0xF000_0004, 0xF000_0008의 연속된 메모리에 대해 4byte씩 접근하는 경우 3번의 access를 수행하여야 하는데, 이때 다수의 access를 merge하여 0xF000_0000으로 부터 한번의 transact.. 2024. 7. 30. WFI / WFE 해당 ARM assembly instruction은 clock을 gate시켜 저전력 모드(low power state)로 진입하기 위한 명령어이다. WFI(Wait For Interrupt)standby mode로 진입하여, 인터럽트를 기다리고 있는 상태.인터럽트가 발생되면 wake up WFE(Wait For Event)standby mode로 진입하여, 이벤트를 기다리고 있는 상태.이벤트가 발생되면 wake up(이벤트에 인터럽트가 포함되어 있음)이벤트는 주로 SEV or SEVL(Send EVent or Send EVent Local)라고 하는 명령을 통해 생성됨 주로 spinlock 상태에서 사용되며 계속 unlock을 기다리며 진입을 시도하기 보다는WFE를 통해 저전력 모드로 들어가있고, 다른.. 2024. 6. 27. 이전 1 2 3 다음 728x90