Check the value in gdb without loading it on a target. Gdb hello.exe
p symbol Since it is a constant, it should be as expected. If it is, you have a code loading issue. Is that value by any chance an instruction? On Jun 19, 2017 4:03 PM, "Denis Obrezkov" <denisobrez...@gmail.com> wrote: > 2017-06-19 23:57 GMT+03:00 Hesham Almatary <heshamelmat...@gmail.com>: > >> Hi Denis, >> >> If you cscope this symbol you'll end up with the following: >> >> /** >>> * By default, use the minimum stack size requested by this port. >>> */ >>> #ifndef CONFIGURE_MINIMUM_TASK_STACK_SIZE >>> #define CONFIGURE_MINIMUM_TASK_STACK_SIZE CPU_STACK_MINIMUM_SIZE >>> #endif >>> >> >> This means if you, from the application (i.e. hello or ticker), didn't >> define CONFIGURE_MINIMUM_TASK_STACK_SIZE it will be >> CPU_STACK_MINIMUM_SIZE which is 4KiB for riscv32 CPU >> (cpukit/score/cpu/riscv32/rtems/score/cpu.h:457) >> >> >> On Mon, Jun 19, 2017 at 10:07 AM, Denis Obrezkov <denisobrez...@gmail.com> >> wrote: >> > Hesham, could you check what is the value of rtems_minimum_stack_size in >> > your SPIKE executable? >> > >> > 2017-06-18 22:10 GMT+03:00 Denis Obrezkov <denisobrez...@gmail.com>: >> >> >> >> Hello all, >> >> >> >> I was able to proceed further via setting rtems_minimum_stack_size >> >> manually to 0x200. >> >> Now I have another error, my backtrace: >> >> #0 0x20403728 in _Internal_error >> >> (core_error=INTERNAL_ERROR_WORKSPACE_ALLOCATION) >> >> at >> >> /home/reprofy/Projects/riscv/rtems/development/rtems/kernel/ >> rtems-riscv/c/src/../../cpukit/score/src/interr.c:44 >> >> #1 0x2040ec40 in _Workspace_Allocate_or_fatal_error (size=2976696) at >> >> /home/reprofy/Projects/riscv/rtems/development/rtems/kernel/ >> rtems-riscv/c/src/../../cpukit/score/src/wkspace.c:163 >> >> #2 0x2040f0e6 in _Freechain_Initialize (freechain=0x80000c3c >> >> <_RTEMS_tasks_Information+60>, allocator=0x2040ec16 >> >> <_Workspace_Allocate_or_fatal_error>, number_nodes=41343, >> node_size=72) >> >> at >> >> /home/reprofy/Projects/riscv/rtems/development/rtems/kernel/ >> rtems-riscv/c/src/../../cpukit/score/src/freechain.c:31 >> >> #3 0x20409346 in _Thread_Initialize_information >> (information=0x80000c00 >> >> <_RTEMS_tasks_Information>, the_api=OBJECTS_CLASSIC_API, the_class=1, >> >> maximum=3908149631, is_string=false, >> >> maximum_name_length=4) at >> >> /home/reprofy/Projects/riscv/rtems/development/rtems/kernel/ >> rtems-riscv/c/src/../../cpukit/score/src/thread.c:68 >> >> #4 0x20401dac in _RTEMS_tasks_Manager_initialization () at >> >> /home/reprofy/Projects/riscv/rtems/development/rtems/kernel/ >> rtems-riscv/c/src/../../cpukit/rtems/src/tasks.c:72 >> >> #5 0x204021bc in rtems_initialize_executive () at >> >> /home/reprofy/Projects/riscv/rtems/development/rtems/kernel/ >> rtems-riscv/c/src/../../cpukit/sapi/src/exinit.c:95 >> >> #6 0x2040031c in boot_card (cmdline=0x0) at >> >> /home/reprofy/Projects/riscv/rtems/development/rtems/kernel/ >> rtems-riscv/c/src/lib/libbsp/riscv32/hifive1/../../shared/bootcard.c:76 >> >> #7 0xffffcd98 in ?? () >> >> >> >> Is RTEMS trying to allocate 2976696 bytes? >> >> It seems to me, that .data region is not properly initialized. What do >> you >> >> think about this? >> >> >> >> 2017-06-18 1:31 GMT+03:00 Denis Obrezkov <denisobrez...@gmail.com>: >> >>> >> >>> 2017-06-17 22:11 GMT+03:00 Denis Obrezkov <denisobrez...@gmail.com>: >> >>>>>> >> >>>>>> >> >>>>> Can you run RTEMS hello world? Or does printf make that too large? >> If >> >>>>> that is >> >>>>> too large, you need to force the tests to switch to printk(). There >> is >> >>>>> some magic >> >>>>> in testsuites/configure.ac for that. >> >>>>> >> >>>>> The low ticker examples (especially the last one) will show >> configure >> >>>>> options >> >>>>> to cut memory use. >> >>>>> >> >>>>> But these are hacks on individual tests. If there is a simulator >> which >> >>>>> has interrupts, >> >>>>> I would be testing on it since you will be battling the architecture >> >>>>> not a RAM limit. >> >>>>> Your project is the port not to put RTEMS into a tiny memory space. >> :) >> >>>>> >> >>>>> --joel >> >>>>> >> >>>>>> >> >>>>>> -- >> >>>>>> Regards, Denis Obrezkov >> >>>>> >> >>>>> >> >>>> I was able to run the low ticker example further than in my earlier >> >>>> attempts. >> >>>> >> >>>> But now I have a problem with it: >> >>>> #0 memset (m=0xb98a0641, c=0, n=102) at >> >>>> ../../../../../gcc-7.1.0/newlib/libc/string/memset.c:62 >> >>>> #1 0x20403168 in _Heap_Initialize (heap=0xb98a0641, >> >>>> heap_area_begin_ptr=0x80002456, heap_area_size=7082, page_size=8) >> >>>> at >> >>>> /home/reprofy/Projects/riscv/rtems/development/rtems/kernel/ >> rtems-riscv/c/src/../../cpukit/score/src/heap.c:230 >> >>>> #2 0x20400954 in RTEMS_Malloc_Initialize (areas=0x80003f78, >> >>>> area_count=1, extend=0x0) >> >>>> at >> >>>> /home/reprofy/Projects/riscv/rtems/development/rtems/kernel/ >> rtems-riscv/c/src/../../cpukit/libcsupport/src/malloc_initialize.c:40 >> >>>> #3 0x20400378 in bsp_work_area_initialize_default >> >>>> (area_begin=0x80000e10, area_size=12784) at >> >>>> ../../../../../.././hifive1/lib/include/bsp/bootcard.h:158 >> >>>> #4 0x204003c0 in bsp_work_area_initialize () at >> >>>> /home/reprofy/Projects/riscv/rtems/development/rtems/kernel/ >> rtems-riscv/c/src/lib/libbsp/riscv32/hifive1/../../shared/ >> bspgetworkarea.c:61 >> >>>> #5 0x204021bc in rtems_initialize_executive () at >> >>>> /home/reprofy/Projects/riscv/rtems/development/rtems/kernel/ >> rtems-riscv/c/src/../../cpukit/sapi/src/exinit.c:95 >> >>>> #6 0x2040031c in boot_card (cmdline=0x0) at >> >>>> /home/reprofy/Projects/riscv/rtems/development/rtems/kernel/ >> rtems-riscv/c/src/lib/libbsp/riscv32/hifive1/../../shared/bootcard.c:76 >> >>>> #7 0x20400064 in _end_clear_bss () at >> >>>> /home/reprofy/Projects/riscv/rtems/development/rtems/kernel/ >> rtems-riscv/c/src/lib/libbsp/riscv32/hifive1/start/start.S:116 >> >>>> >> >>>> I want to figure out, why it wants to use memset on these addresses, >> >>>> because 0x80004000 is the maximum available address. >> >>>> >> >>>> >> >>>> -- >> >>>> Regards, Denis Obrezkov >> >>> >> >>> >> >>> I was able to proceed further after adding >> >>> #define CONFIGURE_UNIFIED_WORK_AREAS >> >>> to init.c of low_ticker example. >> >>> Now I get an error: >> >>> #0 0x2040d940 in _Chain_Initialize_node (the_node=0x80003ec0) at >> >>> ../../cpukit/../../../hifive1/lib/include/rtems/score/chainimpl.h:127 >> >>> #1 0x2040da82 in _Chain_Iterator_initialize (the_chain=0x80000320 >> >>> <_User_extensions_List>, the_registry=0x8000032c >> <_User_extensions_List+12>, >> >>> the_iterator=0x80003ec0, >> >>> direction=CHAIN_ITERATOR_FORWARD) at >> >>> ../../cpukit/../../../hifive1/lib/include/rtems/score/chaini >> mpl.h:1049 >> >>> #2 0x2040de90 in _User_extensions_Iterate (arg=0x80003f18, >> >>> visitor=0x2040dd48 <_User_extensions_Fatal_visitor>, >> >>> direction=CHAIN_ITERATOR_FORWARD) >> >>> at >> >>> /home/reprofy/Projects/riscv/rtems/development/rtems/kernel/ >> rtems-riscv/c/src/../../cpukit/score/src/userextiterate.c:174 >> >>> #3 0x204036c4 in _User_extensions_Fatal (source=INTERNAL_ERROR_CORE, >> >>> error=4) at >> >>> ../../cpukit/../../../hifive1/lib/include/rtems/score/userex >> timpl.h:307 >> >>> #4 0x204036e8 in _Terminate (the_source=INTERNAL_ERROR_CORE, >> >>> the_error=4) at >> >>> /home/reprofy/Projects/riscv/rtems/development/rtems/kernel/ >> rtems-riscv/c/src/../../cpukit/score/src/interr.c:35 >> >>> #5 0x20403730 in _Internal_error >> >>> (core_error=INTERNAL_ERROR_INTERRUPT_STACK_TOO_SMALL) >> >>> at >> >>> /home/reprofy/Projects/riscv/rtems/development/rtems/kernel/ >> rtems-riscv/c/src/../../cpukit/score/src/interr.c:44 >> >>> #6 0x20403824 in _ISR_Handler_initialization () at >> >>> /home/reprofy/Projects/riscv/rtems/development/rtems/kernel/ >> rtems-riscv/c/src/../../cpukit/score/src/isr.c:51 >> >>> #7 0x20402170 in rtems_initialize_data_structures () at >> >>> /home/reprofy/Projects/riscv/rtems/development/rtems/kernel/ >> rtems-riscv/c/src/../../cpukit/sapi/src/exinit.c:82 >> >>> #8 0x204021bc in rtems_initialize_executive () at >> >>> /home/reprofy/Projects/riscv/rtems/development/rtems/kernel/ >> rtems-riscv/c/src/../../cpukit/sapi/src/exinit.c:95 >> >>> #9 0x2040031c in boot_card (cmdline=0x0) at >> >>> /home/reprofy/Projects/riscv/rtems/development/rtems/kernel/ >> rtems-riscv/c/src/lib/libbsp/riscv32/hifive1/../../shared/bootcard.c:76 >> >>> #10 0xffffcd98 in ?? () >> >>> >> >>> And I found out that rtems_minimum_stack_size variable is 0xab817bb3. >> >>> And I don't know why - in the low ticker example it is set to 512. >> >>> >> >>> -- >> >>> Regards, Denis Obrezkov >> >> >> >> >> >> >> >> >> >> -- >> >> Regards, Denis Obrezkov >> > >> > >> > >> > >> > -- >> > Regards, Denis Obrezkov >> >> >> >> -- >> Hesham >> > > Yes, I have configured it in application. > Anyway, the number 0xab817bb3 is not for 4 KiB. > > -- > Regards, Denis Obrezkov > > _______________________________________________ > devel mailing list > devel@rtems.org > http://lists.rtems.org/mailman/listinfo/devel >
_______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel