ifconfig eth0 192.168.0.1 netmask 255.255.255.0


route add default gw 192.168.0.255 

'IT 공부 > linux' 카테고리의 다른 글

linux swap  (0) 2018.02.06
linux 파일시스템 mount 하기  (0) 2018.02.06
linux 시작 프로그램 등록하기  (0) 2018.02.06

linux swap 사용하기??


-dd 명령을 이용하여 swapfile 생성

#dd if=dev/sda1 of=/media/ubuntu/USB/swapfile bs=1024 count=524288


#mkswap /media/ubuntu/USB/swapfile

#swapon /media/ubuntu/USB/swapfile


스왑 메모리 확인

#free -m


부팅시 자동 인식 설정

#vi /etc/fstab


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

/boot/swapfile swap swap defaults

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


swap 제거


#swapoff /var/swap/swapfile


#rm -f var/swap/swapfile

'IT 공부 > linux' 카테고리의 다른 글

linux ip 설정  (0) 2018.02.06
linux 파일시스템 mount 하기  (0) 2018.02.06
linux 시작 프로그램 등록하기  (0) 2018.02.06

mount -t vfat /etc/ubuntu/어쩌고저꺼고 /media/ubuntu/폴더 


-> -t는 파일시스템 타입 vfat은 fat32 

-> 리눅스 파일 시스템의 경우에는 따로 -t을 적어줄 필요가 없음

'IT 공부 > linux' 카테고리의 다른 글

linux ip 설정  (0) 2018.02.06
linux swap  (0) 2018.02.06
linux 시작 프로그램 등록하기  (0) 2018.02.06

linux  상에서 시작 프로세스 등록하기


1. /etc/rc.local -> 파일내에 시작 프로세스 등록


2. /etc/profile.d/ -> 폴더내에 시작 쉘 스크립트 등록

 

'IT 공부 > linux' 카테고리의 다른 글

linux ip 설정  (0) 2018.02.06
linux swap  (0) 2018.02.06
linux 파일시스템 mount 하기  (0) 2018.02.06

clcd 시계

#include <mega128.h>      
#include <delay.h>
#define ENABLE  PORTA.2=1
#define DISABLE PORTA.2=0
#define LINE1   0x80
#define LINE2   0xc0
void rg_set(void)
{
        DDRC=0xff;
        DDRA=0xff;
}
void lcd_cmd(unsigned char cmd)
{       
        PORTA.0=0;
        PORTA.1=0;
        PORTC=cmd;
        ENABLE;
        DISABLE;
        delay_ms(2);
}
void lcd_clr(void)
{
        delay_ms(30);
        lcd_cmd(0x30);
        delay_ms(5);
        lcd_cmd(0x30);
        delay_us(100);
        lcd_cmd(0x30);
        
        lcd_cmd(0x38);
      //  lcd_cmd(0x01);
        lcd_cmd(0x0c);
        lcd_cmd(0x06);
}
void lcd_write(unsigned char data)
{       
        PORTC=data;
        PORTA.0=1;
        ENABLE;
        DISABLE;
        delay_us(40);
}
void lcd_str(unsigned char flash *str)
{       
        int i=0;
        
        while(str[i])
        {
                lcd_write(str[i]);
                i++;
        }
}
////////////////////////////////////////////////
/*                RTC                         */
///////////////////////////////////////////////
typedef unsigned char  u08; // 0 ~ 255     1바이트
typedef unsigned short u16; // 0 ~ 65535   2바이트
void RTC_Write (u08 addr, u08 data);
u08 RTC_Read (u08 addr);
void RTC_Set_Time (void);
void RTC_Get_Time (void);
u08 hour, hour2;   // 몇 시인지 저장할 변수
u08 min, min2;     // 몇 분인지 저장할 변수
u08 sec, sec2;     // 몇 초인지 저장할 변수     
u08 RTC_Get_Hour (void)
{
 return hour;
}
u08 RTC_Get_Hour2 (void)
{
 return hour2;
}
u08 RTC_Get_Min (void)
{
 return min;
}
u08 RTC_Get_Min2 (void)
{
 return min2;
}
u08 RTC_Get_Sec (void)
{
 return sec;
}
u08 RTC_Get_Sec2 (void)
{
 return sec2;
}                            
                
