문 제목 :  안녕하세여 .. 임베디드 분야에 입문한지 얼만 안되는 신입입니다 .

여태껏 책으로 배워온 c 언어랑 문법이 다르게 느껴져서 많은 어려움을 겪고 있습니다 .


누구에게 물어 볼 방법이 없어 고민하다 혼자 힘으로 힘들것 같아서 글을 올립니다 .


c 문법이 이렇게 어렵게 느껴지긴 처음입니다..

 

 

질문 요약 :   문법이 이해가 안되는 부분이 몇가지가 있습니다 .... 도움을 부탁드립니다 ..

인터넷에서 찾아볼수 잇는건 찾아 보앗지만 저런 문법문제는 어떻게 해야 할지 몰라 ..

글을 올립니다 .


 

질문 내용 :   1.

구글 검색에서 __attribute__ 컴파일 최적화라고 되있던대요 __((section(".sh0srdata") 이부분은 어떻게 해석해야 하는건가요 ??

아래의 구조체 와 #define된 문장이 어떻게 쓰이는지 구체적으로 알려주세요 ...염치 불구합니다 .


#define SH0SRD  __attribute__((section(".sh0srdata")

<font color="#352e2c"></font>



struct dhcpMessage {
 u8_t op;
 u8_t htype;
 u8_t hlen;
 u8_t hops;
 u32_t xid;
 u16_t secs;
 u16_t flags;
 u32_t ciaddr;
 u32_t yiaddr;
 u32_t siaddr;
 u32_t giaddr;
 u8_t chaddr[16];
 u8_t sname[64];
 u8_t file[128];
 u32_t cookie;
 u8_t options[308]; /* 312 - cookie */
}__attribute__ ((__packed__));


********************************************************************


<font color="#352e2c"></font>

질문 내용 :   2.

((BYTE *)SH0RAM_BASE  ->이 구문이 해석이 안됩니다 .

(포인트 *)변수 인데 변수를 주소를 넣어주어도 되는건가요 ?? (포인터*)에 대가로는 왜붙이는건가요 ??

포인터 변수에 상수를 넣는것이 가능한가요 ??


DmaMemSet_ip((BYTE *)SH0RAM_BASE, 0, SH0RAM_SIZE);


#define SH0RAM_BASE    0xf0000000


<font color="#352e2c"></font>

********************************************************************


질문 내용 :   3.

asm 인터넷으로 찾아보니깐 어셈블리어 언어라고 하는데요

asm("l.mfspr %0,%1,0" : "=r" (value) : "r" (spr));  처음 보는 문법이라 어떻게 해석해야 하는지 모르겠습니다 .

mfspr->0xf0000000를 인자로 넘겨주는데요 asm("l.mfspr %0,%1,0" : "=r" (value) : "r" (spr)); 여기서

r" (value) : "r" (spr) 어떻게 쓰이는지 가늠이 안됨니다 ..





#define CRITICAL_BEGIN   mfspr(EXR1K_CSR)


_NOINS uint mfspr(uint spr)
{
 uint value;
 asm("l.mfspr %0,%1,0" : "=r" (value) : "r" (spr));
 return value;
}
#endif





<font color="#352e2c"></font>

********************************************************************


질문 내용 :   4.

아래의 문법중 PRIVILEGED_DATA 이부분은 어떻게 해석해야 하는건가요 ??


(변수 타입) 변수 = 0 ;

int i=0; 제가 아는 문법은 이렇게 되는건데요 앞에 PRIVILEGED_DATA 이건 무엇을 뜻하는 ....




PRIVILEGED_DATA static volatile signed portBASE_TYPE xSchedulerRunning    = pdFALSE;


#define PRIVILEGED_DATA __attribute__((section("privileged_data")))


#define portBASE_TYPE long


#define pdFALSE  ( 0 )




<font color="#352e2c"></font>

********************************************************************



질문 내용 :   5.

아래의 문법중 말그대로 구조체를 저렇게 붙여서 define 하는것도 가능한가요 ??

왜이렇게 쓰이는지 ..


#define _regs_     typedef union{ULONG a; struct{ // Register union start
#define _rege_     };}





오늘 하루 중 고민고민 하다 글을 올립니다 . 부탁드립니다 ~~~