2025/01/14 4

MACRO Technics

Macro : 자주 쓰는걸 한개로 묶을 수 있음              argument 를 받을 수 있음                 Register 설정 같은걸 관리하기 용이 ex) 반복critical_section_in(current);ret = io_read (io_num);critical_section_out(previous);>#define CRITICAL_IO_IN (current, io_num, previous) \critical_section_in(current); \ret = io_read (io_num); \critical_section_out(previous); \>> " \ " 로 연결CRITICAL_IO_IN (1, 2, 3);>>>critical_section_in(1);ret ..

shadow, Bit operation

shadow ~= Backup  > Register 중 Write 만 가능한 (Read X)것들을 전역변수에 backup     > 언제든 그 값을 볼 수 있게 Register : Bit별로 설정이 가능한 Latch>Mask  : 내가 원하는 부분만 보겠다 ex) 6번 bit를 보려면if (reg_data & 0x20 )    > 0x20 : Mask ~= reg_data >>6 & 0x1 == reg_data & ( 1+한번에 2 bit 빼내는법 reg_data >> 6 & 0x3    : bit 6,7, 을 빼오게됨  1100000   >>6  :  0000011 & 11  반대로 넣는법은 OR ! 클리어 하는법 다른 bit 는 모두 1 , 원하는 bit 를 0  한뒤에  &reg_data & = ~..

Device Interface의 CS, address 이용 - LCD

LCD Memory Map Address      Target               Size0x00000000 SDRAM_CS0_N    32MB0x08000000 SDRAM_CS1_N    32MB//0x0~80000000 SDRAM1  > LOW active //0x80000 ~~       SDRAM2 >  ".....................중략......................0x20000000 LCD_CS_N          3MB// Chip Select : LOW active// 3MB 사이의 주소를 Access.....................생략......................  LCD controller : 3 Input ( CS/, ADS, DATA )ADS ..

MCU의 외부통신, 컨트롤

MCU : CPU core+ Memory > 외부 Memory A[31:0] : 32 bit짜리 Address  > 2^32 : 4GB 공간D[31:0] :  32bit ARM core등에서는 32bit Data가 필요// 16bit Access// 32bit라고 다 32bit 하는건 아님 (효율,호환성 등)nRD : OE에 관계된 Read하겠다는 신호nWR : 마찬가지로 Write하겠다는 신호.nWait : 외부 메모리가 Processor보다 느릴 경우, "프로세서야~ 기다려라" 하는 신호 >외부 메모리가 64MB (Data : 8bit) 라면   >AddressLine 26개, DataLine 8개로 바꿔줘야함>>MemoryController, Bus Sizer   > Bus size Register..