30


-------------------------------------------------------------------------------
0x00000000 - 0x0003ffff 512kb system rom (BOOT_ROM)

Exception Vectors

0x00000000 Reset Supervisor
0x00000004 Undefined instruction Undefined
0x00000008 Software Interrupt Supervisor
0x0000000C Abort (prefetch) Abort
0x00000010 Abort (data) Abort
0x00000014 Reserved Reserved
0x00000018 IRQ IRQ
0x0000001C FIQ FIQ

-------------------------------------------------------------------------------
0x0c000000 - 0x0c7fffff 8mb workram (WORK_RAM)
0x0c780000 - 0x0c7fffff 0.5mb used by system
-------------------------------------------------------------------------------
0x14000000 - 0x15a0003f hardware registers

- The special registers have to be accessed by the recommended access unit.
- All registers except ADC registers, RTC registers and UART registers must be
read/written in word unit (32bit) at little endian.
- It is very important that the ADC registers, RTC registers and UART registers
be read/written by the specified access unit and the specified address.
Moreover, one must carefully consider which endian mode is used.

W: 32-bit register, access by LDR/STR or int type pointer(int *)
HW: 16-bit register, access by LDRH/STRH or short int type pointer(short int *)
B: 8-bit register, access by LDRB/STRB or char type pointer(char int *)
-------------------------------------------------------------------------------

MEMORY CONTROLLER

BWSCON 0x14000000 W r/w Bus Width & Wait Status Control
BANKCON0 0x14000004 Boot ROM Control
BANKCON1 0x14000008 BANK1 Control
BANKCON2 0x1400000c BANK2 Control
BANKCON3 0x14000010 BANK3 Control
BANKCON4 0x14000014 BANK4 Control
BANKCON5 0x14000018 BANK5 Control
BANKCON6 0x1400001c BANK6 Control
BANKCON7 0x14000020 BANK7 Control
REFRESH 0x14000024 DRAM/SDRAM Refresh Control
BANKSIZE 0x14000028 Flexible Bank Size
MRSRB6 0x1400002c Mode register set for SDRAM
MRSRB7 0x14000030 Mode register set for SDRAM

USB HOST CONTROLLER

HcRevision 0x14200000 W Control and Status Group
HcControl 0x14200004
HcCommonStatus 0x14200008
HcInterruptStatus 0x1420000c
HcInterruptEnable 0x14200010
HcInterruptDisable 0x14200014
HcHCCA 0x14200018 Memory Pointer Group
HcPeriodCuttentED 0x1420001c
HcControlHeadED 0x14200020
HcControlCurrentED 0x14200024
HcBulkHeadED 0x14200028
HcBulkCurrentED 0x1420002c
HcDoneHead 0x14200030
HcRmInterval 0x14200034 Frame Counter Group
HcFmRemaining 0x14200038
HcFmNumber 0x1420003c
HcPeriodicStart 0x14200040
HcLSThreshold 0x14200044
HcRhDescriptorA 0x14200048 Root Hub Group
HcRhDescriptorB 0x1420004c
HcRhStatus 0x14200050
HcRhPortStatus1 0x14200054
HcRhPortStatus2 0x14200058

INTERRUPT CONTROLLER

SRCPND 0x14400000 W R/W Interrupt Request Status
INTMOD 0x14400004 W Interrupt Mode Control
INTMSK 0x14400008 R/W Interrupt Mask Control
PRIORITY 0x1440000c W IRQ Priority Control
INTPND 0x14400010 R/W Interrupt Request Status
INTOFFSET 0x14400014 R Interrupt request source

DMA

DISRC0 0x14600000 W R/W DMA 0 Initial Source
DIDST0 0x14600004 DMA 0 Initial Destination
DCON0 0x14600008 DMA 0 Control
DSTAT0 0x1460000c R DMA 0 Count
DCSRC0 0x14600010 DMA 0 Current Source Address
DCDST0 0x14600014 DMA 0 Current Destination Address
DMASKTRIG0 0x14600018 R/W DMA 0 Mask Trigger
DISRC1 0x14600020 W R/W DMA 1 Initial Source
DIDST1 0x14600024 DMA 1 Initial Destination
DCON1 0x14600028 DMA 1 Control
DSTAT1 0x1460002c R DMA 1 Count
DCSRC1 0x14600030 DMA 1 Current Source Address
DCDST1 0x14600034 DMA 1 Current Destination Address
DMASKTRIG1 0x14600038 R/W DMA 1 Mask Trigger
DISRC2 0x14600040 W R/W DMA 2 Initial Source
DIDST2 0x14600044 DMA 2 Initial Destination
DCON2 0x14600048 DMA 2 Control
DSTAT2 0x1460004c R DMA 2 Count
DCSRC2 0x14600050 DMA 2 Current Source Address
DCDST2 0x14600054 DMA 2 Current Destination Address
DMASKTRIG2 0x14600058 R/W DMA 2 Mask Trigger
DISRC3 0x14600060 W R/W DMA 3 Initial Source
DIDST3 0x14600064 DMA 3 Initial Destination
DCON3 0x14600068 DMA 3 Control
DSTAT3 0x1460006c R DMA 3 Count
DCSRC3 0x14600060 DMA 3 Current Source Address
DCDST3 0x14600064 DMA 3 Current Destination Address
DMASKTRIG3 0x14600068 R/W DMA 3 Mask Trigger

CLOCK & POWER MANAGEMENT

LOCKTIME 0x14800000 W R/W PLL Lock Time Counter
MPLLCON 0x14800004 MPLL Control
UPLLCON 0x14800008 UPLL Control
CLKCON 0x1480000c Clock Generator Control
CLKSLOW 0x14800010 Slow Clock Control
CLKDIVN 0x14800014 Clock divider Control

LCD CONTROLLER

LCDCON1 0x14a00000 W R/W LCD Control 1
LCDCON2 0x14a00004 LCD Control 2
LCDCON3 0x14a00008 LCD Control 3
LCDCON4 0x14a0000c LCD Control 4
LCDCON5 0x14a00010 LCD Control 5
LCDSADDR1 0x14a00014 STN/TFT: Frame Buffer Start Address1
LCDSADDR2 0x14a00018 STN/TFT: Frame Buffer Start Address2
LCDSADDR3 0x14a0001c STN/TFT: Virtual Screen Address Set
REDLUT 0x14a00020 STN: Red Lookup Table
GREENLUT 0x14a00024 STN: Green Lookup Table
BLUELUT 0x14a00028 STN: Blue Lookup Table
DITHMODE 0x14a0004c STN: Dithering Mode
TPAL 0x14a00050 TFT: Temporary Palette

0x14A00400 palette memory
Palette format is 5:6:5 (or 5:5:5:1)
each entry is 32bit

UART

ULCON0 0x15000000 W R/W UART 0 Line Control
UCON0 0x15000004 UART 0 Control
UFCON0 0x15000008 UART 0 FIFO Control
UMCON0 0x1500000c UART 0 Modem Control
UTRSTAT0 0x15000010 R UART 0 Tx/Rx Status
UERSTAT0 0x15000014 UART 0 Rx Error Status
UFSTAT0 0x15000018 UART 0 FIFO Status
UMSTAT0 0x1500001c UART 0 Modem Status
UTXH0 0x15000020 B W UART 0 Transmission Hold
URXH0 0x15000024 R UART 0 Receive Buffer
UBRDIV0 0x15000028 W R/W UART 0 Baud Rate Divisor

ULCON1 0x15004000 W R/W UART 1 Line Control
UCON1 0x15004004 UART 1 Control
UFCON1 0x15004008 UART 1 FIFO Control
UMCON1 0x1500400c UART 1 Modem Control
UTRSTAT1 0x15004010 R UART 1 Tx/Rx Status
UERSTAT1 0x15004014 UART 1 Rx Error Status
UFSTAT1 0x15004018 UART 1 FIFO Status
UMSTAT1 0x1500401c UART 1 Modem Status
UTXH1 0x15004020 B W UART 1 Transmission Hold
URXH1 0x15004024 R UART 1 Receive Buffer
UBRDIV1 0x15004028 W R/W UART 1 Baud Rate Divisor

31


PWM TIMER

