Browse Source

from bbb port

pull/1/head
Rafael Zurita 6 years ago
parent
commit
5b1fe5c476
  1. 35
      system/kprintf.c
  2. 35
      system/main.c
  3. 11
      system/meminit.c

35
system/kprintf.c

@ -18,23 +18,14 @@ syscall kputc(
)
{
intmask mask;
// STM32 specific: volatile struct uart_csreg * uptr = 0x40013800;
//RAFA mask = disable();
mask = disable();
if (c == '\n')
serial_put_char('\r');
serial_put_char(c);
/*
if (c == '\n') {
while(!(uptr->sr & UART_TC));
uptr->dr = 0x0D; // return line
}
while(!(uptr->sr & UART_TC));
uptr->dr = c;
*/
//RAFA restore(mask);
restore(mask);
return OK;
}
@ -58,25 +49,25 @@ extern void _doprnt(char *, va_list, int (*)(int));
*/
syscall kprintf(char *fmt, ...)
{
va_list ap;
va_list ap;
intmask mask;
mask = disable();
// RAFA
char output[81];
char *c;
memset(output, 0, 81);
va_start(ap, fmt);
// RAFA _doprnt(fmt, ap, (int (*)(int))kputc);
// vsnprintf(output, 80, fmt, ap);
vsnprintf(output, 80, fmt, ap);
va_end(ap);
va_start(ap, fmt);
vsnprintf(output, 80, fmt, ap);
va_end(ap);
c = output;
while(*c) {
kputc(*c);
c++;
};
return OK;
restore(mask);
return OK;
}

35
system/main.c

@ -1,50 +1,21 @@
/* main.c - main */
// This is user land
#include <xinu.h>
#include <avr/interrupt.h>
extern void notmain(void);
process main2(void)
{
serial_put_char('2');
serial_put_char('2');
}
process main(void)
{
//RAFA
// notmain();
/* Run the Xinu shell */
// recvclr();
kprintf("MAIN\n");
//blink_avr();
//blink_avr();
//blink_avr();
//blink_avr();
blink_avr();
blink_avr();
resume(create(shell, 64, 50, "shell", 1, 0));
// resume(create(shell, 64, 50, "shell", 1, 0));
// resume(create(shell, 64, 50, "shell", 0, NULL));
// resume(create((void *)main2, INITSTK, 50, "main2", 0, NULL));
recvclr();
resume(create(shell, 8192, 50, "shell", 1, CONSOLE));
for(;;)
serial_put_char('4');
/* Wait for shell to exit and recreate it */
kprintf("EXIT SHELL\n");
while (TRUE) {
receive();
//kprintf("Entering sleep");
sleepms(200);
// RAFA kprintf("\n\nMain process recreating shell\n\n");
kprintf(&m1[0]);
kprintf("\n\nMain process recreating shell\n\n");
resume(create(shell, 4096, 20, "shell", 1, CONSOLE));
}
return OK;

11
system/meminit.c

@ -10,10 +10,10 @@ void *maxheap; /* End address of heap */
*------------------------------------------------------------------------
*/
//RAFA AGREGO ESTO
/* avr specific */
extern int __bss_end;
// RAFA AVR specific:
/* avr specific */
#define GET_FAR_ADDRESS(var) \
({ \
uint32_t tmp; \
@ -38,7 +38,7 @@ void meminit(void)
{
struct memblk *memptr; /* Memory block pointer */
// AVR specific:
/* avr specific */
uint32 ptr_bss_end;
ptr_bss_end = GET_FAR_ADDRESS(__bss_end); //get the pointer
@ -47,11 +47,6 @@ void meminit(void)
minheap = ptr_bss_end+1;
maxheap = 0x008008FF; /* AVR atmega328p stack pointer when booting */
// STM32 specific: minheap = (void *)&end;
/* 1024 bytes is reserved for supervise mode handling */
// STM32 specific: maxheap = (void *)MAXADDR - HANDLERSTACK;
/* Initialize the memory list as one big block */
memlist.mnext = (struct memblk *)minheap;

Loading…
Cancel
Save