어떻게 보면.. const 키워드랑 비슷한데

폰노이만 방식이 아닌 하버드 아키텍쳐의 특성상 분리된 주소 공간을 가지는 상황에서
플래시 저장된 데이터를 이용함으로서 SRAM의 공간을 확보하는 방법이다.

The AVR is a Harvard architecture processor, where Flash is used for the program, RAM is used for data, and they each have separate address spaces. It is a challenge to get constant data to be stored in the Program Space, and to retrieve that data to use it in the AVR application.

[링크 : http://www.nongnu.org/avr-libc/user-manual/pgmspace.html

그런 이유로.. gcc implement 상으로는
const 형으로 데이터를 저장하고
읽을때는 LPM(Load Program Memory) 어셈명령을 이용하여 읽게 된다.
#define PGM_P   const char *
#define pgm_read_byte_near (   address_short )    __LPM((uint16_t)(address_short))
 
[링크 : http://www.nongnu.org/avr-libc/user-manual/group__avr__pgmspace.html]  

'embeded > AVR (ATmega/ATtiny)' 카테고리의 다른 글

Atmega8 으앙 쥬금!!! ㅠㅠ  (0) 2013.12.20
avr pud(pull up disable)  (0) 2013.12.19
AVR-GCC Program space  (0) 2013.12.19
ATmega128 BOOTSZ  (0) 2013.12.19
AVROSP  (0) 2013.12.18
AVR soft reset  (0) 2013.12.18
Posted by 구차니

댓글을 달아 주세요

부트로더 사이즈의 약자인거 같은데
부트로더를 사용하기 위해서는 퓨즈 비트도 변경되어야 하고 추가로 부트 영역의 크기를 지정할 수 있게 된다.
Atmega64와 Atmega128은 플래시 크기가 달라서 아래 표기되는 start address의 값이 달라진다.


BOOTSZ - 부트로더의 크기를 설정함
BOOTRST - 0x0000 이 아닌 부트로더 영역에서 시작하도록 함


 If a Boot Loader is implemented, it can be called either directly from the Application code using calls or jumps, or by programming the BOOTRST Fuse. When the BOOTRST Fuse is programmed, the CPU will start execution in the Boot Loader section on Reset, instead of starting at address 0. The BOOTRST Fuse can be changed using Serial or Parallel Programming.
 

[링크 : http://www.atmel.com/images/doc1644.pdf]


LB는 전체에 대한 메모리 보호를 하지만


BLB0프로그램에서 부트로더 영역을 읽고 쓰지 못하도록 하고 
BLB1부트로더에서 부트로더 영역을 읽거나 쓰지 못하도록 하는 설정이다(자체 보호 기능)


Boot Lock Modes (BLB)
Store Program Memory (SPM)

[링크 : http://www.atmel.com/images/doc1644.pdf] 


Load Program Memory (LPM)
[링크 : http://www.atmel.com/Images/doc1233.pdf]

'embeded > AVR (ATmega/ATtiny)' 카테고리의 다른 글

avr pud(pull up disable)  (0) 2013.12.19
AVR-GCC Program space  (0) 2013.12.19
ATmega128 BOOTSZ  (0) 2013.12.19
AVROSP  (0) 2013.12.18
AVR soft reset  (0) 2013.12.18
AVR Studio / avr-libc bootloader  (0) 2013.12.18
Posted by 구차니

댓글을 달아 주세요

만든데가 사라졌나.. 은근 구하기 힘드네..
AVR 부트로더를 이용한 AVR 업로드 프로그램이다.



[링크 : https://code.google.com/p/nsk-embedded-downloads/]

'embeded > AVR (ATmega/ATtiny)' 카테고리의 다른 글

AVR-GCC Program space  (0) 2013.12.19
ATmega128 BOOTSZ  (0) 2013.12.19
AVROSP  (0) 2013.12.18
AVR soft reset  (0) 2013.12.18
AVR Studio / avr-libc bootloader  (0) 2013.12.18
COM26T2844VTX LCD 데이터 시트  (0) 2013.07.23
Posted by 구차니

댓글을 달아 주세요

결국(?)은 와치독을 이용해서 리셋 시키는 것 외에는 없는걸려나?

[링크 : http://support.atmel.com/bin/customer.exe?=&action=viewKbEntry&id=21]
[링크 : http://bomoolchanggo.blogspot.kr/2009/10/avr-atmega128-software-reset.html]

'embeded > AVR (ATmega/ATtiny)' 카테고리의 다른 글

ATmega128 BOOTSZ  (0) 2013.12.19
AVROSP  (0) 2013.12.18
AVR soft reset  (0) 2013.12.18
AVR Studio / avr-libc bootloader  (0) 2013.12.18
COM26T2844VTX LCD 데이터 시트  (0) 2013.07.23
ST-23G / EL-23G 가지고 놀기  (0) 2013.07.07
Posted by 구차니

댓글을 달아 주세요

AVR Studio 도움말을 보니.. 섹션을 나누어서 부트로더로 할당이 가능하다는데...
자세한건 조금더 찾아 봐야겠네...

Select the Memory Type, name and address for the new segment and press Ok.

To specify a bootloader for example, set memory type to "Flash", give the bootloader a name and specify one of the allowed addresses for a bootloader on the current part. It is recommended to use .bootloader as name for bootloaders. It has become more or less a standard and avr-libc supports this by providing a macro BOOTLOADER_SECTION that can be put in front of a function to put that function into the section named .bootloader. (defined in <avr/boot.h>).

The address must be given as a hexadecimal number prefixed with 0x. It is interpreted as a word address for flash memory and as byte addresses for sram and eeprom memory.



이런 예제파일이 있는데 거의다 어셈블리 매크로.. ㄷㄷㄷ


[링크 : http://www.realsys.co.kr/lecture/avr_bootloader.pdf]
[링크 : http://radmoon.egloos.com/1023318]

[링크 : http://www.engineersgarage.com/.../How-To-Write-a-Simple-Bootloader-For-AVR-In-C-language] 가입필요
[링크 : http://ranken.blog.me/20073963060]
[링크 : http://ranken.blog.me/20071841061] AVR109 SELF PROGRAMING 번역

[링크 : http://blog.schicks.net/wp-content/uploads/2009/09/bootloader_faq.pdf ]
[링크 : http://www.atmel.com/images/doc1644.pdf] AVR109 SELF PROGRAMING

'embeded > AVR (ATmega/ATtiny)' 카테고리의 다른 글

AVROSP  (0) 2013.12.18
AVR soft reset  (0) 2013.12.18
AVR Studio / avr-libc bootloader  (0) 2013.12.18
COM26T2844VTX LCD 데이터 시트  (0) 2013.07.23
ST-23G / EL-23G 가지고 놀기  (0) 2013.07.07
IR LED 수광부 ST-23G를 이용한 장난질  (2) 2013.07.04
Posted by 구차니

댓글을 달아 주세요

embeded/ARM2013.12.18 01:21
LC1628 내용을 보려다가 뜬금없이 LM3S1968 킷트의
128x96 OLED 내용을 먼저 보고 분석을 하려고 해쓴데
EVB에서 SSI 관련 내용이 보여서 찾아보니.. 대단한건 아니고
2핀으로 장거리 전송을 하고 CLK와 DATA를 sync 시켜 보내는 방법

즉, 데이터를 패러럴이 아닌 시리얼로 보내기에 핀수를 줄일수 있는 장점이 있다.
아무튼.. OLED던 CLCD던 데이터 전송시 SSI 를 이용한다면
하드웨어 적으로 SSI를 제공하는 Stellaris에서 굳이 마다할 필요는 없을듯


SSI is based on RS-422[1] standards
[링크 : http://en.wikipedia.org/wiki/Synchronous_Serial_Interface]

'embeded > ARM' 카테고리의 다른 글

freescale i.mx283 / i.mx515  (0) 2014.08.19
ARM thumb과 Jazelle  (0) 2014.04.19
SSI - Synchronous Serial Interface  (0) 2013.12.18
ubuntu gcc-arm 패키지 목록  (0) 2013.08.31
jtag tap - Test Access Port  (0) 2013.07.05
H-JTAG에서 pxa255 + 28F128J 읽어오기(실패중)  (0) 2013.07.03
Posted by 구차니

댓글을 달아 주세요

embeded/ARM2013.08.31 17:11
심심해서 arm용 컴파일러가 어떤데 있나 찾아 봤는데
armel과 armhf 이라는게 있어서 검색!

ARM EABI Little-endian, a software port of Linux to the ARM architecture, contrasted with armhf
ARM hard float refers to an ARM architecture with the additional floating point hardware Vector Floating Point (VFP).
[링크 : http://en.wikipedia.org/wiki/Armel]
[링크 : http://en.wikipedia.org/wiki/Armhf]

$ sudo apt-cache search arm | grep gcc
gcc-4.4-arm-linux-gnueabi - GNU C compiler
gcc-4.4-arm-linux-gnueabi-base - GCC, the GNU Compiler Collection (base package)
gcc-4.4-arm-linux-gnueabihf - GNU C compiler
gcc-4.4-arm-linux-gnueabihf-base - GCC, the GNU Compiler Collection (base package)
gcc-4.5-arm-linux-gnueabi - The GNU C compiler
gcc-4.5-arm-linux-gnueabi-base - The GNU Compiler Collection (base package)
gcc-4.5-arm-linux-gnueabihf - The GNU C compiler
gcc-4.5-arm-linux-gnueabihf-base - The GNU Compiler Collection (base package)
gcc-4.6-arm-linux-gnueabi - GNU C compiler
gcc-4.6-arm-linux-gnueabi-base - GCC, the GNU Compiler Collection (base package)
gcc-4.6-arm-linux-gnueabihf - GNU C compiler
gcc-4.6-arm-linux-gnueabihf-base - GCC, the GNU Compiler Collection (base package)
gcc-4.6-multilib-arm-linux-gnueabi - GNU C compiler (multilib files)
gcc-4.6-multilib-arm-linux-gnueabihf - GNU C compiler (multilib files)
gcc-arm-linux-gnueabi - The GNU C compiler for armel architecture
gcc-arm-linux-gnueabihf - The GNU C compiler for armhf architecture
libgcc1-armel-cross - GCC support library
libgcc1-armhf-cross - GCC support library
libgcc1-dbg-armel-cross - GCC support library (debug symbols)
libgcc1-dbg-armhf-cross - GCC support library (debug symbols)
libhfgcc1-armel-cross - GCC support library (hard float ABI)
libhfgcc1-dbg-armel-cross - GCC support library (debug symbols)
libsfgcc1-armhf-cross - GCC support library (soft float ABI)
libsfgcc1-dbg-armhf-cross - GCC support library (debug symbols)



'embeded > ARM' 카테고리의 다른 글

ARM thumb과 Jazelle  (0) 2014.04.19
SSI - Synchronous Serial Interface  (0) 2013.12.18
ubuntu gcc-arm 패키지 목록  (0) 2013.08.31
jtag tap - Test Access Port  (0) 2013.07.05
H-JTAG에서 pxa255 + 28F128J 읽어오기(실패중)  (0) 2013.07.03
ARM EABI / OABI  (0) 2013.07.02
Posted by 구차니

댓글을 달아 주세요

embeded/Cortex-M3 Ti2013.08.16 17:21

2.2 Bit-Banding (bitband)
This example application demonstrates the use of the bit-banding capabilities of the Cortex-M3
microprocessor. All of SRAM and all of the peripherals reside within bit-band regions, meaning that
bit-banding operations can be applied to any of them. In this example, a variable in SRAM is set to
a particular value one bit at a time using bit-banding operations (it would be more efficient to do a
single non-bit-banded write; this simply demonstrates the operation of bit-banding).



제대로 이해한건진 모르겠지만..

비트 연산자를 사용할때 퍼포먼스향상을 위해 메모리를 왕창 쓰는 기술
비트 조작시 바이트 단위로 조작하고 그걸 하드웨어에서 지원하는 기술

이라고 하면 되려나?

비트 조작시
1. '바이트' 데이터 읽기
2. 쉬프트 연산
3. AND / OR / XOR 등의 연산
4. '바이트' 데이터 쓰기
이런식으로 최소 4 사이클 쓰게 되는데

bitband를 쓰게 되면
1. 주소 연산
2. 바이트 매핑된 '비트' 주소에 데이터 쓰기

이렇게 두번에 끝나게 된다.

[링크 : http://todayis.tistory.com/254]
[링크 : http://liminia.tistory.com/54]

'embeded > Cortex-M3 Ti' 카테고리의 다른 글

cortex-m3 ROM direct call  (0) 2015.09.25
LM3S Stellarisware - GPIOIntTypeSet  (0) 2015.08.03
bitband / cortex-m3  (0) 2013.08.16
LM3S1968과 H-JTAG(wiggler)  (0) 2013.06.28
cortex-m3 JTAG / X-LinkEx 1.1  (0) 2013.06.11
cortex-m3가 문제인가.. keil이 문제인가?  (2) 2013.02.05
Posted by 구차니

댓글을 달아 주세요

예전에 구매했던거 이제 AVR 살리고 했으니 써봐야지! 하는 마음에 보는데
헐.. 이게 머야 ㅠㅠ
[링크 : http://devicemart.co.kr/goods/view.php?seq=13665]

ATmega 칩의 퍼포먼스로 인해 최대한 부하를 줄이려면
데이터를 최대한 처리하지 않고 그대로 뿌리는 18bit 모드로 하는게 좋지 않을까 싶은데..
18bit 모드로 설정하기 위한 IM1, IM2 가 보이지 않는다는 함정이...



그냥 EVM 보드 구매해서 공부할까... 이중으로 돈이 나가는것 같은 기분이 드는데...
[링크 : http://devicemart.co.kr/goods/view.php?seq=14930]
[링크 : http://devicemart.co.kr/goods/view.php?seq=23648
Posted by 구차니

댓글을 달아 주세요

하다하다 안되서 비장의(!) 수단 적외선 카메라 ㅋㅋ

카드 정도는 뚫어버리는 위력에 깜놀 -_-a

카드로 가로막으면 이렇게!
(마그네틱 선의 적외선 차단능력은 짱짱 ㅋㅋ) 


엌ㅋ 슈발 마이아이 ㅋㅋㅋ


거리에 따라서는 5mV 까지는 올라가는데 이걸 5V로 증폭하려면 어떻게 해야하려나 ㅠㅠ

PANTECH | IM-A810K | 4.2mm | ISO-0 | 2013:07:07 16:48:09

마그네틱 부분으로 막혀서 0.02mV 까지 떨어진다.

PANTECH | IM-A810K | 4.2mm | ISO-0 | 2013:07:07 16:48:20


2013/07/04 - [embeded/ATmega/ATtiny (AVR)] - IR LED 수광부 ST-23G를 이용한 장난질

---
2013.07.08 추가
LM324와 EL-1K / ST-1K를 이용하는 회로도이다.
[링크 : http://blog.naver.com/jinung33/60044946859 ]
Posted by 구차니

댓글을 달아 주세요