TCFG0 0x15100000 W R/W Timer Configuration
TCFG1 0x15100004 Timer Configuration
TCON 0x15100008 Timer Control
TCNTB0 0x1510000c Timer Count Buffer 0
TCMPB0 0x15100010 Timer Compare Buffer 0
TCNTO0 0x15100014 R Timer Count Observation 0
TCNTB1 0x15100018 R/W Timer Count Buffer 1
TCMPB1 0x1510001c Timer Compare Buffer 1
TCNTO1 0x15100020 R Timer Count Observation 1
TCNTB2 0x15100024 R/W Timer Count Buffer 2
TCMPB2 0x15100028 Timer Compare Buffer 2
TCNTO2 0x1510002c R Timer Count Observation 2
TCNTB3 0x15100030 R/W Timer Count Buffer 3
TCMPB3 0x15100034 Timer Compare Buffer 3
TCNTO3 0x15100038 R Timer Count Observation 3
TCNTB4 0x1510003c R/W Timer Count Buffer 4
TCNTO4 0x15100040 R Timer Count Observation 4

USB DEVICE

FUNC_ADDR_REG 0x15200140 W R/W Function Address
PWR_REG 0x15200144 Power Management
INT_REG 0x15200148 R Interrupt Pending and Clear
INT_MASK_REG 0x1520014c R/W Interrupt Mask
FRAME_NUM_REG 0x15200150 R Frame Number
RESUME_CON_REG 0x15200154 R/W Resume Signal Control
EP0_CSR 0x15200160 Clock Generator Control
EP0_MAXP 0x15200164 End Point0 MAX Packet
EP0_OUT_CNT 0x15200168 End Point0 Out Write Count
EP0_FIFO 0x1520016c End Point0 FIFO Read/Write
EP1_IN_CSR 0x15200180 End Point1 in Control Status
EP1_IN_MAXP 0x15200184 End Point1 in MAX Packet
EP1_FIFO 0x15200188 W End Point2 FIFO Write
EP2_IN_CSR 0x15200190 R/W End Point2 in Control Status
EP2_IN_MAXP 0x15200194 End Point2 in MAX Packet
EP2_FIFO 0x15200198 W End Point2 FIFO Write
EP3_OUT_CSR 0x152001a0 R/W End Point3 Out Control Status
EP3_OUT_MAXP 0x152001a4 End Point3 Out MAX Packet
EP3_OUT_CNT 0x152001a8 R End Point3 Out Write Count
EP3_FIFO 0x152001ac End Point3 FIFO Read
EP4_OUT_CSR 0x152001b0 R/W End Point4 Out Control Status
EP4_OUT_MAXP 0x152001b4 End Point4 Out MAX Packet
EP4_OUT_CNT 0x152001b8 R End Point4 Out Write Count
EP4_FIFO 0x152001bc End Point4 FIFO Read
DMA_CON 0x152001c0 R/W DMA Interface Control
DMA_UNIT 0x152001c4 DMA Transfer Unit Counter
DMA_FIFO 0x152001c8 DMA Transfer FIFO Counter
DMA_TX 0x152001cc DMA Total Transfer Counter
TEST_MODE 0x152001f4 W Test Mode Control
IN_CON_REG 0x152001f8 In Packet Number Control

WATCHDOG TIMER

WTCON 0x15300000 W R/W Watch-Dog Timer Mode
WTDAT 0x15300004 Watch-Dog Timer Data
WTCNT 0x15300008 Watch-Dog Timer Count

IIC

IICCON 0x15400000 W R/W IIC Control
IICSTAT 0x15400004 IIC Status
IICADD 0x15400008 IIC Address
IICDS 0x1540000c IIC Data Shift

IIS

IISCON 0x15508000 HW,W R/W IIS Control
IISMOD 0x15508004 HW,W IIS Mode
IISPSR 0x15508008 HW,W IIS Prescaler
IISFIFCON 0x1550800c HW,W IIS FIFO Control
IISFIF 0x15508010 HW IIS FIFO Entry

I/O PORT

PACON 0x15600000 W R/W Port A Control
PADAT 0x15600004 Port A Data
PBCON 0x15600008 Port B Control
PBDAT 0x1560000c Port B Data
PBUP 0x15600010 Pull-up Control B
PCCON 0x15600014 Port C Control
PCDAT 0x15600018 Port C Data
PCUP 0x1560001c Pull-up Control C
PDCON 0x15600020 Port D Control
PDDAT 0x15600024 Port D Data
PDUP 0x15600028 Pull-up Control D
PECON 0x1560002c Port E Control
PEDAT 0x15600030 Port E Data
PEUP 0x15600034 Pull-up Control E
PFCON 0x15600038 Port F Control
PFDAT 0x1560003c Port F Data
PFUP 0x15600040 Pull-up Control F
PGCON 0x15600044 Port G Control
PGDAT 0x15600048 Port G Data
PGUP 0x1560004c Pull-up Control G
OPENCR 0x15600050 Open Drain Enable
MISCCR 0x15600054 Miscellaneous Control
EXTINT 0x15600058 External Interrupt Control

RTC

RTCCON 0x15700040 B R/W RTC Control
TICINT 0x15700044 Tick time count
RTCALM 0x15700050 RTC Alarm Control
ALMSEC 0x15700054 Alarm Second
ALMMIN 0x15700058 Alarm Minute
ALMHOUR 0x1570005c Alarm Hour
ALMDAY 0x15700060 Alarm Day
ALMMON 0x15700064 Alarm Month
ALMYEAR 0x15700068 Alarm Year
RTCRST 0x1570006c RTC Round Reset
BCDSEC 0x15700070 BCD Second
BCDMIN 0x15700074 BCD Minute
BCDHOUR 0x15700078 BCD Hour
BCDDAY 0x1570007c BCD Day
BCDDATE 0x15700080 BCD Date
BCDMON 0x15700084 BCD Month
BCDYEAR 0x15700088 BCD Year

A/D CONVERTER

ADCCON 0x15800000 W R/W ADC Control
ADCDAT 0x15800004 R ADC Data

SPI

SPCON 0x15900000 W R/W SPI Control
SPSTA 0x15900004 R SPI Status
SPPIN 0x15900008 R/W SPI Pin Control
SPPRE 0x1590000c SPI Baud Rate Prescaler
SPTDAT 0x15900010 SPI Tx Data
SPRDAT 0x15900014 R SPI Rx Data

MMC INTERFACE

MMCON 0x15a00000 B,HW,W R/W MMC Control
MMCRR 0x15a00004 MMC Command
MMFCON 0x15a00008 MMC FIFO Control
MMSTA 0x15a0000c R MMC Status
MMFSTA 0x15a00010 HW,W MMC FIFO Status
MMPRE 0x15a00014 B,HW,W R/W MMC Baud Rate Prescaler
MMLEN 0x15a00018 HW,W MMC Block Length
MMCR7 0x15a0001c B,HW,W R Response CRC7
MMRSP0 0x15a00020 W MMC Response Status 0
MMRSP1 0x15a00024 MMC Response Status 1
MMRSP2 0x15a00028 MMC Response Status 2
MMRSP3 0x15a0002c MMC Response Status 3
MMCMD0 0x15a00030 B,HW,W R/W MMC Command 0
MMCMD1 0x15a00034 W MMC Command 1
MMCR16 0x15a00038 HW,W R Data Read CRC16 Buffer
MMDAT 0x15a0003c B,HW,W R/W MMC Data

la partie $0C000000 - $0C1FFFFFFF est en READ ONLY.

32

Ouaaahah trop fort, merci smile
Le DMA est vraiment comme sur GBA alors je suppose que lui aussi est totallement bloquant !

33

Non, c'est le CPU qui peut bloquer le DMA. tres genant smile
Cf bug de sc3';];] de samsung. bref si on fait pas gaffe, on peut faire du bruit dans le son et les graphismes.

34

T'es oblige alors d'attendre la fin des DMA alors ?!
T'es oblige de te servir des interruptions a chaque copie memoire que tu fais avec les DMA ? Ou bien tu check le DSTAT ? ou autre ...

35

Non, c'est moins complique. T'es obblige de ne pas faire de grosses lectures de RAM.
Bref pas de code comme ca :

