본문 바로가기
반응형

일단 제가 준비한 건,261

Arm Private Timer ( zynq 7000 board, Load 레지스터, counter 레지스터, status 레지스터, control 레지스터 ) Timer는 어떻게 작동할까? 타이머는 시간을 설정하고 설정한 시간이 끝나면 어떤 이벤트가 발생하는게 기능적인 동작이다. 아래 Zynq-7000의 내부를 살펴보면, Timer가 여러 개가 있다. 이 중에서 Private timer에 대해서 더 알아보자 Private Timer 4개의 레지스터가 존재하는데 하나씩 보자 1. Load Register - 간단히 말하면 사용자가 설정한 시간을 저장하는 레지스터다. 길이는 32bit다. 2. Counter Register - 마찬가지로 32bit인데 숫자를 세는 레지스터다. 위에 Load 레지스터와 어떻게 연결돼 있는지 보면, str r2, [r3] 동작을 수행했다고 하자. 이때 r3의 주소가 Load 레지스터고 r2에는 1000이 저장돼 있다고 하면, load.. 2022. 8. 10.
Arm calling convention ( 레지스터 사용, caller, callee, AAPCS ) caller와 callee가 있다. 직역하면 caller는 호출한 놈이고, callee는 호출당한 놈이다. 조금 다르게 보면 caller는 main구문이고, callee는 호출 함수다. 그렇다면 main에서 레지스터를 사용하고 있을 텐데 callee 즉, 함수에서는 어떤 레지스터를 사용해야 할까?? Arm에서는 지정 레지스터만 사용하게 했다. 이게 AAPCS ( Procedure Call Standard for ARM Architecture )이다. Arm CPU에는 16개의 레지스터가 있는데 이때 callee는 r0~r4 레지스터만 사용할 수 있다. 사용할 수 있다는 말은 넘겨줄 수 있는 인자를 4개의 레지스터에게만 보낼 수 있다. 그럼 4개가 넘어가면 어떻게 될까?? 이때부터는 stack을 사용한다... 2022. 8. 2.
설계한 RISC-V CPU에서 연산자를 추가하는 접근법 1. 먼저 eclipse에서 code의 Dump file을 확인한다. 하면 아래와 같은 코드들로 이루어져 있다. 32bit라 가정하면, Hex를 2진수로 분해한다. 58: 3ff7c793 xori a5,a5,1023 80: fee7f4e3 bgeu a5,a4,68 2022. 7. 1.
C 포인터가 뭐길래 포인터 ( Pointer ) 하도 포인터 포인터 해서 다들 알고 있을 것이다. 맞다. 그냥 주소다. 주소를 가리키고 바로 그 주소로 접근하기 위해 사용한다. 변수는 메모리를 할당받는다. 이때 메모리는 주소와 값으로 나눠져 있다고 생각한다. + 실제로는 코드 부분과 데이터 부분들이 나눠져 있다. 그래서 CPU는 코드를 통해 접근할 데이터의 주소를 얻은 다음에 그 주소를 참조하여 데이터에 접근한다. 일단 먼저 느껴보자. 뭐든 느낌이 중요하다. 아, 그전에 포인터 변수의 선언은 " * "를 통해서 한다. 예를 들어 int *p;와같이 선언한다. 아래 코드를 보고 어떻게 되는지 보자. #include int main(void) { int k = 8; int *p; p = &k; // 포인터의 초기화 printf.. 2022. 6. 24.
Arm TrustZone ( 신뢰공간, TEE, monitor, banked register, memory ) TrustZone CPU 안에 보안에 있어서 신뢰할 수 있는 환경 ( TEE, Trusted Execution Environment )을 만들어야 하는데 벤더 회사마다 명칭을 다르게 하지만 Arm은 그 환경을 TrustZone이라고 부른다. 2개의 World로 구분해 놨는데. 하나는 Normal World ( non-Secure World ), 다른 하나는 Secure World로 구분했다. 단어에서 알 수 있듯이 Normal World에서는 일반적인 애플리케이션을 돌리고 은행 앱이나 정보보안이 필요한 서비스의 경우에는 Secure World에서 애플리케이션을 실행한다. 애플리케이션을 돌리기 위해선 운영체제도 필요하다는 걸 알 수 있다. 리눅스와 같이 오픈 소스 코드는 보안에 취약하니 보안에 강한 운영체.. 2022. 6. 24.