///////////////////////////////////////////////////////////////////////////
/////////                         RTC시작                        //////////
///////////////////////////////////////////////////////////////////////////    
void RTC_Write (u08 addr, u08 data)
{
        DDRB = 0xff;    // 포트B를 출력으로 설정
       
 PORTA.3=1;  // RD = high
 PORTA.4=1;  // WR = high
 PORTA.6=0; // CS = low
 
 PORTA.5=1; // ALE = high
 
 PORTB = addr;    // RTC에 Address 전송
 delay_us(2);    
 
 PORTA.5=0; // ALE = low   
 PORTA.4=0;  // WR = low
 PORTB = data;    // RTC에 데이터 전송  
 delay_us(2);   
 
 PORTA.4=1;  // WR = high 
 PORTA.5=1; // ALE = high
  
 PORTA.6=1;  // CS = high
}
u08 RTC_Read (u08 addr)
{
 u08 data;
 DDRB = 0xff;     // 포트B를 출력으로 설정
 
 PORTA.3=1;  // RD = high 
 PORTA.4=1;  // WR = high
 PORTA.6=0; // CS = low  
 delay_us(2); 
                                                                
 
 PORTB = addr;    // RTC에 Address 전송
 PORTA.5=1; // ALE = high
 delay_us(2); 
 PORTA.5=0; // ALE = low 
 
 DDRB = 0x00;     // 포트B를 입력으로 설정
 
 PORTA.3=0; // RD = low 
 delay_us(2);
 
 data = PINB;     // RTC로부터 데이터 수신  
 delay_us(2);
 
 PORTA.4=1;  //WR = high
 PORTA.3=1;  // RD = high
 PORTA.5=1; // ALE = high
 PORTA.6=1; // CS = high
 return data;
}
void RTC_Set_Time (void)
{
 RTC_Write(0x0A, 0x2f);  // A 레지스터 선택
                         // A 레지스터에 데이터 전송, 오실레이터를 ON 시키고,
                         // RTC가 시간을 유지하도록 설정, 주기적 인터럽트를 발생시킴(500ms)
                         // 이 코드가 실행되면서부터 RTC의 시간이 흘러가기 시작한다.
 RTC_Write(0x0B, 0x80);  // B 레지스터 선택
                         // 업데이트를 금지시킴
                         // 현재시각 설정하기
 RTC_Write(0x09, 0x08);  // 몇 년 2008년  
 RTC_Write(0x08, 0x06);  // 몇 월 5월
 RTC_Write(0x07, 0x09);  // 몇 일 22일 
 RTC_Write(0x06, 0x02);  // 몇 요일 목요일
 RTC_Write(0x04, 0x91);  // 몇 시 3시
 RTC_Write(0x02, 0x06);  // 몇 분 20분
 RTC_Write(0x00, 0x10);  // 몇 초 10초
  
 RTC_Write(0x0B, 0x40);       // B 레지스터 선택 , 저장완료코드
                                // 업데이트 정상동작, 주기적 인터럽트 인에이블 시킴
                                // (C 레지스터에 있는 주기적 인터럽트 플래그(PF)가 IRQ 핀을 Low로 구동하는 것을 가능하게 함)
                                // BCD 데이터 사용, 12-hour 모드 사용
                                // 주기적 인터럽트를 사용하지 않는다면 disable 시켜도 상관없다.
                                // 주기적 인터럽트는 MCU의 /INT0 단자에 연결해서 MCU가 주기적으로
                                // 인터럽트를 받기 위해서 사용하는 것임
}
void RTC_Get_Time (void)
{
 hour = hour2 = RTC_Read(0x04); // 몇 시인지 RTC로부터 시간을 읽어옴
                                // BCD 값이므로 상위 4비트와 하위 4비트를 각각 다른 변수에 저장함
 hour &= 0xF0;                  // 하위 4비트는 0으로 채우고 상위 4비트만 사용
 hour >>= 4;                    // 상위 4비트를 하위 4비트로 이동
 hour2 &= 0x0F;                // 상위 4비트는 0으로 채우고 하위 4비트만 사용
 //---------------------------------------
 min = min2 = RTC_Read(0x02); // 몇 분인지 RTC로부터 시간을 읽어옴
                              // BCD 값이므로 상위 4비트와 하위 4비트를 각각 다른 변수에 저장함
 min &= 0xF0;                 // 하위 4비트는 0으로 채우고 상위 4비트만 사용
 min >>= 4;                   // 상위 4비트를 하위 4비트로 이동
 min2 &= 0x0F;                // 상위 4비트는 0으로 채우고 하위 4비트만 사용
 //----------------------------------------
 sec = sec2 = RTC_Read(0x00); // 몇 초인지 RTC로부터 시간을 읽어옴
                              // BCD 값이므로 상위 4비트와 하위 4비트를 각각 다른 변수에 저장함
 sec &= 0xF0;                 // 하위 4비트는 0으로 채우고 상위 4비트만 사용
 sec >>= 4;                   // 상위 4비트를 하위 4비트로 이동
 sec2 &= 0x0F;                // 상위 4비트는 0으로 채우고 하위 4비트만 사용
}                                                                           
//////////////////////////////////////////////////
void main(void)
{
        rg_set();
         
                    
        SREG=0x80;           
       // RTC_Set_Time();
        lcd_clr();  
     /*   lcd_cmd(LINE1);
        lcd_str("CJB");
        lcd_cmd(LINE2);
        lcd_str("31JB");
      */  
        while(1){
  RTC_Get_Time();
  lcd_cmd(LINE1);           
  lcd_str("???");
 
  }
        ;
}


