embeded/ARM2013. 8. 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
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/ARM2013. 7. 5. 08:01

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

SSI - Synchronous Serial Interface  (0) 2013.12.18
ubuntu gcc-arm 패키지 목록  (0) 2013.08.31
H-JTAG에서 pxa255 + 28F128J 읽어오기(실패중)  (0) 2013.07.03
ARM EABI / OABI  (0) 2013.07.02
TI DM368와 H-JTAG(실패)  (0) 2013.06.28
Posted by 구차니
embeded/ARM2013. 7. 3. 10:35
주소가 잘못되었나 id가 잘못되었나 멘붕중...
일단 RedBoot에서는 
0x00000000 0x04000000 0xa0000000 전부 동일한 내용이 읽힌다.

아마도
0x00000000은 플래시 메모리 이고
0xA0000000은 메모리에 맵핑된 플래시 메모리의 영역일 것 같고
0x04000000은 머지?

음.. 다시 합당한 걸로 추론을 해보면
0x00000000은 RAM
0x04000000은 MMIO로 연결된 FLASH 영역?
0xA0000000은 FLASH


RedBoot> version

RedBoot(tm) bootstrap and debug environment [ROM]
Non-certified release, version UNKNOWN - built 17:44:04, Apr 16 2003

Platform: COGENT (XScale)
Copyright (C) 2000, 2001, Red Hat, Inc.

RAM: 0xa0000000-0xa2000000, 0xa0012fb8-0xa1ebf000 available
FLASH: 0x04000000 - 0x06000000, 128 blocks of 0x00040000 bytes each.

RedBoot> ldrh 0xa0000000
0x    f018 from 0xa0000000

RedBoot> ldrh 0x00000000
0x    f018 from 0x       0

RedBoot> ldrh 0x04000000
0x    f018 from 0x 4000000

RedBoot> ldrh 0x0000000f
0x    e59f from 0x       e

RedBoot> ldrh 0xa000000f
0x    e59f from 0xa000000e

RedBoot> ldrh 0x0400000f
0x    e59f from 0x 400000e 

2013/07/02 - [하드웨어/PalmPalm Tynux Box] - tynuxbox X와 H-JTAG (wiggler / parallel)
2013/07/03 - [하드웨어/PalmPalm Tynux Box] - palmpalm = PXA255 + Intel 28F128J3


일단 이건.. H-JTAG에서 사용하는 초기화 파일로
모델이 조금 다른 28F320J3 용이다. (4MB NOR)


일단 16bit 1chip 으로 16bit band width 인거 같고..
Flash address가 0x10000000 으로 RAM 보다 뒤에 시작한다.


대망(?)의 Init Script 인데.. 음.. 부디 28F128J3 에도 적용이 되길 ㅠㅠ


RESET과 VERIFICATION이 추가 되었다.


파일 내용은 아래와 같다.
FLASH SECTION:
INTEL
28F320J3
MEMORY SECTION:
16-BIT X 1-CHIP
0x10000000
0x00300000
XTAL SECTION:
NULL
TCK SECTION:
0
0
SCRIPT SECTION:
SysReset+++//Rest system
SetMem+32-Bit+0xFFFFFD44+0x00008000//Disable watchdog
SetMem+32-Bit+0xFFFFFC20+0x00000801//Enable main oscillator
Delay+++25//wait for main osc stable
SetMem+32-Bit+0xFFFFFC28+0x206D9F09//Setup PLL A
SetMem+32-Bit+0xFFFFFC2C+0x20A21F0F//Setup PLL B
Delay+++25//wait for PLL stable
SetMem+32-Bit+0xFFFFFC30+0x00000102//Select PLL A as clock source
Delay+++100//wait for system stable
SetMem+32-Bit+0xFFFFE400+0x02020202//SMC_SETUP
SetMem+32-Bit+0xFFFFE404+0x0D0D0D0D//SMC_PULSE
SetMem+32-Bit+0xFFFFE408+0x00100010//SMC_CYCLE
SetMem+32-Bit+0xFFFFE40C+0x00041003//SMC_MODE
PGMOPTION SECTION:
ENABLE_RESET
ENABLE_VERIFICATION2
ADDON SECTION:
 
[INIT_TRITON_RAM]
memory write 0x48000008 0x12DC24D8          ; MSC0 = 0x26F226F2
memory read 0x48000008                      ; read MSC0
memory write 0x4800000C 0x7FF07FF0          ; MSC1 = 0x3FF4A441
wait  10
memory write 0x48000010 0x7FF07FF0          ; MSC2 = 0x00007FF0
wait  10
memory write 0x48000004 0x00000018          ; MDREFR = 0x00000018
memory write 0x4800001C 0x00000000          ; SXCNFG = 0x00000000
memory write 0x48000004 0x00010018          ; MDREFR = 0x00010018
wait  10
memory write 0x48000004 0x0009C030          ; MDREFR = 0x000BC018
memory write 0x48000000 0x00000AA8          ; MDCNFG = 0x00000AA8
wait  100
memory write 0x48000000 0x00000AAD          ; MDCNFG = 0x00000AA9
memory write 0x48000040 0x00220032          ; MDMRS = 0x00220032

