Problem1
; Delay ๋ฃจํ ์ฝ๋
lowlevel_init
; Add delay of 40ms
LDR r3, =600000 ; ๋๋ ์ด ๋ฃจํ๋ฅผ 600,000๋ฒ ์ํํ๋๋ก ์ง์
delay_loop
SUBS r3, r3, #1
BNE delay_loop
ํผ๋๋ฐฑ ์ฃผ์ ๋ถ๋ถ ์ฐธ๊ณ ํ์ฌ 60Mhz ์์ 40ms ์ ๋๋ ์ด๋ฅผ ๋ง๋๋ ์ ์์ ์ธ ๋ฐฉ๋ฒ์ผ๋ก ๋๋ ์ด ๋ฃจํ ๋ฐ๋ณต ํ์๋ฅผ ์ฐพ์๋์ต๋๋ค.
๐ก 60 MHz --> 1์ด์ 60,000,000 ๋ฒ์ ํด๋ญ ์ ํธ
40ms = 0.04s ⇒ ํด๋ญ ์ฃผํ์ x ์๊ฐ = 60,000,000 Hz x 0.04 ์ด = 2,400,000 ํด๋ญ ์ฃผํ์
๋ฐ๋ผ์, 0.04 ์ด (40 ms)์๋ 2,400,000 ๋ฒ์ ํด๋ญ ์ฃผํ์๊ฐ ๋ฐ์ํฉ๋๋ค.
๐ก ์ด๋, ๋๋ ์ด ๋ฃจํ(SUBS, BNE ๋ช
๋ น)์์ 4์ฌ์ดํด์ด ์๋ชจ๋๊ธฐ ๋๋ฌธ์
(์ค์ ๋๋ฒ๊น
ํด๋ณด๋ฉด ๋ฃจํ ํ๋ฒ๋น 4states ์ฆ๊ฐํจ์ ํ์ธ)
0.04ms (2,400,000์ฌ์ดํด)์ ์๋ชจํ๊ธฐ ์ํด์๋
๋๋ ์ด ๋ฃจํ๋ฅผ 2400000 / 4 = 600000 ๋ฒ ์ง๋๋ฉด ๋จ ๋ฐ๋ผ์ r1์ ์ด๊ธฐ๊ฐ์ 600,000์ผ๋ก ์ค์
Problem2
ROM๊ณผ RAM์ ์ฃผ์๋ฅผ ์ค์ ํ๊ณ ๋ฃจํ ๋ฐ๋ณต ํ์๋ฅผ 0x1000์ผ๋ก ์ง์ .
์ดํ์ copy_code_block ์์ ROM์์น์์ RAM์์น๋ก 4๋ฐ์ดํธ์ฉ ๋ณต์ฌ.
ํ๋ฒ ๋ณต์ฌํ ๋๋ง๋ค 0x4์ฉ ๊ฐ์์์ผ์ r2๊ฐ์ด 0์ด ๋ ๋๊น์ง๋ง ๋ณต์ฌ.
์ดํ 0x40000000 ์์น๋ก ์ ํ
; Setting ROM and RAM address
LDR r0, =0x40000000 ; RAM ์์ญ ์์ ์ฃผ์
LDR r1, =0x0 ; ROM ์์ญ ์์ ์ฃผ์
LDR r2, =0x1000 ; ๋ณต์ฌํ ์ฝ๋ ๋ธ๋ก ํฌ๊ธฐ
copy_code_block ; ROM -> RAM ์ผ๋ก ์ฝ๋ ๋ธ๋ก ๋ณต์ฌ
LDR r4, [r1], #4 ; ROM์์น์์ 4๋ฐ์ดํธ ๋ก๋ํ๊ณ 4๋ฐ์ดํธ ์ฆ๊ฐ
STR r4, [r0], #4 ; ๋ก๋ํ ๊ฐ RAM์์น์ ์ ์ฅํ๊ณ ์ฃผ์ 4๋ฐ์ดํธ ์ฆ๊ฐ
SUBS r2, r2, #4 ; ๋จ์ ๋ณต์ฌ ํ์ ๊ณ์ฐ
CMP r2, #0
BNE copy_code_block
; ----- ----- ------
; ๋ณต์ฌ ์ดํ
LDR r0, =0x4000000
BX r0 ; ๋ณต์ฌํ ๊ฐ๋ค์ด ์๋ AM ์ฃผ์(0x40000000)๋ก ์ด๋
์ต์ข ์ฝ๋.
arm 7TDMI ์ด์ ๋ธ๋ฆฌ ์ฝ๋์ด๋ค.
GLOBAL Reset_Handler
AREA Reset, CODE, READONLY
ENTRY
Reset_Handler
; Delay ๋ฃจํ ์ฝ๋
lowlevel_init
; Add delay of 40ms
LDR r3, =600000 ; ๋๋ ์ด ๋ฃจํ๋ฅผ 600,000๋ฒ ์ํํ๋๋ก ์ง์
delay_loop
SUBS r3, r3, #1
BNE delay_loop
; ----- ----- ------
; Setting ROM and RAM address
LDR r0, =0x40000000 ; RAM ์์ญ ์์ ์ฃผ์
LDR r1, =0x0 ; ROM ์์ญ ์์ ์ฃผ์
LDR r2, =0x1000 ; ๋ณต์ฌํ ์ฝ๋ ๋ธ๋ก ํฌ๊ธฐ
copy_code_block ; ROM -> RAM ์ผ๋ก ์ฝ๋ ๋ธ๋ก ๋ณต์ฌ
LDR r4, [r1], #4 ; ROM์์น์์ 4๋ฐ์ดํธ ๋ก๋ํ๊ณ 4๋ฐ์ดํธ ์ฆ๊ฐ
STR r4, [r0], #4 ; ๋ก๋ํ ๊ฐ RAM์์น์ ์ ์ฅํ๊ณ ์ฃผ์ 4๋ฐ์ดํธ ์ฆ๊ฐ
SUBS r2, r2, #1 ; ๋จ์ ๋ณต์ฌ ํ์ ๊ณ์ฐ
CMP r2, #0 ; 0 ์ธ์ง ํ์ธ
BNE copy_code_block ; 0 ์๋๋ฉด ๋ฐ๋ณต
; ----- ----- ------
; ๋ณต์ฌ ์ดํ
LDR r0, =0x40000000 ; ๋ณต์ฌํ ์ฝ๋ ๋ธ๋ก ์ฃผ์
BX r0 ; ๋ณต์ฌํ ๊ฐ๋ค์ด ์๋ ์๋ฎฌ๋ ์ด์
RAM ์ฃผ์(0x40000000)๋ก ์ด๋
END
':: Cyber Security ๐ฉ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ARM ์ปดํจํฐ ๊ตฌ์กฐ] delay_loop ๊ตฌํ ๋ฐ ๊ฐ์ ๋จธ์ ํ ์คํธ ๊ตฌํ ๊ณผ์ - ๋ฌธ์ (0) | 2023.06.12 |
---|
๋๊ธ