아두이노 코드를 보다가 의문이 들었다.


main함수는 어디에 있는 것일까??


보통 컴파일 후 코드가 main으로 점프하는 걸로 알고 있는데 말이다...


갑자기 궁금해서 여기저기 찾아본 결과


main 함수는 존재했다.


단지 다른 파일에 있고 아두이노 개발 환경에서는 그게 보이지 않았을 뿐...


파일의 위치는 설치경로\arduino\avr\cores\arduino\main.cpp 를 확인하면 된다.



관련 코드 부분은 아래에 첨부!! 



스케치에서 사용하는 함수가 setup과 loop이다.


함수를 보니 setup을 한번 실행하고 loop함수는 무한루프안에 있는 것을 확인 할 수 있다.


다른 함수들은 시간이 되면 보기로 하고 궁금증은 해결!!

'IT 공부 > arduino' 카테고리의 다른 글

아두이노 시작하기 - 컴퓨터 연결 및 툴 사용  (0) 2016.12.30
아두이노 시작하기 - 툴 설치  (0) 2016.12.30
아두이노  (0) 2016.12.30

저번 글에서 아두이노 프로그램을 설치를 완료했다.


이어서 컴퓨터와 연결 및 툴 사용에 대해서 알아보자.




설치형이면 설치 된 경로에 arduino.exe를 실행하면 되고


무설치형이면 압축을 푼 경로에서 arduino.exe를 실행하면 된다.




arduino.exe 실행화면







예제 실행


파일 - 예제 - 01.Basics - Blink 실행







예제 Blink를 실행하면 아래와 같이 창이 뜬다.






USB 케이블과 컴퓨터 연결


보드에 usb 케이블 꽂고 컴퓨터와 연결을 하면 보드에 있는 LED에 불이 들어온다.


윈도우7을 사용 중인데 디바이스 드라이버는 자동으로 잡혔음





보드 설정 


지금 사용하는 보드는 Arduino Leonardo r3 호환보드이므로 Arduino Leonardo 선택






시리얼 포트 설정


COM3 (Arduino Leonardo) 선택 -> 보드랑 연결된 시리얼 포트 설정 하면 됨 (괄호안에 보드 이름이 잡혀 있음)


혹시 보드 이름이 없으면 디바이스 드라이버 체크가 필요







업로드를 누르고 업로드 완료가 되면 아래와 같이 업로드 완료. 라는 메세지가 뜬다.







업로드 완료 후 보드를 보면 L이라는 LED가 깜빡이는 모습을 확인 할 수 있다.







위 코드를 설명 하면


digitalWrite(LED_BUILTIN, HIGH); ->  LED on 

delay(1000);                            -> 상태를 1초 유지

digitalWrite(LED_BUILTIN, LOW);  -> LED off 

delay(1000);                            -> 상태를 1초 유지


delay(1000)은 ms 단위 이므로 1초를 뜻함


조금 더 재미를 느껴 보려면 아래 소스코드에서 delay(1000)에서 1000 대신 다른 값으로 변경 해볼 수 있다.