[FLASH_28F128J3A]
; auto detect 28F128J3(A) or 28F128P30B
CHIP                    = 28F128J3(A)       ; flash chip
CHIP                    = 28F128P30B        ; flash chip
ACCESS_METHOD           = AUTO              ; program method auto
CHECK_ID                = YES               ; check chip ID
CHIP_WIDTH              = 16                ; chip is in 16 bit configuration
CHIP_COUNT              = 1                 ; one chip is used
BASE_ADDR               = 0                 ; chip is mapped at 0x0000000
FILE                    = "myfile.bin", BIN, 0 ; file to program
AUTO_ERASE              = NO                ; erase before program
AUTO_LOCK               = NO                ; lock after program
 
[링크 : http://download.ronetix.info/peedi/cfg_examples/xscale/pxa255.cfg] 

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

ubuntu gcc-arm 패키지 목록  (0) 2013.08.31
jtag tap - Test Access Port  (0) 2013.07.05
ARM EABI / OABI  (0) 2013.07.02
TI DM368와 H-JTAG(실패)  (0) 2013.06.28
HibernateRTCSet  (0) 2012.04.19
Posted by 구차니
embeded/ARM2013. 7. 2. 16:08
arm-linux-gcc 이런거 대신에 언젠가 부터 야곰야곰 arm-eabi-gcc 이런게 보이길래 검색..
(cortex-m3 에서도 우연히(!) 보게 된적은 있지만..)


확실하게 어떤 건진 모르겠고
ELF와 같은 바이너리 호환을 위한 컨테이너 같은데
ARMv5 ARMv7 이런식으로 ARM 아키텍쳐도 여러가지이니
이러한 ARM 프로세서들에 대한 바이너리 호환성을 위해서 만든것 같다.


기존의 ABI를 OABI로
신형 ABI를 EABI로 규정

[링크 : http://en.wikipedia.org/wiki/Application_binary_interface]
[링크 : http://wiki.debian.org/ArmEabiPort

[링크 : http://kldp.org/node/82715]
[링크 : http://iprinceps.egloos.com/610936]
[링크 : http://forum.falinux.com/zbxe/index.php?document_srl=574604]
 

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

jtag tap - Test Access Port  (0) 2013.07.05
H-JTAG에서 pxa255 + 28F128J 읽어오기(실패중)  (0) 2013.07.03
TI DM368와 H-JTAG(실패)  (0) 2013.06.28
HibernateRTCSet  (0) 2012.04.19
KEIL Program Size 항목별 의미  (0) 2012.04.19
Posted by 구차니
embeded/ARM2013. 6. 28. 15:50
핀을 연결하는데 EMU0/EMU1 설정값 문제인지 되질 않는다 -_-

전원을 연결하면 이렇게 인식을 못하고


전원을 뽑으면 이렇게 미묘하게(?) 인식되는척 만 하고 -_-


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

H-JTAG에서 pxa255 + 28F128J 읽어오기(실패중)  (0) 2013.07.03
ARM EABI / OABI  (0) 2013.07.02
HibernateRTCSet  (0) 2012.04.19
KEIL Program Size 항목별 의미  (0) 2012.04.19
타이머 핸들러 시간 충돌 안나게 조절하기?  (0) 2012.04.13
Posted by 구차니
embeded/ARM2012. 4. 19. 22:48
이상하게 RTCSet만 하려고 하면 시스템이 멈추는 문제가 발생해서
driverlib 소스를 뒤져봐도 딜레이 주는것 외에는 딱히 문제가 없어 보이는데
뒤지다 뒤지다 뒤져도 답이 안나온다 -_-


일단 hibernate mode로 항상 들어가게 해놓고
분기조건으로 어떻게 할지를 안해줘서 그런걸려나?

[링크 : http://e2e.ti.com/support/microcontrollers/stellaris_arm_cortex-m3_microcontroller/f/471/t/183421.aspx]
Posted by 구차니
embeded/ARM2012. 4. 19. 19:31
KEIL로 컴파일 하면 아래와 같은 문구가 나오고
 Program Size: Code=34744 RO-data=11400 RW-data=1344 ZI-data=9872

의미는 아래와 같다.
1. ZI Data: Zero Initialized Data

2. RO Data are the constants.
Total
RAM Size = RW Data + ZI Data
Total ROM Size = Code + RO Data + RW Data

3. Some constants (RO data) are generated by the compiler/linker and might also be from libraries. So they will exist regardless that your program doesn't explicitly defines any constants. 

[링크 : http://www.keil.com/forum/10624/


글 완전 날로먹은듯? ㅋㅋㅋ

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

TI DM368와 H-JTAG(실패)  (0) 2013.06.28
HibernateRTCSet  (0) 2012.04.19
타이머 핸들러 시간 충돌 안나게 조절하기?  (0) 2012.04.13
ti lm3s 시리즈 하이버네이트 모드 + RTC 사용하기  (2) 2012.04.04
TI LM3S1607 time epoch  (0) 2012.03.27
Posted by 구차니
embeded/ARM2012. 4. 13. 11:14
엑셀을 이용한 꽁수.
아무튼 100ms 250ms 500ms 1000ms 4개를 돌리는데
아무래도 한시간에 몰아치기 하면 시간 정확도도 떨어지고 그럴테니
최대한 분산해주려고 해도 이정도 밖에 못하겠네 ㅠ.ㅠ

void Timer0A_Handler(void)		// Timer0A - internal timer
{
	TimerIntClear(TIMER0_BASE, TIMER_TIMA_TIMEOUT);

	count_10ms++;

	if ((count_10ms + 75) %  100 == 0)		{TimeService_100ms();}
	if ((count_10ms +  1) %  250 == 0)		{TimeService_250ms();}
	if ((count_10ms + 50) %  500 == 0)		{TimeService_500ms();}
	if ((count_10ms + 25) % 1000 == 0)		{TimeService_1000ms();	count_10ms = 0;}
}



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

HibernateRTCSet  (0) 2012.04.19
KEIL Program Size 항목별 의미  (0) 2012.04.19
ti lm3s 시리즈 하이버네이트 모드 + RTC 사용하기  (2) 2012.04.04
TI LM3S1607 time epoch  (0) 2012.03.27
H-JTAG 에러이유?  (0) 2012.03.23
Posted by 구차니
embeded/ARM2012. 4. 4. 10:04
stellarisware를 설치하면 기본적으로 추가되는 예제를 추려내서 테스트 해보면 되는데,
대부분의 장비들이 굳이 하이버네이트 모드로 들어가는 행동을 취할수 없을때가 있다.
항상 켜져있어야 하는 장비인데, 언제꺼질지 모르지만 시간은 유지해야 한다면
하이버네이트 모드를 들어갈수 있는 시점을 정할수 없기 때문에 항상 하이버네이트 모드를 켜주면 된다.

C:\StellarisWare\boards\ek-lm3s1968\hibernate\hibernate.c
파일을 참고해서 추려내자면
static void SetRTCFucntion(void)
{
//	time_t current_time;
//	struct tm struct_time = { 0, 0, 10, 26,2,2012 - 1900,0,0,0};
//	current_time = mktime(&struct_time);
	
	SysCtlPeripheralEnable(SYSCTL_PERIPH_HIBERNATE);
		HibernateEnableExpClk(SysCtlClockGet());
		HibernateClockSelect(HIBERNATE_CLOCK_SEL_DIV128);
		HibernateRTCEnable();
//		HibernateRTCSet(current_time);
		HibernateWakeSet(HIBERNATE_WAKE_PIN);
		HibernateRequest();
}

일단 RTC를 사용하려면 무조건 하이버네이트 장치를 사용하도록 해야한다.
    SysCtlPeripheralEnable(SYSCTL_PERIPH_HIBERNATE);

하이버네이트 모듈에 들어갈 클럭을 지정해주는데, 32.768Khz가 들어가거나 4.194304Mhz를 /128 해서 넣어주도록 한다.
    HibernateEnableExpClk(SysCtlClockGet());
    HibernateClockSelect(HIBERNATE_CLOCK_SEL_DIV128); // 4.194304 Mhz input divider to 32.768kHz

 하이버네이트 모듈에 내장된 RTC 를 사용하도록 설정하고
    HibernateRTCEnable(); 

원인은 알수 없지만 wakeup 조건을 반드시 설정해 주어야 하이버네이트 모드가 작동한다.
WAKE 핀은 NC 처리해도 작동에 이상은 없는듯 하다.
    HibernateWakeSet(HIBERNATE_WAKE_PIN); 

마지막으로 하이버네이트 모드를 들어가도록 요청한다.
    HibernateRequest(); 


RTC 시간은 배터리가 소진된 시점의 마지막 시간이 다음 부팅시까지 유지된다.

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

KEIL Program Size 항목별 의미  (0) 2012.04.19
타이머 핸들러 시간 충돌 안나게 조절하기?  (0) 2012.04.13
TI LM3S1607 time epoch  (0) 2012.03.27
H-JTAG 에러이유?  (0) 2012.03.23
KEIL MDK(ARM)에 H-JTAG 사용하기  (0) 2012.03.23
Posted by 구차니
embeded/ARM2012. 3. 27. 16:38

실험적으로 1900인건 찾았는데 음..

일단 아래의 메뉴얼은 deprecated 된 녀석이라 현재 버전의 stellarisware에는 존재하지 않는 내용이고

[링크 : http://www.ti.com/lit/ug/spmu063/spmu063.pdf]


KEIL MDK에서 epoch 관련 검색을 해보고는 있지만 딱히 눈에 띄지 않고 있다.

그나저나 이런 epoch가 라이브러리 차이라면..

MDK냐 code sorcery냐 codered 냐에 따라서도 다를수 있다는 의미이려나?


2012/03/27 - [Linux] - localtime() 과 mktime()을 이용하기


Posted by 구차니