1

Ce sujet est issu d'une discussion ayant dérivé sur deux thèmes distincts. Pour vous rendre sur le sujet d'origine, merci de cliquer sur ce lien
avatar
Ben, bouh, quoi :D

2

rah quand même le code c'est beau love

transformer ça
#define ARM_WRITE32(addr, data) *((volatile unsigned int*)addr) = (unsigned int)data
#define LM4F_SYSTEM_CONTROL_BASE         0x400FE000
#define LM4F_SYSTEM_CONTROL_RCC         LM4F_SYSTEM_CONTROL_BASE + 0x060    // Run-Mode Clock Configuration
void lm4f_init(void) {
    ARM_WRITE32(LM4F_SYSTEM_CONTROL_RCC, 0x12345678);
}


678
en:00000338 <lm4f_init>:
 338:	e59f3008 	ldr	r3, [pc, #8]	; 348 <lm4f_init+0x10>
 33c:	e59f2008 	ldr	r2, [pc, #8]	; 34c <lm4f_init+0x14>
 340:	e5832000 	str	r2, [r3]
 344:	e12fff1e 	bx	lr
 348:	400fe060 	.word	0x400fe060
 34c:	12345678 	.word	0x12345


rah je kiffe grave love

l'asm ARM est vraiment bien foutu love

3

C'est marrant j'ai rien compris cheeky
avatar
Spartine, la fille que ce soir elle dîne en enfer: http://www.spartine.com

Pockett Videogames, le site de toutes les consoles portables!: http://www.pockett.net

J'aime beaucoup faire des dessins aux petites filles! C'est ma passion.

4

C'est normal, y'a que Folco qui peut comprendre cheeky

!call Folco
--- Call : Folco appelé(e) sur ce topic ...

5

ouilovegrin
Pen^2 (./8297) :

eggs_221aab7c0eaa7042ad25.jpg

rotfl grin

6

elle fait peur cette image grin

folco: rah je vais déclarer l'ARM le TRUC AWESOME QUE JE DECOUVRE APRES TOUT LE MONDE OF THE YEAR trilove

7

(je suis pas un expert arm mais je vois pas ce qu'il y a d'exceptionnel à vrai dire cheeky)

8

Pen^2 (./8314) :
je suis pas un expert arm

Sois un expert leg, ce sera peut-être plus clair.

Quoiqu'être expert leg, ça te fera une belle jambe.
avatar
Spartine, la fille que ce soir elle dîne en enfer: http://www.spartine.com

Pockett Videogames, le site de toutes les consoles portables!: http://www.pockett.net

J'aime beaucoup faire des dessins aux petites filles! C'est ma passion.

9

#pointvince#
avatar
Webmaster du site Ti-FRv3 (et aussi de DevLynx)
Si moins de monde enculait le système, alors celui ci aurait plus de mal à nous sortir de si grosses merdes !
"L'erreur humaine est humaine"©Nil (2006) // topics/6238-moved-jamais-jaurais-pense-faire-ca

10

./8314

TRUC AWESOME QUE JE DECOUVRE APRES TOUT LE MONDE OF THE YEAR trilove

QUE JE DECOUVRE APRES TOUT LE MONDE

APRES TOUT LE MONDE

grin

11

(mais il a quoi d'extraordinaire ce bout d'ARM (embarrassed) ? C'est juste que tu ne connaissais pas l'ARM du tout ou je rate un truc ?)

12

rien, mais j'avais jamais pratiqué

mais c'est cool quand même grin

(et puis t'es qui pour gâcher mon plaisir toi hein? embarrassed)

13

Laisse, c'est pas un Artiste, il peut pas comprendre embarrassed
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

14

nan mais c'est juste que ce code m'a l'air très basique, alors que j'avais aussi été impressionné par l'ARM à l'époque où j'en ai un peu fait (toutes les instructions conditionnelles, etc love)

15

ben chais pas, c'est clair, c'est beau... 'cule un mouton quoi.

16

ah oué, avec un chapeau ? je comprends mieux, effectivement oui

17

Voila une construction ARM sympatique:

[source=plain] teq pc, #0 @ first as a trial-run to load cache
bl s3c2410_do_sleep
teq r0, r0 @ now do it for real
b s3c2410_do_sleep @

.align 5
s3c2410_do_sleep:
streq r7, [ r4 ] @ SDRAM sleep command
streq r8, [ r5 ] @ SDRAM power-down config
streq r9, [ r6 ] @ CPU sleep
1: beq 1b
mov pc, r14[/source]
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

18

putain mais j'hallucine le nombre de trucs a trifouiller dans les registres avant de pouvoir faire un putchar sur l'uart grin

NON je n'utiliserai pas stellarisware grin

19

Welcome to the marvelous world of microcontroller and embedded OS!

Exemple (non exaustif) pour configurer l'uart d'un s3c2416 (ça doit etre quasiment pareil pour les auters s3c24xx) :
void serial_init_115200_s3c24xx(const int uart, const int pclk_MHz) { int div = (((54 * pclk_MHz) + 26) / 100) -1; switch(uart) { case UART0: rULCON0 = 0x3; rUCON0 = 0x245; rUFCON0 = 0x0; rUMCON0 = 0x0; rUBRDIV0 = div; break; case UART1: rULCON1 = 0x3; rUCON1 = 0x245; rUFCON1 = 0x0; rUMCON1 = 0x0; rUBRDIV1 = div; break; case UART2: rULCON2 = 0x3; rUCON2 = 0x245; rUFCON2 = 0x1; rUBRDIV2 = div; break; default: break; } } void serial_putc_s3c24xx(const int uart, const char c) { switch(uart) { case UART0: while ( !( rUTRSTAT0 & 0x2 ) ); WrUTXH0(c); break; case UART1: while ( !( rUTRSTAT1 & 0x2 ) ); WrUTXH1(c); break; case UART2: while ( !( rUTRSTAT2 & 0x2 ) ); WrUTXH2(c); break; default: break; } /* force \n\r */ if (c == '\n') serial_putc_s3c24xx(uart, '\r'); }
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

20

Ôôô la belle boucle infinie potentielle.

(ce code est vraiment dégueulasse embarrassed)

(sinon, c'est pas très intéressant de mettre ça ici, si ? tongue)
avatar
Que cache le pays des Dieux ? - Forum Ghibli - Forum Littéraire

La fin d'un monde souillé est venue. L'oiseau blanc plane dans le ciel annonçant le début d'une longue ère de purification. Détachons-nous à jamais de notre vie dans ce monde de souffrance. Ô toi l'oiseau blanc, l'être vêtu de bleu, guide nous vers ce monde de pureté. - Sutra originel dork.

21

tu veux le mettre ou sinon, meilleures news et high tech? tongue

si on digresse trop de 'le tout et rien mais surtout n'importe quoi' on forkera, et puis c'est tout embarrassed

Godzil: le mien est un microcontroleur, en fait, pas processeur, du coup faut configurer les GPIO sur leur fonction alternative en plus.

22

Ximoon (./8328) :
Ôôô la belle boucle infinie potentielle.

Cad?

Si c'est lié aux "variables" r* ce sont des pointeur volatiles vers des registres interne du CPU.
squalyl (./8329) :
Godzil: le mien est un microcontroleur, en fait, pas processeur, du coup faut configurer les GPIO sur leur fonction alternative en plus.

Bah c'est pareil pour le s3c2416 (coeur ARM926-EJS), c'est pareil pour un OMAP3 (Cortex-A8), c'est pareil pour tous les uC en fait (le s3C24xx est un uC tout comme l'OMAP, ce ne sont pas juste des uP)
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

23

ok, je connais pas toutes les gammes de uC arm grin

24

Godzil> je m'en doute, mais si pour une raison ou une autre ton registre ne change pas d'état, tu fais quoi ?
avatar
Que cache le pays des Dieux ? - Forum Ghibli - Forum Littéraire

La fin d'un monde souillé est venue. L'oiseau blanc plane dans le ciel annonçant le début d'une longue ère de purification. Détachons-nous à jamais de notre vie dans ce monde de souffrance. Ô toi l'oiseau blanc, l'être vêtu de bleu, guide nous vers ce monde de pureté. - Sutra originel dork.

25

while(1);


C'est marrant parce que je suis tombé ce matin sur une "issue"(au sens anglosaxon) identique sur une appli ici : si la bdd répond qu'elle est occupée, on reboucle... à l'infini, même pas un compteur maximal de tentatives ou un délai... :/

Réponse du responsable : le truc c'est que ce code est trop basique et spécifique, on a pas les fonds nécessaires pour investir dans une version complète et la simplicité de ce qui est fait ne permet pas le retour arrière une fois la procédure lancée, donc tant pis, on attend indéfiniment parce que même une sortie propre ne résoudrait pas le fait que la bdd serait corrompue
avatar
Webmaster du site Ti-FRv3 (et aussi de DevLynx)
Si moins de monde enculait le système, alors celui ci aurait plus de mal à nous sortir de si grosses merdes !
"L'erreur humaine est humaine"©Nil (2006) // topics/6238-moved-jamais-jaurais-pense-faire-ca

26

Ben c'est que le SoC a un gros soucis grin (dans ce cas précis, cette boucle sert a attendre que l'IP de l'UART a terminé l'envoi, et si le bit ne reviens pas a 0, c'est que de toute maniere il y a un soucis hard smile)

Et vu ou est le code (bootloader) si cette partie ne marche pas, ça ne sert a rien de booter plus le carte de toute maniere; au mieux ça plantera ailleurs.
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

27

Ouais enfin bref, ça me choque quand même embarrassed
avatar
Que cache le pays des Dieux ? - Forum Ghibli - Forum Littéraire

La fin d'un monde souillé est venue. L'oiseau blanc plane dans le ciel annonçant le début d'une longue ère de purification. Détachons-nous à jamais de notre vie dans ce monde de souffrance. Ô toi l'oiseau blanc, l'être vêtu de bleu, guide nous vers ce monde de pureté. - Sutra originel dork.

28

(C'est courant comme code en plus :

u-boot (driver/ns16550.c): void NS16550_putc (NS16550_t com_port, char c) { while ((com_port->lsr & LSR_THRE) == 0); com_port->thr = c; }

Linux (arch/powerpc/boot/ns16550.c) : static void ns16550_putc(unsigned char c) { while ((in_8(reg_base + (UART_LSR << reg_shift)) & UART_LSR_THRE) == 0); out_8(reg_base, c); }

etc..

avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

29

De toute façon, en pratique :

- comme le dit Godzil, s'il y a une boucle infinie c'est que le hardware a un problème (ou que le soft est bugué, et a par exemple désactivé le port série)

- si par malheur ça se produit, dans un système bien conçu, il y a un watchdog qui détectera le problème et rebootera le bazar

- ce genre de code sert en général pour du debug ou autre cas "particulier" (bootloader, etc.) ; dans le code principal, on utilise normalement des interruptions, donc il n'y aura pas de boucle d'attente et pas de risque

Bref je conçois que ça te choque, mais en pratique c'est essentiellement un faux problème, surtout pour des trucs qui n'ont pas la même criticité que les calculateurs d'un avion cheeky
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

30

(ceci dit, si vous voulez qu'on continue la discussion, dites-le et je forke)
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo