LOGIN   :::   RECOVER PASS   :::   GET ACCOUNT    
Browse
  • Projects
  • Code (CVS)
  • Forums
  • News
  • Articles
  • Polls
  •  
    OpenCores
  • FAQ
  • CVS HowTo
  • Mission
  • Media
  • Tools
  • Advertise
  • Mirrors
  • Logos
  • Contact us
  • Find Resources
  • Job Opportunity
  •  
    Tools
  • Search
      
  • Download Cores (CVSGet)
  •  
    More
  • Wishbone
  • Perlilog
  • EDA tools
  • OpenTech CD
  •  
    Navigation: All forums > Openrisc > Message List > Message Post

    Message

    Reply | Reply all
    Date Prev | Date Next | Thread Prev | Thread Next Date Index | Thread Index

    From: Cool_ABen@s...<Cool_ABen@s...>
    Date: Wed Dec 31 01:38:12 CET 2003
    Subject: [openrisc] About
    Top
    Thanks

    ----- Original Message -----
    From: Simon Srot <simons@o... >
    To: List about "OpenRISC cores, free "microprocessors
    <openrisc@o... >
    Date: 30 Dec 2003 12:31:45 +0000
    Subject: Re: [openrisc] About "malloc" in the simulator and in the
    FPGA

    >
    >
    > Hi,
    >
    > I think you confuse some things here. Malloc is C library function
    > which
    > at some point calls OS kernel function for memory allocation via
    > system
    > call (this is this l.sys instruction that you mentioned).
    >
    > You will need to have OS (linux or uClinux) setup on your
    > environment
    > (simulator or real board) to run programs like this. Check
    > http://www.opencores.org/projects/or1k/uClinux for more information
    > on
    > this.
    >
    > Simon
    >
    > On Tue, 2003-12-30 at 08:07, Cool_ABen@s... wrote:
    > > Hi All:
    > > Recently I wrote a little program "test.c" to test the
    > "malloc"
    > > and "free" functions. The codes are as follows:
    > >
    > > "test.c":
    > >
    > > #include <stdio.h>
    > > #include <stdlib.h>
    > >
    > > int main()
    > > {
    > > char * p;
    > > p = malloc(8*sizeof(char));
    > > if (p == NULL)
    > > return -1;
    > > free(p)
    > > return 0;
    > > }
    > >
    > > and the "makefile" script is as follows:
    > >
    > > "makefile":
    > >
    > > common = ../sw/support/libsupport.a
    > > all:test
    > >
    > > test: test.o ../sw/support/reset-icdc.o \
    > > /opt/or32-uclinux/lib/libc.a \
    > >
    > /opt/or32-uclinux/lib/gcc-lib/or32-uclinux/3.1/libgcc.a
    > >
    > > or32-uclinux-ld -T ../sw/support/orp.ld $? -o $@.or32
    > $(common)
    > >
    > > test.o: test.c
    > > or32-uclinux-gcc -g -c -o test.o test.c
    > >
    > >
    > >
    > > the support package is downloaded from the cvsweb "/ or1k /
    > orp /
    > > orp_soc / sw" of the opencore.org and the libsupport is in it
    > too.
    > >
    > > and the orp.ld script used by or32-uclinux-ld is as follows:
    > >
    > > MEMORY
    > > {
    > > vectors : ORIGIN = 0x00000000, LENGTH = 0x00002000
    > > flash : ORIGIN = 0x04000000, LENGTH = 0x00200000
    > > ram : ORIGIN = 0x00002000, LENGTH = 0x001f0000
    > > mp3data : ORIGIN = 0x001f2000, LENGTH = 0x00004000
    > > }
    > >
    > > SECTIONS
    > > {
    > > .reset :
    > > {
    > > *(.reset)
    > > } > flash
    > >
    > > .text ALIGN(0x04):
    > > {
    > > _text_bin = .;
    > > *(.text)
    > > _text_end = .;
    > > } > flash
    > >
    > > .rodata :
    > > {
    > > _rodata_bin = .;
    > > *(.rodata) > > _rodata_end = .; > > } > flash > > > > .dummy ALIGN(0x04): > > { > > _src_beg = .; > > } > flash > > > > .vectors : > > AT ( ADDR (.dummy) ) > > { > > _vec_start = .; > > *(.vectors) > > _vec_end = .; > > } > vectors > > > > .data : > > AT ( ADDR (.dummy) + SIZEOF (.vectors) ) > > { > > _dst_beg = .; > > *(.data) > > _dst_end = .; > > } > ram > > > > .mp3data : > > { > > _mp3_begin = .; > > *(.mp3) > > _mp3_end = .; > > } > mp3data > > > > .bss : > > { > > *(.bss) > > } > ram > > > > .stack : > > { > > *(.stack) > > _src_addr = .; > > } > ram > > } > > > > > > then I run the makefile script and the test.or32 is generated. > > First I put it in the simulator . I set the breakpoint at the > line "p = malloc > > (8*sizeof(char));". When entering the function of malloc,many > circles of > > instructions comes,among malloc_init , udivsi3 ,modsi3 and so > on. After > > many instructions ,it comes to the mmap functions and > implement the > > instruction "l.sys 0x1".Then it comes to 0xc00 and implements > the "l.j 0" > > for ever. > > > > So I send the test.or32 to the fpga board running the or rtl. > But to my > > disappoint ,the "p" equals NULL and means that malloc cannot > work. > > > > I don't know what to do .And anyone can save me? Thanks a lot. > > I think simulator should support the malloc operation at > least.Or I should > > study the code of malloc.c in ulibc library? Thanks a lot. > > > > Thanks and Regards > > > > > > >

     
    Copyright (c) 1999 OPENCORES.ORG. All rights reserved.