loop
stmia r0!,{r1-r11}
cmp r0,r12
bne loop

Ce code va monopoliser le bus. Si tu ne fais pas ce genre de code, y'a pas de pbs (Cf Know_bugs de la doc de samsumg).

36

T'es tout de meme obliger a un moment de savoir si ton transfert DMA s'est fait ou non. Sinon ton programme est pas protgere du tout a moins de savoir vraiment combien de temps prennent les transferts DMA et de synchroniser ton code avec, mais la il y a de koi etre chauve a 25 ans smile !

Enfin deja que les DMAs ne soient pas bloquant c'est vraiment une excellente chose, je suis en train de sauter sur ma chaise ^^

37

fx-man a écrit :
La prochaine version qui sortira la semaine prochaine aura des tutoriaux, des tonnes de liens, bref, tout ce que tu veux sauf les truc interdits (du style roms officielles ou bios).
De toute facon, il n'y aura pas de downloads, je suis limité par mon hébergeur...
Mais il y aura les liens pour les trouver !
si tu veux participer au site, va voir l'annonce dans la section "divers"


En fait, ce qui m'interresse vraiment dans la GP32, c'est le monde des développeurs amateurs. Si je fais (ou participe) à un site, cela sera sûrement pour distribuer et/ou promouvoir les productions des programmeurs pour cette console.
Un peu comme le site que je gère déjà pour les programmeurs Ti. (cf signature pour le lien)
Autre chose, si je participe à un site, j'aime bien touché au code PHP grin, donc si c'est juste pour alimenter des rubriques ou faire des tests, mouai bof j'ai déjà donné pour la section Tests de www.Ti-fr.org.

38

comme tu veux...

de toute facon, le site a venir sera en html...
mais le suivant (pour fin juillet) sera en php... on verra à ce moment là !

39

ok pas de problème smile

40

MERCI !!

41

fx, tu vas pas me dire que tu as plannifier les version de ton site jusqu'a la version 10.23E58 beta quand meme

42

Lama
a écrit : fx, tu vas pas me dire que tu as plannifier les version de ton site jusqu'a la version 10.23E58 beta quand meme


presque !

une nouvelle version tous les 2 ou 3 mois, jusqu'a ce que j'en fasse une vraiment parfaite.

Le site est planifié jusqu'au mois d'aout et aura une durée de vie d'au moins 2 ans (je vais prendre le nom de domaine pour 2 ans...)

43

Lama a écrit :
T'es tout de meme obliger a un moment de savoir si ton transfert DMA s'est fait ou non. Sinon ton programme est pas protgere du tout a moins de savoir vraiment combien de temps prennent les transferts DMA et de synchroniser ton code avec, mais la il y a de koi etre chauve a 25 ans smile !

Surtout que la frequence du processeur peut changer smile
Enfin deja que les DMAs ne soient pas bloquant c'est vraiment une excellente chose, je suis en train de sauter sur ma chaise ^^

Je ne concois qu'un DMA comme ca (oui, oui je sais sad)

44

il est fort ce PpHd quand même, au lieu de prendre du C (qu'il connait déjà), il se met à apprendre l'assembleur des GP32. toptop

45

Que veux-tu. Et puis c'est juste l'affaire de 3 heures smile

46

oué et comme ca le temps k'il programme sa propre lib(GPenlib32 ?) et k'il commence a y avoir des applications (euh des jeux pardon grin) 2,3 ans ce seront écoulés grin

Si il codait en C cette feignasse je verrais un rendement de releases de jeux augmenter de 300%, mais non monsieur kiffe l'asm grin ... bah il a raison apres tout smile

47

Grace a ca je vois que faire des multiplications sous ARM, c'est hyper rapide, mais pas les divisions qui doivent etre emuler ...

48

Faut vraiment être un bourrin pour coder en asm sur un risc... Enfin bon ça ne métonne pas trop wink

Technic > j'ai hâte de te préter ma gba en échange de ta gp32 gni

49

etan21 > Si j'ai ma GP32 ... pour l'instant c pas gagné ...

50

>etan: Et encore tu connais pas le power pc ou l'thanium. La c'est etre bourrin de coder en asm grin