'Yunious..'에 해당되는 글 269건

  1. 2009.07.01 저작권 관련 정리.
  2. 2009.06.30 IAR 에서 printf 사용하기.
오늘. (7월 1일) 부터 강력한 저작권법이 시행된다...;;;
놀고있는 홈페이지나 블로그 필히 단속 잘 할것..! ㅋㅋ



오늘은 친구 블로그에 캡쳐되어 있는 저작권 정리.

1. 사진, 영화, 드라마 캡쳐 금지.
2. 드라마속 대사, 책속 글, 노래가사 업 금지. (단 인용 제외. - 인용 성립요건 참조 )
3. 영화 포스터, 드라마장면, 삽화 등 패러디는 패러디 요건 충족시켜야 저작권침해에 면책됨
4. 좋아하는 가수의 노래 직접 부르거나 맞춰 춤춘 동영상 업 금지.
 - 동영상으로 찍는 것은 제 29, 30조에 의해 면책되나, 올리면 면책규정이 없음.
5. 맛집이나 여행지 정보, 유명 연예인의 사진 등 올리는 것은 신중히.
 - 간단한 소개글이나 창작성 없는 단순 사진은 이용가능.
 - 글쓴이의 경험 바탕이나, 전문적으로 촬영한 사진 (사진기법의 특수성, 각도, 조명등의 차별화) 의 경우는 저작물에 해당.
그리고 인용, 패러디에 들어가면 다행히 살아남을 수 있다고 한다..;;;

인용 성립요건
1. 보도 비평 교육 연구 등 위한 인용
2. 정당한 범위 내의 것.
(인용 저작물 / 피 인용 저작물의 양, 질적 주종관계 성립되며, 분명히 구별될 것)
3. 공정한 관행에 합치될 것. (저작물 이용의 목적, 방법이 건전한 사회통념에 비추어 공정한 관행에 합치될것. 출처 표시)

패러디의 요건
1. 비평 또는 풍자.
(원작을 비평, 풍자. 패러디한 것이 원작을 비평/풍자 한 것이라는 것을 감상자가 알 수 있어야 함. )
2. 이용행위의 목적과 성격
(비상업적 성격을 가져야 함. 단 결정적인건 아님. - 상업적 사용행위의 인정사례 있음)
3. 이용된 분량과 실질적 가치
4. 패러디가 원작의 시장적 수요에 미치는 영향
(경제적 가치를 감소하거나, 수요대체 효과 가져와서는 안됨. )
그 외에 저작권에 대하여 더 알고 싶으면 저작권위원회저작권법을 참조하길...



덧) 그런데.. 누구 좋으려고 갑자기 이렇게 법을 강화하는지 모르겠다.
개선 가능한 기간을 충분히 둬서 확 단속해서..
한판 알려주고 시작해도 되련만....
나랏님이나 창작자님들이 너무 배가 고프셨나..;;;
Posted by Yoons...
,

IAR에서 printf 를 쓸 수 있으면 정말 편리해진다.
정말 C like 하게 프로그래밍을 하면 보기도 편하고 일부 기능은 바로 다른 C compiler 에 옮겨서 확인해볼 수 있으니 여러모로 편리하다.

나도 uC/OS 에 printf 를 쓰려고 여러군데 찾아봤다.
여러군데 찾아봐도 딱 한 부분만 잘라서 이야기 하면서,
왜 그렇게 되는지 자세히 이유도 안 적어놓고 그냥 대충 둘러대는 곳만 너무 많이 봤다. ;;;;
그래서 나도 똑같이 대략적으로 말 하기만 하는건 좀 그래서...
결국은 내가 썼던 코드의 일부분을 올린다..;;;;



중요한거를 몇가지 잡아보자면, (개념은 알아야 될것 아니냐..;; )
(나도 잘 모르지만..;;) printf 든 뭐든 결국 하위 함수로 putchar 를 호출하게 된다고 한다.
이것을 IAR 에서 제공하는 USART_SendData  함수로 바꿔서 개개별의 문자를 UART 통신을 시킨다.

또한 UART 통신을 하려면 기본적으로 해당 Pin 에 대한 GPIO(General Port I/O)  설정과, UART 관련 설정은 당연한것.
빠뜨리지 않고 보도록 하자.

먼저 putchar 을 UART 통신으로 바꿔버리는 부분.


/*******************************************************************************
* Function Name  : PUTCHAR_PROTOTYPE
* Description    : Retargets the C library printf function to the USART.
* Input          : None
* Output         : None
* Return         : None
*******************************************************************************/
PUTCHAR_PROTOTYPE
{
    /* Write a character to the USART */
    USART_SendData(USARTx, (u8) ch);
   
    /* Loop until the end of transmission */
    while(USART_GetFlagStatus(USARTx, USART_FLAG_TXE) == RESET){}
   
    return ch;
}

이 부분이 연결되는 부분을 또 만들어야 하겠지.
컴파일의 환경에 따라서 다음과 같이 연결하면 된다.

#ifdef __GNUC__
  /* With GCC/RAISONANCE, small printf (option LD Linker->Libraries->Small printf
     set to 'Yes') calls __io_putchar() */
  #define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
  #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif /* __GNUC__ */

이렇게 하면 연결하는것은 OK.

나머지 GPIO 설정과, UART 설정들..

/*******************************************************************************
* Function Name  : GPIO_Configuration
* Description    : Configures the different GPIO ports.
* Input          : None
* Output         : None
* Return         : None
*******************************************************************************/
void GPIO_Configuration(void)
{
    GPIO_InitTypeDef GPIO_InitStructure;

#if defined USE_USART1 && defined USE_STM3210B_EVAL
    /* Enable AFIO clock */
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);

    /* Enable the USART2 Pins Software Remapping */
    GPIO_PinRemapConfig(GPIO_Remap_USART1, ENABLE);
#endif

    /* Configure USARTx_Tx as alternate function push-pull */
    GPIO_InitStructure.GPIO_Pin = GPIO_TxPin;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
    GPIO_Init(GPIOx, &GPIO_InitStructure);
   
    /* Configure USARTx_Rx as input floating */
    GPIO_InitStructure.GPIO_Pin = GPIO_RxPin;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
    GPIO_Init(GPIOx, &GPIO_InitStructure);
 
    /* Enable GPIO clock */
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); 
}


/*******************************************************************************
* Function Name  : UART_Configuration
*******************************************************************************/
void UART_Configuration(void){
    USART_InitTypeDef USART_InitStructure;
/* USARTx configuration ------------------------------------------------------*/
    /* USARTx configured as follow:
        - BaudRate = 115200 baud 
        - Word Length = 8 Bits
        - One Stop Bit
        - No parity
        - Hardware flow control disabled (RTS and CTS signals)
        - Receive and transmit enabled
    */
    USART_InitStructure.USART_BaudRate = 115200;
    USART_InitStructure.USART_WordLength = USART_WordLength_8b;
    USART_InitStructure.USART_StopBits = USART_StopBits_1;
    USART_InitStructure.USART_Parity = USART_Parity_No ;
    USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
    USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
   
    /* Configure the USARTx */
    USART_Init(USARTx, &USART_InitStructure);
    /* Enable the USARTx */
    USART_Cmd(USARTx, ENABLE);
}


대략적으로 이정도는 최소한(??) 해줘야 이제 printf 가 살랑살랑 되려고 할꺼다.

하지만.. 이게 다라고 믿지는 말길...
신은 우리에게 항상 삽질을 던져주리라. ㅋㅋ
platform_config.h 등의 설정은 알아서 하길.. ㅋㅋㅋ..

(그런데 그정도도 설정 안 하면서 저 위에꺼를 배껴서 그냥 쓰기만 한다면....
어디서 에러가 나더라도 아마 잡기가 힘들지 않을까 싶다. )

'Study.. > Programming' 카테고리의 다른 글

WinCE Emulator 설치시 오류...  (0) 2009.10.27
문제가 있을 때는...  (0) 2009.08.06
linux 에서 실행시간 확인 하기..  (0) 2009.06.30
race condition ( thread, mutex, semaphore)  (0) 2009.05.29
no newline at end of file  (0) 2009.05.29
Posted by Yoons...
,