-
20140722 (ARM ADC, Assembly 기초, Debug)부산IT학원/스마트컨트롤러 2014. 7. 22. 10:24
107일차
------------------
ARM ADC
------------------
------- ADC 타이밍도
1. ADC_CR Reg에 START bit가 set 되면
변환을 시작한다.
2. 변환이 끝나면 ADC_SR Reg에 해당 채널 EOC bit가 set 되고
ADC_SR Reg에 DRDY bit도 set 된다. (DRDY는 가장 먼저 변환이 끝난 후 계속 H)
3. 해당 ADC_CDRx Reg로 값을 읽으면 ADC_SR Reg에 해당 채널 EOC bit가 clear 된다.
4. 다시 ADC_CR Reg에 START bit가 set 되면 변환을 시작하고
변환이 끝나면 또 해당 채널의 bit가 set 된다.
5. ADC_LCDR Reg에는 최근에 변환이 완료된 값을 가지고 있고
이 값을 읽을 시 모든 채널의 EOC bit가 clear 된다.
--- 소스
- adc.c
- main.c
---------------
ASSEMBLY
---------------
------- example source code
------- compile, link, run
------- debug 모드
------- windbg 로 디버깅
1. 요놈 실행.
2. 실행 파일 열기
3. 실행 파일 열기
4. 이 화면이 뜸.
5. 알림창이 한 번 뜨고 두 번정도 더 누르면
6. 아래 창이 뜸.
7. View -> Registers 실행
8. View -> Memory 실행
9. 감시할 함수 이름을 써주는데 _start 함수를 감시할 예정.
10. 한 번 더 실행 시켜서 감시할 변수의 주소값을 적어주는데
number1이 가장 먼저 시작하는 변수라 이것을 적으면 뒤에 있는 메모리의 다른 변수도
함께 볼 수 있다.
11. 그럼 여러 창들이 뜨고 아래와 같이 배치하였다.
12. F11 키를 눌러 몇 번 실행하였다. 그림 안에 설명 참고.
13. 이렇게 Memory와 Register의 값이 어떻게 변하는지 관찰할 수 있다.
14. 여기서 중요한것은 12번 그림에서 0x00401072 주소에 명령어를 보면
a3 00 40 40 00 이라는 숫자가 있는데
mov number1, eax 를 의미한다.
위의 그림을 참고하면 명령어가 각 장비마다 실행 속도를 확인할 수 있고,
만약 같은 동작을 하는 명령어인데 속도와, 크기가 더 효과적인 명령어가 있을 수도 있다.
C에서는 바꿀 수 없지만 Assembly를 통해 더 효과적인 명령으로 수정하여
더욱 최적화가 가능하다.
또한, 이 처럼 실행 파일을 Asm 파일로 바꾸는 과정을 Disassembly 라고 하는데,
Disassembly 를 하고 코드를 바꿔 실행의 흐름을 바꾸는 기술을 Reverse Engineering 이라고 부른다.
'부산IT학원 > 스마트컨트롤러' 카테고리의 다른 글
20140724 (ASM mov, xchg) (0) 2014.07.24 20140723 (Assembly 기초, windbg 사용법) (0) 2014.07.23 20140721 (ARM adc 소스 작성중, asm) (0) 2014.07.21 20140717 (ARM Ultrasonic 초음파 모듈) (0) 2014.07.17 20140716 (ARM 초음파 모듈, Ultrasonic) (0) 2014.07.16