숫자를 더 크게 바꾸면 LED의 상태는 더 느리게 바뀔것이고


숫자를 더 작게 바꾸면 LED의 상태는 더 빠르게 바뀔것이다.


단 깜빡이는 속도가 너무 빠르면 우리 눈에서는 계속 켜져 있는 것 처럼 보일 것임.

'IT 공부 > arduino' 카테고리의 다른 글

아두이노 main 함수는 어디에??  (0) 2017.01.02
아두이노 시작하기 - 툴 설치  (0) 2016.12.30
아두이노  (0) 2016.12.30

아두이노로 개발을 하기 위해서는 컴파일 및 다운로드를 해줄수 있는 프로그램인 통합개발환경이 필요하다.


프로그램은 아래 사이트에서 받는다.

https://www.arduino.cc/en/Main/Software


그림을 보며 따라하면 된다.





설치형이나 무설치형을 다운로드 한다.


설치형이면 설치 된 경로에 arduino.exe를 실행하면 되고


무설치형이면 압축을 푼 경로에서 arduino.exe를 실행하면 된다.




arduino.exe 실행화면



위와 같이 실행되면 설치 끝!!

(처음 실행되는 파일이나 프로젝트 명은 다를 수 있다. 나는 프로젝트를 몇번 실행했기 때문...)



'IT 공부 > arduino' 카테고리의 다른 글

아두이노 main 함수는 어디에??  (0) 2017.01.02
아두이노 시작하기 - 컴퓨터 연결 및 툴 사용  (0) 2016.12.30
아두이노  (0) 2016.12.30

집에서 심심해서 얼마전에 구매한 보드가 있다.


바로 아두이노 레오나르도 r3 호환보드



 

구매처는 메카솔루션


가격도 엄청 저렴하다 (8800원)


정품이 아닌 중국 제품이라서 그런 것 같다...


불법인지 아닌지는 모르겠지만 이미 구매를...



보드만 있으면 심심하니까 아래 디바이스들도 구매 했다.

  • 터치스크린이 포함된 2.8인치 TFT LCD
  • 아두이노 블루투스 모듈
  • 점퍼 케이블


우선 TFT LCD는 제공된 소스가 있어서 테스트를 완료했다.


테스트 했던 내용은 곧 정리해야겠다



zybo 보드를 산지 벌써 2년?정도 된 것 같다.

 

집에서 먼지만 쌓이며 썩히다가 지금부터라도 공부를 시작해보려고 한다...

 

특징을 대충 정리하자면 아래와 같다.

 

 

zybo 아키텍쳐

 

 

zybo에 사용된 fpga 스펙

 

The Zynq 7010 AP SoC offers the following features:
 650Mhz dual-core Cortex-A9 processor
 DDR3 memory controller with 8 DMA channels
 High-bandwidth peripheral controllers: 1G Ethernet, USB 2.0, SDIO
 Low-bandwidth peripheral controller: SPI, UART, CAN, I2C
 Reprogrammable logic equivalent to Artix-7 FPGA
  o 4,400 logic slices, each with four 6-input LUTs and 8 flip-flops
  o 240 KB of fast block RAM
  o Two clock management tiles, each with a phase-locked loop (PLL) and mixed-mode clock manager (MMCM)
  o 80 DSP slices
  o Internal clock speeds exceeding 450MHz
  o On-chip analog-to-digital converter (XADC)

 ZYNQ XC7Z010-1CLG400C
 512MB x32 DDR3 w/ 1050Mbps bandwidth
 Dual-role (Source/Sink) HDMI port
 16-bits per pixel VGA source port
 Trimode (1Gbit/100Mbit/10Mbit) Ethernet PHY
 MicroSD slot (supports Linux file system)
 OTG USB 2.0 PHY (supports host and device)
 External EEPROM (programmed with 48-bit globally unique EUI-48/64™ compatible identifier)
 Audio codec with headphone out, microphone and line in jacks
 128Mb Serial Flash w/ QSPI interface
 On-board JTAG programming and UART to USB converter
 GPIO: 6 pushbuttons, 4 slide switches, 5 LEDs
 Six Pmod ports (1 processor-dedicated, 1 dual analog/digital, 3 high-speed differential, 1 logicdedicated)

 
 
 

zybo 보드사진

+ Recent posts